IPC Modules
Communications between RIDE programs is handled using a separate package called IPC, Copyright 1991 Christopher Fedor and Reid Simmons.
The navigation platform is based on CARMEN and some modules, such as localize, navigator and base hardware servers remain basically the same. Unlike CARMEN, motion control is divided into high-level (strategic) planning and lower-level (tactical) collision avoidance using the Beam method. CARMEN integrates obstacles in the map and plans a new trajectory in order to avoid obstacles. Integrating all but the lowest-level motor control into a single module can produce optimal plans. However, due to the lack of precision in the localization system, the obstacle integration process can narrow some openings in the map. When the opening is only a little bit wider than the robot diameter, this difference can lead the path planning to discard a possible path through that opening. We have observed this behavior in several points of our office environment using CARMEN, since the robot has to go through very narrow doors.
The hardware server modules handle hardware interaction, providing an abstract set of actuator and sensor interfaces and isolating the control methods from the hardware details. Most of the hardware devices are connected to a CAN bus using RoboCAN. Some of these devices are used in navigation, such as the laser and sonar while others are specific for the application, such as the robot head, sound and speech system, etc. The hardware servers also provide low-level control loops for rotation and translation velocities. Thanks to this layer, changes in hardware components can be made without modifying higher layers modules while keeping the same interface.
The control modules integrate sensor and motion information to provide improved sensor odometry, offering basic navigation capabilities (localization, path planning, follow path, etc) and basic application specific functions (say text, make expression, etc)
Robograph dispatch coordinates the execution of the control modules and sequences their functions according to the plan defined as a Petri net. This module is described in detail in the following sections.
There are several interfaces modules to allow the user to interact with the application, debugging control modules and exchange information with a web server. Users can also connect via Web, monitor and interact with the robot.