ros2 / ros2/launch

[FeatureRequest] Is it possible to skip argument checking in include_launch_description

Open
#745 0 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
155
Forks
182
Avg merge
2d 14h
Merged PRs (30d)
6

Description

Feature request

Feature description

I would hope to add an argument to skip the argument checking in actions/include_launch_description.py .

Background
  1. include_launch_description now searches exhaustively for all declared arguments inside a launch file and all of the included files inside it.
  2. For a huge launch system like the one I am testing, the function will search through all the included files (regardless it is included or not by <group if=false/true>) to check argument validity. But when we go onto the process of the subfiles, the function will again search through all the sub-subfiles. Which essentially leads to a search complexity of at least $O(n^2)$.
  3. More importantly, the search itself is a standalone part of codes that only reports errors but does not contribute to the launch process.
  4. Without argument checking in include, each declare_launch_arugment will also cleanly throw out an error and cleanly terminate the program when the value is not provided.
  5. The launching process of other parts of the code is now $O(n)$ and more manageable for large system.
Implementation considerations
Experiment: Completely Eliminate the Argument Checking in include_launch_description

Locally I have conducted this experiment.

Commenting out Line 163 - 177.

  1. Launching with correct arguments: I observed a significant boost of speed in launching our repo.
  2. Launching with in-complete arguments: the launch will fire up some of the corrected packages in the order of the launch file -> declare_launch_arugment throws error messages about the lack of required argument -> everything quit cleanly including the launched nodes.

Pros: easy to implement and fast.

Cons: Some users may expect the launch system to quit directly before launching up any nodes.

Personal Considerations

I hope this could at least become an optional mechanism by adding arguments to the launch command.

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 in launch/launch/actions/include_launch_description.py at the argument-checking code around lines 163–177. Investigate how an optional skip mechanism would affect nested launch files and incomplete arguments, then verify behavior with both complete and incomplete arguments; done means the choice is available without breaking normal validation.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
tooling
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.