A mobile robot operates in an unpredictable environment. To construct a controlling system for a mobile robot presents an in-depth study of the challenges associated with creating concurrent, real-time systems. This document is a detailed report on the design and implementation of a mobile robot.

The robot was intended to autonomously navigate a grid-while avoiding a competing robot on the grid-to locate and retrieve objects. This specified objective of the robot was clearly defined, but the requirements given for our system provided considerable freedom in our design. While the physical chassis for the robot was provided, our project required developing the entire real-time operating system (RTOS), the drivers for the associated sensors and actuators, and the application software to give the robot meaningful behaviour. We attempt to outline not only the problem and our solution, but also the rationale and insights behind our solution and the final outcome of all our design decisions. The intent is to illustrate the fundamental issues of a non-trivial embedded application. It is expected the reader has a basic knowledge of real-time systems and design formalisms such as finite state machines (FSM).

Full report available here