Skip to content

Commit d8ce4a9

Browse files
committed
Add --switch-asap option to spawner
1 parent 811d501 commit d8ce4a9

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

controller_manager/controller_manager/spawner.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,13 @@ def main(args=None):
141141
action="store_true",
142142
required=False,
143143
)
144+
parser.add_argument(
145+
"--switch-asap",
146+
help="Option to switch the controllers in the realtime loop at the earliest possible time or in the non-realtime loop.",
147+
required=False,
148+
default=False,
149+
action=argparse.BooleanOptionalAction,
150+
)
144151
parser.add_argument(
145152
"--controller-ros-args",
146153
help="The --ros-args to be passed to the controller node, e.g., for remapping topics. "
@@ -160,6 +167,7 @@ def main(args=None):
160167
switch_timeout = args.switch_timeout
161168
strictness = SwitchController.Request.STRICT
162169
unload_controllers_upon_exit = False
170+
switch_asap = args.switch_asap
163171
node = None
164172

165173
if param_files:
@@ -282,7 +290,7 @@ def main(args=None):
282290
[],
283291
[controller_name],
284292
strictness,
285-
True,
293+
switch_asap,
286294
switch_timeout,
287295
service_call_timeout,
288296
)
@@ -307,7 +315,7 @@ def main(args=None):
307315
[],
308316
controller_names,
309317
strictness,
310-
True,
318+
switch_asap,
311319
switch_timeout,
312320
service_call_timeout,
313321
)
@@ -341,7 +349,7 @@ def main(args=None):
341349
controller_names,
342350
[],
343351
strictness,
344-
True,
352+
switch_asap,
345353
switch_timeout,
346354
service_call_timeout,
347355
)

controller_manager/doc/userdoc.rst

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,9 @@ There are two scripts to interact with controller manager from launch files:
163163
.. code-block:: console
164164
165165
$ ros2 run controller_manager spawner -h
166-
usage: spawner [-h] [-c CONTROLLER_MANAGER] [-p PARAM_FILE] [--load-only] [--inactive] [-u] [--controller-manager-timeout CONTROLLER_MANAGER_TIMEOUT] [--switch-timeout SWITCH_TIMEOUT] [--service-call-timeout SERVICE_CALL_TIMEOUT] [--activate-as-group]
167-
[--controller-ros-args CONTROLLER_ROS_ARGS]
168-
controller_names [controller_names ...]
166+
usage: spawner [-h] [-c CONTROLLER_MANAGER] [-p PARAM_FILE] [--load-only] [--inactive] [-u] [--controller-manager-timeout CONTROLLER_MANAGER_TIMEOUT] [--switch-timeout SWITCH_TIMEOUT]
167+
[--service-call-timeout SERVICE_CALL_TIMEOUT] [--activate-as-group] [--switch-asap | --no-switch-asap] [--controller-ros-args CONTROLLER_ROS_ARGS]
168+
controller_names [controller_names ...]
169169
170170
positional arguments:
171171
controller_names List of controllers
@@ -186,6 +186,8 @@ There are two scripts to interact with controller manager from launch files:
186186
--service-call-timeout SERVICE_CALL_TIMEOUT
187187
Time to wait for the service response from the controller manager
188188
--activate-as-group Activates all the parsed controllers list together instead of one by one. Useful for activating all chainable controllers altogether
189+
--switch-asap, --no-switch-asap
190+
Option to switch the controllers in the realtime loop at the earliest possible time or in the non-realtime loop.
189191
--controller-ros-args CONTROLLER_ROS_ARGS
190192
The --ros-args to be passed to the controller node, e.g., for remapping topics. Pass multiple times for every argument.
191193

0 commit comments

Comments
 (0)