2021-03-27 21:51:06 -04:00
<!-- -->
2015-10-28 20:05:04 -04:00
<launch>
<!-- Convenience launch file to launch odometry, rtabmap and rtabmapviz nodes at once -->
2016-07-06 20:08:23 -04:00
<!-- For stereo:=false
2015-10-28 20:05:04 -04:00
Your RGB-D sensor should be already started with "depth_registration:=true".
Examples:
$ roslaunch freenect_launch freenect.launch depth_registration:=true
$ roslaunch openni2_launch openni2.launch depth_registration:=true -->
<!-- For stereo:=true
Your camera should be calibrated and publishing rectified left and right
images + corresponding camera_info msgs. You can use stereo_image_proc for image rectification.
Example:
$ roslaunch rtabmap_ros bumblebee.launch -->
2020-02-20 16:05:09 -05:00
<!-- Choose between depth and stereo, set both to false to do only scan -->
<arg name= "stereo" default= "false" />
<arg if= "$(arg stereo)" name= "depth" default= "false" />
<arg unless= "$(arg stereo)" name= "depth" default= "true" />
2021-06-28 10:56:37 -04:00
<arg name= "subscribe_rgb" default= "$(arg depth)" />
2015-10-28 20:05:04 -04:00
<!-- Choose visualization -->
<arg name= "rtabmapviz" default= "true" />
<arg name= "rviz" default= "false" />
2016-06-02 14:21:07 -04:00
<!-- Localization-only mode -->
<arg name= "localization" default= "false" />
2017-08-15 15:50:51 -04:00
<!-- sim time for convenience, if playing a rosbag -->
<arg name= "use_sim_time" default= "false" />
<param if= "$(arg use_sim_time)" name= "use_sim_time" value= "true" />
2015-10-28 20:05:04 -04:00
<!-- Corresponding config files -->
2016-03-17 14:41:35 -04:00
<arg name= "cfg" default= "" /> <!-- To change RTAB-Map's parameters, set the path of config file (*.ini) generated by the standalone app -->
2016-03-17 16:15:49 -04:00
<arg name= "gui_cfg" default= "~/.ros/rtabmap_gui.ini" />
2016-11-09 15:04:22 -05:00
<arg name= "rviz_cfg" default= "$(find rtabmap_ros)/launch/config/rgbd.rviz" />
2015-10-28 20:05:04 -04:00
<arg name= "frame_id" default= "camera_link" /> <!-- Fixed frame id, you may set "base_link" or "base_footprint" if they are published -->
2017-04-04 12:55:31 -04:00
<arg name= "odom_frame_id" default= "" /> <!-- If set, TF is used to get odometry instead of the topic -->
2021-05-20 22:41:45 -04:00
<arg name= "odom_frame_id_init" default= "" /> <!-- If set, TF map->odom is published even if no odometry topic has been received yet. The frame id should match the one in the topic. -->
2017-04-04 12:55:31 -04:00
<arg name= "map_frame_id" default= "map" />
2017-05-17 15:02:55 -04:00
<arg name= "ground_truth_frame_id" default= "" /> <!-- e.g., "world" -->
<arg name= "ground_truth_base_frame_id" default= "" /> <!-- e.g., "tracker", a fake frame matching the frame "frame_id" (but on different TF tree) -->
2015-10-28 20:05:04 -04:00
<arg name= "namespace" default= "rtabmap" />
<arg name= "database_path" default= "~/.ros/rtabmap.db" />
<arg name= "queue_size" default= "10" />
2016-03-17 17:14:43 -04:00
<arg name= "wait_for_transform" default= "0.2" />
2017-04-04 12:55:31 -04:00
<arg name= "args" default= "" /> <!-- delete_db_on_start, udebug -->
<arg name= "rtabmap_args" default= "$(arg args)" /> <!-- deprecated, use "args" argument -->
2021-03-27 21:51:06 -04:00
<arg name= "gdb" default= "false" /> <!-- Launch nodes in gdb for debugging (apt install xterm gdb) -->
<arg if= "$(arg gdb)" name= "launch_prefix" default= "xterm -e gdb -q -ex run --args" />
<arg unless= "$(arg gdb)" name= "launch_prefix" default= "" />
2021-09-08 15:24:37 -04:00
<arg name= "clear_params" default= "true" />
2018-02-01 22:16:13 -05:00
<arg name= "output" default= "screen" /> <!-- Control node output (screen or log) -->
2019-03-14 14:20:21 -04:00
<arg name= "publish_tf_map" default= "true" />
2018-02-01 22:16:13 -05:00
2016-09-28 12:08:11 -04:00
<!-- if timestamps of the input topics are synchronized using approximate or exact time policy-->
<arg if= "$(arg stereo)" name= "approx_sync" default= "false" />
2020-02-20 18:10:38 -05:00
<arg unless= "$(arg stereo)" name= "approx_sync" default= "$(arg depth)" />
2016-06-30 12:49:20 -04:00
2015-10-28 20:05:04 -04:00
<!-- RGB-D related topics -->
<arg name= "rgb_topic" default= "/camera/rgb/image_rect_color" />
<arg name= "depth_topic" default= "/camera/depth_registered/image_raw" />
<arg name= "camera_info_topic" default= "/camera/rgb/camera_info" />
2018-03-17 18:27:27 -04:00
<arg name= "depth_camera_info_topic" default= "$(arg camera_info_topic)" />
2015-10-28 20:05:04 -04:00
<!-- stereo related topics -->
<arg name= "stereo_namespace" default= "/stereo_camera" />
<arg name= "left_image_topic" default= "$(arg stereo_namespace)/left/image_rect_color" />
<arg name= "right_image_topic" default= "$(arg stereo_namespace)/right/image_rect" /> <!-- using grayscale image for efficiency -->
<arg name= "left_camera_info_topic" default= "$(arg stereo_namespace)/left/camera_info" />
<arg name= "right_camera_info_topic" default= "$(arg stereo_namespace)/right/camera_info" />
2017-08-15 15:50:51 -04:00
<!-- Already synchronized RGB-D related topic, with rtabmap_ros/rgbd_sync nodelet -->
2017-11-30 15:46:11 -05:00
<arg name= "rgbd_sync" default= "false" /> <!-- pre-sync rgb_topic, depth_topic, camera_info_topic -->
<arg name= "approx_rgbd_sync" default= "true" /> <!-- false=exact synchronization -->
<arg name= "subscribe_rgbd" default= "$(arg rgbd_sync)" />
<arg name= "rgbd_topic" default= "rgbd_image" />
2020-04-18 14:26:04 -04:00
<arg name= "depth_scale" default= "1.0" /> <!-- Deprecated, use rgbd_depth_scale instead -->
<arg name= "rgbd_depth_scale" default= "$(arg depth_scale)" />
<arg name= "rgbd_decimation" default= "1" />
2017-08-15 15:50:51 -04:00
2015-10-28 20:05:04 -04:00
<arg name= "compressed" default= "false" /> <!-- If you want to subscribe to compressed image topics -->
2016-01-27 10:46:20 -05:00
<arg name= "rgb_image_transport" default= "compressed" /> <!-- Common types: compressed, theora (see "rosrun image_transport list_transports") -->
2018-05-29 13:00:40 -04:00
<arg name= "depth_image_transport" default= "compressedDepth" /> <!-- Depth compatible types: compressedDepth (see "rosrun image_transport list_transports") -->
2021-09-13 18:23:34 -04:00
<arg name= "gen_cloud" default= "false" /> <!-- only works with depth image and if not subscribing to scan_cloud topic-->
<arg name= "gen_cloud_decimation" default= "4" />
<arg name= "gen_cloud_voxel" default= "0.05" />
2015-10-28 20:05:04 -04:00
<arg name= "subscribe_scan" default= "false" />
<arg name= "scan_topic" default= "/scan" />
2021-09-13 18:23:34 -04:00
<arg name= "subscribe_scan_cloud" default= "$(arg gen_cloud)" />
2016-03-13 18:05:27 -04:00
<arg name= "scan_cloud_topic" default= "/scan_cloud" />
2020-05-03 22:42:01 -04:00
<arg name= "subscribe_scan_descriptor" default= "false" />
<arg name= "scan_descriptor_topic" default= "/scan_descriptor" />
2020-02-20 16:05:09 -05:00
<arg name= "scan_cloud_max_points" default= "0" />
<arg name= "scan_cloud_filtered" default= "false" /> <!-- use filtered cloud from icp_odometry for mapping -->
2021-01-12 11:55:01 -05:00
<arg name= "gen_scan" default= "false" /> <!-- only works with depth image and if not subscribing to scan topic-->
2021-06-28 10:56:37 -04:00
<arg name= "gen_depth" default= "false" /> <!-- Generate depth image from scan_cloud -->
<arg name= "gen_depth_decimation" default= "1" />
<arg name= "gen_depth_fill_holes_size" default= "0" />
<arg name= "gen_depth_fill_iterations" default= "1" />
<arg name= "gen_depth_fill_holes_error" default= "0.1" />
2015-10-28 20:05:04 -04:00
2017-02-08 15:16:29 -05:00
<arg name= "visual_odometry" default= "true" /> <!-- Launch rtabmap visual odometry node -->
2017-11-30 15:46:11 -05:00
<arg name= "icp_odometry" default= "false" /> <!-- Launch rtabmap icp odometry node -->
<arg name= "odom_topic" default= "odom" /> <!-- Odometry topic name -->
2017-12-18 15:44:31 -05:00
<arg name= "vo_frame_id" default= "$(arg odom_topic)" /> <!-- Visual/Icp odometry frame ID for TF -->
2019-03-14 14:20:21 -04:00
<arg name= "publish_tf_odom" default= "true" />
2021-10-05 14:26:07 -04:00
<arg name= "odom_tf_angular_variance" default= "0.001" /> <!-- If TF is used to get odometry, this is the default angular variance -->
<arg name= "odom_tf_linear_variance" default= "0.001" /> <!-- If TF is used to get odometry, this is the default linear variance -->
2017-11-30 15:46:11 -05:00
<arg name= "odom_args" default= "" /> <!-- More arguments for odometry (overwrite same parameters in rtabmap_args) -->
2017-07-04 15:55:00 -04:00
<arg name= "odom_sensor_sync" default= "false" />
2017-11-30 15:46:11 -05:00
<arg name= "odom_guess_frame_id" default= "" />
<arg name= "odom_guess_min_translation" default= "0" />
2020-05-20 15:10:17 -04:00
<arg name= "odom_guess_min_rotation" default= "0" />
<arg name= "odom_max_rate" default= "0" />
<arg name= "odom_expected_rate" default= "0" />
2019-05-31 19:35:49 -04:00
<arg name= "imu_topic" default= "/imu/data" /> <!-- only used with VIO approaches -->
<arg name= "wait_imu_to_init" default= "false" />
2020-12-23 15:55:18 -05:00
<arg name= "use_odom_features" default= "false" />
2017-02-08 15:16:29 -05:00
2020-04-19 09:53:09 -04:00
<arg name= "scan_cloud_assembling" default= "false" />
2021-08-31 15:54:07 -04:00
<arg name= "scan_cloud_assembling_time" default= "1" /> <!-- max_clouds and time should not be set at the same time -->
<arg name= "scan_cloud_assembling_max_clouds" default= "0" /> <!-- max_clouds and time should not be set at the same time -->
2020-04-19 09:53:09 -04:00
<arg name= "scan_cloud_assembling_fixed_frame" default= "" />
<arg name= "scan_cloud_assembling_voxel_size" default= "0.05" />
2021-08-31 15:54:07 -04:00
<arg name= "scan_cloud_assembling_range_min" default= "0.0" /> <!-- 0=disabled -->
<arg name= "scan_cloud_assembling_range_max" default= "0.0" /> <!-- 0=disabled -->
2020-06-22 10:02:57 -04:00
<arg name= "scan_cloud_assembling_noise_radius" default= "0.0" /> <!-- 0=disabled -->
<arg name= "scan_cloud_assembling_noise_min_neighbors" default= "5" />
2020-04-19 09:53:09 -04:00
2017-02-22 14:43:16 -05:00
<arg name= "subscribe_user_data" default= "false" /> <!-- user data synchronized subscription -->
<arg name= "user_data_topic" default= "/user_data" />
<arg name= "user_data_async_topic" default= "/user_data_async" /> <!-- user data async subscription (rate should be lower than map update rate) -->
2015-10-28 20:05:04 -04:00
2018-10-24 08:53:44 +12:00
<arg name= "gps_topic" default= "/gps/fix" /> <!-- gps async subscription -->
2018-12-07 18:31:59 -05:00
<arg name= "tag_topic" default= "/tag_detections" /> <!-- apriltags async subscription -->
2019-01-06 17:08:12 -05:00
<arg name= "tag_linear_variance" default= "0.0001" />
<arg name= "tag_angular_variance" default= "9999" /> <!-- >=9999 means ignore rotation in optimization, when rotation estimation of the tag is not reliable -->
2018-12-07 18:31:59 -05:00
2016-01-27 10:46:20 -05:00
<!-- These arguments should not be modified directly, see referred topics without "_relay" suffix above -->
<arg if= "$(arg compressed)" name= "rgb_topic_relay" default= "$(arg rgb_topic)_relay" />
<arg unless= "$(arg compressed)" name= "rgb_topic_relay" default= "$(arg rgb_topic)" />
<arg if= "$(arg compressed)" name= "depth_topic_relay" default= "$(arg depth_topic)_relay" />
<arg unless= "$(arg compressed)" name= "depth_topic_relay" default= "$(arg depth_topic)" />
<arg if= "$(arg compressed)" name= "left_image_topic_relay" default= "$(arg left_image_topic)_relay" />
<arg unless= "$(arg compressed)" name= "left_image_topic_relay" default= "$(arg left_image_topic)" />
<arg if= "$(arg compressed)" name= "right_image_topic_relay" default= "$(arg right_image_topic)_relay" />
<arg unless= "$(arg compressed)" name= "right_image_topic_relay" default= "$(arg right_image_topic)" />
2019-03-03 18:31:35 -05:00
<arg if= "$(arg rgbd_sync)" name= "rgbd_topic_relay" default= "$(arg rgbd_topic)" />
<arg unless= "$(arg rgbd_sync)" name= "rgbd_topic_relay" default= "$(arg rgbd_topic)_relay" />
2016-01-27 10:46:20 -05:00
2015-10-28 20:05:04 -04:00
<!-- Nodes -->
<group ns= "$(arg namespace)" >
2017-11-30 15:46:11 -05:00
<!-- relays -->
2020-02-20 16:05:09 -05:00
<group if= "$(arg depth)" >
2018-05-29 13:00:40 -04:00
<group unless= "$(arg subscribe_rgbd)" >
<node if= "$(arg compressed)" name= "republish_rgb" type= "republish" pkg= "image_transport" args= "$(arg rgb_image_transport) in:=$(arg rgb_topic) raw out:=$(arg rgb_topic_relay)" />
<node if= "$(arg compressed)" name= "republish_depth" type= "republish" pkg= "image_transport" args= "$(arg depth_image_transport) in:=$(arg depth_topic) raw out:=$(arg depth_topic_relay)" />
</group>
<group if= "$(arg rgbd_sync)" >
<node if= "$(arg compressed)" name= "republish_rgb" type= "republish" pkg= "image_transport" args= "$(arg rgb_image_transport) in:=$(arg rgb_topic) raw out:=$(arg rgb_topic_relay)" />
<node if= "$(arg compressed)" name= "republish_depth" type= "republish" pkg= "image_transport" args= "$(arg depth_image_transport) in:=$(arg depth_topic) raw out:=$(arg depth_topic_relay)" />
2021-09-08 15:24:37 -04:00
<node pkg= "nodelet" type= "nodelet" name= "rgbd_sync" args= "standalone rtabmap_ros/rgbd_sync" clear_params= "$(arg clear_params)" output= "$(arg output)" >
2018-05-29 13:00:40 -04:00
<remap from= "rgb/image" to= "$(arg rgb_topic_relay)" />
<remap from= "depth/image" to= "$(arg depth_topic_relay)" />
<remap from= "rgb/camera_info" to= "$(arg camera_info_topic)" />
2019-03-03 18:31:35 -05:00
<remap from= "rgbd_image" to= "$(arg rgbd_topic_relay)" />
2018-05-29 13:00:40 -04:00
<param name= "approx_sync" type= "bool" value= "$(arg approx_rgbd_sync)" />
<param name= "queue_size" type= "int" value= "$(arg queue_size)" />
2020-04-18 14:26:04 -04:00
<param name= "depth_scale" type= "double" value= "$(arg rgbd_depth_scale)" />
<param name= "decimation" type= "double" value= "$(arg rgbd_decimation)" />
2018-05-29 13:00:40 -04:00
</node>
</group>
2015-10-28 20:05:04 -04:00
</group>
<group if= "$(arg stereo)" >
2018-05-29 13:00:40 -04:00
<group unless= "$(arg subscribe_rgbd)" >
<node if= "$(arg compressed)" name= "republish_left" type= "republish" pkg= "image_transport" args= "$(arg rgb_image_transport) in:=$(arg left_image_topic) raw out:=$(arg left_image_topic_relay)" />
<node if= "$(arg compressed)" name= "republish_right" type= "republish" pkg= "image_transport" args= "$(arg rgb_image_transport) in:=$(arg right_image_topic) raw out:=$(arg right_image_topic_relay)" />
</group>
<group if= "$(arg rgbd_sync)" >
<node if= "$(arg compressed)" name= "republish_left" type= "republish" pkg= "image_transport" args= "$(arg rgb_image_transport) in:=$(arg left_image_topic) raw out:=$(arg left_image_topic_relay)" />
<node if= "$(arg compressed)" name= "republish_right" type= "republish" pkg= "image_transport" args= "$(arg rgb_image_transport) in:=$(arg right_image_topic) raw out:=$(arg right_image_topic_relay)" />
2021-09-08 15:24:37 -04:00
<node pkg= "nodelet" type= "nodelet" name= "stereo_sync" args= "standalone rtabmap_ros/stereo_sync" clear_params= "$(arg clear_params)" output= "$(arg output)" >
2018-05-29 13:00:40 -04:00
<remap from= "left/image_rect" to= "$(arg left_image_topic_relay)" />
<remap from= "right/image_rect" to= "$(arg right_image_topic_relay)" />
<remap from= "left/camera_info" to= "$(arg left_camera_info_topic)" />
<remap from= "right/camera_info" to= "$(arg right_camera_info_topic)" />
2019-03-03 18:31:35 -05:00
<remap from= "rgbd_image" to= "$(arg rgbd_topic_relay)" />
2018-05-29 13:00:40 -04:00
<param name= "approx_sync" type= "bool" value= "$(arg approx_rgbd_sync)" />
<param name= "queue_size" type= "int" value= "$(arg queue_size)" />
</node>
</group>
2018-02-13 21:35:15 -05:00
</group>
2018-05-29 13:00:40 -04:00
<group unless= "$(arg rgbd_sync)" >
2019-03-03 18:31:35 -05:00
<group if= "$(arg subscribe_rgbd)" >
2021-09-08 15:24:37 -04:00
<node name= "republish_rgbd_image" type= "rgbd_relay" pkg= "rtabmap_ros" clear_params= "$(arg clear_params)" >
2019-03-03 18:31:35 -05:00
<remap if= "$(arg compressed)" from= "rgbd_image" to= "$(arg rgbd_topic)/compressed" />
<remap if= "$(arg compressed)" from= "$(arg rgbd_topic)/compressed_relay" to= "$(arg rgbd_topic_relay)" />
<remap unless= "$(arg compressed)" from= "rgbd_image" to= "$(arg rgbd_topic)" />
<param if= "$(arg compressed)" name= "uncompress" value= "true" />
</node>
</group>
2018-05-29 13:00:40 -04:00
</group>
2021-09-13 18:23:34 -04:00
2021-09-14 13:56:21 -04:00
<node if= "$(arg gen_cloud)" pkg= "nodelet" type= "nodelet" name= "gen_cloud_from_depth" args= "standalone rtabmap_ros/point_cloud_xyz" clear_params= "$(arg clear_params)" output= "$(arg output)" >
2021-09-13 18:23:34 -04:00
<remap from= "depth/image" to= "$(arg depth_topic_relay)" />
<remap from= "depth/camera_info" to= "$(arg camera_info_topic)" />
<remap from= "cloud" to= "$(arg scan_cloud_topic)" />
<param name= "decimation" type= "double" value= "$(arg gen_cloud_decimation)" />
<param name= "voxel_size" type= "double" value= "$(arg gen_cloud_voxel)" />
<param name= "approx_sync" type= "bool" value= "false" />
</node>
2018-05-29 13:00:40 -04:00
2017-11-30 15:46:11 -05:00
<!-- Visual odometry -->
<group unless= "$(arg icp_odometry)" >
<group if= "$(arg visual_odometry)" >
<!-- RGB-D Odometry -->
2021-09-08 15:24:37 -04:00
<node unless= "$(arg stereo)" pkg= "rtabmap_ros" type= "rgbd_odometry" name= "rgbd_odometry" clear_params= "$(arg clear_params)" output= "$(arg output)" args= "$(arg rtabmap_args) $(arg odom_args)" launch-prefix= "$(arg launch_prefix)" >
2017-11-30 15:46:11 -05:00
<remap from= "rgb/image" to= "$(arg rgb_topic_relay)" />
<remap from= "depth/image" to= "$(arg depth_topic_relay)" />
<remap from= "rgb/camera_info" to= "$(arg camera_info_topic)" />
2019-03-03 18:31:35 -05:00
<remap from= "rgbd_image" to= "$(arg rgbd_topic_relay)" />
2017-12-18 15:44:31 -05:00
<remap from= "odom" to= "$(arg odom_topic)" />
2019-08-13 16:09:56 -04:00
<remap from= "imu" to= "$(arg imu_topic)" />
2017-11-30 15:46:11 -05:00
<param name= "frame_id" type= "string" value= "$(arg frame_id)" />
<param name= "odom_frame_id" type= "string" value= "$(arg vo_frame_id)" />
2019-03-14 14:20:21 -04:00
<param name= "publish_tf" type= "bool" value= "$(arg publish_tf_odom)" />
2017-11-30 15:46:11 -05:00
<param name= "ground_truth_frame_id" type= "string" value= "$(arg ground_truth_frame_id)" />
<param name= "ground_truth_base_frame_id" type= "string" value= "$(arg ground_truth_base_frame_id)" />
<param name= "wait_for_transform_duration" type= "double" value= "$(arg wait_for_transform)" />
2019-05-31 19:35:49 -04:00
<param name= "wait_imu_to_init" type= "bool" value= "$(arg wait_imu_to_init)" />
2017-11-30 15:46:11 -05:00
<param name= "approx_sync" type= "bool" value= "$(arg approx_sync)" />
<param name= "config_path" type= "string" value= "$(arg cfg)" />
<param name= "queue_size" type= "int" value= "$(arg queue_size)" />
<param name= "subscribe_rgbd" type= "bool" value= "$(arg subscribe_rgbd)" />
<param name= "guess_frame_id" type= "string" value= "$(arg odom_guess_frame_id)" />
<param name= "guess_min_translation" type= "double" value= "$(arg odom_guess_min_translation)" />
<param name= "guess_min_rotation" type= "double" value= "$(arg odom_guess_min_rotation)" />
2020-05-20 15:10:17 -04:00
<param name= "expected_update_rate" type= "double" value= "$(arg odom_expected_rate)" />
<param name= "max_update_rate" type= "double" value= "$(arg odom_max_rate)" />
2020-12-23 15:55:18 -05:00
<param name= "keep_color" type= "bool" value= "$(arg use_odom_features)" />
2017-11-30 15:46:11 -05:00
</node>
<!-- Stereo Odometry -->
2021-09-08 15:24:37 -04:00
<node if= "$(arg stereo)" pkg= "rtabmap_ros" type= "stereo_odometry" name= "stereo_odometry" clear_params= "$(arg clear_params)" output= "$(arg output)" args= "$(arg rtabmap_args) $(arg odom_args)" launch-prefix= "$(arg launch_prefix)" >
2017-11-30 15:46:11 -05:00
<remap from= "left/image_rect" to= "$(arg left_image_topic_relay)" />
<remap from= "right/image_rect" to= "$(arg right_image_topic_relay)" />
<remap from= "left/camera_info" to= "$(arg left_camera_info_topic)" />
<remap from= "right/camera_info" to= "$(arg right_camera_info_topic)" />
2019-03-03 18:31:35 -05:00
<remap from= "rgbd_image" to= "$(arg rgbd_topic_relay)" />
2017-12-18 15:44:31 -05:00
<remap from= "odom" to= "$(arg odom_topic)" />
2018-07-23 15:58:51 -04:00
<remap from= "imu" to= "$(arg imu_topic)" />
2017-11-30 15:46:11 -05:00
<param name= "frame_id" type= "string" value= "$(arg frame_id)" />
<param name= "odom_frame_id" type= "string" value= "$(arg vo_frame_id)" />
2019-03-14 14:20:21 -04:00
<param name= "publish_tf" type= "bool" value= "$(arg publish_tf_odom)" />
2017-11-30 15:46:11 -05:00
<param name= "ground_truth_frame_id" type= "string" value= "$(arg ground_truth_frame_id)" />
<param name= "ground_truth_base_frame_id" type= "string" value= "$(arg ground_truth_base_frame_id)" />
<param name= "wait_for_transform_duration" type= "double" value= "$(arg wait_for_transform)" />
2019-05-31 19:35:49 -04:00
<param name= "wait_imu_to_init" type= "bool" value= "$(arg wait_imu_to_init)" />
2017-11-30 15:46:11 -05:00
<param name= "approx_sync" type= "bool" value= "$(arg approx_sync)" />
<param name= "config_path" type= "string" value= "$(arg cfg)" />
<param name= "queue_size" type= "int" value= "$(arg queue_size)" />
2018-02-13 21:35:15 -05:00
<param name= "subscribe_rgbd" type= "bool" value= "$(arg subscribe_rgbd)" />
2017-11-30 15:46:11 -05:00
<param name= "guess_frame_id" type= "string" value= "$(arg odom_guess_frame_id)" />
<param name= "guess_min_translation" type= "double" value= "$(arg odom_guess_min_translation)" />
<param name= "guess_min_rotation" type= "double" value= "$(arg odom_guess_min_rotation)" />
2020-05-20 15:10:17 -04:00
<param name= "expected_update_rate" type= "double" value= "$(arg odom_expected_rate)" />
<param name= "max_update_rate" type= "double" value= "$(arg odom_max_rate)" />
2020-12-23 15:55:18 -05:00
<param name= "keep_color" type= "bool" value= "$(arg use_odom_features)" />
2017-11-30 15:46:11 -05:00
</node>
</group>
</group>
<!-- ICP Odometry -->
2021-09-08 15:24:37 -04:00
<node if= "$(arg icp_odometry)" pkg= "rtabmap_ros" type= "icp_odometry" name= "icp_odometry" clear_params= "$(arg clear_params)" output= "$(arg output)" args= "$(arg rtabmap_args) $(arg odom_args)" launch-prefix= "$(arg launch_prefix)" >
2017-11-30 15:46:11 -05:00
<remap from= "scan" to= "$(arg scan_topic)" />
<remap from= "scan_cloud" to= "$(arg scan_cloud_topic)" />
2017-12-18 15:44:31 -05:00
<remap from= "odom" to= "$(arg odom_topic)" />
2019-08-13 16:09:56 -04:00
<remap from= "imu" to= "$(arg imu_topic)" />
2017-11-30 15:46:11 -05:00
<param name= "frame_id" type= "string" value= "$(arg frame_id)" />
<param name= "odom_frame_id" type= "string" value= "$(arg vo_frame_id)" />
2019-03-14 14:20:21 -04:00
<param name= "publish_tf" type= "bool" value= "$(arg publish_tf_odom)" />
2017-11-30 15:46:11 -05:00
<param name= "ground_truth_frame_id" type= "string" value= "$(arg ground_truth_frame_id)" />
<param name= "ground_truth_base_frame_id" type= "string" value= "$(arg ground_truth_base_frame_id)" />
<param name= "wait_for_transform_duration" type= "double" value= "$(arg wait_for_transform)" />
2019-05-31 19:35:49 -04:00
<param name= "wait_imu_to_init" type= "bool" value= "$(arg wait_imu_to_init)" />
2017-11-30 15:46:11 -05:00
<param name= "config_path" type= "string" value= "$(arg cfg)" />
<param name= "queue_size" type= "int" value= "$(arg queue_size)" />
<param name= "guess_frame_id" type= "string" value= "$(arg odom_guess_frame_id)" />
<param name= "guess_min_translation" type= "double" value= "$(arg odom_guess_min_translation)" />
<param name= "guess_min_rotation" type= "double" value= "$(arg odom_guess_min_rotation)" />
2020-02-20 16:05:09 -05:00
<param name= "scan_cloud_max_points" type= "int" value= "$(arg scan_cloud_max_points)" />
2020-05-20 15:10:17 -04:00
<param name= "expected_update_rate" type= "double" value= "$(arg odom_expected_rate)" />
<param name= "max_update_rate" type= "double" value= "$(arg odom_max_rate)" />
2017-11-30 15:46:11 -05:00
</node>
2020-04-19 09:53:09 -04:00
2021-09-08 15:24:37 -04:00
<node if= "$(arg scan_cloud_assembling)" pkg= "rtabmap_ros" type= "point_cloud_assembler" name= "point_cloud_assembler" clear_params= "$(arg clear_params)" output= "$(arg output)" >
2020-04-19 09:53:09 -04:00
<remap if= "$(arg scan_cloud_filtered)" from= "cloud" to= "odom_filtered_input_scan" />
<remap unless= "$(arg scan_cloud_filtered)" from= "cloud" to= "$(arg scan_cloud_topic)" />
<remap from= "odom" to= "$(arg odom_topic)" />
<param name= "assembling_time" type= "double" value= "$(arg scan_cloud_assembling_time)" />
2021-08-31 15:54:07 -04:00
<param name= "max_clouds" type= "int" value= "$(arg scan_cloud_assembling_max_clouds)" />
2020-04-19 09:53:09 -04:00
<param name= "fixed_frame_id" type= "string" value= "$(arg scan_cloud_assembling_fixed_frame)" />
<param name= "voxel_size" type= "double" value= "$(arg scan_cloud_assembling_voxel_size)" />
2021-08-31 15:54:07 -04:00
<param name= "range_min" type= "double" value= "$(arg scan_cloud_assembling_range_min)" />
<param name= "range_max" type= "double" value= "$(arg scan_cloud_assembling_range_max)" />
2020-06-22 10:02:57 -04:00
<param name= "noise_radius" type= "double" value= "$(arg scan_cloud_assembling_noise_radius)" />
<param name= "noise_min_neighbors" type= "int" value= "$(arg scan_cloud_assembling_noise_min_neighbors)" />
2020-04-19 09:53:09 -04:00
</node>
2015-10-28 20:05:04 -04:00
<!-- Visual SLAM (robot side) -->
<!-- args: "delete_db_on_start" and "udebug" -->
2021-09-08 15:24:37 -04:00
<node name= "rtabmap" pkg= "rtabmap_ros" type= "rtabmap" clear_params= "$(arg clear_params)" output= "$(arg output)" args= "$(arg rtabmap_args)" launch-prefix= "$(arg launch_prefix)" >
2016-07-06 20:08:23 -04:00
<param if= "$(arg stereo)" name= "subscribe_depth" type= "bool" value= "false" />
2020-02-20 16:05:09 -05:00
<param unless= "$(arg stereo)" name= "subscribe_depth" type= "bool" value= "$(arg depth)" />
2021-06-28 10:56:37 -04:00
<param name= "subscribe_rgb" type= "bool" value= "$(arg subscribe_rgb)" />
2020-12-23 15:55:18 -05:00
<param name= "subscribe_rgbd" type= "bool" value= "$(eval subscribe_rgbd or use_odom_features)" />
2016-03-13 18:05:27 -04:00
<param name= "subscribe_stereo" type= "bool" value= "$(arg stereo)" />
<param name= "subscribe_scan" type= "bool" value= "$(arg subscribe_scan)" />
<param name= "subscribe_scan_cloud" type= "bool" value= "$(arg subscribe_scan_cloud)" />
2020-05-03 22:42:01 -04:00
<param name= "subscribe_scan_descriptor" type= "bool" value= "$(arg subscribe_scan_descriptor)" />
2017-02-22 14:43:16 -05:00
<param name= "subscribe_user_data" type= "bool" value= "$(arg subscribe_user_data)" />
2017-12-21 10:29:26 -05:00
<param if= "$(arg visual_odometry)" name= "subscribe_odom_info" type= "bool" value= "true" />
<param if= "$(arg icp_odometry)" name= "subscribe_odom_info" type= "bool" value= "true" />
2016-03-13 18:05:27 -04:00
<param name= "frame_id" type= "string" value= "$(arg frame_id)" />
2017-04-04 12:55:31 -04:00
<param name= "map_frame_id" type= "string" value= "$(arg map_frame_id)" />
2016-08-05 16:18:47 -04:00
<param name= "odom_frame_id" type= "string" value= "$(arg odom_frame_id)" />
2021-05-20 22:41:45 -04:00
<param name= "odom_frame_id_init" type= "string" value= "$(arg odom_frame_id_init)" />
2019-03-14 14:20:21 -04:00
<param name= "publish_tf" type= "bool" value= "$(arg publish_tf_map)" />
2021-01-12 11:55:01 -05:00
<param name= "gen_scan" type= "bool" value= "$(arg gen_scan)" />
2017-05-17 15:02:55 -04:00
<param name= "ground_truth_frame_id" type= "string" value= "$(arg ground_truth_frame_id)" />
<param name= "ground_truth_base_frame_id" type= "string" value= "$(arg ground_truth_base_frame_id)" />
2017-02-08 15:16:29 -05:00
<param name= "odom_tf_angular_variance" type= "double" value= "$(arg odom_tf_angular_variance)" />
<param name= "odom_tf_linear_variance" type= "double" value= "$(arg odom_tf_linear_variance)" />
2017-07-04 15:55:00 -04:00
<param name= "odom_sensor_sync" type= "bool" value= "$(arg odom_sensor_sync)" />
2015-10-28 20:05:04 -04:00
<param name= "wait_for_transform_duration" type= "double" value= "$(arg wait_for_transform)" />
2016-03-13 18:05:27 -04:00
<param name= "database_path" type= "string" value= "$(arg database_path)" />
2020-12-23 15:55:18 -05:00
<param name= "approx_sync" type= "bool" value= "$(eval approx_sync and not use_odom_features)" />
2015-10-28 20:05:04 -04:00
<param name= "config_path" type= "string" value= "$(arg cfg)" />
2016-03-13 18:05:27 -04:00
<param name= "queue_size" type= "int" value= "$(arg queue_size)" />
2021-08-31 15:54:07 -04:00
<param if= "$(eval not scan_cloud_filtered and not scan_cloud_assembling)" name= "scan_cloud_max_points" type= "int" value= "$(arg scan_cloud_max_points)" />
2019-01-06 17:08:12 -05:00
<param name= "landmark_linear_variance" type= "double" value= "$(arg tag_linear_variance)" />
2021-06-28 10:56:37 -04:00
<param name= "landmark_angular_variance" type= "double" value= "$(arg tag_angular_variance)" />
<param name= "gen_depth" type= "bool" value= "$(arg gen_depth)" />
<param name= "gen_depth_decimation" type= "int" value= "$(arg gen_depth_decimation)" />
<param name= "gen_depth_fill_holes_size" type= "int" value= "$(arg gen_depth_fill_holes_size)" />
<param name= "gen_depth_fill_iterations" type= "int" value= "$(arg gen_depth_fill_iterations)" />
<param name= "gen_depth_fill_holes_error" type= "double" value= "$(arg gen_depth_fill_holes_error)" />
2018-12-07 18:31:59 -05:00
2016-01-27 10:46:20 -05:00
<remap from= "rgb/image" to= "$(arg rgb_topic_relay)" />
<remap from= "depth/image" to= "$(arg depth_topic_relay)" />
2015-10-28 20:05:04 -04:00
<remap from= "rgb/camera_info" to= "$(arg camera_info_topic)" />
2017-08-15 15:50:51 -04:00
2020-12-23 15:55:18 -05:00
<remap if= "$(arg use_odom_features)" from= "rgbd_image" to= "odom_rgbd_image" />
<remap unless= "$(arg use_odom_features)" from= "rgbd_image" to= "$(arg rgbd_topic_relay)" />
2015-10-28 20:05:04 -04:00
2016-01-27 10:46:20 -05:00
<remap from= "left/image_rect" to= "$(arg left_image_topic_relay)" />
<remap from= "right/image_rect" to= "$(arg right_image_topic_relay)" />
2015-10-28 20:05:04 -04:00
<remap from= "left/camera_info" to= "$(arg left_camera_info_topic)" />
<remap from= "right/camera_info" to= "$(arg right_camera_info_topic)" />
<remap from= "scan" to= "$(arg scan_topic)" />
2020-04-19 09:53:09 -04:00
<remap if= "$(eval scan_cloud_assembling)" from= "scan_cloud" to= "assembled_cloud" />
<remap if= "$(eval scan_cloud_filtered and not scan_cloud_assembling)" from= "scan_cloud" to= "odom_filtered_input_scan" />
<remap if= "$(eval not scan_cloud_filtered and not scan_cloud_assembling)" from= "scan_cloud" to= "$(arg scan_cloud_topic)" />
2020-05-03 22:42:01 -04:00
<remap from= "scan_descriptor" to= "$(arg scan_descriptor_topic)" />
2017-02-22 14:43:16 -05:00
<remap from= "user_data" to= "$(arg user_data_topic)" />
<remap from= "user_data_async" to= "$(arg user_data_async_topic)" />
2018-10-24 08:53:44 +12:00
<remap from= "gps/fix" to= "$(arg gps_topic)" />
2018-12-07 18:31:59 -05:00
<remap from= "tag_detections" to= "$(arg tag_topic)" />
2017-11-30 15:46:11 -05:00
<remap from= "odom" to= "$(arg odom_topic)" />
2019-05-31 19:35:49 -04:00
<remap from= "imu" to= "$(arg imu_topic)" />
2016-06-02 14:21:07 -04:00
<!-- localization mode -->
2019-01-06 17:08:12 -05:00
<param if= "$(arg localization)" name= "Mem/IncrementalMemory" type= "string" value= "false" />
<param unless= "$(arg localization)" name= "Mem/IncrementalMemory" type= "string" value= "true" />
<param name= "Mem/InitWMWithAllNodes" type= "string" value= "$(arg localization)" />
2015-10-28 20:05:04 -04:00
</node>
<!-- Visualisation RTAB-Map -->
2021-09-08 15:24:37 -04:00
<node if= "$(arg rtabmapviz)" pkg= "rtabmap_ros" type= "rtabmapviz" name= "rtabmapviz" args= "-d $(arg gui_cfg)" clear_params= "$(arg clear_params)" output= "$(arg output)" launch-prefix= "$(arg launch_prefix)" >
2016-07-06 20:08:23 -04:00
<param if= "$(arg stereo)" name= "subscribe_depth" type= "bool" value= "false" />
2020-02-20 16:05:09 -05:00
<param unless= "$(arg stereo)" name= "subscribe_depth" type= "bool" value= "$(arg depth)" />
2021-06-28 10:56:37 -04:00
<param name= "subscribe_rgb" type= "bool" value= "$(arg subscribe_rgb)" />
2020-12-23 15:55:18 -05:00
<param name= "subscribe_rgbd" type= "bool" value= "$(eval subscribe_rgbd or use_odom_features)" />
2015-10-28 20:05:04 -04:00
<param name= "subscribe_stereo" type= "bool" value= "$(arg stereo)" />
2021-02-16 10:52:57 -05:00
<param unless= "$(arg icp_odometry)" name= "subscribe_scan" type= "bool" value= "$(arg subscribe_scan)" />
<param if= "$(arg icp_odometry)" name= "subscribe_scan_cloud" type= "bool" value= "$(eval subscribe_scan or subscribe_scan_cloud)" />
<param unless= "$(arg icp_odometry)" name= "subscribe_scan_cloud" type= "bool" value= "$(arg subscribe_scan_cloud)" />
2020-05-03 22:42:01 -04:00
<param name= "subscribe_scan_descriptor" type= "bool" value= "$(arg subscribe_scan_descriptor)" />
2017-11-30 15:46:11 -05:00
<param if= "$(arg visual_odometry)" name= "subscribe_odom_info" type= "bool" value= "true" />
<param if= "$(arg icp_odometry)" name= "subscribe_odom_info" type= "bool" value= "true" />
2015-10-28 20:05:04 -04:00
<param name= "frame_id" type= "string" value= "$(arg frame_id)" />
2016-08-05 16:18:47 -04:00
<param name= "odom_frame_id" type= "string" value= "$(arg odom_frame_id)" />
2016-03-13 18:05:27 -04:00
<param name= "wait_for_transform_duration" type= "double" value= "$(arg wait_for_transform)" />
2017-04-04 12:55:31 -04:00
<param name= "queue_size" type= "int" value= "$(arg queue_size)" />
2020-12-23 15:55:18 -05:00
<param name= "approx_sync" type= "bool" value= "$(eval approx_sync and not use_odom_features)" />
2015-10-28 20:05:04 -04:00
2016-01-27 10:46:20 -05:00
<remap from= "rgb/image" to= "$(arg rgb_topic_relay)" />
<remap from= "depth/image" to= "$(arg depth_topic_relay)" />
2015-10-28 20:05:04 -04:00
<remap from= "rgb/camera_info" to= "$(arg camera_info_topic)" />
2020-12-23 15:55:18 -05:00
<remap if= "$(arg use_odom_features)" from= "rgbd_image" to= "odom_rgbd_image" />
<remap unless= "$(arg use_odom_features)" from= "rgbd_image" to= "$(arg rgbd_topic_relay)" />
2017-08-15 15:50:51 -04:00
2016-01-27 10:46:20 -05:00
<remap from= "left/image_rect" to= "$(arg left_image_topic_relay)" />
<remap from= "right/image_rect" to= "$(arg right_image_topic_relay)" />
2015-10-28 20:05:04 -04:00
<remap from= "left/camera_info" to= "$(arg left_camera_info_topic)" />
<remap from= "right/camera_info" to= "$(arg right_camera_info_topic)" />
2020-11-28 17:28:45 -05:00
<remap unless= "$(arg icp_odometry)" from= "scan" to= "$(arg scan_topic)" />
<remap if= "$(arg icp_odometry)" from= "scan_cloud" to= "odom_filtered_input_scan" />
<remap unless= "$(arg icp_odometry)" from= "scan_cloud" to= "$(arg scan_cloud_topic)" />
2020-05-03 22:42:01 -04:00
<remap from= "scan_descriptor" to= "$(arg scan_descriptor_topic)" />
2017-11-30 15:46:11 -05:00
<remap from= "odom" to= "$(arg odom_topic)" />
2015-10-28 20:05:04 -04:00
</node>
</group>
<!-- Visualization RVIZ -->
2016-11-09 15:04:22 -05:00
<node if= "$(arg rviz)" pkg= "rviz" type= "rviz" name= "rviz" args= "-d $(arg rviz_cfg)" />
2021-09-08 15:24:37 -04:00
<node if= "$(arg rviz)" pkg= "nodelet" type= "nodelet" name= "points_xyzrgb" args= "standalone rtabmap_ros/point_cloud_xyzrgb" clear_params= "$(arg clear_params)" output= "$(arg output)" >
2018-05-29 13:00:40 -04:00
<remap if= "$(arg stereo)" from= "left/image" to= "$(arg left_image_topic_relay)" />
<remap if= "$(arg stereo)" from= "right/image" to= "$(arg right_image_topic_relay)" />
<remap if= "$(arg stereo)" from= "left/camera_info" to= "$(arg left_camera_info_topic)" />
<remap if= "$(arg stereo)" from= "right/camera_info" to= "$(arg right_camera_info_topic)" />
<remap unless= "$(arg subscribe_rgbd)" from= "rgb/image" to= "$(arg rgb_topic_relay)" />
<remap unless= "$(arg subscribe_rgbd)" from= "depth/image" to= "$(arg depth_topic_relay)" />
<remap unless= "$(arg subscribe_rgbd)" from= "rgb/camera_info" to= "$(arg camera_info_topic)" />
2019-03-03 18:31:35 -05:00
<remap from= "rgbd_image" to= "$(arg rgbd_topic_relay)" />
2015-10-28 20:05:04 -04:00
<remap from= "cloud" to= "voxel_cloud" />
2018-02-13 21:37:08 -05:00
<param name= "decimation" type= "double" value= "4" />
<param name= "voxel_size" type= "double" value= "0.0" />
2016-06-30 12:49:20 -04:00
<param name= "approx_sync" type= "bool" value= "$(arg approx_sync)" />
2015-10-28 20:05:04 -04:00
</node>
</launch>