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

unexpected robot behaviour with navigationstack

asked 2018-08-21 07:32:02 -0500

-LD- gravatar image

Hello everybody,

i have some problems again and hope someone can help me. Following scenario:

  • I have a robot platform, diff-drive with laser scanner mounted pointing forward
  • i have already recorded a map with slam (g-mapping i guess was the one i used in the end)
  • i have set up the navigation-stack with move_base like described here
  • i can see everything in rviz (map, cost map, base, laser scans)
  • i can set a goal in rviz and (most of the time) get a nice looking path

I'm pretty sure the move_base package is quiet powerful, but now comes the weird thing: the robot doesn't follow the path at all. It seems like it is ignoring the path at all and trying to find a way to the goal of it's own with horrible results. Something like:

  • turning 180deg and driving in the opposite direction. Or,
  • instead of just passing straight through some obstacles in front of it, turn 270deg and than heading directly towards one of them. Or
  • ignoring the curve in the plan at the very beginning and just drive the first 1.5meters straight, than make the 90deg turn that has summed up in order to follow the rest of the path

One idea i had is that this might be the escape sequences that the move_base-node provides. So i tried to switch them off. The base is still doing point turns and also driving backwards.

So, before i start programming my own node that takes the path (list of stamped points) and calculate the velocity commands for x/theta, is anybody here experienced enough for being able to make a guess based on the "files" above what might cause this behavior?

Thanks for everybody taking the time for reading this.


Lets start with the shortened .launch file:

<launch> 
    <include file ... " />          <!-- joystick, motordriver, odometrie, inverse kinematik -->
    <node pkg="map_server"  ... />  <!-- load saved map -->
    <node pkg="amcl"    ... />  <!-- correct odom errors -->

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


    <param name="robot_description" ... />
    <node name="robot_state_publisher" ... />
</launch>

And here are the .yaml files - unfortunately they are all separate in the tutorial and i don't know if i can mix them all together in one big file (especially since two of them are loaded with a name space tag):

[costmap_common_params.yaml]

map_type: costmap
observation_sources: laser_scan
transform_tolerance: 0.25
obstacle_range: 5.0
raytrace_range: 5.0
inflation_radius: 0.25
xy_goal_tolerance: 0.05
yaw_goal_tolerance: 0.25

footprint: [
  [0.50, 0.35],
  [-0.30, 0.35],
  [-0.30, -0.35],
  [0.50, -0.35]
]

laser_scan: {
  sensor_frame: laser_link,
  data_type: LaserScan,
  topic: /mp470/laser_scan,
  marking: true,
  clearing: true
}

[local_costmap_params.yaml]

local_costmap:
  global_frame: odom
  robot_base_frame: base_link
  update_frequency: 5.0
  publish_frequency ...
(more)
edit retag flag offensive close merge delete

Comments

Alot of things don't make alot of sense here. Your max, min velocity and acc are same. you width or height defined for global map, lookup what all these params do and change them accordingly, and if it still shows weird behaviour then update the question.

Choco93 gravatar image Choco93  ( 2018-08-21 08:07:26 -0500 )edit

min/max are set to the same value by purpose. By that i want to make sure that i always know, how fast the robot is. It's simply just allowed to drive with 0.1m/s . Since the max vel is so slow the acc is set to the same value (higher wouldn't have made sense in my mind).

-LD- gravatar image -LD-  ( 2018-08-21 08:21:35 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2018-08-21 19:07:30 -0500

billy gravatar image

Your robot is 1 meter wide but inflation set to 0.25. Goal tolerance at 0.05 seems excessively restrictive. Can you post a screen shot of path and costmap from RVIZ? There is a Nav Stack tuning tutorial that helped me. http://wiki.ros.org/navigation/Tutori...

edit flag offensive delete link more

Question Tools

1 follower

Stats

Asked: 2018-08-21 07:32:02 -0500

Seen: 194 times

Last updated: Aug 21 '18