open-rmf / rmf_traffic

Traffic management libraries for RMF
Apache License 2.0
28 stars 26 forks source link

Introducing the traffic dependency system #70

Closed mxgrey closed 2 years ago

mxgrey commented 2 years ago

This PR introduces the most significant change to the traffic negotiation system in the last two years.

Previously traffic management was entirely time-based. Traffic participants would make predictions about their expected trajectories through space-time and then other participants have the opportunity to plan their own trajectories around that, or create conflicts to trigger negotiations. When one or more participants inevitably deviate from the timing of their plan (either because of errors in their predictive models or because of external factors), a negotiation gets triggered so they can re-adjust their predictions and avoid collisions. That time-based approach led to a considerable amount of logically unnecessary cycles through potentially expensive planning effort. It also carries a risk of allowing robots to end up conflicting despite their best efforts to negotiate, because sometimes a negotiation would not get triggered quickly enough.

The new traffic dependency system allows traffic participants to explicitly express their dependencies on each other's traffic plans. With this added layer of semantic information, robots can ensure they stay out of each other's way by explicitly watching the progress of other participants and waiting at a safe location until the other participants report that they are out of the way.

This new system should drastically reduce planning effort, reduce the frequency of negotiations, and ensure good spacing between robots that would otherwise have a risk of collision.

This PR depends on

codecov[bot] commented 2 years ago

Codecov Report

Merging #70 (1fe4987) into main (e8505b4) will increase coverage by 0.47%. The diff coverage is 35.50%.

@@            Coverage Diff             @@
##             main      #70      +/-   ##
==========================================
+ Coverage   22.16%   22.64%   +0.47%     
==========================================
  Files         359      364       +5     
  Lines       29181    29995     +814     
  Branches    13306    13811     +505     
==========================================
+ Hits         6468     6792     +324     
- Misses      13804    13918     +114     
- Partials     8909     9285     +376     
Flag Coverage Δ
tests 22.64% <35.50%> (+0.47%) :arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
rmf_traffic/include/rmf_traffic/DetectConflict.hpp 0.00% <0.00%> (ø)
rmf_traffic/include/rmf_traffic/Route.hpp 0.00% <ø> (ø)
rmf_traffic/include/rmf_traffic/Trajectory.hpp 25.00% <ø> (ø)
...mf_traffic/include/rmf_traffic/agv/Interpolate.hpp 0.00% <ø> (ø)
rmf_traffic/include/rmf_traffic/agv/Planner.hpp 11.11% <0.00%> (-1.39%) :arrow_down:
...traffic/include/rmf_traffic/agv/RouteValidator.hpp 40.00% <ø> (ø)
...affic/include/rmf_traffic/agv/SimpleNegotiator.hpp 0.00% <ø> (ø)
...mf_traffic/include/rmf_traffic/schedule/Change.hpp 66.66% <ø> (ø)
..._traffic/include/rmf_traffic/schedule/Database.hpp 0.00% <0.00%> (ø)
...mf_traffic/include/rmf_traffic/schedule/Mirror.hpp 0.00% <ø> (ø)
... and 89 more