car/dev_ws
2026-08-13 14:35:17 +08:00
..
scripts Initial commit 2026-08-13 14:35:17 +08:00
src Initial commit 2026-08-13 14:35:17 +08:00
README.md Initial commit 2026-08-13 14:35:17 +08:00

README_RDK_X5 使用说明

1. 当前机器的实际设备映射

根据现场枚举结果,当前机器建议按下面的映射理解和使用:

1.1 串口设备

  • 底盘控制口:/dev/ttyUSB0
  • 机械臂控制口:/dev/ttyUSB1
  • 机械臂默认波特率:9600

现场串口枚举:

root@ubuntu:~# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1

1.2 摄像头设备

  • 普通 USB 摄像头:/dev/video0
  • 深度摄像头设备节点:/dev/video1
  • 深度相机型号:Orbbec Gemini 2

现场 USB 枚举:

root@ubuntu:~# lsusb
Bus 002 Device 003: ID 2bc5:0670 Orbbec 3D Technology International, Inc Orbbec(R) Gemini(TM)
Bus 001 Device 008: ID 0c45:6341 Microdia Defender G-Lens 2577 HD720p Camera
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Bus 001 Device 003: ID 1a86:7523 QinHeng Electronics CH340 serial converter

1.3 一个很重要的说明

虽然系统里能看到 /dev/video1,但这套工程中的 Gemini 2 深度数据并不是按普通 UVC 摄像头方式直接读取 /dev/video1,而是通过 orbbec_camera 驱动发布 ROS 2 话题:

  • /camera/color/image_raw
  • /camera/depth/image_raw
  • /camera/depth/camera_info

所以:

  • 普通 USB 摄像头 走 usb_video_device:=/dev/video0
  • Gemini 2 走 orbbec_camera 驱动和对应 ROS 话题

不要把这两套链路混在一起。


2. 工作空间目录

~/dev_ws
├── src
│   ├── depth_target_detector
│   ├── lerobot_arm_controller
│   ├── mission_manager
│   ├── orbbec_camera
│   ├── orbbec_camera_msgs
│   ├── origintank_base
│   ├── origintank_bringup
│   └── signal_board_detector

3. 各功能包作用

  • origintank_base:底盘驱动,负责底盘控制与基础传感器数据发布
  • origintank_bringup:整机启动入口
  • mission_manager:任务状态机,统一调度底盘、识别和机械臂动作
  • signal_board_detector:普通 USB 摄像头识别任务目标或标志牌
  • depth_target_detector:基于 Gemini 2 输出深度目标三维点
  • lerobot_arm_controller:机械臂串口控制与抓取流程
  • orbbec_camera:Gemini 2 驱动
  • orbbec_camera_msgs:Orbbec 相机消息定义

4. 整机控制链路

整机链路可以理解为:

  1. 底盘 由 origintank_base 负责,发布 /odom、/imu、/ultrasonic/front/range
  2. 普通 USB 摄像头 由相关 launch 拉起,供 signal_board_detector 使用
  3. Gemini 2 由 orbbec_camera 启动,输出彩色图、深度图和相机内参
  4. depth_target_detector 将目标转换为三维点并发布到 /depth_target/point3d
  5. lerobot_arm_controller 订阅 /depth_target/point3d,控制机械臂执行抓取
  6. mission_manager 统一管理开始、停止、状态切换和任务流程

5. 编译前准备

5.1 加载 ROS 环境

source /opt/ros/humble/setup.bash

5.2 安装 Orbbec udev 规则

如果工程里带有安装脚本,可先执行:

cd ~/raico_rdk_x5_ws_minimal_gemini2
chmod +x scripts/setup_orbbec_udev.sh
./scripts/setup_orbbec_udev.sh

如果你实际使用的是 ~/dev_ws 这一套工程,也要确保 orbbec_camera/scripts/99-obsensor-libusb.rules 已正确安装到系统里。

5.3 编译工作空间

cd ~/dev_ws
source /opt/ros/humble/setup.bash
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
source install/setup.bash

6. 内存不足时的处理方法

Orbbec 相关包较大,如果编译时内存不足,可以临时开 8G swap:

free -h
swapon --show

fallocate -l 8G /swapfile || dd if=/dev/zero of=/swapfile bs=1M count=8192
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
free -h
swapon --show

编译完成后可关闭:

swapoff /swapfile
rm -f /swapfile

7. 整机启动方式

7.1 推荐启动命令(按当前机器实际连接)

cd ~/dev_ws
source /opt/ros/humble/setup.bash
source install/setup.bash

ros2 launch origintank_bringup rdk_x5_auto_mission.launch.py \
  cmd_port:=/dev/ttyUSB0 \
  arm_port:=/dev/ttyUSB1 \
  usb_video_device:=/dev/video0

7.2 启动后默认会拉起的模块

  • 底盘驱动
  • 普通 USB 摄像头识别
  • Gemini 2 驱动
  • 深度目标检测
  • 机械臂控制
  • 任务状态机

8. 只测试 Gemini 2

cd ~/dev_ws
source /opt/ros/humble/setup.bash
source install/setup.bash

ros2 launch origintank_bringup orbbec_gemini2.launch.py

可选检查:

ros2 run orbbec_camera list_devices_node
ros2 run orbbec_camera list_depth_work_mode_node

9. 手动启动和停止任务

启动任务:

ros2 topic pub --once /mission/start std_msgs/msg/Bool "{data: true}"

停止任务:

ros2 topic pub --once /mission/start std_msgs/msg/Bool "{data: false}"