# Inconsistency between move_base and stage_ros

Hi, I'm using move_base and stage_ros in the indigo release and I'm getting a strange behavior of the simulated robot. I'll try to explain it with an example:

I have a map which is loaded both by the map_server for move_base and by stage (the map is the same, I checked). I'm also using amcl as localiser. Then, if I open rviz, I can clearly see the map, the robot, and what the robot is sensing with is laser. What the laser is scanning is exactly compliant with the map I see (that is the one published by the map_server). If I give a goal through the Nav2Goal tool, the robot starts moving, following the path evaluated by the motion planner. Everything ok until here. The strange behavior starts happening when the robot, for some reasons, gets stuck in an obstacle: at that point, in stage the robot is stuck (with the exclamation mark on it), while for move_base (and so in rviz) it keeps moving along the path. Moreover, the laser scan stays consistent with stage, so that it starts misaligning with the map in rviz. Even more strange, although the path is evaluated by move_base to avoid obstacles, the robot still drive over there without problem (only in rviz, not in stage, where, instead, it gets stuck generating the strange behavior). It seems like stage keeps publishing the odometry of the robot moving, and so move_base move the robot independently. Moreover, I get this warning on move_base

[ WARN] [1468429179.824253819, 23.400000000]: MessageFilter [target=map laser ]: Dropped 100.00% of messages so far. Please turn the [ros.costmap_2d.message_notifier] rosconsole logger to DEBUG for more information.

I checked the tf tree, and everything is connected as due.

I report my launch and config files for consistency.

test_move_base.launch

<launch>
<master auto="start"/>
<!-- Run the map server -->
<node name="map_server" pkg="map_server" type="map_server" args="maps/my_map.yaml" />
<!--- Run AMCL -->
<include file="\$(find localisation)/launch/amcl.launch">
<arg name="initial_pose_x"  value="0"/>
<arg name="initial_pose_y"  value="0"/>
<arg name="initial_pose_a"  value="0"/>

<arg name="scan_topic"      value="/scan"/>
<arg name="odom_frame_id"   value="odom"/>
<arg name="global_frame_id" value="map"/>
</include>
<!-- run move_base -->
<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
</node>


</launch>

test_stage.launch

<launch>
<param name="/use_sim_time" value="true"/>

<node pkg="stage_ros" type="stageros" name="stageros" args="maps/my_map.world" respawn="false" output="screen">
<param name="base_watchdog_timeout" value="0.2"/>
<remap from="/base_scan" to="/scan" />
</node>
</launch>


my_map.yaml

image: my_map.pgm
resolution: 0.050000
origin: [-100.000000, -100.000000, 0.000000]
negate: 0
occupied_thresh: 0.65
free_thresh: 0.196


my_map.world

include "urg.inc"
include "erratic.inc"

define floorplan model
(
color "black"
boundary 1
gui_nose 0
gui_grid 0 ...
edit retag close merge delete

Would you mind posting the move base params, and the amcl launch file? I notice your map file name and type (my_map.png) differs from the launch files and stage world "kmi_podium_kinect_border.pgm" and "my_map.pgm". Is stage and amcl really using the same image?

( 2016-07-13 15:16:41 -0600 )edit

Sorry, that was a typo. Anyway I found the solution!

( 2016-07-19 08:19:36 -0600 )edit

Sort by » oldest newest most voted

I actually found the solution. The name of the laser frame mismatched between the costmap_common_params.yaml file of move_base and the name given by default by stage. The first one was set to laser, while the second was base_laser_link.

more