跳到主要内容

Rokae xMate ROS2 使用说明

项目说明
文档名称Rokae xMate ROS2 使用说明
适用产品珞石 xMate 系列协作 / 工业机器人(见下文「适配机型」)
适用平台Ubuntu 22.04 LTS,x86_64
适用发行版ROS2 Humble
文档版本V0.0.2(适配v0.0.2ROS2软件包)
发布日期2026/04/10

文档信息

版本记录

版本日期说明
V0.0.22026/04/10基于原 rokae ros2使用手册.md 全文重排:章节结构、目录、表格与术语统一;添加servej示例代码。

适用范围与读者

本手册说明如何在 ROS2 Humble 环境下获取、编译与运行 Rokae ROS2(rokae_ros2) 软件包,并完成 ros2_control + MoveIt 2 下的仿真与真机联调入门流程。

目标读者:已掌握 ROS2 基本概念(工作空间、节点、话题、服务、launch),希望将珞石 xMate 机械臂接入自有应用的开发人员。

重要声明

  • 本文档随开源 / 交付软件包更新,具体接口与参数以仓库内源码及 package.xml 为准。
  • 涉及 机器人运动、真机网络与安全 的操作,须在具备资质的人员监督下进行。

目录


第 1 章 概述

1.1 ROS2 简介

ROS2(Robot Operating System 2)是面向机器人系统的开源中间件套件,在 ROS 1 基础上强化了 实时性、安全性、生命周期管理跨平台构建 能力。与 ROS 1 相比,常见差异包括:

  • 去中心化通信:基于 DDS 的发现与数据传输,弱化对中央 roscore 的依赖。
  • 节点生命周期:标准化 configure / activate / ... 状态机,便于工业现场集成。
  • 构建系统:采用 ament + colcon,替代 catkin 工作流。

1.2 手册目的与范围

目的

本手册提供 Rokae ROS2 软件包的 安装、编译、环境配置 说明,并给出 仿真与真机 下的 MoveIt 2 + ros2_control 入门操作步骤。

范围

当前版本软件包覆盖 xMate 系列下列机型(后续版本可能扩展;用户亦可按相同模式自行适配新型号):

1.3 当前适配机型

系列机型标识(robot_type 等)
ARxMateAR5L、xMateAR5R
CRxMateCR7、xMateCR12、xMateCR18、xMateCR20
ERxMateER3、xMateER7
ProxMatePro3、xMatePro7
SRxMateSR3、xMateSR4、xMateSR5

第 2 章 安装与环境

2.1 硬件与操作系统要求

Rokae ROS2 主要在 Ubuntu 22.04 LTS + ROS2 Humble 上开发与验证;其它发行版或 ROS 版本可能存在不兼容情况。

组件最低 / 建议配置备注
CPU64 位 Intel i5 / i7 或同级 AMD;建议 8 核及以上1000 Hz 实时模式对算力敏感
内存8 GB;建议 16 GBMoveIt 2 与 RViz2 占用较高
磁盘≥ 20 GB 可用空间SSD 可显著缩短编译与启动时间
GPU支持 CUDA 的 NVIDIA GPU(可选)非必须

2.2 ROS2 与依赖包安装

  1. 安装 ROS2 Humble(略,请参考官方安装文档)。
  2. 安装本软件包常用依赖(示例):
sudo apt update
sudo apt install ros-humble-moveit
sudo apt install ros-humble-controller-manager
sudo apt install ros-humble-joint-state-broadcaster
sudo apt install \
ros-humble-joint-state-publisher \
ros-humble-forward-command-controller \
ros-humble-effort-controllers \
ros-humble-velocity-controllers \
ros-humble-position-controllers \
ros-humble-joint-trajectory-controller

若仍有缺失依赖,请按报错信息使用 sudo apt install ros-humble-<package> 补全。

source /opt/ros/humble/setup.bash

参考链接(第三方):ROS2 一键安装类教程(示例)
https://blog.csdn.net/pixelprodigy/article/details/147933853

ROS2 Control 参考
https://control.ros.org/rolling/doc/getting_started/getting_started.html

2.3 工作空间创建与编译

  1. 从珞石获取 最新 Rokae ROS2 源码包,解压至工作空间 src 目录。
  2. 编译:
mkdir -p ~/ros2_ws/src
# 将 rokae_ros2 等包复制到 ~/ros2_ws/src
cd ~/ros2_ws
colcon build
  1. 配置环境变量(建议写入 ~/.bashrc):
source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/local_setup.sh
source ~/ros2_ws/install/setup.bash

提示:在文件管理器中按 Ctrl + H 可显示隐藏文件 .bashrc


第 3 章 软件包结构

3.1 工作空间顶层目录

