Modular Autonomous Robotics Platform

Here’s my final year project for Computer Systems Engineering. The 130 page thesis is now finished so I’ve got some time to post about it now :smiley:.

It’s based around the Pololu Orangutan X2 and runs FreeRTOS. The main aim was to create a modular task-based software system with built-in navigation and obstacle avoidance functionality. This enables the creation of more advanced or higher level projects that require mobility in a shorter timeframe.

Video and Pictures:
(The Orangutan X2 is mounted inside)

Obstacle detection is accomplished using 5 x Sharp IR GP2D120 sensors, with two on the side and three on a front sensor panner. While navigation uses GPS and compass data.

The control system uses fuzzy logic to integrate navigation and obstacle avoidance subsystems. This allows the robot to make avoidance decisions while still taking into account navigation data and vice-versa. I’ll post up my fuzzy logic code once I get some time to document it. The whole system is completely reactive and has no prior map of the environment. Nor does it attempt to map the environment so it is possible to get into a loop but the wall following behaviour generally negates this. All trigonometry and navigation calculations use a CORDIC system to eliminate the need for floats while still providing a high level of accuracy and low memory usage.

At the moment it’s more or less restricted to outdoor use although the GPS can get a reasonable signal indoors. I’d like to extend it with some form of indoor navigation and add some encoders to the wheels. Feel free to ask me any questions and I’ll endeavour to put up some more material soon. Thanks to Pololu for all their assistance, particularly when I managed to break off the USB connector on the Orangutan X2 after getting a little too heavy handed with it and pulling off the pads in the process.

Hello Lumos,

Nice video. I like how it gets up the curb at the end of the video. What is running FreeRTOS? Do you have an ARM on there somewhere as well?

- Ryan

That looks like an awesome project! I noticed that the robot goes under a building during its trip - if it loses its GPS signal, does it have a backup form of navigation, like wheel encoders or something? Are you going to make your thesis available for us to read, as well?

EDIT: Sorry - I somehow missed your comment that you still are planning to add encoders. So, what does it currently do when it loses the GPS tracking? Can it navigate based on the compass alone for a while?



The ATMega644 on the Orangutan X2 is running FreeRTOS :slight_smile: I’m using a port available here which I’ve updated to the latest version. There’s not a huge difference from the official version available for the ATMega328, just a few timer changes to get it working. It’s very light weight and should be able to run at least 10 tasks depending on stack requirements.


At the moment I’m afraid it just stops after losing GPS as a precaution. I like the idea of it just using the compass and avoiding obstacles until it re-acquires signal but I think I’ll wait until I get some sort of encoder solution to make that a little more robust. I’ll get around to uploading the thesis and all of the code so anyone can take a look if they’re interested.

Thanks for the questions!