Hi sir,
I have built a simulated outdoor environment. Turtlebot robot with stereo camera publishing stereo images and camera info. /clock /cmd_vel /gazebo/link_states /gazebo/model_states /gazebo/parameter_descriptions /gazebo/parameter_updates /gazebo/set_link_state /gazebo/set_model_state /gazebo_gui/parameter_descriptions /gazebo_gui/parameter_updates /gazebo_odom /imu /joint_states /rosout /rosout_agg /scan /stereo_camera/left/camera_info /stereo_camera/left/image_raw /stereo_camera/left/image_raw/compressed /stereo_camera/left/image_raw/compressed/parameter_descriptions /stereo_camera/left/image_raw/compressed/parameter_updates /stereo_camera/left/image_raw/compressedDepth /stereo_camera/left/image_raw/compressedDepth/parameter_descriptions /stereo_camera/left/image_raw/compressedDepth/parameter_updates /stereo_camera/left/image_raw/theora /stereo_camera/left/image_raw/theora/parameter_descriptions /stereo_camera/left/image_raw/theora/parameter_updates /stereo_camera/left/parameter_descriptions /stereo_camera/left/parameter_updates /stereo_camera/right/camera_info /stereo_camera/right/image_raw /stereo_camera/right/image_raw/compressed /stereo_camera/right/image_raw/compressed/parameter_descriptions /stereo_camera/right/image_raw/compressed/parameter_updates /stereo_camera/right/image_raw/compressedDepth /stereo_camera/right/image_raw/compressedDepth/parameter_descriptions /stereo_camera/right/image_raw/compressedDepth/parameter_updates /stereo_camera/right/image_raw/theora /stereo_camera/right/image_raw/theora/parameter_descriptions /stereo_camera/right/image_raw/theora/parameter_updates /stereo_camera/right/parameter_descriptions /stereo_camera/right/parameter_updates /tf /tf_static this is my rtabmap launch file. <launch> <arg name="rviz" default="true" /> <arg name="rtabmapviz" default="true" /> <arg name="rate" default="20" /> <arg name="ground_is_obstacle" default="false"/> <arg name="align_with_ground" default="false"/> <arg name="localization_mode" default="false"/> <group ns="/stereo_camera" > <node pkg="stereo_image_proc" type="stereo_image_proc" name="stereo_image_proc"> <remap from="left/image_raw" to="/stereo_camera/left/image_raw"/> <remap from="left/camera_info" to="/stereo_camera/left/camera_info"/> <remap from="right/image_raw" to="/stereo_camera/right/image_raw"/> <remap from="right/camera_info" to="/stereo_camera/right/camera_info"/> </node> </group> <arg if="$(arg localization_mode)" name="arg" default="--Vis/EstimationType 1 --Vis/MinInliers 15 --SURF/HessianThreshold 100 --Grid/3DGroundIsObstacle $(arg ground_is_obstacle) --Odom/AlignWithGround $(arg align_with_ground)"/> <arg unless="$(arg localization_mode)" name="arg" default="--delete_db_on_start --Vis/EstimationType 1 --Vis/MinInliers 15 --SURF/HessianThreshold 100 --Grid/3DGroundIsObstacle $(arg ground_is_obstacle) --Odom/AlignWithGround $(arg align_with_ground)"/> <include file="$(find rtabmap_ros)/launch/rtabmap.launch"> <arg name="rtabmap_args" value="$(arg arg)" /> <arg name="stereo" value="true" /> <arg name="rviz" value="$(arg rviz)" /> <arg name="rtabmapviz" value="$(arg rtabmapviz)" /> <arg name="visual_odometry" value="false"/> <arg name="odom_topic" value="/gazebo_odom"/> <arg name="localization" value="$(arg localization_mode)"/> </include> <arg name="model" default="waffle_pi" doc="model type [burger, waffle, waffle_pi]"/> <arg name="cmd_vel_topic" default="/cmd_vel" /> <arg name="move_forward_only" default="false"/> <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen"> <rosparam file="$(find zed_rtabmap_example)/config/costmap_common_params_$(arg model).yaml" command="load" ns="global_costmap" /> <rosparam file="$(find zed_rtabmap_example)/config/costmap_common_params_$(arg model).yaml" command="load" ns="local_costmap" /> <rosparam file="$(find zed_rtabmap_example)/config/local_costmap_params.yaml" command="load" /> <rosparam file="$(find zed_rtabmap_example)/config/global_costmap_params.yaml" command="load" /> <rosparam file="$(find zed_rtabmap_example)/config/move_base_params.yaml" command="load" /> <rosparam file="$(find zed_rtabmap_example)/config/dwa_local_planner_params_$(arg model).yaml" command="load" /> <remap from="cmd_vel" to="$(arg cmd_vel_topic)"/> <remap from="odom" to="/gazebo_odom"/> <remap from="map" to="/rtabmap/grid_map"/> </node> </launch> 2D and 2D map and rtabmap database are created, using this slam node. after that, I have changed the mode in localization. by setting parameter localization to true. I got map loader and rviz and rtabmapviz ready for visualization. to check localization accuracy I kept robot in a mapped region of environment. rtabmapviz shows a matching ID of current view frame and database frame. according to the new match, ID tf is published and we got a new pose of the robot in rviz. match ID and view ID of a frame are. Match ID frame details from the database are. New estimated pose is. you can see there is lot of difference in actual pose and estimate localization. |
Administrator
|
This post was updated on .
Hi,
it looks like that the repetitive pattern of the grass is causing some troubles. My guess is that it used most of the features on the ground to find the transform, which may be exactly the same ground than the real position. Without remapping or changing the floor texture, it is possible to limit the area in the image that are used for loop closure detection. Parameter Kp/RoiRatios and Vis/RoiRatios can be set to "0.0 0.0 0.0 0.3" to filter 30% of the bottom of images. cheers, Mathieu crossref: see also https://github.com/introlab/rtabmap_ros/issues/353 |
Free forum by Nabble | Edit this page |