|
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
)