Difference between revisions of "Architecture:Specification of BABEL Modules"

From The BABEL Development Site
(BA_RoboticBase)
(BS_IncrementalEgoMotion)
Line 57: Line 57:
 
==== BS_IncrementalEgoMotion ====
 
==== BS_IncrementalEgoMotion ====
  
* Description: This module collects data from odometry, and possibly from visual odometry, etc... to provide incremental estimations of the robot pose.
+
* Description: This module collects data from odometry, and possibly from visual odometry, etc... to provide incremental estimations of the robot pose.  
* Interface: Sensory frames of objects [http://babel.isa.uma.es/mrpt/reference/svn/classmrpt_1_1slam_1_1_c_observation_odometry.html CObservationOdometry].
+
IMPORTANT NOTE: If some module is interested in a detailed list of robot pose increments, it MUST listen for events launched by this module and read all of the increments (see table of events).
 +
 
 +
* Interface:  
 +
 
 +
<center>
 +
<table width="95%" border="1">
 +
<tr>
 +
<td align="center"><b><big>BABEL service group</big></b></td>
 +
<td colspan="2" align="center"><b><big>BABEL services to implement</big></b></td>
 +
</tr>
 +
<tr>
 +
<td rowspan="8" align="center" valign="center">
 +
<big><code> EGO_MOTION  </code></big><br> <br>
 +
The interface for Ego-Motion measurements.
 +
</td>
 +
<td> <!-- DECLARATION -->
 +
<cpp>
 +
::getAction(
 +
out COMMON::SeqOfBytes act,
 +
out boolean error
 +
)
 +
</cpp>
 +
</td>
 +
<td> <!-- COMMENTS -->
 +
Return the last action as a serialized MRPT object of the class [http://babel.isa.uma.es/mrpt/reference/svn/classmrpt_1_1slam_1_1_c_action.html mrpt::slam::CAction].  
 +
This can be a 2D or 3D incremental movement of the robot.
 +
</td>
 +
</tr>
 +
</table>
 +
</center>
  
 
==== BS_Vision ====
 
==== BS_Vision ====

Revision as of 11:35, 24 May 2009

Previous: Interfaces Next: RPDs


This page contains detailed information about a collection of modules and their role in the control architecture. The complete list of modules available for download is available here.



Layer 1: HAD Modules

All the interfaces are defined in the previous section.


Module (ICE) name Description Implemented Driver Interfaces
HAD_MobileBase_Pioneer Driver for the Pioneer3 DX/AT mobile bases, through a COM serial port and the ARIA library. DRV_ALIASES, DRV_MOBILE_BASE, DRV_IOBOARD, DRV_BATTERY_LEVEL
HAD_MobileBase_Simulator A simulated 2D mobile base. DRV_ALIASES, DRV_IOBOARD, DRV_MOBILE_BASE, DRV_2D_RANGE_SCANNER
HAD_Laser_Sick_USB Driver for the SICK laser range scanner via RS422-USB board. Hw version is JLBC/APR-05. DRV_ALIASES, DRV_2D_RANGE_SCANNER
HAD_Laser_Hokuyo Driver for the HOKUYO laser range scanner via a COM serial port. DRV_ALIASES, DRV_2D_RANGE_SCANNER
HAD_GPS Driver for COM-connected GPSs. DRV_ALIASES, DRV_GPS
HAD_GasSensors Driver for the custom-built e-Noses (Hardware Feb-2007). DRV_ALIASES, DRV_GAS_SENSOR
HAD_IMU_XSens Driver for the XSENS IMU. DRV_ALIASES, DRV_IMU_SENSOR
HAD_Generic_Camera Driver for any OpenCV/FFmpeg/Bumblebee camera (any camera supported by MRPT's CCameraSensor). DRV_ALIASES, DRV_CAMERA_SENSOR



Layer 2: Basic Sensory (BS) Modules

Recall that all these modules share a common IF as described in the previous section.


BS_IncrementalEgoMotion

  • Description: This module collects data from odometry, and possibly from visual odometry, etc... to provide incremental estimations of the robot pose.

IMPORTANT NOTE: If some module is interested in a detailed list of robot pose increments, it MUST listen for events launched by this module and read all of the increments (see table of events).

  • Interface:
BABEL service group BABEL services to implement

EGO_MOTION

The interface for Ego-Motion measurements.

<cpp>

getAction(

out COMMON::SeqOfBytes act, out boolean error ) </cpp>

Return the last action as a serialized MRPT object of the class mrpt::slam::CAction. This can be a 2D or 3D incremental movement of the robot.

BS_Vision

  • Description: This module collects images from the available cameras and:
    • Provides the raw images, as CObservationImage or CObservationStereoImages objects.
    • Performs real-time feature tracking from stereo images (if available) and provides the tracked landmarks as an object of the class CObservationVisualLandmarks.

BS_RangeSensors

  • Description: This module collects data from laser range scanners, and ultrasonic sensors.





Layer 2: Basic Actuators (BA) Modules

BA_RoboticBase

  • Description: This module implements DRV_MOBILE_BASE and redirects all the calls to the actual underlying device, either a real robot or the simulator.

This is the module to use when one wants the mobile base to move or stop, or one wants to read odometry.

BA_JoystickControl

  • Description: This module reads command from a Joystick and send the motion commands to BA_RoboticBase. It can be enabled/disabled from the module console.





Layer 3: Sensory Detector (SD) Modules

SD_PeopleDetector

  • Description: This module detects people around the robot using sensor data from range scanners, images, etc....
  • Interface: Create a new type of observation? and/or add some specific method to retrieve the detected data.


SD_Local3DMap

  • Description: This module maintains a 3D representation of close obstacles around the robot, by fusing data from sonars, laser scanners, and stereo vision.
  • Interface: TODO: Specific IF to retrieve:
    • A 2D obstacle point map.
    • A 2D occupancy grid.
    • A 3D point cloud.





Layer 3: Function Executors (FE) Modules

Recall that all these modules implement the Common Actions Interface.


FE_ReactiveNavigation

Controls the reactive navigation capabilities of the robot in 2D. If a request is received while navigating, the previous one is automatically marked as cancelled.

  • Action: "navigate"
  • Action parameters (text lines within 'params' in the service executeAction(...) ):
    • "target_x = ...": The target location (in meters), X-coordinate in the current sub-map.
    • "target_y = ...": The target location (in meters), Y-coordinate in the current sub-map.
    • "relative = 0 | 1" (OPTIONAL, default=0): If set to "1", (x,y) coordinates are interpreted as relative to the current robot pose.
    • "max_dist = ...": (OPTIONAL) The distance (in meters) to the target location such as navigation can be considered successful.
    • "max_speed = ...": (OPTIONAL) If supplied, indicates the max. speed (m/s) of the robot. Angular max. speed is automatically derived. This can be used in situations known to be dangerous for the robot.


FE_DoorOpening

Asks a nearby human to open the door.

  • Action: "openDoor"
  • Action parameters (text lines within 'params' in the service executeAction(...) ):
    • None.







Layers 2/3: Others

The following modules don't fit within either Actuators or Sensors, but they are required by other modules in layers 2,3 or in the higher-layers.


Localization_PF

  • Global localization and pose tracking for a mobile robot using range sensors (lasers/sonars) and a global map.






A practical example

An example of the low-level control architecture for a 2D robot with 2 laser scanners and a stereo camera:


Example control arch 1.png