doc/                              # 手册与说明
rokae_description/ # URDF / xacro / 网格模型
rokae_hardware/ # 硬件接口、驱动、launch、控制器配置
rokae_msgs/ # 自定义消息与服务
rokae_xMateAR5L_moveit_config/ # 各机型 MoveIt 2 配置
rokae_xMateAR5R_moveit_config/
rokae_xMateCR12_moveit_config/
rokae_xMateCR18_moveit_config/
rokae_xMateCR20_moveit_config/
rokae_xMateCR7_moveit_config/
rokae_xMateER3_moveit_config/
rokae_xMateER7_moveit_config/
rokae_xMatePro3_moveit_config/
rokae_xMatePro7_moveit_config/
rokae_xMateSR3_moveit_config/
rokae_xMateSR4_moveit_config/
rokae_xMateSR5_moveit_config/

3.2 rokae_hardware 包结构

CMakeLists.txt
config/ # 控制器 YAML 配置
include/ # 硬件接口头文件
launch/ # 启动文件
package.xml
rokae_hardware_interface.xml # ros2_control 插件描述
sdk/ # 厂商 SDK 头文件与库
src/ # 实现源码(见下节)

3.3 rokae_hardware/src 源文件说明

文件说明
connect_test.cpp网络性能分析测试(未注册为节点;编译后在 build 目录查找可执行文件)
movej_client.cppmovej 客户端示例,与 rokae_driver(服务端)配合
movej_moveit_test.cpp基于 MoveIt 规划的 movej 示例
rokae_driver.cpp六轴机型:封装部分 xCore 接口为 ROS2 Service
rokae_driver7.cpp七轴机型:同上
rokae_hardware_interface.cppros2_control SystemInterface 实现,经 pluginlibcontroller_manager 加载

第 4 章 系统架构与入门

4.1 ROS2 Control 架构

本软件包采用 ROS2 Control 标准架构。典型需要关注的三类文件为:

类别路径 / 位置作用
控制器参数rokae_hardware/config/*.yaml声明 joint_state_broadcasterjoint_trajectory_controller
机器人描述rokae_description/urdf/*.xacro通过 <ros2_control> 声明关节与硬件插件参数
硬件接口插件rokae_hardware/src/rokae_hardware_interface.cpp调用厂商 SDK,实现 read / write 等接口

4.2 RViz + MoveIt 2 规划真机

4.2.1 前置条件

  1. 已正确安装 MoveIt 2ros2_control 与本仓库各功能包。
  2. 控制器与上位机网络互通,robot_iplocal_ip 配置正确。

4.2.2 启动示例

ros2 launch rokae_hardware rokae_moveit_launch.py \
robot_type:=SR4 \
use_fake_hardware:=true \
robot_ip:=192.168.2.160 \
local_ip:=192.168.2.1
参数含义
robot_type机型简写,如 SR4CR7AR5LAR5RER7Pro7
robot_ip机器人控制器 IP
local_ip本机连接控制器网卡的 IP
use_fake_hardwaretrue:使用 mock_components/GenericSystem 仿真;false:加载真实硬件插件

建议流程:先在 use_fake_hardware:=true 下验证 MoveIt 与控制器链路,再切换为 false 连接真机或 HMI。
真机连接时,请关注 HMI 中 RCI 相关设置网络丢包率
说明:旧版手册中出现的「rt」多为笔误或简写,现场请以 HMI 中的 RCI(实时控制接口) 与网络诊断为准。

4.2.3 六轴 / 七轴与 SDK 机器人类型(重要)

部分机型为 七轴,需在硬件接口源码中选择与轴数一致的 SDK 机器人类型。涉及文件:

  • rokae_hardware/src/rokae_hardware_interface.cpp
  • rokae_hardware/include/rokae_hardware/rokae_hardware_interface.h

示例(以源码注释为准,按现场机型取消注释 / 切换):

/* rokae_hardware_interface.cpp */
robot_ = std::make_shared<rokae::xMateRobot>(robot_ip_, local_ip_); // 六轴机型
// robot_ = std::make_shared<rokae::xMateErProRobot>(robot_ip_, local_ip_); // 七轴机型

/* rokae_hardware_interface.h */
std::shared_ptr<rokae::xMateRobot> robot_;
// std::shared_ptr<rokae::xMateErProRobot> robot_;

4.2.4 RViz 中规划操作要点

  1. 黄色模型为目标位姿,白色为当前状态,半透明灰色为起始姿态。
  2. 拖动交互标记(末端球体)或使用 MotionPlanning → Joints 修改目标关节角。
  3. 点击 Plan & Execute 生成并执行轨迹。
  4. 连续多次规划时,建议先再次拖动末端标记,刷新 Joints 面板中的目标值。
  5. 速度缩放:MotionPlanning → Planning → Options → VelocityScaling(0–1)。

HMI 状态监控
图 1 HMI 状态监控

RViz 可视化
图 2 RViz 可视化

MotionPlanning 的 Joints
图 3 通过 MotionPlanning → Joints 修改目标位置

修改目标位置
图 4 RViz 目标姿态与当前姿态

4.3 基于 MoveIt 的 movej 示例

在上一节 launch 正常运行前提下,可启动:

