2026/9/29 21:43:33
网站建设
项目流程
一、建包与环境准备
mkdir-p~/ros2_ws/srccd~/ros2_ws/src ros2 pkg create --build-type ament_python demo_pkg--dependenciesrclpy
| 参数 | 作用 | 备注 |
|---|
--build-type ament_python | 指定为 Python 包 | C++ 场景用ament_cmake |
--dependencies rclpy | 预声明依赖 | 会写入package.xml,避免后续"找不到模块" |
创建后的标准结构:
| 文件 / 目录 | 说明 |
|---|
package.xml | 包元信息与依赖声明 |
setup.py | 入口点注册、资源安装配置 |
setup.cfg | 脚本目录配置 |
demo_pkg/ | 与包同名的 Python 模块目录,含__init__.py |
resource/ | 资源标记文件,用于包发现 |
二、目录与文件规划
src/demo_pkg/ ├── config/ │ └── params.yaml # 新建,参数分层配置 └── demo_pkg/ └── param_demo_node.py # 新建,演示节点
| 新增文件 | 定位 | 设计要点 |
|---|
config/params.yaml | 参数外部化载体 | 按「全局 / 本体 / 任务」三层划分 |
demo_pkg/param_demo_node.py | 演示节点 | 三段式:声明参数 → 启动期校验 → 定时器内重新读取 |
setup.py(修改) | 入口注册 | 格式为可执行名 = 包名.模块名:函数名 |
三、参数配置文件config/params.yaml
param_demo_node:ros__parameters:# --- 1. 全局/系统参数 ---robot_name:"Teacher_Demo_Robot"log_level:"INFO"# --- 2. 机器人本体参数(换底盘时只改这里)---wheel_radius:0.05base_width:0.3# --- 3. 任务/运行参数(换场景时只改这里)---target_speed:0.5max_safe_speed:1.5
| 参数分层 | 包含项 | 典型修改场景 | 责任归属 |
|---|
| 全局/系统 | robot_name、log_level | 部署环境调整 | 系统集成 |
| 本体参数 | wheel_radius、base_width | 更换底盘型号 | 底盘 / 硬件 |
| 任务参数 | target_speed、max_safe_speed | 更换作业场景 | 算法 / 应用 |
分层的意义在于权责清晰:底盘工程师改型号参数,算法工程师改任务参数,互不干扰。如果全塞在一个平铺文件里,多人同时修改时冲突和误改几乎不可避免。
四、节点代码demo_pkg/param_