0
$\begingroup$

Rosanswers logo

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="base_frame_id"   value="base_link"/>
           <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">
             <rosparam file="configs/costmap_common_params.yaml" command="load" ns="global_costmap" />
             <rosparam file="configs/costmap_common_params.yaml" command="load" ns="local_costmap" />
             <rosparam file="configs/costmap_param.yaml" command="load" />
             <rosparam file="configs/costmap_param.yaml" command="load" />
             <rosparam file="configs/stage_base_local_planner_params.yaml" command="load" />
 </node>

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
    gui_outline 0
    gripper_return 0
    fiducial_return 0
    laser_return 1
)
resolution 0.02
interval_sim 100  # simulation timestep in milliseconds
window
( 
   size [ 917.000 688.000 ] 
   center [ 0 0 ]
   rotate [ 0 0 ]
   scale 19.757 
)

floorplan (
 name "my_map"
 bitmap "my_map.pgm"
 size [200 200 0.5]
 pose [ 0 -0.9 0 90 ]
)

erratic( pose [  0.000   -1.000 0.000 90.000 ] name "robot0" color "blue")

my_map.png

C:\fakepath\my_map.png

Move_base configuration files are the default ones.


Originally posted by McKracken82 on ROS Answers with karma: 73 on 2016-07-13

Post score: 0


Original comments

Comment by sloretz on 2016-07-13:
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?

Comment by McKracken82 on 2016-07-19:
Sorry, that was a typo. Anyway I found the solution!

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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.


Originally posted by McKracken82 with karma: 73 on 2016-07-19

This answer was ACCEPTED on the original site

Post score: 0

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.