ive always had this question , why need an OS for a robot? im happy to use dedicated programs written in C and the likeYou are so right.
I guess the answer is "because it's easier" (but not optimal)
Think about all the modules you would need to write drivers for if it wasn't the os.
Take for example my latest robot, perseus 3, it easily uses camera, wlan, phone thanks to the os.
Now that you've mentioned it, if I think about how many lines of code are needed for the RIL(radio layer interface) to interace the phone only...that's overkill.
Just a remark about the "not optimal" part: if you are crazy enough to write everything from scratch (driver, scheduler, process management, ...) you will end up with ... an OS. Probably using the same structure of an actual OS (kernel, "user-space" tasks...), because it's the only way to keep things maintainable.
If you are interested in embedded OS, take a look at RTLinux. Basically it's a real time scheduler that runs between the Linux kernel and the hardware. Task are are guaranted to be executed when you want them to be, contrary to Linux processes where there is no guarantees at all. The complete Linux system is itself a low priority task in the real time scheduler. So you have the best of the two worlds: a low level, real-time system for critical tasks and high level OS for mundane stuff.
Another good reason not to use windows embedded (a non real time OS) in a robot :p