ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

navigation stack

asked 2012-11-01 10:12:42 -0500

camilla gravatar image

updated 2012-11-02 00:13:02 -0500

When i run the navigation stack I get this error

[ WARN] [1351800032.265951422]: Waiting on transform from /base_link to /world to become available before running costmap, tf error:

I get this error only if I use a static map. The fact is that I never use a frame /world so I can't figure out why that transformation is needed.

This is my local costmap configuration file:

local_costmap:
      global_frame: /map
      robot_base_frame: /base_link
      update_frequency: 5
      publish_frequency: 1
      static_map: false
      rolling_window: true
      width: 1.0
      height: 1.0
      resolution: 0.1

This is my common params configuration file:

obstacle_range: 1.0
raytrace_range: 1.5
robot_radius: 0.1
inflation_radius: 0.1
transform_tolerance: 0.3

observation_sources: laser_scan_sensor 

laser_scan_sensor: {sensor_frame: /ultrasonic_sensor, data_type: LaserScan, topic: scan, marking: true, clearing: true}

This is my global costmap configuration file:

 global_costmap:
      global_frame: /map
      robot_base_frame: /base_link
      update_frequency: 2
      static_map: true
      rolling_window: false
      width: 6.0
      height: 6.0

This is my move_base.launch file:

<launch>

  <param name="map_file_name" value="$(find nxt_lejos_map_server)/mymap.svg"/>
  <node pkg="nxt_lejos_map_server" 
    type="nxt_lejos_map_server" 
    args="org.lejos.ros.nodes.PublishOccupancyMap" 
    name="nxt_lejos_map_server" 
    output="screen" />

     <!--- Run AMCL -->
  <!--- <include file="$(find amcl)/examples/amcl_omni.launch" /> -->

  <node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
    <rosparam file="$(find nxt_lejos_navigation)/costmap_common_params.yaml" command="load" ns="global_costmap" />
    <rosparam file="$(find nxt_lejos_navigation)/costmap_common_params.yaml" command="load" ns="local_costmap" />
    <rosparam file="$(find nxt_lejos_navigation)/local_costmap_params.yaml" command="load" />
    <rosparam file="$(find nxt_lejos_navigation)/global_costmap_params.yaml" command="load" />

    <rosparam file="$(find nxt_lejos_navigation)/base_local_planner_params.yaml" command="load" />

    <param name="controller_frequency" value="5.0"/>
  </node>
</launch>
edit retag flag offensive close merge delete

Comments

sorry , could you repost the error? It does not seem to be showing

weiin gravatar image weiin  ( 2012-11-01 16:03:36 -0500 )edit

That was just a bug in answers.ros.org. I reformatted the error, now it's visible. @camilla can you please reindent your config correctly. Indentation matters in this case and if it is not indented correctly, parameters might be initialized wrong which might be one reason for your error.

Lorenz gravatar image Lorenz  ( 2012-11-01 23:18:37 -0500 )edit

Done!this is my indentation.

camilla gravatar image camilla  ( 2012-11-02 00:13:45 -0500 )edit

2 Answers

Sort by ยป oldest newest most voted
0

answered 2012-11-04 13:46:50 -0500

weiin gravatar image

The problem is likely in PublishOccupancyMap.java The frame_id for the occupancy grid has been set to /world in line 72. You might have to change all your references to /map frame to /world instead. (Or go through all the nxt_lejos_map_server codes to check for references to /world and change to /map)

edit flag offensive delete link more
0

answered 2012-11-02 00:21:23 -0500

Lorenz gravatar image

When using a static map, move_base uses the map topic to set the global costmap. If you get a tf lookup error only in that case, I would guess that the published map is in the wrong frame. Have a look at the code of your map server and verify that it has /map as frame id, not world.

Just a side note: you should not use the map frame in your local costmap if you are using particle-filter based localization algorithms such as amcl or gmapping. Instead you should use your odom frame. The reason is that odom is continuous while particle based algorithms might "jump". If localization jumps, it can have two negative effects on your local planner:

  1. The local costmap gets blurred, i.e. obstacles might appear bigger than they are. This is a problem in particular in cluttered environments where the navigation path is tight.

  2. The robot might jump directly into an obstacle which can prevent the local planner from working. Your robot might just stop and refuse to move again in such cases.

edit flag offensive delete link more

Comments

Thnk you lorentz, I can't check your answer because when i recompile the code i get this problem http://answers.ros.org/question/47319/occupancy-grid/

camilla gravatar image camilla  ( 2012-11-02 03:03:23 -0500 )edit

You can at least check in which frame your map is published. Execute rostopic echo /map &gt; foo.txt and then have a look at the first few lines in foo.txt to check the transmitted frame_id. You can also change all map frames to world in the costmaps if you cannot change your map server.

Lorenz gravatar image Lorenz  ( 2012-11-02 03:06:28 -0500 )edit

the problem is that now the map server give me this error and it doesn't work

camilla gravatar image camilla  ( 2012-11-02 03:08:43 -0500 )edit

Unfortunately, I do not know rosjava good enough to help there.

Lorenz gravatar image Lorenz  ( 2012-11-02 03:09:55 -0500 )edit

Question Tools

Stats

Asked: 2012-11-01 10:12:42 -0500

Seen: 463 times

Last updated: Nov 04 '12