Robotics StackExchange | Archived questions

move_base in uneven terrain (slopes)

Hi,

I'm confronted with the situation of a car-like robot driving in uneven terrain, i.e. the ground is not plain but there are (slight) hills and (slight) slopes. We are not operating in the Rocky Mountains, but it's not entirely flat either. Localization is done with GPS and odometry, obstacles come from lidar pointclouds or similar. There is no static map, rather are global and local costmap operating as rolling window.

When using ROS' navigation stack resp. move_base for planning and controlling, I observe some issues:

I played a lot with different parameters of move_base, used VoxelGrids and flat ones but could not figure out a setting, that works in uneven terrain. The only thing that solved most issues (but generated some others) was to override the /odom frame's z position and setting it to zero.

So I guess my general question is: can move_base be tweaked to work beyond the flat-world-assumption? Or are there stacks that overcome those limitations?

Any hint is highly appreciated

Asked by stfn on 2016-05-24 08:14:58 UTC

Comments

I don't think move_base is appropriate for non-flat terrain. I'm not sure about any other planners that are appropriate for non-planar motion planning.

Asked by ahendrix on 2016-05-24 18:56:26 UTC

Would it theoretically be possible to filter scan data so only objects that are very close are marked as obstacles? That might stop slopes from appearing as such. Regarding 3D navigation, have you found a more effective solution than setting Z = 0 in the /odom frame?

Asked by M@t on 2016-08-01 22:46:28 UTC

If your terrain is mostly flat you can try to add a preprocessing step to the sensor data which detects the ground and removes it. This should be documented in academic papers, but I have not tried to implement it myself.

Asked by ahendrix on 2016-08-01 22:55:58 UTC

@M@t What worked best is a ground filter on the input data along with the flat obstacle grid (not voxel grid!) while setting min/max obstacle height to -large/+large. In case of VoxelGrid, the whole problem could be overcome if the running window would take the robots z-coordinate into account.

Asked by stfn on 2016-08-02 10:55:50 UTC

@ahendrix Do you have some reference ? Thx

@stfn I'm facing the same issues with slopes. Could you detail a bit more what you did ? My rover is running the Navigation stack to follow a waypoints path while avoiding unpredictable obstacle. However, the rover is outdoor - no flat world !

Asked by Kiwa21 on 2016-08-28 08:00:08 UTC

@stfn @Kiwa21 did you find any path planners/navigation solutions for outdoor rough terrain?

Asked by jorgemia on 2020-11-17 04:14:09 UTC

Answers