This commit is contained in:
2026-08-05 18:17:25 +08:00
parent 61796dfa9f
commit b52cee9e39
34 changed files with 866 additions and 309 deletions
+25 -24
View File
@@ -161,8 +161,8 @@ rclpy.shutdown() ── 清理
```
### 2.6 本仓库对照
- Python:[`src/py_pubsub/py_pubsub/publisher_member_function.py`](../src/py_pubsub/py_pubsub/publisher_member_function.py)
- C++:[`src/cpp_pubsub/src/publisher_member_function.cpp`](../src/cpp_pubsub/src/publisher_member_function.cpp)
- Python:[`src/py_pubsub/py_pubsub/publisher_node.py`](../src/py_pubsub/py_pubsub/publisher_node.py)(类名 `ChatterPublisher`)
- C++:[`src/cpp_pubsub/src/chatter_publisher.cpp`](../src/cpp_pubsub/src/chatter_publisher.cpp)(类名 `ChatterPublisher`)
---
@@ -486,21 +486,21 @@ executor.spin()
### 6.2 声明 / 读取 / 写
```python
class Talker(Node):
def __init__(self):
super().__init__('talker_py')
# 声明参数 + 默认值
self.declare_parameter('period_ms', 500)
self.declare_parameter('topic', 'chatter')
class ChatterPublisher(Node):
def __init__(self, *, node_name='chatter_publisher'):
super().__init__(node_name)
# 声明参数 + 默认值(实际类名 ChatterPublisher / 参数 publish_rate_hz)
self.declare_parameter('publish_rate_hz', 2.0)
self.declare_parameter('topic_name', 'chatter')
# 读取
period = self.get_parameter('period_ms').value
topic = self.get_parameter('topic').value
rate = self.get_parameter('publish_rate_hz').value
topic = self.get_parameter('topic_name').value
def change_param(self, new_period):
def change_param(self, new_rate):
# 运行时改
param = rclpy.parameter.Parameter(
'period_ms', rclpy.Parameter.Type.INTEGER, new_period
'publish_rate_hz', rclpy.Parameter.Type.DOUBLE, new_rate
)
self.set_parameters([param])
```
@@ -508,12 +508,12 @@ class Talker(Node):
### 6.3 CLI 改参数
```bash
ros2 param list # 节点的所有参数
ros2 param get /talker_py period_ms
ros2 param set /talker_py period_ms 200
ros2 param describe /talker_py period_ms
ros2 param dump /talker_py > params.yaml # 导出
ros2 param load /talker_py params.yaml # 加载
ros2 param list # 节点的所有参数
ros2 param get /chatter_publisher_py publish_rate_hz
ros2 param set /chatter_publisher_py publish_rate_hz 5.0
ros2 param describe /chatter_publisher_py publish_rate_hz
ros2 param dump /chatter_publisher_py > params.yaml # 导出
ros2 param load /chatter_publisher_py params.yaml # 加载
```
### 6.4 launch 中覆盖
@@ -521,24 +521,25 @@ ros2 param load /talker_py params.yaml # 加载
```python
Node(
package='py_pubsub',
executable='talker',
parameters=[{'period_ms': 200, 'topic': 'chatter'}] # 覆盖
executable='chatter_publisher',
name='chatter_publisher_py',
parameters=[{'publish_rate_hz': 5.0, 'topic_name': 'chatter'}], # 覆盖
)
```
CLI 启动:
```bash
ros2 run py_pubsub talker --ros-args -p period_ms:=200 -p topic:=hello
ros2 run py_pubsub chatter_publisher --ros-args -p publish_rate_hz:=5.0 -p topic_name:=hello
```
### 6.5 YAML 文件
```yaml
# config/params.yaml
talker_py:
chatter_publisher_py:
ros__parameters:
period_ms: 200
topic: chatter
publish_rate_hz: 5.0
topic_name: chatter
```
```python