[Previous] [Home] [Next]

3. Development

We have implemented the above techniques in the SRI International mobile robot Flakey. Flakey is a custom-built research robot, with a height of 1 meter and a diameter of 600 mm, driven by two independent wheels. Sensors include a ring of 12 sonars, bumpers, wheel encoders, plus other equipment not used in the experiments reported here. On-board computation include a 2-processor Sparc 10. The control software is distributed over several processes that operate in parallel with a basic cycle time of 100 msecs. The fuzzy controller uses up about 2 msecs with one behavior active, and about 10 msecs with 8 behaviors (on the average, 2 or 3 behaviors are simultaneously active during a typical navigation task). Although Flakey can run all the control software on-board, we usually run it remotely via a radio-link for programming convenience. As Flakey is mainly a research testbed, all the code is written from scratch in Lisp (with parts in C) putting a strong emphasis on code modularity.

We have written fuzzy rules for about a dozen behaviors for Flakey (Saffiotti et al 1993b). Each behavior typically comprises four to ten rules and two to six fuzzy predicates. Fuzzy predicates are coded by piecewise linear membership functions, built by combining ramp functions of the variables in the LPS. Fuzzy outputs and fuzzy locations are coded by triangular fuzzy sets. These choices proved to be a reasonable tradeoff between expressiveness and computational tractability. Writing the control rules was based on the designer's ``good intuition'' of the intended behavior; tuning and debugging was done by trials and errors. Most behaviors performed well after few debugging cycles; however, behaviors which heavily rely on perception, like obstacle avoidance, required extensive debugging and fine tuning. The membership functions used for the fuzzy localizers only needed few adjustments to produce satisfactory results.


[Previous] [Home] [Next]
Last updated: August 7, 1997, by A. Saffiotti