0
$\begingroup$

Rosanswers logo

Hey everyone,

I am facing some trouble while running the navigation stack without a static map on our bot. The problem is, that whenever I am sending a goal to the robot the robot doesn't stop moving. E.g.: I'm sending the bot(base_link) the goal x=1 y=0 z=0 w=0, so he just had to move one meter forward, an he moves and even avoid obstacles, but he doesn't stop moving forward after the goal was arrived. I already checked if the odometry msgs aren't publishing right, but they are.

I think this happens because there isn't a global coordinate frame like /map. Because we aren't using a static map.

Our costmap.yaml file:

global_frame: base_link
robot_base_frame: base_link
update_frequency: 20.0
publish_frequency: 20.0
publish_voxel_map: true
static_map: false
rolling_window: true
width: 6.0
height: 6.0
resolution: 0.025

map_type: voxel
origin_z: 0.0
z_resolution: 1
z_voxels: 32
unknown_threshold: 10
mark_threshold: 0

transform_tolerance: 0.3
obstacle_range: 2.5
max_obstacle_height: 1.0
min_obstacle_height: 0.10
raytrace_range: 3.0
footprint: [[-0.325, -0.325], [-0.325, 0.325], [0.325, 0.325], [0.46, 0.0], [0.325,-0.325]]
footprint_padding: 0.01
inflation_radius: 0.55
cost_scaling_factor: 10.0
lethal_cost_threshold: 100
observation_sources: ....

our localcostmap.yaml:

local_costmap:

global_frame: base_link
robot_base_frame: base_link
update_frequency: 5.0
publish_frequency: 2.0
static_map: false
rolling_window: true
width: 6.0
height: 6.0
resolution: 0.05

global_costmap:

global_frame: base_link
robot_base_frame: base_link
update_frequency: 5.0
static_map: false

move_base launch:

<node pkg="move_base" type="move_base" respawn="false" name="move_base" output="screen">
<remap from="/cmd_vel" to="/guardian_controller/command" />
<rosparam file="params_costmap2d.yaml" command="load" ns="global_costmap" />
<rosparam file="params_costmap2d.yaml" command="load" ns="local_costmap" />
<rosparam file="local_costmap_params.yaml" command="load" />
<rosparam file="global_costmap_params.yaml" command="load" />
<rosparam file="local_costmap_params.yaml" command="load" />
</node>

Which global_frame should I use, if I'm not using a map?

Thank you in advance


Originally posted by jarjarbings on ROS Answers with karma: 23 on 2011-09-12

Post score: 2

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

I think the problem is that you are using the same frame (base_link) for both an external reference point and for the moving base. So from the robot point of view it is not moving!

You don't need a map for the navigation, but you need a fixed frame of reference, which in your case could be the odometry. Information about how to publish a custom odometry tf is here.

In the PR2 this is odom_combined for example.


Originally posted by Lorenzo Riano with karma: 1342 on 2011-09-12

This answer was ACCEPTED on the original site

Post score: 7


Original comments

Comment by jarjarbings on 2011-09-13:
Thanks for your answer. Since we are using the robot_pose_ekf node for filtering and estimating odometry, the node allready publishes a tf called odom_combined as you said. So know I've added this frame as our global frame. Now the robot stops when he arrives his goal.

Comment by rohan on 2013-04-27:
@jarjarbings Did you change the global frame only in globalcostmap.yaml file or as well as in local costmap.yaml

Comment by jxl on 2015-11-09:
@rohan ,I think it should be both.

$\endgroup$

Your Answer

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