Hello,
I am trying to subscribe to an odom topic instead a tf so I didn't set nothing in "odom_fram_id" and "odom_topic = odom". I noticed that rtabmap is subscribe to "rtabmap/odom" and I tried to remap it to "odometry/filtered" which "robot_localization" publish but I can't do it from a reason that I don't know. So, I remap the output topic from robot_localization to "rtabmap/odom". In both case I got the same warning: [ WARN] [1561015902.652173946]: /rtabmap/rtabmap: Did not receive data since 5 seconds! Make sure the input topics are published ("$ rostopic hz my_topic") and the timestamps in their header are set. If topics are coming from different computers, make sure the clocks of the computers are synchronized ("ntpdate"). Parameter "approx_sync" is false, which means that input topics should have all the exact timestamp for the callback to be called. /rtabmap/rtabmap subscribed to (exact sync): /rtabmap/odometry/filtered, /camera/color/image_raw, /camera/aligned_depth_to_color/image_raw, /camera/color/camera_info, /scan *All the above topics were published of course. Here my main launch file: <launch> <arg name="move_base" default="true" /> <arg name="vo" default="false" /> <arg name="visitors" default="false" /> <arg name="mapping" default="false" /> <arg name="urdf" default="true" /> <!--load platform 3d model--> <include if="$(arg urdf)" file="$(find arl_description)/launch/newurdf.launch" /> <!-- bringup realsense camera --> <include file="$(find realsense2_camera)/launch/rs_camera.launch"> <arg name="align_depth" value="true"/> </include> <!--creating IMU topic <node pkg="imu_filter_madgwick" type="imu_filter_node" name="ImuFilter"> <param name="use_ma" type="bool" value="false" /> <param name="publish_tf" type="bool" value="true" /> <param name="world_frame" type="string" value="enu" /> <param name="publish_debug_topics" type="bool" value="true" /> <remap from="/imu/data_raw" to="/camera/accel/sample"/> </node>--> <!--camera tf--> <node pkg="tf" type="static_transform_publisher" name="camera_link_tf" args="0.15 0 0.4 0 0.05 0 base_link camera_link 30" /> <node if="$(arg urdf)" pkg="tf" type="static_transform_publisher" name="base_footprint_tf" args="0 0 0.1 0 0 0 base_footprint base_link 30" /> <!-- Laser topic --> <node pkg="depthimage_to_laserscan" type="depthimage_to_laserscan" name="depthimage_to_laserscan"> <remap from="image" to="/camera/depth/image_rect_raw"/> <remap from="camera_info" to="/camera/depth/camera_info"/> <param name="range_min" value="0.1"/> <param name="range_max" value="3"/> <param name="frame_id" value="camera_link" /> <param name="scan_height" value="1" /> </node> <!-- Arduino connection --> <node pkg="rosserial_python" type="serial_node.py" name="serial_node"> <param name="port" value="/dev/ttyACM0"/> <param name="baud" value="57600"/> </node> <!-- encoders odometry --> <node unless="$(arg vo)" pkg="arl_description" type="physical_odometry" name="physical_odometry" /> <!--load rtabmap mapping--> <include file="$(find arl_description)/launch/rtabmap_nav.launch" > <arg name="mapping" value="$(arg mapping)" /> <arg if="$(arg mapping)" name="localization" value="false" /> <arg unless="$(arg mapping)" name="localization" value="true" /> <arg unless="$(arg visitors)" name="rviz_cfg" value="$(find arl_description)/launch/realsenseARL.rviz" /> <arg if="$(arg visitors)" name="rviz_cfg" value="$(find arl_description)/launch/visitorsRviz.rviz" /> <arg name="rtabmapviz" default="false" /> <arg name="rviz" default="false" /> <arg name="frame_id" value="base_footprint" /> <arg name="rgb_topic" default="/camera/color/image_raw" /> <arg name="depth_topic" default="/camera/aligned_depth_to_color/image_raw" /><!--was aligned--> <arg name="camera_info_topic" default="/camera/color/camera_info" /> <arg name="depth_camera_info_topic" value="/camera/depth/camera_info"/> </include> <!-- ROS navigation stack move_base --> <node if="$(arg move_base)" pkg="move_base" type="move_base" respawn="true" name="move_base" output="screen" > <param name="base_local_planner" value="base_local_planner/TrajectoryPlannerROS" /> <rosparam file="$(find arl_description)/launch/nav_data/costmap_common_params.yaml" command="load" ns="global_costmap" /> <rosparam file="$(find arl_description)/launch/nav_data/costmap_common_params.yaml" command="load" ns="local_costmap" /> <rosparam file="$(find arl_description)/launch/nav_data/local_costmap_params.yaml" command="load" ns="local_costmap" /> <rosparam file="$(find arl_description)/launch/nav_data/global_costmap_params.yaml" command="load" ns="global_costmap"/> <rosparam file="$(find arl_description)/launch/nav_data/base_local_planner_params.yaml" command="load" /> <remap from="cmd_vel" to="cmd_vel"/> <remap from="odom" to="odom"/> <remap from="scan" to="scan"/> <remap from="map" to="/rtabmap/grid_map"/> </node> </launch> Here my rtabmap launch file: <launch> <!-- Convenience launch file to launch odometry, rtabmap and rtabmapviz nodes at once --> <!-- For stereo:=false 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 --> <arg name="visitors" default="false" /> <arg name="mapping" default="true" /> <arg if="$(arg mapping)" name="delete_db" value="--delete_db_on_start" /> <arg unless="$(arg mapping)" name="delete_db" value="" /> <!-- Choose between RGB-D and stereo --> <arg name="stereo" default="false"/> <!-- Choose visualization --> <arg name="rtabmapviz" default="false" /> <arg name="rviz" default="true" /> <!-- Localization-only mode --> <arg name="localization" default="false"/> <!-- 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"/> <!-- Corresponding config files --> <arg name="cfg" default="" /> <!-- To change RTAB-Map's parameters, set the path of config file (*.ini) generated by the standalone app --> <arg name="gui_cfg" default="~/.ros/rtabmap_gui.ini" /> <arg name="rviz_cfg" default="$(find rtabmap_ros)/launch/config/rgbd.rviz" /> <arg name="rviz_visitors_cfg" default="$(find arl_description)/launch/visitorsRviz.rviz" /> <arg name="frame_id" default="base_link"/> <!-- Fixed frame id, you may set "base_link" or "base_footprint" if they are published --> <arg name="odom_frame_id" default=""/> <!-- If set, TF is used to get odometry instead of the topic --> <arg name="map_frame_id" default="map"/> <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) --> <arg name="namespace" default="rtabmap"/> <arg name="database_path" default="~/.ros/rtabmap.db"/> <arg name="queue_size" default="10"/> <arg name="wait_for_transform" default="0.2"/> <arg name="args" default=""/> <!-- delete_db_on_start, udebug --> <arg name="rtabmap_args" default="$(arg args)"/> <!-- deprecated, use "args" argument --> <arg name="launch_prefix" default=""/> <!-- for debugging purpose, it fills launch-prefix tag of the nodes --> <arg name="output" default="screen"/> <!-- Control node output (screen or log) --> <!-- if timestamps of the input topics are synchronized using approximate or exact time policy--> <arg if="$(arg stereo)" name="approx_sync" default="false"/> <arg unless="$(arg stereo)" name="approx_sync" default="false"/> <!-- 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" /> <arg name="depth_camera_info_topic" default="$(arg camera_info_topic)" /> <!-- 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" /> <!-- Already synchronized RGB-D related topic, with rtabmap_ros/rgbd_sync nodelet --> <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" /> <arg name="depth_scale" default="1.0" /> <arg name="compressed" default="false"/> <!-- If you want to subscribe to compressed image topics --> <arg name="rgb_image_transport" default="compressed"/> <!-- Common types: compressed, theora (see "rosrun image_transport list_transports") --> <arg name="depth_image_transport" default="compressedDepth"/> <!-- Depth compatible types: compressedDepth (see "rosrun image_transport list_transports") --> <arg name="subscribe_scan" default="true"/> <arg name="scan_topic" default="/scan"/> <arg name="subscribe_scan_cloud" default="false"/> <arg name="scan_cloud_topic" default="/scan_cloud"/> <arg name="scan_normal_k" default="0"/> <arg name="visual_odometry" default="false"/> <!-- Launch rtabmap visual odometry node --> <arg name="icp_odometry" default="false"/> <!-- Launch rtabmap icp odometry node --> <arg name="odom_topic" default="odom"/> <!-- Odometry topic name --> <arg name="vo_frame_id" default="$(arg odom_topic)"/> <!-- Visual/Icp odometry frame ID for TF --> <arg name="odom_tf_angular_variance" default="1"/> <!-- If TF is used to get odometry, this is the default angular variance --> <arg name="odom_tf_linear_variance" default="1"/> <!-- If TF is used to get odometry, this is the default linear variance --> <arg name="odom_args" default=""/> <!-- More arguments for odometry (overwrite same parameters in rtabmap_args) --> <arg name="odom_sensor_sync" default="false"/> <arg name="odom_guess_frame_id" default=""/> <arg name="odom_guess_min_translation" default="0"/> <arg name="odom_guess_min_rotation" default="0"/> <arg name="imu_topic" default="/imu"/> <!-- only used with VIO approaches --> <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) --> <!-- 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)"/> <!-- Nodes --> <group ns="$(arg namespace)"> <!-- relays --> <group unless="$(arg stereo)"> <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)" /> <node pkg="nodelet" type="nodelet" name="rgbd_sync" args="standalone rtabmap_ros/rgbd_sync" output="$(arg output)"> <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)"/> <remap from="rgbd_image" to="$(arg rgbd_topic)"/> <param name="approx_sync" type="bool" value="$(arg approx_rgbd_sync)"/> <param name="queue_size" type="int" value="$(arg queue_size)"/> <param name="depth_scale" type="double" value="$(arg depth_scale)"/> </node> </group> </group> <group if="$(arg stereo)"> <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)" /> <node pkg="nodelet" type="nodelet" name="rgbd_sync" args="standalone rtabmap_ros/stereo_sync" output="$(arg output)"> <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)"/> <remap from="rgbd_image" to="$(arg rgbd_topic)"/> <param name="approx_sync" type="bool" value="$(arg approx_rgbd_sync)"/> <param name="queue_size" type="int" value="$(arg queue_size)"/> </node> </group> </group> <group unless="$(arg rgbd_sync)"> <node if="$(arg subscribe_rgbd)" name="republish_rgbd_image" type="relay" pkg="topic_tools" args="$(arg rgbd_topic) $(arg rgbd_topic)_relay" /> </group> <!-- Visual odometry --> <group unless="$(arg icp_odometry)"> <group if="$(arg visual_odometry)"> <!-- RGB-D Odometry --> <node unless="$(arg stereo)" pkg="rtabmap_ros" type="rgbd_odometry" name="rgbd_odometry" output="$(arg output)" args="$(arg rtabmap_args) $(arg odom_args)" launch-prefix="$(arg launch_prefix)"> <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)"/> <remap if="$(arg rgbd_sync)" from="rgbd_image" to="$(arg rgbd_topic)"/> <remap unless="$(arg rgbd_sync)" from="rgbd_image" to="$(arg rgbd_topic)_relay"/> <remap from="odom" to="$(arg odom_topic)"/> <param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="odom_frame_id" type="string" value="$(arg vo_frame_id)"/> <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)"/> <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)"/> </node> <!-- Stereo Odometry --> <node if="$(arg stereo)" pkg="rtabmap_ros" type="stereo_odometry" name="stereo_odometry" output="$(arg output)" args="$(arg rtabmap_args) $(arg odom_args)" launch-prefix="$(arg launch_prefix)"> <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)"/> <remap if="$(arg rgbd_sync)" from="rgbd_image" to="$(arg rgbd_topic)"/> <remap unless="$(arg rgbd_sync)" from="rgbd_image" to="$(arg rgbd_topic)_relay"/> <remap from="odom" to="$(arg odom_topic)"/> <remap from="imu" to="$(arg imu_topic)"/> <param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="odom_frame_id" type="string" value="$(arg vo_frame_id)"/> <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)"/> <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)"/> </node> </group> </group> <!-- ICP Odometry --> <node if="$(arg icp_odometry)" pkg="rtabmap_ros" type="icp_odometry" name="icp_odometry" output="$(arg output)" args="$(arg rtabmap_args) $(arg odom_args)" launch-prefix="$(arg launch_prefix)"> <remap from="scan" to="$(arg scan_topic)"/> <remap from="scan_cloud" to="$(arg scan_cloud_topic)"/> <remap from="odom" to="$(arg odom_topic)"/> <param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="odom_frame_id" type="string" value="$(arg vo_frame_id)"/> <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)"/> <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)"/> </node> <!-- Visual SLAM (robot side) --> <!-- args: "delete_db_on_start" and "udebug" --> <node name="rtabmap" pkg="rtabmap_ros" type="rtabmap" output="$(arg output)" args="$(arg delete_db)" launch-prefix="$(arg launch_prefix)"> <param if="$(arg stereo)" name="subscribe_depth" type="bool" value="false"/> <param unless="$(arg stereo)" name="subscribe_depth" type="bool" value="true"/> <param name="subscribe_rgbd" type="bool" value="$(arg subscribe_rgbd)"/> <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)"/> <param name="subscribe_user_data" type="bool" value="$(arg subscribe_user_data)"/> <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"/> <param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="map_frame_id" type="string" value="$(arg map_frame_id)"/> <param name="odom_frame_id" type="string" value="$(arg odom_frame_id)"/> <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="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)"/> <param name="odom_sensor_sync" type="bool" value="$(arg odom_sensor_sync)"/> <param name="wait_for_transform_duration" type="double" value="$(arg wait_for_transform)"/> <param name="database_path" type="string" value="$(arg database_path)"/> <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="scan_normal_k" type="int" value="$(arg scan_normal_k)"/> <param name="Rtabmap/DetectionRate" type="string" value="5"/> <param name="Reg/Force3DoF" value="false"/> <param name="publish_tf" value="false"/> <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)"/> <remap if="$(arg rgbd_sync)" from="rgbd_image" to="$(arg rgbd_topic)"/> <remap unless="$(arg rgbd_sync)" from="rgbd_image" to="$(arg rgbd_topic)_relay"/> <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)"/> <remap from="scan" to="$(arg scan_topic)"/> <remap from="scan_cloud" to="$(arg scan_cloud_topic)"/> <remap from="user_data" to="$(arg user_data_topic)"/> <remap from="user_data_async" to="$(arg user_data_async_topic)"/> <remap from="odom" to="$(arg odom_topic)"/> <!-- localization mode --> <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)"/> </node> <!-- Visualisation RTAB-Map --> <node if="$(arg rtabmapviz)" pkg="rtabmap_ros" type="rtabmapviz" name="rtabmapviz" args="-d $(arg gui_cfg)" output="$(arg output)" launch-prefix="$(arg launch_prefix)"> <param if="$(arg stereo)" name="subscribe_depth" type="bool" value="false"/> <param unless="$(arg stereo)" name="subscribe_depth" type="bool" value="true"/> <param name="subscribe_rgbd" type="bool" value="$(arg subscribe_rgbd)"/> <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)"/> <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"/> <param name="frame_id" type="string" value="$(arg frame_id)"/> <param name="odom_frame_id" type="string" value="$(arg odom_frame_id)"/> <param name="wait_for_transform_duration" type="double" value="$(arg wait_for_transform)"/> <param name="queue_size" type="int" value="$(arg queue_size)"/> <param name="approx_sync" type="bool" value="$(arg approx_sync)"/> <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)"/> <remap if="$(arg rgbd_sync)" from="rgbd_image" to="$(arg rgbd_topic)"/> <remap unless="$(arg rgbd_sync)" from="rgbd_image" to="$(arg rgbd_topic)_relay"/> <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)"/> <remap from="scan" to="$(arg scan_topic)"/> <remap from="scan_cloud" to="$(arg scan_cloud_topic)"/> <remap from="odom" to="$(arg odom_topic)"/> </node> </group> <!-- Visualization RVIZ --> <node if="$(arg rviz)" pkg="rviz" type="rviz" name="rviz" args="-d $(arg rviz_cfg)"/> <node unless="$(arg rviz)" pkg="nodelet" type="nodelet" name="points_xyzrgb" args="standalone rtabmap_ros/point_cloud_xyzrgb" output="$(arg output)"> <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)"/> <remap if="$(arg rgbd_sync)" from="rgbd_image" to="$(arg rgbd_topic)"/> <remap unless="$(arg rgbd_sync)" from="rgbd_image" to="$(arg rgbd_topic)_relay"/> <remap from="cloud" to="voxel_cloud" /> <param name="decimation" type="double" value="4"/> <param name="voxel_size" type="double" value="0.0"/> <param name="approx_sync" type="bool" value="$(arg approx_sync)"/> </node> </launch> What could be the reason for that issue? Best Regards, Aviad |
Administrator
|
Hi,
When doing "odom_topic = odom", it will subscribe to "odom" in its own namespace (e..g, /rtabmap/odom). What you meant is maybe more "odom_topic = /odom" (note the slash for global namespace). For robot localization, it would be "odom_topic = /odometry/filtered". About synchronization, I think everything you need to know is in that warning: [ WARN] [1561015902.652173946]: /rtabmap/rtabmap: Did not receive data since 5 seconds! Make sure the input topics are published ("$ rostopic hz my_topic") and the timestamps in their header are set. If topics are coming from different computers, make sure the clocks of the computers are synchronized ("ntpdate"). Parameter "approx_sync" is false, which means that input topics should have all the exact timestamp for the callback to be called. /rtabmap/rtabmap subscribed to (exact sync): /rtabmap/odometry/filtered, /camera/color/image_raw, /camera/aligned_depth_to_color/image_raw, /camera/color/camera_info, /scan approx_sync parameter is false, which means that all topics above should have the exact timestamp so that the callback is called. I doubt that scan has the same stamp than the camera topics. You should set approx_sync to true. As you are subscribing to a scan topic, I strongly recommend to use rgbd_sync node to pre-sync image topics before feeding them to rtabmap node. See this setup (which looks similar to yours): http://wiki.ros.org/rtabmap_ros/Tutorials/SetupOnYourRobot#Kinect_.2B-_Odometry_.2B-_2D_laser Beware that for realsense cameras, approx_sync for rgbd_sync node would be false as RGB and depth topics should have the same stamps. Based on your rtabmap.launch file, set rgbd_sync=true, approx_rgbd_sync=false, approx_sync=true, this should setup rtabmap as in the config example above. cheers, Mathieu |
Free forum by Nabble | Edit this page |