How to navigate a rectangular robot in tight spaces eg narrow corridors?

asked 2021-11-21 01:23:02 -0500

irisxoxo gravatar image

I am using ROS Noetic on Ubuntu 20.04 and have been stuck on this problem for many days. I am using TEB local planner (I tried DWA planner before too but it performed worse than TEB). My robot is 82cm long, 63cm wide, thus we originally set its footprint to be: [ [0.41, 0.315], [0.41, -0.315], [-0.41, -0.315], [-0.41,0.315] ].

We realized it was unable to navigate tight spaces that are 0.9m-1m wide only. Thus I reduced the footprint to be squarish: [ [0.315, 0.315], [0.315, -0.315], [-0.315, -0.315], [-0.315,0.315] ] for costmaps. For TEB I am using a small circular footprint of radius 5cm for optimization, but I still get this message often TebLocalPlannerROS: trajectory is not feasible. Resetting planner... I understand TEB is checking feasibility using the local costmap's footprint, but I cannot reduce the local costmap footprint further because I noticed it sometimes hit/scrape obstacles if I reduce it more. Currently, the robot can navigate a few goals in tight spaces successfully but often it will get stuck. I do notice its wheel odometry is a tad noisy and the localization drifts a little as it moves around, contributing to it unable to find global and/or local paths.

Here are my amcl parameters: odom_model_type: "diff" transform_tolerance: 0.2 gui_publish_rate: 10.0 laser_max_beams: 30 min_particles: 50 max_particles: 1000 kld_err: 0..01 #0.05 kld_z: 0.99 odom_alpha1: 0.2 odom_alpha2: 0.2 odom_alpha3: 1.25 odom_alpha4: 0.2 odom_alpha5: 0.1 laser_z_hit: 0.95 #0.5 laser_z_short: 0.1 #0.05 laser_z_max: 0.05 laser_z_rand: 0.05 #0.5 laser_sigma_hit: 0.2 laser_lambda_short: 0.1 laser_model_type: "likelihood_field" laser_likelihood_max_dist: 2.0 update_min_d: 0.2 update_min_a: 3.14/6 #0.5 odom_frame_id: "odom" resample_interval: 2 #1 transform_tolerance: 0.1 recovery_alpha_slow: 0.0 recovery_alpha_fast: 0.0 I increased odom_alpha3 to be higher and I noticed somewhat better localization than before, but it still drifts a little as the robot moves. Drifting localization is still okay when navigating in open spaces, but is an issue in tight spaces. Please advise me on how to tune for navigation in tight spaces, thanks!

edit retag flag offensive close merge delete

Comments

By adjusting penalty_epsilon you can do some wonders in tight spaces. Please take a look at this link:

https://github.com/rst-tu-dortmund/te...

osilva gravatar image osilva  ( 2021-11-23 19:03:09 -0500 )edit

name>/penalty_epsilon (double, default: 0.1)

Add a small safety margin to penalty functions for hard-constraint approximations

osilva gravatar image osilva  ( 2021-11-23 19:10:09 -0500 )edit