Blog
首页 搜索 关于

ROS2 项目部署实战:从下载到运行

陈 · 2026年03月18日 · 预计阅读 4分钟 · 31 次浏览
ROS Linux
内容安全审核通过

本文直接进入实战部署流程。我们的目标很明确:把 ros2_buker_xarm6_oak4 从仓库拉到本地,完成配置、编译,并把导航链路和抓取链路跑通。

项目地址:

  • https://github.com/chendageshuonipangle/ros2_buker_xarm6_oak4

一、项目全景:先明确我们要跑通什么

这个项目包含两条主链路,我们按顺序推进:

  1. 移动底盘导航链路

    • Bunker Mini + RPLIDAR + SLAM/Nav2
    • 目标:机器人可以建图、定位、导航
  2. 机械臂视觉抓取链路

    • OAK 检测 → 坐标转换 → xArm6 MoveIt2 抓取
    • 目标:检测目标后可执行抓取动作

执行策略:先跑通导航,再接入抓取。


二、部署前检查:先把硬件和环境打平

我们先把基础条件确认完,避免后面反复返工。

1) 硬件条件

  • Bunker Mini 底盘(CAN 正常)
  • RPLIDAR(USB 正常)
  • OAK 相机(USB 正常)
  • xArm6(网络可达)

2) 软件条件

  • Ubuntu + ROS2(与依赖匹配)
  • 已安装:git、colcon、rosdep
  • 使用标准工作区:~/ros2_ws

3) 立即执行的检查命令

printenv | grep -E "ROS_DISTRO|ROS_VERSION"
ls -l /dev/rplidar
ip link show can0
ping -c 4 192.168.1.242

结论标准:四项检查至少要保证“设备可见 + 网络可达”。


三、拉取代码:按标准工作区落地

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
git clone https://github.com/chendageshuonipangle/ros2_buker_xarm6_oak4.git

该仓库内部自带 src/,我们做一次标准化整理:

cd ~/ros2_ws
rsync -a src/ros2_buker_xarm6_oak4/src/ src/
cp src/ros2_buker_xarm6_oak4/start_bunker_navigation.sh ~/ros2_ws/
chmod +x ~/ros2_ws/start_bunker_navigation.sh

到这里,目录结构应是标准 ROS2 形态:

  • ~/ros2_ws/src/...
  • ~/ros2_ws/start_bunker_navigation.sh

四、安装依赖并编译

cd ~/ros2_ws
rosdep update
rosdep install --from-paths src --ignore-src -r -y
colcon build
source ~/ros2_ws/install/setup.bash

把环境加载写入 ~/.bashrc:

echo "source ~/ros2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

验收标准:colcon build 无致命错误,能正常 source。


五、部署导航链路(先完成这条)

入口脚本:~/ros2_ws/start_bunker_navigation.sh

步骤 1:启动底层 bringup

cd ~/ros2_ws
./start_bunker_navigation.sh bringup

如果脚本询问 CAN 初始化,按提示完成。

步骤 2:启动 SLAM 建图

新开终端执行:

cd ~/ros2_ws
source install/setup.bash
./start_bunker_navigation.sh slam

步骤 3:保存地图

./start_bunker_navigation.sh save_map

步骤 4:加载地图做导航

./start_bunker_navigation.sh nav /home/你的用户名/ros2_ws/maps/my_map.yaml

可选模式:边建图边导航

./start_bunker_navigation.sh slam_nav

导航链路验收标准:RViz 可见稳定 TF,机器人能接受目标点并执行移动。


六、部署抓取链路(导航稳定后再执行)

我们按 4 个终端并行启动:

终端 1:xArm6 MoveIt2

ros2 launch xarm_moveit_config xarm6_moveit_realmove.launch.py     robot_ip:=192.168.1.242     add_gripper:=true

终端 2:OAK 检测节点

source ~/ros2_ws/install/setup.bash
ros2 run oak_yolo_py oak_yolo_node

终端 3:坐标转换节点

source ~/ros2_ws/install/setup.bash
ros2 launch oaktf_trantoarm transform.launch.py target_label:=orange

终端 4:抓取执行节点

source ~/ros2_ws/install/setup.bash
ros2 run armtodeprition motion_planner_node

手动触发一次抓取:

ros2 service call /execute_grasp std_srvs/srv/Trigger

抓取链路验收标准:/target_pose_in_base 持续有目标位姿,服务调用后机械臂执行动作。


七、现场排障流程(按顺序执行)

出现异常时,按以下顺序排:

  1. 先看节点是否都在:

    ros2 node list
  2. 再看关键话题是否有数据:

    ros2 topic list
    ros2 topic hz /scan
    ros2 topic echo /odom --once
    ros2 topic echo /target_pose_in_base --once
  3. 最后看 TF:

    ros2 run tf2_tools view_frames

典型问题快速处理:

  • CAN 异常:重走 bringup 初始化流程
  • 雷达无数据:检查 /dev/rplidar 和进程占用
  • 检测有结果但不抓:核对 target_label、目标位姿话题、MoveIt2 连接状态

八、收尾标准:我们判定“部署完成”的条件

满足以下四项,即可判定部署成功:

  1. 工作区可稳定编译并加载
  2. 导航链路可完成建图与导航
  3. 抓取链路可输出目标位姿并触发执行
  4. 常见故障可按排障流程快速定位

到这一步,项目就进入可持续调参与迭代阶段。


读者讨论 (共 1 条)

发表评论

k
king 2026-03-19 11:34

这个包是陈写的?这么厉害吗

"记录思考,分享知识,在文字中寻找共鸣"

© 2026 Arc's Blog. · [email protected]