How to run with keeping one side ?

asked 2020-11-30 21:21:49 -0500

ayato gravatar image


I'm trying my robot to run with keeping one side of corridor.
This is because that the corridor width is around 2 times of my robot width. My robot width is 0.7m.
If my robot run in center of corridor, other people can't go through corridor.

One method I tryed is editing map, and adding the virtual wall.
In this method, I painted black to another lane that robot run, and let move_base to subscribe this map.
This method was roughly successful.
But there were several times when robot failed to avoid to people and crashed into the real wall and the virtual wall.
When I checked the bag file, it seemed that the cause was that robot could find a route to avoid even though robot could not actually pass it.

Next, I tryed change parameter of footprint horizontally long. This method didn't work.
I checked bag file that footprint was properly deformed.
I set the right side longer to run on the left side, but the right side was also running. And it was the same when it came to avoiding behavior.

And next, I set max_vel_theta and min_vel_theta to lower and lower, about 0.03 rad/s, in order not to generate route that robot could not actually pass. Still, for some reason, the robot sometimes approached the wall.

Throughout, my robot stopped when a person comes from head-on, but especially when a person runs side by side trying to overtake, my robot tryed to avoid and approached the wall.

This is all about I came up with. In the case of my robot, I think when there are people near the robot, I don't have to forcibly avoid them. But rather I want to stop and wait for people to disappear.

I use move_base and base_local_planner now. Does anyone have a good idea? Thanks in advance.

edit retag flag offensive close merge delete