wormcontrol_plan.py: Wormcontrol_plan is a subclass of JoyApp that controls the clusters according to the inputs from the ar_cam module. The properties are set using worm.yml and Joyapp.yml which are located at CKBot/trunk. A separate ar_cam.cpp process must be running prior to the execution of this program. The user should be careful when executing ar_cam.cpp. The ar_cam.cpp is completely independent to the ar_cam_udpplan or wormcontrol_plan. It is up to the user to match the number of markers in these two processes. e.g. if the ar_cam is executed as follows (at CKBot/trunk directory): ./bin/ar_cam data/patt.p0 data/patt.p1 then the contents of worm.yml must match the number of markers (2) and the marker names. (markerNames : ['data/patt.p0','data/patt.p1']) the Controller reads in the worm.yml file, creates clusters according to the yaml file, and controls their movements according to the inputs from the ar_cam_udpplan.py. The Controller updates its table periodically by looking into the markerTbl of ar_cam_udpplan. It processes the markerTbl and creates its own table that has the following format: cluster#1 [deathcount, distance to goal, angle to goal] cluster#2 [ . . . . . . The goal is computed by averaging all the coordinates of existing clusters. All the clusters attempts to get within dTolerance away from the goal coordinate by first turning to the direction (with aTolerance precision) and moving towards it. When the deathcount of a cluster is dead (deathcount = 0, ar_cam does not see the coresponding marker) it considers that the cluster has been turned over, and attempts to roll it back to a proper orientation.