|
|
There exist various frames that are needed to obtain the robot's global pose (pose within in the global frame):
| Name | Description |
|---|---|
global | The "world" frame |
map | During mapping, the robot does not have knowledge about the world but creates a local map (with map as root frame). All map features (e.g. point clouds, occupancy grids, ...) are linked to this frame. |
odom | The odometry as an integration of the robot's velocity. |
robot | The robot's root frame |
For each transformation between frames, there exist individual components:
| Involved Frames | Description |
|---|---|
global->map | Map registration: given a scene (objects with known poses, e.g. walls, ...), this component obtains a static transformation between a the scene and the map. |
map->odom | Localization The localization component computes the transformation map->robot and performs map corrections by updating map->odom. |
odom->robot | Odometry |
Within the core segment, each robot has its own provider segment (here: Armar6). Within the provider segment, entities describe the transformations between the frames (Global,Map -> global->map).
See armarx::armem::client::robot_state::localization (include RobotAPI/libraries/armem_robot_localization/).
There exist two classes:
armarx::armem::client::robot_state::localization::TransformWriter to send transformations to memoryarmarx::armem::client::robot_state::localization::TransformReader to obtain transformations between any of the frames; can also be used to obtain the "robot's global pose"For an example, see RobotComponents/components/carographer_mapping_and_localization (currently branch feature/cartographer_integration)