Files
rtabmap_ros/rtabmap_conversions
matlabbe 82f0754bf7 rtabmap_demos tests and docs (#1462)
* rtabmap_demos tests and docs

* added bag testing

* added rtabmap_examples launch tests

* updating demo bag download paths

* added netherdrone demo

* Fixed rgb-only callback with lidar rejected.  Updated lidar params

* Added back OrbitOriented rviz view to ros2, with optional octomap wll clipping

* fixing ci

* lidar demo added intermediate_nodes option

* added netherdrone as demo test

* running rtabmap_demos tests on ci

* added rtabmap_launch tests, fixed ground_truth_base_frame_id usage

* ficing rolling

* updating demo test harnest

* densify golden trajectories to avoid tf missing

* fixing tf steps

* updated min icp ratio for netherdrone demo

* fixing image_transport arg->params

* export pose opt=0

* lets process all frames

* updated netherdrone golden

* fixing publishers queue size just for tests

* added playdback demo doc

* Adding more logs to debug ci

* Fixing QOS for CI to reliable, added find-object demo test

* name threads

* fixing camera info expected transient on lyrical/rolling. Fixing find_object not appearing idle

* 30 Hz polling backward comp

* fixing test tf sim lock

* fixing lyrical qos bag parsing

* faster replay

* lockstep

* fixing clock deadlock

* Added test on shutdown

* updated netherdrone golden poses

* Extended stereo outdoor test

* updated shutdown test

* updated test

* multi-thread flaky test

* adding backtrace when test fails

* increased closure slack for netherdrone

* g2o gauss newton on stereo

* adjusted maximum optimizer iterations

* updated default iterations

* Added netherdrone in list of demos
2026-10-10 12:23:49 -07:00
..
2026-10-10 12:23:49 -07:00
2026-10-10 12:23:49 -07:00
2026-10-01 01:47:07 -07:00
2026-09-21 17:02:45 -07:00

rtabmap_conversions

Conversions between RTAB-Map library types and ROS 2 messages.

This package is a library only — it contains no nodes, no launch files and no parameters. Every other rtabmap_ros package that touches a message goes through it: rtabmap_slam, rtabmap_odom, rtabmap_sync, rtabmap_util, rtabmap_viz and rtabmap_rviz_plugins.

You only need it directly if you are writing your own node against RTAB-Map's C++ API and want to publish or subscribe to rtabmap_msgs.

Contents

Usage

Add the dependency to your package.xml and CMakeLists.txt:

<depend>rtabmap_conversions</depend>
find_package(rtabmap_conversions REQUIRED)
target_link_libraries(my_node rtabmap_conversions::rtabmap_conversions)

Everything lives in a single header and the rtabmap_conversions namespace:

#include <rtabmap_conversions/MsgConversion.h>

// A pose message to an rtabmap::Transform and back.
rtabmap::Transform pose = rtabmap_conversions::transformFromPoseMsg(msg.pose);

geometry_msgs::msg::Pose out;
rtabmap_conversions::transformToPoseMsg(pose, out);

The naming is uniform: xxxFromROS() converts a message into an RTAB-Map type, xxxToROS() goes the other way. ToROS() functions write through a reference parameter so the message can be reused; FromROS() functions return by value.

What it covers

Group Functions
Transforms transformFromTF, transformToTF, transformFromGeometryMsg, transformToGeometryMsg, transformFromPoseMsg, transformToPoseMsg
TF lookups getTransform, getMovingTransform
Camera models cameraModelFromROS, cameraModelToROS, stereoCameraModelFromROS
Images toCvCopy, toCvShare, rgbdImageFromROS, rgbdImageToROS, convertRGBDMsgs, convertStereoMsg
Laser scans convertScanMsg, convertScan3dMsg, deskew, transformPointCloud, sizeOfPointField
Features keypointFromROS, point2fFromROS, point3fFromROS, globalDescriptorFromROS (+ vector and ToROS variants)
Graph mapDataFromROS, mapGraphFromROS, nodeFromROS, linkFromROS, sensorDataFromROS (+ ToROS variants)
Misc infoFromROS, odomInfoFromROS, odomInfoToStatistics, imuFromROS, userDataFromROS, envSensorFromROS, landmarksFromROS, timestampFromROS, timestampToROS

Full signatures and per-function notes are in the API documentation and in MsgConversion.h.

Conventions worth knowing

These cut across the whole API and are not obvious from the signatures. Per-function caveats — object lifetimes, which fields a given ToROS() fills — are documented on the functions themselves.

Null transforms. RTAB-Map distinguishes a null transform (unknown) from identity. Over the wire this is encoded as an all-zero quaternion, so transformFromGeometryMsg() and transformFromPoseMsg() return a null rtabmap::Transform for one. Always check isNull() before using a result. tf2::Transform cannot represent this — it stores rotation as a basis matrix — so transformToTF() returns a bool instead.

CameraInfo matrices are fixed-size arrays. k, r and p are std::array, so they are never "empty" — an unset matrix is all zeros. cameraModelFromROS() treats a zero k[0]/p[0] (the focal length) as absent.

License

BSD-3-Clause. See the repository root.