ros2 launch rokae_hardware controll_movej.launch.py robot_type:=SR4

源码修改要点movej_moveit_test.cpp):

/* 约第 149 行:设置规划参考坐标系(需与对应机型 SRDF 中 base 名称一致) */
arm.setPoseReferenceFrame("AR5-5_07R-W4C4A2_base"); // 其它机型请替换为 xxx_base

/* 约第 158 行:目标关节向量维度须与自由度一致 */
std::vector<double> joint_target = {0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5};

/* 约第 284 行:MoveGroup 名称须与 SRDF 中 `<group name="...">` 一致 */
auto move_group = std::make_shared<moveit::planning_interface::MoveGroupInterface>(node, "AR5R_arm");
// xMate 系列默认规划组名多为 rokae_arm

4.4 常用节点 / 话题 / Action

4.4.1 节点

ros2 node list
ros2 node info /<node_name>
节点说明
/controller_managerros2_control 控制器管理器
/joint_state_broadcaster将硬件关节状态发布到 /joint_states
/joint_state_publisher无真实硬件时辅助发布关节状态
/move_groupMoveIt 2 规划核心节点
/moveit_simple_controller_managerMoveIt 与轨迹控制器之间的桥接
/position_joint_trajectory_controller关节轨迹跟踪控制器
/robot_state_publisher根据 URDF 与 /joint_states 发布 TF
/rviz2RViz2 可视化

4.4.2 话题

ros2 topic list
ros2 topic info /<topic_name>
ros2 topic echo /<topic_name>
话题说明
/joint_states全关节状态
/display_planned_path规划路径插值点
/position_joint_trajectory_controller/controller_state控制器状态

4.4.3 Action

ros2 action list
ros2 action info /<action_name>
Action说明
/execute_trajectory执行已规划轨迹
/move_actionMoveIt 规划并执行
/position_joint_trajectory_controller/follow_joint_trajectory轨迹跟踪(与 MoveIt 对接)

4.5 rokae_driver 驱动与接口

rokae_driver / rokae_driver7 将部分 xCore API 封装为 ROS2 ServiceTopic,便于二次开发。

4.5.1 Service 一览

服务定义位于 rokae_msgs/srv

服务说明类型
/rokae_driver/get_robot_info查询型号、SDK 版本等GetRobotInfo
/rokae_driver/jog_controlJogJogCon
/rokae_driver/drag_control拖动示教模式开关DragCon
/rokae_driver/calculate_fk正解CalculateFK
/rokae_driver/calculate_ik逆解CalculateIK
/rokae_driver/get_di / set_di数字输入GetDI / SetDI
/rokae_driver/get_do / set_do数字输出GetDO / SetDO
/rokae_driver/movejMoveJMoveJ
/rokae_driver/movelMoveLMoveL
/rokae_driver/movecMoveCMoveC
/rokae_driver/read_register / write_register寄存器读写ReadRegister / WriteRegister

七轴版本可执行文件为 rokae_driver7,对应服务命名空间一般为 /rokae_driver7/...(以 launch 为准)。

4.5.2 Topic 一览

话题说明类型
/rokae_driver/joint_states关节角状态sensor_msgs/msg/JointState
/rokae_driver/cartesian_pose笛卡尔位姿(实现中读取 法兰系geometry_msgs/msg/PoseStamped

4.5.3 启动命令

ros2 run rokae_hardware rokae_driver --ros-args \
-p robot_ip:=192.168.2.160 -p local_ip:=192.168.2.100

ros2 launch rokae_hardware rokae_driver.launch.py \
robot_ip:=192.168.2.160 local_ip:=192.168.2.100

二者择一即可,注意替换为实际 IP。

示例:查询机器人信息

ros2 service call /rokae_driver/get_robot_info rokae_msgs/srv/GetRobotInfo

第 5 章 扩展与定制

5.1 适配新机型

  1. rokae_description 中新增 URDF / xacro、网格、碰撞模型,可参考现有机型目录结构。
  2. 修改 rokae_description/urdf/xMate.urdf.xacroxMate_macro.xacro,为新机型增加分支与宏调用;并编写对应的 *.ros2_control.xacro
  3. 使用 MoveIt Setup Assistant 生成新型号的 *_moveit_config 包;与现有机型存在差异时,以现有机型包内文件组织方式为基准对齐。

附录 A 术语表

术语说明
robot_typelaunch 传入的机型简写,用于选择 URDF、控制器 YAML、MoveIt 配置包名等
use_fake_hardware是否使用仿真用 GenericSystem 插件
flangeInBaseSDK 坐标类型:法兰相对基坐标系
endInRefSDK 坐标类型:末端(工具 / 工件语义)相对参考系

附录 B 反馈与支持

若文档与代码不一致,请以仓库最新版本为准,并将 ROS2 发行版、Ubuntu 版本、机型、robot_type、完整 launch 命令与终端日志 一并反馈,以便快速定位问题。