include_launch_description now searches exhaustively for all declared arguments inside a launch file and all of the included files inside it.
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)$.
More importantly, the search itself is a standalone part of codes that only reports errors but does not contribute to the launch process.
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.
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
Launching with correct arguments: I observed a significant boost of speed in launching our repo.
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.
Feature request
Feature description
I would hope to add an argument to skip the argument checking in
actions/include_launch_description.py
.Background
include_launch_description
now searches exhaustively for all declared arguments inside a launch file and all of the included files inside it.<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)$.include
, eachdeclare_launch_arugment
will also cleanly throw out an error and cleanly terminate the program when the value is not provided.Implementation considerations
Experiment: Completely Eliminate the Argument Checking in
include_launch_description
Locally I have conducted this experiment.
Commenting out Line 163 - 177.
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.