open-rmf / open-rmf/rmf_task

rmf_task_sequence appears to use rmf_traffic directly without declaring it in package.xml

Open Beginner friendly
#144 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
27
Forks
30
PR merge metrics
No merged PRs in 30d

Description

Summary

While reviewing ROS 2 package dependency metadata, I noticed that rmf_task_sequence appears to use rmf_traffic directly, but rmf_traffic does not seem to be declared in rmf_task_sequence/package.xml.

This may make the package rely on rmf_task and rmf_battery to provide rmf_traffic transitively.

Evidence

Direct usage

rmf_task_sequence directly includes rmf_traffic headers in production code:

  • include/rmf_task_sequence/events/GoToPlace.hpp:21: #include <rmf_traffic/agv/Planner.hpp>
  • include/rmf_task_sequence/events/DropOff.hpp:21: #include <rmf_traffic/agv/Planner.hpp>
  • include/rmf_task_sequence/events/PickUp.hpp:21: #include <rmf_traffic/agv/Planner.hpp>
  • include/rmf_task_sequence/events/PerformAction.hpp:21: #include <rmf_traffic/agv/Planner.hpp>
  • include/rmf_task_sequence/events/WaitFor.hpp:21: #include <rmf_traffic/Time.hpp>
  • src/rmf_task_sequence/events/internal_PayloadTransfer.hpp:26: #include <rmf_traffic/agv/Planner.hpp>

The task sequence implementation uses RMF traffic types directly, for example:

  • include/rmf_task_sequence/events/GoToPlace.hpp:32: using Goal = rmf_traffic::agv::Plan::Goal
  • include/rmf_task_sequence/events/PickUp.hpp:36: using Location = rmf_traffic::agv::Plan::Goal
  • include/rmf_task_sequence/events/WaitFor.hpp:57: static DescriptionPtr make(rmf_traffic::Duration wait_duration)
  • src/rmf_task_sequence/Activity.cpp:68: method parameter rmf_traffic::Time earliest_arrival_time
  • src/rmf_task_sequence/Task.cpp:112: returns rmf_traffic::Duration
  • src/rmf_task_sequence/events/GoToPlace.cpp:27: helper returns std::optional<rmf_traffic::Duration> and accepts rmf_traffic::agv::Planner

The unit tests also construct rmf_traffic::agv::Graph, rmf_traffic::Profile, rmf_traffic::agv::VehicleTraits, and rmf_traffic::agv::Planner.

Current package.xml

I could not find a direct declaration of rmf_traffic in rmf_task_sequence/package.xml. The dependency appears to be reachable through declared RMF packages.

Observed during build/test

During build/test tracing, files from rmf_traffic were accessed, for example:

  • lib/rmf_traffic/cmake/rmf_traffic-config.cmake
  • lib/rmf_traffic/cmake/rmf_traffic-targets.cmake
  • share/colcon-core/packages/rmf_traffic
  • lib/librmf_traffic.so
Transitive path

The dependency appears to be reachable transitively through:

rmf_task_sequence -> rmf_task -> rmf_battery -> rmf_traffic

Suggested fix

If RMF traffic planner/time types are direct dependencies of rmf_task_sequence, would it make sense to add:

<depend>rmf_traffic</depend>

Notes

This issue is not claiming that the package currently fails to build. The concern is that the package directly uses rmf_traffic while relying on a transitive dependency path to make it available. The observation is based on package metadata, source usage, dependency closure analysis, and build/test file-access tracing.

Could you please confirm whether this dependency is intentionally left implicit through the transitive dependency path shown above, or whether adding an explicit dependency to package.xml would be appropriate?

I would be happy to open a small PR adding the dependency if that matches the intended package metadata.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing rmf_task_sequence/package.xml and compare its declared dependencies with the direct rmf_traffic includes and types listed in the issue. Check the package build and tests after adding the explicit dependency; done means rmf_traffic is declared directly and the existing build/test behavior remains valid.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
build-system
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
74/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.