本项目为ROS2学习实践项目,模拟咖啡店顾客与咖啡师的交互场景。包含两个核心节点:
- 顾客节点 (Customer):生成饮品订单请求
- 咖啡师节点 (Peets):处理订单并返回制作状态
- 操作系统: Ubuntu 20.04 LTS
- ROS2版本: Foxy Fitzroy
- 编译系统: colcon
- 依赖项:
sudo apt install ros-foxy-rclcpp ros-foxy-std-msgs
crs_ws/
├── build/ # 编译中间文件
├── install/ # 安装目录
├── log/ # 日志文件
├── srv/
│ ├── OrderDrink.srv
└── src/
└── customer_and_peets/ # ROS2功能包
├── src/
│ ├── lanuch
│ │ ├── customer_and_peets_launch.py
│ ├── nodes/
│ │ ├── customer.cpp # 顾客节点源码
│ │ ├── peets.cpp # 咖啡师节点源码
│ ├── services/
│ │ ├── order_drink_server.cpp # 咖啡师服务端源码
│ │ ├── order_drink_client.cpp # 客户客户端源码
├── include/ # 头文件目录
├── CMakeLists.txt # 构建配置
└── package.xml # 包配置文件
git clone git@github.com:MrDynimate/ROS2_Try_proj.git
cd ROS2_Try_projcolcon build --packages-select customer_and_peetsecho "source ~/crs_ws/install/setup.bash" >> ~/.bashrc打开终端
ros2 launch customer_and_peets customer_and_peets_launch.py生成随机饮品订单(咖啡类型、糖量、温度)
发布到 /order_request 话题
订阅 /order_status 接收制作状态
消息频率:2秒/次
订阅 /order_request 接收订单
模拟饮品制作过程(5秒延时)
发布制作状态到 /order_status
支持订单优先级处理
修改 customer.cpp 中的参数调整行为:
// 修改订单频率(单位:毫秒)
timer_ = this->create_wall_timer(
2000ms, // 修改此数值
std::bind(&Customer::make_order, this));| 分支类型 | 命名格式 | 示例 |
|---|---|---|
| 功能开发 | feature/功能描述 | feature/priority-queue |
| 问题修复 | hotfix/问题描述 | hotfix/memory-leak |
# 创建新功能分支
git checkout -b feature/order-validation
# 提交修改(使用规范前缀)
git commit -m "feat: 添加订单有效性验证逻辑"
# 推送到远程
git push origin feature/order-validation
# 在GitHub创建Pull Request查看话题数据流:
ros2 topic echo /order_request
ros2 topic echo /order_status查看节点关系图:
rqt_graph1.首次运行前需执行:
rosdep install --from-paths src --ignore-src -y2.若修改消息类型,需要重新编译:
colcon build --symlink-install
source install/setup.bash- Lunch文件编写
- 参数变化
- 更多节点功能
项目维护者:MrDynimate
最后更新:2025-3-11
Version:v0.0.1-beta