LegoNXT Robot - ABS Motion Planning Project

Project Goal:

Generate a path from source to target locations while avoiding obstacles, optimized in some aspects, for our constructed robot to follow.

The project included:

Designing and constructing a robot based on Lego (TM) parts with the MindStorm controller.

Designing an algorithm that calculates an efficient path according to parameters entered by the user.

Creating A second algorithm that converts the output of the first algorithm to a set of instructions for our robot to follow.

Project Milestones

Construction - we have decided to construct our robot as a Car-like robot. I.e. Forward motion generated in the front and steering generated in the back. This decision stemmed from our desire to make the project more interesting, compared to common robot construction models. Retrospectively this was proven to be harder than we thought, due to unexplained misbehavior by the robot from time to time (inaccuracies while following instructions).

Optimization aspects were selected:

Clearance - maximum distance to obstacles

Distance - minimal path distance

Turns - preference for turns that the robot performs well

Implementation & Design

Development/Final Environment: Our development environment consisted of "Google Sketchup" for designing the problem to be solved, "OOPSMP" libraries for existing motion planning algorithms and framework, "Microsoft Visual Studio" for coding, and "Bram NXT" library for controlling the robot.

Motion planning: Our approach was to use existing algorithms for motion planning, and hybridize their solution paths to a single path optimized for the aspects we selected, while prioritizing these aspects using weights given by the user.

Translation to robot control: We decided to address the issue of control by regarding the solution path as a path to follow, rather than a description of the robot's exact state at a given time (which is the broadly accepted convention).

Results

Video of our robot in action:

A Few Points On the Implementation

We used two software packages in our project. The first is the OOPSMP package. OOPSMP is a very extensive motion planning solution that we used as the basis for our path computation. The second package is The Bram NXT package. This ".Net" solution was used to control the robot. We highly recommend working with the Bram package instead of Microsoft visual robotics, since it simplifies and streamlines the work (though it did lack one feature that we added - causing the engines to halt immediately).

If you are about to take a similar project you should check out our notes on robot designing. We used a robot of our design and we learned the hard way that the LEGO kit that we used to build our robot (the standard NXT kit) isn't rich enough to experiment with designs other than the stock ones. Our recommendation is to use the Tri-Bot design by LEGO (more detail can be found in our documentation).