2.1 KiB
2.1 KiB
cpp_custom_interface
ROS2 自定义接口演示包(C++)。属于 Level 1 基础机制第 10 块。
自定义接口
| 类型 | 文件 | 字段 |
|---|---|---|
msg |
SensorReading.msg |
header + sensor_id + unit + value |
srv |
GetCalibration.srv |
req: sensor_id / resp: intrinsic_matrix[9] + bias[3] + date + valid |
action |
MoveArm.action |
goal: target_pose + joint_names + scaling / feedback: progress + state / result: success + time |
节点
sensor_publisher_cpp: 周期性发布SensorReading(正弦曲线模拟传感器读数)calibration_server_cpp: 提供GetCalibration服务(返回模拟相机内参)move_arm_server_cpp: 提供MoveArmAction(5 阶段模拟移动)
关键概念
| 概念 | 用途 |
|---|---|
rosidl_generate_interfaces |
自动生成 C++ / Python 接口代码 |
.msg / .srv / .action |
接口定义文件 |
rosidl_default_generators |
构建时依赖 |
rosidl_default_runtime |
运行时依赖 |
ament_cmake |
C++ 包构建类型 |
运行
# 启动所有自定义接口节点
ros2 launch cpp_custom_interface custom_launch.py
# CLI 调用服务
ros2 service call /get_calibration cpp_custom_interface/srv/GetCalibration "{sensor_id: 'lidar_front'}"
# CLI 发 Action goal
ros2 action send_goal /move_arm cpp_custom_interface/action/MoveArm "{
target_pose: {header: {frame_id: 'base_link'}, pose: {position: {x: 0.3, y: 0.0, z: 0.2}, orientation: {w: 1.0}}},
joint_names: ['joint1','joint2','joint3'],
max_velocity_scaling: 0.5,
max_acceleration_scaling: 0.5
}" --feedback
# CLI 看自定义消息
ros2 topic echo /sensor_reading
测试
colcon test --packages-select cpp_custom_interface
测试覆盖:
| 用例 | 内容 |
|---|---|
SensorReadingFields |
msg 字段构造正确 |
GetCalibrationRequestResponse |
srv 字段 + 长度正确 |
MoveArmGoalFeedbackResult |
action 三段都正确 |
深度学习
- 编程规范:
doc/CODING_STYLE.md - 自定义接口:
doc/16-custom-interfaces.md