-
Notifications
You must be signed in to change notification settings - Fork 65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Traffic light AGV's footprint and vicinity ignored unless moving #42
Comments
I'm closing this issue because this is the intended behavior of the traffic light API. There are two "illegal" conditions happening in your scenario:
|
Thanks @mxgrey for the prompt reply. I've updated the issue a bit to better illustrate my question. Namely, am I right to expect that RMF should be the one pausing |
For traffic light AGVs in particular, yes, it is the responsibility of the system integrator to make sure that the AGV has exclusive rights to be at whatever place it is stopped. The traffic light API doesn't have enough authority over the AGV to resolve conflicts that come up from the AGV being parked in a bad place.
RMF only deals with resolving traffic conflicts to the best ability allowed by the APIs of the traffic participants that are conflicting. That means RMF is not responsible for ensuring separation here, because the parked AGV has effectively declared that it has arrived at its own exclusive parking spot, and therefore is assumed to no longer be participating in the traffic system.
While I would discourage ever parking an AGV in a location where it would interfere with the traffic of another robot, the answer to this question is yes. Once an AGV is parked, it should be treated as an ordinary static obstacle and AMRs that are capable of navigating around static obstacles should simply navigate around it. There are ways that the RMF traffic scheduling system could enforce separation of a parked traffic light AGV in the way that you were expecting, but I think that behavior could cause worse complications, like permanently blocking off a lane that the parked robot doesn't really need anymore. If we were to consider adding that behavior, it should first be written out in a very carefully thought out design document. |
Understood, thanks for the clarification! |
Bug report
Required information:
rmf_demos
container (17f43f1c79ff)Description of the bug
It seems current traffic light implementation only reports AGV footprint and vicinity (via publishing to
/rmf_traffic/itinerary_set
) when AGV is moving (as shown by the yellow and blue circles on rviz). Once AGV stopped, it stops publishing to/itinerary_set
. The footprint and vicinity of the AGV disappears on rviz and is disregarded byrmf_traffic
. This causesrmf_traffic
to fail to pause routes that pass through a stopped traffic light AGV.Steps to reproduce the bug
ros2 launch rmf_demos office_mock_traffic_light.launch.xml
tinyRobot2
to be on the path betweentinyRobot1_charging
andtinyRobot2_charging
http://localhost:5000
) create a Loop request fromtinyRobot1_charging
totinyRobot2_charging
Expected behavior
tinyRobot1
andtinyRobot2
rmf
should pausetinyRobot1
before it collides withtinyRobot2
Actual behavior
tinyRobot2
(traffic light AGV)gzserver
triggerstinyRobot1
to stop to avoid collision instead ofrmf
Screenshots
demo simulation
Another example with hardware in the loop simulation
tinyRobot1
is simulated in gazebosesto1
is an agv in real life (with traffic light implemented)sesto1
was sent to the T junction via external (non-rmf) API and stopped for a supposed jobtinyRobot1
sent to Loop betweenTinyRobotStation
andTinyRobotRC
sesto1
's location,tinyRobot1
is sent crashing intosesto1
The text was updated successfully, but these errors were encountered: