I am part of my College team which is planning to enter a Mars Rover Challenge. In the point of view of a programmer, where should I start? I know C is the main language NASA used for their Rover and I have a basic understanding of it. Plus, how much should I look into the RTOS part for making a rover? Any books/links to this topic would be greatly appreciated.
Hi,
There are many ways to go about this, but a possible solution is to simply increase your general knowledge of robotics and all of the required fields to make a robot (electrical, mechanical, embedded software, systems design, etc.).
You could start by reading our tutorial series on making a robot. It covers all the basics of parts selections and design and should help you understand how all the components are integrated with the embedded software. Programming embedded software requires to understand well the platform(s) you are working with, since your code will have parts specific to this case.
You can also check out some good books on robotics, such as this one. If you intend to do some video recognition, this one may be useful, too.
An RTOS can be a very good idea if you have many complex, concurrent systems that you need to have interact, as the RTOS will provide functionality to handles things such as scheduling, deadlines, resource management, interrupts, shared data structures, message passing and more (or less, depending on the RTOS you select).
If your system can be managed in a way that is simple to understand and maintain without a RTOS, then you can try that too. It does work very well. But, if you end up starting to re-invent the wheel (schedulers, memory management, etc.), then we recommend that you learn a simple RTOS that meets your need instead.
Sincerely,