Skip to content

ROS Parameters

parameter file

Demo:

Simple Node with multiple parameter file one of the file use wildcard as node_name

Post
import rclpy
from rclpy.node import Node

PARAM1 = "param1"
PARAM2 = "param2"

class MyNode(Node):
    def __init__(self):
        node_name="minimal"
        super().__init__(node_name)
        p1 = self.declare_parameter(PARAM1, 1)
        p2 = self.declare_parameter(PARAM2, 2)
        self.get_logger().info(f"P1: {p1.value}")
        self.get_logger().info(f"P1: {p2.value}")

def main(args=None):
    rclpy.init(args=args)
    node = MyNode()
    rclpy.spin_once(node)
    node.destroy_node()
    rclpy.shutdown()

if __name__ == '__main__':
    main()

Param files

params1.yaml
1
2
3
4
minimal:
  ros__parameters:
    param1: 10
    param2: 20
params2.yaml
1
2
3
4
/**:
  ros__parameters:
    param1: 100
    param2: 200

usage

Note

Wildcards can be used for node names and namespaces.
- * matches a single token delimited by slashes (/). - ** matches zero or more tokens delimited by slashes. - Partial matches are not allowed (e.g. foo*).

/**:
    ros__parameters:
        wildcard_full: "Full wildcard for any namespaces and any node names"

/**/parameter_blackboard:
    ros__parameters:
        wildcard_namespace: "Wildcard for a specific node name under any namespace"

/*:
    ros__parameters:
        wildcard_nodename_root_namespace: "Wildcard for any node names, but only in root namespace"
use default params value declare in code
1
2
3
ros2 run ros_py param_demo.py 
[INFO] [1740517785.377374134] [minimal]: P1: 1
[INFO] [1740517785.377601145] [minimal]: P1: 2
load paras from file
1
2
3
ros2 run ros_py param_demo.py --ros-args --params-file params1.yaml
[INFO] [1740517874.809880531] [minimal]: P1: 10
[INFO] [1740517874.810112715] [minimal]: P1: 20
load multiple params file

wildcard matching

params2.yaml has global match /**

1
2
3
4
5
6
ros2 run ros_py param_demo.py \
--ros-args \
--params-file params1.yaml \
--params-file params2.yaml
[INFO] [1740518709.532923265] [minimal]: P1: 100
[INFO] [1740518709.533163666] [minimal]: P1: 200

Reference