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

Best approach for waiting on an elevator door to open

asked 2014-01-09 18:17:11 -0600

goatfig gravatar image

updated 2014-01-28 17:06:13 -0600

ngrennan gravatar image

Hello, I am working on an Ros module that allows our robot to traverse between two floors using a elevator.

The elevator uses a sliding door.

Currently navigation is good enough to get into position in front of the door and wait.

I was thinking I would do something like

  1. Position in front of elevator (done)
  2. Detect that the door is closed
  3. Wait until the door opens
  4. Enter the elevator/ turn to face the door (allow the door to close again)
  5. .... And get out of the elevator/ Switch floor maps and so on.

My problem is steps 2) and 3).

Some of my questions:

  1. I am unsure how I say to ROS that I want you to wait for obstacle at position x,y to clear? Then continue. <-- This a big question for me (If you could explain how this is done I would be very grateful)

  2. How do I keep the planner from quitting if the robot has to wait a hour for the door to open?

  3. How do I keep the planner from trying to take alternate routes inside the elevator? (this may be an mute point as the robot's planner will only see one route into the elevator)

If this approach is just bad overall feel free to suggest another more robust version.

P.S. This is 2D navigation/obstacle detection using a LIDAR sensor. I have an premade accurate map of the environment that the robot is using AMCL to localize from. Knowing this I am able to say location x,y is an door on a map.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2014-01-09 23:29:00 -0600

dornhege gravatar image

I guess the straight-forward approach is to not instruct the robot to drive into the elevator directly. Split that and have it drive to the door first, wait on your own, and then send the command to drive inside.

edit flag offensive delete link more

Comments

Right now I can already do that. I drive up infront of the door. Once I am in front of the door I am not sure how to tell ros that the "obstacle" in front of it is special. That the obstacle will clear by itself. And then to wait for the obstacle to clear.

goatfig gravatar image goatfig  ( 2014-01-10 08:18:36 -0600 )edit

For instance I want to know how to do: DoorPoint = x,y // point on map that is the entry point of the door While (DoorPoint == occupied) { wait in one place} // Door has opened Set new navigation goal inside elevator.

goatfig gravatar image goatfig  ( 2014-01-10 08:23:04 -0600 )edit

Sorry for all the comments... Can I just look at the costmap at the point DoorPoint. And when that is clear go ahead and set the next navigation goal inside the elevator? Does this sound like an reasonable way to use ROS or am I "hacking" at problem by using the costmap?

goatfig gravatar image goatfig  ( 2014-01-10 08:30:30 -0600 )edit

Yes, looking at the costmap is the correct way as that is what move_base will do to decide if it can execute or not.

dornhege gravatar image dornhege  ( 2014-01-12 22:29:42 -0600 )edit

Thank you this is what I will do then. Is there an "correct" way to interface with the costmap? Like if I want to say are there obstacles in an 5 meter radius around the current position of the robot? (Basically I am looking for helper methods to deal with the complexity of the HUGE costmap)

goatfig gravatar image goatfig  ( 2014-01-13 05:58:37 -0600 )edit

Best check out the costmap documentation. Those distances are somewhat convolved in the costs.

dornhege gravatar image dornhege  ( 2014-01-13 06:11:51 -0600 )edit

Question Tools

1 follower

Stats

Asked: 2014-01-09 18:17:11 -0600

Seen: 1,425 times

Last updated: Jan 09 '14