Galaxea R1_软件指南
软件依赖
- Ubuntu 20.04 LTS
- ROS Noetic
安装
SDK 不需要重新编译。请参考以下内容。
首次操作指引
访问页面 R1_Demo ,并按照说明操作R1。
软件接口
本章描述了 Galaxea R1 的各种控制和状态反馈接口,指导用户如何通过 ROS 软件包与 R1 通信和控制 R1。
驱动接口
当前的Galaxea R1驱动由三个主要部分组成,包括四个独立的ROS节点:底盘、左右臂和躯干的驱动程序。这些驱动程序提供的接口可作为ROS话题,如下所述。
要启动相应的驱动程序,请输入以下命令:
底盘驱动接口
本接口定义了多个话题以报告底盘电机的状态。以下是每个话题及其相关消息类型的详细描述:
话题名称 | 描述 | 消息类型 |
---|---|---|
/hdas/feedback_chassis | 底盘轮毂和转向电机反馈 | sensor_msgs::JointState |
/hdas/feedback_status_chassis | 底盘状态反馈 | hdas_msg::feedback_status |
/motion_control/control_chassis | 底盘轮毂和转向电机控制 | hdas_msg::motor_control |
话题名称 | 字段 | 描述 |
---|---|---|
/hdas/feedback_chassis | header | 标准消息头 |
position | [左前轮角度,右前轮角度,后轮角度] | |
velocity | [左前轮线速度,右前轮线速度, 后轮线速度, 0.0, 0.0, 0.0] | |
effort | [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] | |
/hdas/feedback_status_arm_right | header | 标准消息头 |
name_id | 关节名称 | |
errors | 包含错误码和对应的错误描述 | |
/motion_control/control_chassis | header | 标准消息头 |
name | - | |
p_des | [左前轮角度, 右前轮角度期望, 后轮角度期望] | |
v_des | [左前轮线速度,右前轮线速度, 后轮线速度] | |
kp | - | |
kd | - | |
t_ff | - | |
mode | - |
手臂驱动接口
本接口定义了多个话题来发布和订阅臂的状态、控制命令和相关错误代码。以下是每个话题及其对应消息类型的详细描述:
话题名称 | 描述 | 消息类型 |
---|---|---|
/hdas/feedback_arm_left | 左臂关节反馈 | sensor_msgs::JointState |
/hdas/feedback_arm_right | 右臂关节反馈 | sensor_msgs::JointState |
/hdas/feedback_gripper_left | 左夹爪行程 | sensor_msgs::JointState |
/hdas/feedback_gripper_right | 右夹爪行程 | sensor_msgs::JointState |
/hdas/feedback_status_arm_left | 左臂状态反馈 | hdas_msg::feedback_status |
/hdas/feedback_status_arm_right | 右臂状态反馈 | hdas_msg::feedback_status |
/hdas/feedback_status_gripper_left | 左夹爪状态反馈 | hdas_msg::feedback_status |
/hdas/feedback_status_gripper_right | 右夹爪状态反馈 | hdas_msg::feedback_status |
/motion_control/control_arm_left | 左臂电机控制 | hdas_msg::motor_control |
/motion_control/control_arm_right | 右臂电机控制 | hdas_msg::motor_control |
/motion_control/control_gripper_left | 左夹爪电机控制 | hdas_msg::motor_control |
/motion_control/control_gripper_right | 右夹爪电机控制 | hdas_msg::motor_control |
/motion_control/position_control_gripper_left | 左夹爪位置控制 | std_msgs::Float32 |
/motion_control/position_control_gripper_right | 右夹爪位置控制 | std_msgs::Float32 |
话题名称 | 字段 | 描述 |
---|---|---|
/hdas/feedback_arm_left | header | 标准消息头 |
position | [关节1位置, 关节2位置, 关节3位置, 关节4位置, 关节5位置, 关节6位置, 夹爪关节位置] | |
velocity | [关节1速度, 关节2速度, 关节3速度, 关节4速度, 关节5速度, 关节6速度, 夹爪关节速度] | |
effort | [关节1力矩, 关节2力矩, 关节3力矩, 关节4力矩,关节5力矩, 关节6力矩, 夹爪关节力矩] | |
/hdas/feedback_arm_right | header | 标准消息头 |
position | [关节1位置, 关节2位置, 关节3位置, 关节4位置, 关节5位置, 关节6位置, 夹爪关节位置] | |
velocity | [关节1速度, 关节2速度, 关节3速度, 关节4速度, 关节5速度, 关节6速度, 夹爪关节速度] | |
effort | [关节1力矩, 关节2力矩, 关节3力矩, 关节4力矩, 关节5力矩, 关节6力矩, 夹爪关节力矩] | |
/hdas/feedback_gripper_left | header | 标准消息头 |
position | 夹爪行程 (0-100mm) | |
velocity | Not used | |
effort | Not used | |
/hdas/feedback_gripper_right | header | 标准消息头 |
position | [gripper_stroke] | |
velocity | Not used | |
effort | Not used | |
/hdas/feedback_status_arm_left | header | 标准消息头 |
name_id | 关节名称 | |
errors | 包含错误码和对应的错误描述 | |
/hdas/feedback_status_arm_right | header | 标准消息头 |
name_id | 关节名称 | |
errors | 包含错误码和对应的错误描述 | |
/hdas/feedback_status_gripper_left | header | 标准消息头 |
name_id | 关节名称 | |
errors | 包含错误码和对应的错误描述 | |
/hdas/feedback_status_gripper_right | header | 标准消息头 |
name_id | 关节名称 | |
errors | 包含错误码和对应的错误描述 | |
/motion_control/control_arm_left | header | 标准消息头 |
name | - | |
p_des | [关节1位置, 关节2位置, 关节3位置, 关节4位置, 关节5位置, 关节6位置, 夹爪关节位置] | |
v_des | [关节1速度, 关节2速度, 关节3速度, 关节4速度, 关节5速度, 关节6速度, 夹爪关节速度] | |
kp | [关节1kp, 关节2kp, 关节3kp, 关节4kp, 关节5kp, 关节6kp, 夹爪关节kp] | |
kd | [关节1kd, 关节2kd, 关节3kd, 关节4kd, 关节5kd, 关节6kd, 夹爪关节kd] | |
t_ff | [关节1力矩, 关节2力矩, 关节3力矩, 关节4力矩, 关节5力矩, 关节6力矩, 夹爪关节力矩] | |
mode | - | |
/motion_control/control_arm_right | header | 标准消息头 |
name | - | |
p_des | [关节1位置, 关节2位置, 关节3位置, 关节4位置,关节5位置, 关节6位置, 夹爪关节位置] | |
v_des | [关节1速度, 关节2速度, 关节3速度, 关节4速度,关节5速度, 关节6速度, 夹爪关节速度] | |
kp | [关节1kp, 关节2kp, 关节3kp, 关节4kp, 关节5kp, 关节6kp, 夹爪关节kp] | |
kd | [关节1kd, 关节2kd, 关节3kd, 关节4kd, 关节5kd, 关节6kd, 夹爪关节kd] | |
t_ff | [关节1力矩, 关节2力矩, 关节3力矩, 关节4力矩, 关节5力矩, 关节6力矩, 夹爪关节力矩] | |
mode | - | |
/motion_control/control_gripper_left | header | 标准消息头 |
name | - | |
p_des | [夹爪电机位置] | |
v_des | [夹爪电机速度] | |
kp | [夹爪电机kp] | |
kd | [夹爪电机kd] | |
t_ff | [夹爪电机力矩] | |
mode | - | |
/motion_control/control_gripper_right | header | 标准消息头 |
name | - | |
p_des | [夹爪电机位置] | |
v_des | [夹爪电机速度] | |
kp | [夹爪电机kp] | |
kd | [夹爪电机kd] | |
t_ff | [夹爪电机力矩] | |
mode | - | |
/motion_control/position_control_gripper_left | header | 标准消息头 |
data | 夹爪行程 (0-100mm) | |
/motion_control/position_control_gripper_right | header | 标准消息头 |
data | 夹爪行程 (0-100mm) |
躯干驱动接口
本接口定义了多个话题,用于发布和订阅躯干电机的状态和控制命令。以下是每个话题及其对应消息类型的详细描述:
话题名称 | 描述 | 消息类型 |
---|---|---|
/hdas/feedback_torso | 躯干关节反馈 | sensor_msgs/JointState |
/hdas/feedback_status_torso | 躯干状态反馈 | hdas_msg::feedback_status |
/motion_control/control_torso | 躯干电机控制 | hdas_msg::motor_control |
话题名称 | 字段 | 描述 |
---|---|---|
/hdas/feedback_torso | header | 标准消息头 |
position | [关节1位置, 关节2位置, 关节3位置, 关节4位置] | |
velocity | [关节1速度, 关节2速度, 关节3速度, 关节4速度] | |
effort | [关节1力矩, 关节2力矩, 关节3力矩, 关节4力矩] | |
/hdas/feedback_status_torso | header | 标准消息头 |
name_id | 关节名称 | |
errors | 包含错误码和对应的错误描述 | |
/motion_control/control_torso | header | 标准消息头 |
name | - | |
p_des | [关节1位置, 关节2位置, 关节3位置, 关节4位置] | |
v_des | [关节1速度, 关节2速度, 关节3速度, 关节4速度] | |
kp | [关节1kp, 关节2kp, 关节3kp, 关节4kp] | |
kd | [关节1kd, 关节2kd, 关节3kd, 关节4kd] | |
t_ff | [关节1力矩, 关节2力矩, 关节3力矩, 关节4力矩] | |
mode | - |
相机接口
话题名称 | 描述 | 消息类型 |
---|---|---|
/hdas/camera_chassis_front_left/rgb/compressed | 底盘左前相机RGB压缩图 | sensor_msgs::CompressedImage |
/hdas/camera_chassis_front_right/rgb/compressed | 底盘右前相机RGB压缩图 | sensor_msgs::CompressedImage |
/hdas/camera_chassis_left/rgb/compressed | 底盘左相机RGB压缩图 | sensor_msgs::CompressedImage |
/hdas/camera_chassis_right/rgb/compressed | 底盘右相机RGB压缩图 | sensor_msgs::CompressedImage |
/hdas/camera_chassis_rear/rgb/compressed | 底盘后相机RGB压缩图 | sensor_msgs::CompressedImage |
/hdas/camera_wrist_left/color/image_raw/compressed | 左腕相机RGB压缩图(如存在) | sensor_msgs::CompressedImage |
/hdas/camera_wrist_right/color/image_raw/compressed | 右腕相机RGB压缩图(如存在) | sensor_msgs::CompressedImage |
/hdas/camera_head/left_raw/image_raw_color/compressed | 头部相机RGB压缩图(如存在) | sensor_msgs::CompressedImage |
/hdas/camera_wrist_left/aligned_depth_to_color/image_raw | 左腕相机深度图(如存在) | sensor_msgs::Image |
/hdas/camera_wrist_right/aligned_depth_to_color/image_raw | 右腕相机深度图(如存在) | sensor_msgs::Image |
/hdas/camera_head/depth/depth_registered | 头部相机深度图(如存在) | sensor_msgs::Image |
话题名称 | 字段 | 描述 |
---|---|---|
/hdas/camera_chassis_front_left/rgb/compressed | header | 标准消息头 |
format | JPEG格式 | |
data | 图像数据 | |
/hdas/camera_chassis_front_right/rgb/compressed | header | 标准消息头 |
format | JPEG格式 | |
data | 图像数据 | |
/hdas/camera_chassis_left/rgb/compressed | header | 标准消息头 |
format | JPEG格式 | |
data | 图像数据 | |
/hdas/camera_chassis_right/rgb/compressed | header | 标准消息头 |
format | JPEG格式 | |
data | 图像数据 | |
/hdas/camera_chassis_rear/rgb/compressed | header | 标准消息头 |
format | JPEG格式 | |
data | 图像数据 | |
/hdas/camera_wrist_left/color/image_raw/compressed | header | 标准消息头 |
format | JPEG格式 | |
data | 图像数据 | |
/hdas/camera_wrist_right/color/image_raw/compressed | header | 标准消息头 |
format | JPEG格式 | |
data | 图像数据 | |
/hdas/camera_head/left_raw/image_raw_color/compressed | header | 标准消息头 |
format | JPEG格式 | |
data | 图像数据 | |
/hdas/camera_wrist_left/aligned_depth_to_color/image_raw | header | 标准消息头 |
height | 取决于设置 | |
width | 取决于设置 | |
encoding | 16UC1 | |
is_bigendian | 0 | |
step | 取决于设置 | |
data | 图像数据 | |
/hdas/camera_wrist_right/aligned_depth_to_color/image_raw | header | 标准消息头 |
height | 取决于设置 | |
width | 取决于设置 | |
encoding | 16UC1 | |
is_bigendian | 0 | |
step | 取决于设置 | |
data | 图像数据 | |
/hdas/camera_head/depth/depth_registered | header | 标准消息头 |
height | 取决于设置 | |
width | 取决于设置 | |
encoding | 32FC1 | |
is_bigendian | 0 | |
step | 取决于设置 | |
data | 图像数据 |
激光雷达接口
话题名称 | 描述 | 消息类型 |
---|---|---|
/hdas/lidar_chassis_left | 雷达点云 | sensor_msgs::PointCloud2 |
话题名称 | 字段 | 描述 |
---|---|---|
/hdas/lidar_chassis_left | header | 标准消息头 |
fields | 雷达数据 |
IMU 接口
话题名称 | 描述 | 消息类型 |
---|---|---|
/hdas/imu_chassis | 底盘IMU反馈 | sensor_msgs::Imu |
/hdas/imu_torso | 躯干IMU反馈 | sensor_msgs::Imu |
话题名称 | 字段 | 描述 |
---|---|---|
/hdas/imu_chassis | header | 标准消息头 |
orientation.x | 四元数 x | |
orientation.y | 四元数 y | |
orientation.z | 四元数 z | |
orientation.w | 四元数 w | |
angular_velocity.x | 陀螺仪角速度 x | |
angular_velocity.y | 陀螺仪角速度 y | |
angular_velocity.z | 陀螺仪角速度 z | |
linear_acceleration.x | 线加速度 x | |
linear_acceleration.y | 线加速度 y | |
linear_acceleration.z | 线加速度 z | |
/hdas/imu_torso | header | 标准消息头 |
orientation.x | 四元数 x | |
orientation.y | 四元数 y | |
orientation.z | 四元数 z | |
orientation.w | 四元数 w | |
angular_velocity.x | 陀螺仪角速度x | |
angular_velocity.y | 陀螺仪角速度y | |
angular_velocity.z | 陀螺仪角速度 z | |
linear_acceleration.x | 线加速度 x | |
linear_acceleration.y | 线加速度 y | |
linear_acceleration.z | 线加速度 z |
BMS 接口
话题名称 | 描述 | 消息类型 |
---|---|---|
/hdas/bms | 电池BMS信息 | hdas_msg::bms |
话题名称 | 字段 | 描述 |
---|---|---|
/hdas/bms | header | 标准消息头 |
voltage | 电压(V) | |
current | 电流(A) | |
capital | 电量剩余 (%) |
遥控器接口
话题名称 | 描述 | 消息类型 |
---|---|---|
/hdas/controller | 遥控器信号 | hdas_msg::controller_signal_stamped |
话题名称 | 字段 | 描述 |
---|---|---|
/hdas/controller | header | 标准消息头 |
data.left_x_axis | 左摇杆x方向 | |
data.left_y_axis | 左摇杆y方向 | |
data.right_x_axis | 右摇杆x方向 | |
data.right_y_axis | 右摇杆y方向 | |
mode | 2: 遥控器控制底盘 5: 遥控器控制底盘 |
控制接口
当前Galaxea R1的控制由五个主要部分组成:R1姿态反馈 (R1 Pose Feedback) 、R1关节控制 (R1 Joint Control) 、R1底盘控制 (R1 Chassis Control) 、R1手臂姿态控制 (R1 Arm Pose Control) 和R1躯干姿态控制 ( R1 Torso Pose Control) ,如下图所示。整个软件包被简称为“mobiman”,表示移动操作。
R1 底盘控制
R1底盘控制是一个使用矢量控制来控制R1底盘的节点,它允许您同时发送三个方向的速度命令:x、y 和w。这个节点可以通过命令来启动。
这个启动文件将启动两个节点:chassis_control_node 和 r1_control_manager。chassis_control_node
负责R1底盘的速度控制。其接口如下所示:
话题名称 | 描述 | 消息类型 |
---|---|---|
/motion_target/target_speed_chassis | 底盘的目标速度,包括vx, vy and omega. | geometry_msgs::Twist |
/motion_target/chassis_acc_limit | 底盘的加速度限制,最大值分别为2.5, 1.0, 1.0 | geometry_msgs::Twist |
/motion_target/brake_mode | 发出底盘是否进入制动模式的指令。如果处于制动模式,当速度为0 时,底盘将通过将车轮转动一定角度来锁定自身。 | std_msgs::Bool |
/hdas/feedback_chassis | 请参考底盘驱动接口 | sensor_msgs::JointState |
/motion_control/control_chassis | 请参考底盘驱动接口 | hdas_msg::motor_control |
话题名称 | 字段 | 描述 |
---|---|---|
/motion_target/target_speed_chassis | header | 标准消息头 |
linear | 线速度 | |
.x | 线速度 x, 范围 (-1.5 to 1.5) m/s | |
.y | 线速度 y, 范围 (-1.5 to 1.5) m/s | |
angular | 角速度 | |
.z | 角速度,范围(-3 - 3) rad/s | |
/motion_target/chassis_acc_limit | header | 标准消息头 |
linear | 线速度 | |
.x | 加速度限制 x, 范围 (-2.5 to 2.5) m/s^2 | |
.y | 加速度限制 y, 范围 (-1.0 to 1.0) m/s^2 | |
angular | 角速度 | |
.z | 角速度限制,范围 (-3 - 3) rad/s^2 | |
/motion_target/brake_mode | data | 布尔值, 进入刹车模式:True 退出刹车模式:False |
/hdas/feedback_chassis | - | 请参考底盘驱动接口 |
/motion_control/control_chassis | - | 请参考底盘驱动接口 |
R1关节控制
R1底盘控制节点负责控制R1躯干和手臂的每个关节,总共有16个关节。它可以通过命令启动。
这个启动文件将启动机器人状态发布器、eepose_pub_node
和r1_jointTracker_demo_node
。机器人状态发布器是一个ROS提供的工具,它基于/joint_states
发布tf数据给RVIZ。r1_jointTracker_demo_node
是负责控制每个关节的主要节点。
r1_jointTracker_demo_node
的接口如下所示。
话题名称 | 描述 | 消息类型 |
---|---|---|
/motion_target/target_joint_state_arm_left | 左臂各关节的目标位置 | Sensor_msgs::JointState |
/motion_target/target_joint_state_arm_right | 右臂各关节的目标位置 | Sensor_msgs::JointState |
/motion_target/target_joint_state_torso | 躯干各关节目标位置 | Sensor_msgs::JointState |
/hdas/feedback_arm_left | 请参考手臂驱动接口 | Sensor_msgs::JointState |
/hdas/feedback_arm_right | 请参考手臂驱动接口 | Sensor_msgs::JointState |
/hdas/feedback_torso | 请参考躯干驱动接口 | Sensor_msgs::JointState |
/motion_control/control_arm_left | 请参考手臂驱动接口 | hdas_msg::motor_control |
/motion_control/control_arm_right | 请参考手臂驱动接口 | hdas_msg::motor_control |
/motion_control/control_torso | 请参考躯干驱动接口 | hdas_msg::motor_control |
话题名称 | 字段 | 描述 |
---|---|---|
/motion_target/target_joint_state_arm_left /motion_target/target_joint_state_arm_right |
position | 是一个包含六个元素的向量,代表每个关节的六个目标位置。 |
velocity | 这是一个包含六个元素的向量,代表每个关节在运动过程中的最大速度。最大速度如下:{3, 3, 3, 5, 5, 5}。 加速度和加加速度限制设置为速度限制的1.5倍。 | |
/motion_target/target_joint_state_torso | position | 这是一个包含四个元素的向量,代表每个关节的四个目标位置。 |
velocity | 这是一个包含四个元素的向量,代表每个关节在运动过程中的速度。最大速度如下:{1.5, 1.5, 1.5, 1.5}。 加速度和加加速度限制设置为速度限制的1.5倍。 | |
/hdas/feedback_arm_left | - | 请参考手臂驱动接口 |
/hdas/feedback_arm_right | - | 请参考手臂驱动接口 |
/hdas/feedback_torso | - | 请参考躯干驱动接口 |
/motion_control/control_arm_left | - | 请参考手臂驱动接口 |
/motion_control/control_arm_right | - | 请参考手臂驱动接口 |
/motion_control/control_torso | - | 请参考躯干驱动接口 |
eepose_pub_node
定义了三个坐标帧:基座链接帧 the base link frame(左),浮动基座帧 the floating base frame(中),和末端执行器姿态帧 the end-effector (ee) pose frame(右)。
话题名称 | 描述 | 消息类型 |
---|---|---|
/motion_control/pose_ee_arm_left | 从浮动基座变换到左端执行器姿态 | geometry_msgs::PoseStamped |
/motion_control/pose_ee_arm_right | 从浮动基座变换到右端执行器姿态 | geometry_msgs::PoseStamped |
/motion_control/pose_floating_base | 从基座链接变换到浮动基座 | geometry_msgs::PoseStamped |
话题名称 | 字段 | 描述 |
---|---|---|
/motion_control/pose_ee_arm_right /motion_control/pose_ee_arm_left /motion_control/pose_floating_base |
position | 平移信息 |
pose.position.x | X 轴偏移 | |
pose.position.y | Y 轴偏移 | |
pose.position.z | Z 轴偏移 | |
orientation | 旋转信息 | |
pose.orientation.x | 旋转四元数 | |
pose.orientation.y | 旋转四元数 | |
pose.orientation.z | 旋转四元数 | |
pose.orientation.w | 旋转四元数 |
R1手臂姿态控制 - 即将推出
R1臂部姿态控制是一个用于控制手臂移动到目标末端执行器(ee)坐标帧的ROS软件包。它可以通过以下命令启动:
该接口如下所示。
话题名称 | 描述 | 消息类型 |
---|---|---|
/motion_target/pose_ee_arm_left/motion_target/pose_ee_arm_right | 目标手臂末端执行器姿态 | Geometry_msgs::PoseStamped |
/motion_target/target_joint_state_arm_left/motion_target/target_joint_state_arm_right | 目标手臂各关节位置 | Sensor_msgs::JointState |
/hdas/feedback_arm_left/hdas/feedback_arm_right | 手臂关节反馈 | Sensor_msgs::JointState |
话题名称 | 字段 | 描述 |
---|---|---|
/motion_target/pose_ee_arm_left/motion_target/pose_ee_arm_right | header | 标准消息头 |
pose.position.x | X轴偏移 | |
pose.position.y | Y轴偏移 | |
pose.position.z | Z轴偏移 | |
pose.orientation.x | 旋转四元数 | |
pose.orientation.y | 旋转四元数 | |
pose.orientation.z | 旋转四元数 | |
pose.orientation.w | 旋转四元数 | |
/motion_target/target_joint_state_arm_left/motion_target/target_joint_state_arm_right | - | 请参考R1关节控制 |
/hdas/feedback_arm_left/hdas/feedback_arm_right | - | 请参考手臂驱动接口 |
R1躯干姿态控制 - 即将推出
R1躯干姿态控制是一个用于控制躯干移动到目标浮动基座坐标帧的ROS软件包。它可以通过以下命令启动:
这个姿态受到某些约束,如下所述。
话题名称 | 描述 | 消息类型 |
---|---|---|
/motion_target/target_pose_torso | 目标浮动基座姿态 | Geometry_msgs::PoseStamped |
/motion_target/target_joint_state_torso | 目标躯干各关节位置 | Sensor_msgs::JointState |
/hdas/feedback_torso | 躯干关节反馈 | Sensor_msgs::JointState |
话题名称 | 字段 | 描述 |
---|---|---|
/motion_target/target_pose_torso | header | Standard Header |
pose.position.x | X轴偏移 范围 (0,0.25) | |
pose.position.z | Z轴偏移 范围 (0,1) | |
pose.orientation | 俯仰角的约束满足 sin(pitch) 在 (-x/0.32, (0.25-x)/0.32) 范围内。偏航角的约束满足 ±3.05. 范围内。 | |
pose.orientation.x | 旋转四元数 | |
pose.orientation.y | 旋转四元数 | |
pose.orientation.z | 旋转四元数 | |
pose.orientation.w | 旋转四元数 | |
/motion_target/target_joint_state_torso | - | 请参考R1关节控制 |
/hdas/feedback_torso | - | 请参考躯干驱动接口 |