Re: Localization issue
Posted by
aviadoz on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Localization-issue-tp5847p5941.html
Hi Mathieu,
So,I did what you suggested and I can't see any change of these jumps. The "odom" frame jumps a lot.
I reduce the laser range for 3 meter instead 5 meter which was before and of course the Reg param also.
I am putting here the "rtabmap_realsense.launch" that I am using in my main launch file. maybe you can see something which can help. Also, there is no change if I use visual_odometry or my odometry by the encoders.
Do you think that I need to calibrate my realsense camera?should I need to use robot_localization pkg?
<?xml version="1.0"?>
<launch>
<arg name="vo" default="false" />
<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="false" />
<!-- 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 arl_description)/launch/realsenseARL.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="odom"/> <!-- 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="50"/>
<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="true"/>
<!-- RGB-D related topics -->
<arg name="rgb_topic" default="/camera/color/image_raw" />
<arg name="depth_topic" default="/camera/aligned_depth_to_color/image_raw" />
<arg name="camera_info_topic" default="/camera/color/camera_info" />
<arg name="depth_camera_info_topic" default="$(arg camera_info_topic)" />
<!-- 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"/> <!-- Common types: compressed, theora (see "rosrun image_transport list_transports") -->
<arg name="subscribe_scan" default="false"/>
<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="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) -->
<node name="rtabmap" pkg="rtabmap_ros" type="rtabmap" output="screen" args="$(arg delete_db)">
<!-- 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)"/>
<param name="gen_scan" type="bool" value="false"/>
<param name="subscribe_depth" type="bool" value="false"/>
<param name="subscribe_scan" type="bool" value="true"/>
<param name="Rtabmap/DetectionRate" type="string" value="0"/>
<param name="Reg/Strategy" type="string" value="0"/>
<param name="frame_id" type="string" value="$(arg frame_id)"/>
<!-- <param name="publish_tf" type="bool" value="$(arg publish_map_tf)" /> -->
<remap from="rgb/image" to="$(arg rgb_topic)"/>
<remap from="depth/image" to="$(arg depth_topic)"/>
<remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>
<remap from="odom" to="odom"/><!-- to get the odometry from the encoders and not from the kinect-->
<remap from="scan" to="/scan"/>
<remap from="scan_map" to="cloud_map"/>
<!--<param name="RGBD/OptimizeStrategy" type="string" value="1"/>
<remap from="grid_map" to="/map"/>-->
<!-- RTAB-Map's parameters -->
<!--
<param name="RGBD/AngularUpdate" type="string" value="0.01"/>
<param name="RGBD/LinearUpdate" type="string" value="0.01"/>
<param name="RGBD/OptimizeSlam2d" type="string" value="true"/>
<param name="queue_size" type="int" value="50"/>
<param name="RGBD/PoseScanMatching" type="string" value="true"/>
<param name="RGBD/PlanStuckIterations" type="int" value="10"/>
<param name="use_action_for_goal" type="bool" value="true"/>
<param name="publish_tf" type="bool" value="true"/>
<param name="Rtabmap/TimeThr" type="string" value="700"/>
<param name="Mem/RehearsalSimilarity" type="string" value="0.45"/>
<param name="RGBD/OptimizeFromGraphEnd" type="string" value="false"/>
<param name="RGBD/PoseScanMatching" type="string" value="true"/>
<param name="RGBD/OptimizeStrategy" type="string" value="1"/>
<param name="RGBD/OptimizeRobust" type="string" value="true"/>
<param name="RGBD/OptimizeMaxError" type="string" value="0"/>
<param name="RGBD/OptimizeRobust" type="string" value="true"/>
<param name="Rtabmap/DetectionRate" type="string" value="0"/>
<param name="grid_size" type="double" value="10"/>
<param name="cloud_noise_filtering_radius" value="0.05"/>
<param name="cloud_noise_filtering_min_neighbors" value="2"/>
<param name="proj_max_ground_angle" value="45"/>
<param name="proj_max_ground_height" value="0.1"/>
<param name="proj_max_height" value="2.0"/>
<param name="approx_sync" type="bool" value="true"/>
<param name="proj_min_cluster_size" value="20"/>
-->
</node>
<!-- RGB-D Odometry -->
<node if="$(arg vo)" pkg="rtabmap_ros" type="rgbd_odometry" name="rgbd_odometry" output="screen" >
<remap from="rgb/image" to="$(arg rgb_topic)"/>
<remap from="depth/image" to="$(arg depth_topic)"/>
<remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>
<remap from="rgbd_image" to="$(arg rgb_topic)"/>
<!--<remap from="odom" to="$(arg odom_topic)"/>-->
<param name="frame_id" type="string" value="base_link"/>
<param name="odom_frame_id" type="string" value="odom"/>
<param name="wait_for_transform_duration" type="double" value="0.01"/>
<param name="approx_sync" type="bool" value="true"/>
<param name="queue_size" type="int" value="$(arg queue_size)"/>
<param name="subscribe_rgbd" type="bool" value="false"/>
<param name="publish_tf" type="bool" value="true"/>
</node>
<!-- Visualization RVIZ -->
<node if="$(arg rviz)" pkg="rviz" type="rviz" name="rviz" args="-d $(arg rviz_cfg)"/>
<node if="$(arg visitors)" pkg="rviz" type="rviz" name="rviz" args="-d $(arg rviz_visitors_cfg)"/>
<node if="$(arg rtabmapviz)" pkg="rtabmap_ros" type="rtabmapviz" name="rtabmapviz" output="$(arg output)">
<param name="subscribe_rgbd" type="bool" value="false"/>
<param name="subscribe_scan" type="bool" value="true"/>
<param name="frame_id" type="string" value="base_link"/>
<param name="odom_frame_id" type="string" value="odom"/>
<remap from="rgb/image" to="$(arg rgb_topic)"/>
<remap from="depth/image" to="$(arg depth_topic)"/>
<remap from="rgb/camera_info" to="$(arg camera_info_topic)"/>
<remap from="/scan" to="/scan"/>
<!-- <remap from="scan_cloud" to="$(arg scan_cloud_topic)"/>
<remap from="odom" to="$(arg odom_topic)"/>-->
</node>
</launch>