Roboflag2004 notes

From MurrayWiki
Jump to: navigation, search

NOTES ON ROBOFLAG CODE - SUMMER 2004 Michael Yeh

The repository should be located in: /home/network/array5/UserFiles/myeh/Subversion/Roboflag04/ as Roboflag04 in the CDS cluster.

Changes from Cornell code to Caltech code: The Caltech version combines all the different programs (arbiter, entity, etc..)into one large project. The main reason for this is to keep the common code consistent - if someone changes a file shared between the entity and the arbiter, then both projects will use the updated code when recompiled. Also, if any changes to common files break any of the old code, then it will show up during the compiling process.

The Caltech code integrates the changes from the 2003 summer, including A*/NTG trajectory generation and arbitrary field support. The trajectory generation method for each entity is set in the TrajectoryConfig.txt file, in the Runtime directory. The NTG module doesn't work yet, so it is not recommended. Also, the stream functions method only works on the original Cornell field (since the zones and such were hard-coded into the algorithm). Both straight-line and A* trajectory generation methods send velocity commands to the robot controller (A* will avoid objects on the field). Position will send x-y coordinates to the robot controller, and it assumes the controller will dodge obstacles (see hardware notes).

Hardware Notes: So far the most successful Kelly controller uses x-y coordinates for getting its destination. Steelebots and the original Cornell controllers use velocity commands. Both use the same packet structure, except they are interpreted differently, depending on the controller. The TrajectoryConfig.txt file chooses which information to send to the controller. There has been no tests with the Bats so far.

Need To Do: Although the code has been cleaned up a little, it is still mostly undocumented and has a lot of extra or messy code. The simulator also needs to be updated to include the dynamics of the vehicles of the testbed. A Linux port of the code would also be useful.