We devised and implemented a reactive controller for our system, which is computationally inexpensive, deals with dynamic environments, and recovers from noisy command execution and possible interferences. A reactive controller also has possible disadvantages, as it may generate sub-optimal paths, due to local minima. We introduced a failure recovery routine to handle such failures.
The navigational movement control for our robots is hence done via reactive control. The control rules described below are inspired by the Braitenburg vehicle [3]. The Braitenburg love vehicle defines a reactive control mechanism that directs a differential-drive robot to a certain target. A similar behavior is required in the system; however, the love vehicle's control mechanism is too simplistic and, in some start configurations, tends to converge to the goal very slowly. We devised a modified set of reactive control formulae that allows for effective adjustment of the control trajectory:
where v and are the desired translational and rotational velocities, respectively, is the direction of the target relative to the robot , is the in-place rotational velocity, and and are the base translational and rotational velocities, respectively. The translational and rotational velocities can be translated to differential drive parameters via a simple, invertible linear transform. This set of control formulae differs from the love vehicle in that it takes into account the orientation of the robot with respect to the target and explicitly adds rotational control. This set of control rules implicitly allows for heading independence, i.e., the control rules allow for both forward and backward movements, whichever one is most efficient to execute. Figure 3 shows an actual run of the reactive control algorithm described above.
Figure 3: Sample trace of the execution of the reactive control
algorithm. The target point is marked with a cross.