Configure ROS 2 controller parameters¶
Where controller and hardware interface parameters live, how to inspect them, and how this stack treats startup vs runtime changes. Per-parameter tables: Controller ROS 2 parameters. Hardware interface <param> tables are on each public driver page — Hardware Interfaces.
Topic lists and FSM integers stay on the controller pages — this guide is parameters plus the few mechanisms that several controllers share.
Where parameters live¶
Place |
What it is |
Typical contents |
|---|---|---|
|
Loaded by |
Controller plugin types, |
|
Live ROS 2 parameter API on a running node |
Same names as YAML once the node is up |
URDF / xacro |
Hardware interface plugin arguments, not |
CAN device, topic names, |
|
OCS2 task files |
|
The OCS2 Arm Controller README names config/ocs2_arm_controller.yaml. At arms_ros2_control 9a1da3ba that folder only has demo.rviz. Machine values are in the description YAML (example: cr5_description/.../ros2_controllers.yaml).
arms_target_manager also reads command/arms_target_manager/config/default.yaml or a robot config/ocs2/target_manager.yaml.
Startup / Runtime tags on the tables match the public controller READMEs in arms_ros2_control #120 (branch commit e1b7a147; code pin on main is still 9a1da3ba). After that PR merges, the same wording is on main.
Inspect running values¶
Controller plugins are ROS 2 nodes named after the controller. After a launch:
ros2 param list
ros2 param list /ocs2_arm_controller
ros2 param get /ocs2_arm_controller movel_duration
ros2 param get /left_gripper_controller force_threshold
Most hardware <param> values do not appear on ros2 param list — they are baked into /robot_description when xacro runs. Some public hardware interface plugins also declare_parameter the same names as node params (ARX, HighTorque, Marvin, some 灵巧手); those rows are marked Runtime on the matching driver page — Hardware Interfaces. Confirm the plugin with ros2 control list_hardware_interfaces and the xacro under xacro/ros2_control/.
Startup vs runtime¶
A YAML value is always applied when the controller or hardware interface plugin starts. Whether ros2 param set later changes behavior uses the same tags as the package READMEs:
Tag |
Meaning |
|---|---|
Runtime |
|
Startup only |
Loaded in |
Unverified |
Declared, but there is no callback or clear re-read path. The READMEs in #120 mark none of the previously documented keys this way. |
These Runtime paths are not instant callbacks.
Framework-common parameters¶
Basic Joint Controller and OCS2 Arm Controller both use the same ros2_control ControllerInterface / controller_manager keys. They are listed once here. Per-controller tables keep package-specific keys only.
Adaptive Gripper Controller does not use joints: it declares joint (singular) and binds {joint}/position. arms_target_manager is a command node, not a ControllerInterface.
Parameter |
Typical type / default |
Meaning |
|---|---|---|
|
string[] |
Joint names for command/state interfaces. Startup only. |
|
int (Basic Joint README example |
Hz; often the |
|
string[] / |
Command interface names. Startup only. OCS2 Arm also uses the set to detect position vs force/MIX — ros2_control here. |
|
string[] / |
State interface names. Startup only. |
|
string / empty |
Optional prefix on command interface names. Startup only. |
Unload and reload the controller to change these.