控制模块
能力概览
-
底盘控制接口:支持底盘控制模式切换、全局位置移动、相对位置移动和前后速度控制,并提供虚拟零点设置、位姿、里程计及实时运动状态反馈。
-
头部控制接口:支持头部俯仰和偏航姿态控制、姿态复位,并提供头部姿态、关节状态和电机状态反馈。
-
机械臂控制接口:支持双臂控制模式配置、左右机械臂关节位置控制和末端位姿控制,并提供关节状态及末端位姿反馈。
-
主臂控制接口:在机器人已配置主臂硬件及相关服务的情况下,支持左右主臂控制模式配置、关节位置和末端位姿控制,并提供关节状态、末端位姿及扳机输入反馈。
-
夹爪控制接口:支持左右夹爪开合位置控制,并提供夹爪位置和关节状态反馈。
-
腰部升降控制接口:支持腰部升降位置控制,并提供升降位置和关节状态反馈。
机器人控制接口
set_manipulator_control_mode 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_manipulator_control_mode() |
| 函数原型 | def set_manipulator_control_mode(manipulator_control_mode_param: ManipulatorControlModeParam, timeout) -> ExecutionResult |
| 功能概述 | 设置机器人手臂控制模式 |
| 参数 | ManipulatorControlModeParam.mode:手臂控制模式MANIPULATOR_END_POSE:末端位姿控制模式;设置 SDK 模式时默认为该模式MANIPULATOR_JOINT_POSITIONS:关节角度控制模式 |
| 返回值 | ExecutionResult |
| 备注 | 当前不支持单独设置左臂或右臂的控制模式,需要通过 robot_control 调用。不能在运行过程中切换控制模式,否则会对电机造成冲击 |
示例:
robot.system.set_work_mode(
RobotModeParam(mode=RobotWorkMode.SDK)
)
robot.robot_control.set_manipulator_control_mode(
ManipulatorControlModeParam(
mode=ManipulatorControlMode.MANIPULATOR_END_POSE
)
)get_manipulator_control_mode 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_manipulator_control_mode() |
| 函数原型 | def get_manipulator_control_mode(timeout) -> ManipulatorControlModeParam |
| 功能概述 | 获取手臂控制模式 |
| 参数 | 无 |
| 返回值 | ManipulatorControlModeParam |
| 备注 | 无 |
示例:
mode = robot.robot_control.get_manipulator_control_mode()
print(mode)emergency_stop 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | emergency_stop() |
| 函数原型 | 无 |
| 功能概述 | 紧急停止机器人运动 |
| 参数 | 无 |
| 返回值 | ExecutionResult |
| 备注 |
示例:
result = robot.robot_control.emergency_stop()
print(result.is_success)recover_emergency_stop 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | recover_emergency_stop() |
| 函数原型 | 无 |
| 功能概述 | 从紧急停止状态恢复 |
| 参数 | 无 |
| 返回值 | ExecutionResult |
| 备注 |
示例:
# 恢复
result = robot.robot_control.recover_emergency_stop()
print(result.is_success)homing 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | homing() |
| 函数原型 | 无 |
| 功能概述 | 关节回零 |
| 参数 | 无 |
| 返回值 | ExecutionResult |
| 备注 |
示例:
# 回零
result = robot.robot_control.homing()
print(result.is_success)底盘控制接口
注意:请在一个相对空旷的场景下控制底盘,否则容易发生撞击。
set_control_mode 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_control_mode() |
| 函数原型 | def set_control_mode(manipulator_control_mode_param: ChassisControlModeParam, timeout) -> ExecutionResult |
| 功能概述 | 设置底盘控制模式 |
| 参数 | ChassisControlModeParam.mode: ChassisControlMode - 控制模式 |
| 返回值 | ExecutionResult |
| 备注 | 控制模式:GLOBAL:全局绝对位置控制(相对于地图坐标系)RELATIVE:相对位置控制(相对于虚拟零点,推荐)VELOCITY:直接速度控制 |
示例(参考 examples 里的 chassis_control.py):
# 设置为相对位置控制模式
robot.chassis.set_control_mode(
ChassisControlModeParam(mode=ChassisControlMode.RELATIVE)
)
robot.chassis.move_to_relative_position(
ChassisPosition(x=0.25, y=0.0, yaw=0.0)
)
# 设置绝对位置控制模式
robot.chassis.set_control_mode(
ChassisControlModeParam(mode=ChassisControlMode.GLOBAL)
)
robot.chassis.move_to_global_position(
ChassisPosition(
x=current_position.x + 0.25,
y=current_position.y,
yaw=current_position.yaw,
)
)get_control_mode 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_control_mode() |
| 函数原型 | def get_control_mode(timeout) -> ChassisControlModeParam |
| 功能概述 | 获取当前底盘控制模式 |
| 参数 | 无 |
| 返回值 | ChassisControlModeParam |
| 备注 |
示例:
mode = robot.chassis.get_control_mode()move_to_global_position 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | move_to_global_position() |
| 函数原型 | def move_to_global_position(chassis_position: ChassisPosition, timeout) -> ExecutionResult |
| 功能概述 | 移动到全局位置(需先设置为 GLOBAL 模式) |
| 参数 | position: ChassisPosition - 目标位置 (x, y, yaw) |
| 返回值 | ExecutionResult |
| 备注 | 该接口使用机器人内置导航模式,第一次调用时需要先建图和保存地图。 |
示例:
position = ChassisPosition(x=1.0, y=0.5, yaw=0.0)
result = robot.chassis.move_to_global_position(position)move_to_relative_position 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | move_to_relative_position() |
| 函数原型 | def move_to_relative_position(chassis_position: ChassisPosition, timeout) -> ExecutionResult |
| 功能概述 | 移动到相对位置(需先设置为 RELATIVE 模式并设置虚拟零点) |
| 参数 | position: ChassisPosition - 目标位置 (x, y, yaw) |
| 返回值 | ExecutionResult |
| 备注 | 该接口使用机器人内置导航模式,第一次调用时需要先建图和保存地图。 |
示例:
current_position = robot.chassis.get_global_position()
print(
f"全局位置: x={current_position.x}, "
f"y={current_position.y}, yaw={current_position.yaw}"
)
robot.chassis.set_virtual_zero_point(current_position)
robot.chassis.set_control_mode(
ChassisControlModeParam(mode=ChassisControlMode.RELATIVE)
)
robot.chassis.move_to_relative_position(
ChassisPosition(x=0.25, y=0.0, yaw=0.0)
)set_velocity 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_velocity() |
| 函数原型 | def set_velocity(chassis_velocity: ChassisVelocity, timeout) -> ExecutionResult |
| 功能概述 | 设置速度控制(需先设置为 VELOCITY 模式)。量子1号底盘只支持 x 方向,即前进或后退的线速度控制。 |
| 参数 | velocity: ChassisVelocity - 速度 (vel_x, vel_y, vel_yaw),单位为 m/s、rad/s |
| 返回值 | ExecutionResult |
| 备注 | 参数限制范围:[-2.0, 2.0]出于安全考虑,底盘速度控制命令的发送频率需要大于 10 Hz,机器人才会响应,用户需自主控制发送频率。机器人处于充电状态时,无法通过该接口控制底盘移动。 |
示例:
# 设置速度:x 方向 0.25 m/s,持续 2 秒
for i in range(40):
cur_velocity = ChassisVelocity(
vel_x=0.25,
vel_y=0.0,
vel_yaw=0.0,
)
robot.chassis.set_velocity(cur_velocity)
time.sleep(0.05)
time.sleep(0.5)set_virtual_zero_point 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_virtual_zero_point() |
| 函数原型 | def set_virtual_zero_point(chassis_position: ChassisPosition, timeout) -> ExecutionResult |
| 功能概述 | 设置虚拟零点,即相对运动的原点 |
| 参数 | position: ChassisPosition - 目标位置 (x, y, yaw) |
| 返回值 | ExecutionResult |
| 备注 | 无 |
示例:
current_position = robot.chassis.get_global_position()
print(
f"全局位置: x={current_position.x}, "
f"y={current_position.y}, yaw={current_position.yaw}"
)
robot.chassis.set_virtual_zero_point(current_position)get_virtual_zero_point 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_virtual_zero_point() |
| 函数原型 | def get_virtual_zero_point(timeout) -> ChassisPosition |
| 功能概述 | 获取虚拟零点 |
| 参数 | 无 |
| 返回值 | ChassisPosition |
| 备注 | 无 |
示例:
position = robot.chassis.get_virtual_zero_point()get_global_position 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_global_position() |
| 函数原型 | def get_global_position(timeout) -> ChassisPosition |
| 功能概述 | 获取全局位置 |
| 参数 | 无 |
| 返回值 | ChassisPosition |
| 备注 | 调用前需要先开启定位 |
示例:
current_position = robot.chassis.get_global_position()
print(
f"全局位置: x={current_position.x}, "
f"y={current_position.y}, yaw={current_position.yaw}"
)get_relative_position 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_relative_position() |
| 函数原型 | def get_relative_position(timeout) -> ChassisPosition |
| 功能概述 | 获取相对位置 |
| 参数 | 无 |
| 返回值 | ChassisPosition |
| 备注 |
示例(按接口名称整理):
current_position = robot.chassis.get_relative_position()
print(
f"相对位置: x={current_position.x}, "
f"y={current_position.y}, yaw={current_position.yaw}"
)get_odometry 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_odometry() |
| 函数原型 | def get_odometry(timeout) -> nav_msgs_.Odometry |
| 功能概述 | 获取里程计 |
| 参数 | 无 |
| 返回值 | Odometry |
| 备注 | 无 |
示例:
current_odometry = robot.chassis.get_odometry()
print(current_odometry)get_odometry_stream 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_odometry_stream() |
| 函数原型 | def get_odometry_stream(timeout) -> Iterator[nav_msgs_.Odometry] |
| 功能概述 | 获取里程计数据流 |
| 参数 | 无 |
| 返回值 | Odometry 迭代器 |
| 备注 | 无 |
示例:
stream = robot.chassis.get_odometry_stream()
for msg in stream:
print(msg)get_pose_stream 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_pose_stream() |
| 函数原型 | def get_pose_stream(timeout) -> Iterator[geometry_msgs_.PoseStamped] |
| 功能概述 | 获取位姿数据流 |
| 参数 | 无 |
| 返回值 | PoseStamped 迭代器 |
| 备注 | 无 |
示例:
stream = robot.chassis.get_pose_stream()
for msg in stream:
print(msg)头部控制接口
set_pose 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_pose() |
| 函数原型 | def set_pose(head_pose: HeadPose, timeout) -> ExecutionResult |
| 功能概述 | 设置头部姿态 |
| 参数 | pose: HeadPose - 头部姿态(pitch、yaw) |
| 返回值 | ExecutionResult |
| 备注 | 参数限制范围:pitch:[-0.06, 0.9]yaw:[-1.20, 1.20] |
示例:
robot.head.set_pose(HeadPose(yaw=0.0, pitch=0.0))get_pose 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_pose() |
| 函数原型 | def get_pose(timeout) -> HeadPose |
| 功能概述 | 获取头部姿态 |
| 参数 | 无 |
| 返回值 | HeadPose |
| 备注 | 无 |
示例:
head_state = robot.head.get_pose()
print(head_state)reset 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | reset() |
| 函数原型 | def reset(timeout) -> ExecutionResult |
| 功能概述 | 重置头部状态,使 pitch=0.0、yaw=0.0 |
| 参数 | 无 |
| 返回值 | ExecutionResult |
| 备注 | 无 |
示例:
robot.head.reset()get_joint_states_stream 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_joint_states_stream() |
| 函数原型 | def get_joint_states_stream(timeout) -> Iterator[sensor_msgs_.JointState] |
| 功能概述 | 获取头部关节状态数据流 |
| 参数 | 无 |
| 返回值 | JointState 迭代器 |
| 备注 | 无 |
示例:
stream = robot.head.get_joint_states_stream()
for msg in stream:
print(msg)机械臂控制接口
set_joint_positions 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_joint_positions() |
| 函数原型 | def set_joint_positions(joint_positions: JointPositions, timeout) -> ExecutionResult |
| 功能概述 | 控制机械臂关节角度,需先设置为 SDK 工作模式和 MANIPULATOR_JOINT_POSITIONS 控制模式 |
| 参数 | positions: JointPositions - 6 个关节角度,单位为弧度 |
| 返回值 | ExecutionResult |
| 备注 | 参数范围限制:关节顺序从肩膀到手腕。以左臂为例:left_arm_joint1:[-2.792, 2.792]left_arm_joint2:[0.0, 3.44]left_arm_joint3:[-3.14, 0.0]left_arm_joint4:[-1.57, 1.57]left_arm_joint5:[-1.4, 1.4]left_arm_joint6:[-1.745, 1.745]如果目标角度和当前角度差距过大,可能会引起较大抖动,建议基于当前位置逐步累加至目标位置。 |
示例:
robot.system.set_work_mode(
RobotModeParam(mode=RobotWorkMode.SDK)
)
robot.robot_control.set_manipulator_control_mode(
ManipulatorControlModeParam(
mode=ManipulatorControlMode.MANIPULATOR_JOINT_POSITIONS
)
)
joint_state = robot.right_arm.get_joint_states()
target_positions = list(joint_state.position)
target_positions[5] += 0.01
result = robot.right_arm.set_joint_positions(
JointPositions(positions=target_positions)
)
print(result)set_end_pose 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_end_pose() |
| 函数原型 | def set_end_pose(pose: geometry_msgs_.Pose, timeout) -> ExecutionResult |
| 功能概述 | 控制机械臂末端执行器位姿,需先设置为 SDK 工作模式和 MANIPULATOR_END_POSE 控制模式 |
| 参数 | pose: Pose - 目标位姿,包括位置和姿态 |
| 返回值 | ExecutionResult |
| 备注 | 参数范围限制:position.x:[-5.0, 5.0]position.y:[-5.0, 5.0]position.z:[-5.0, 5.0]orientation.x:[-1, 1]orientation.y:[-1, 1]orientation.z:[-1, 1]orientation.w:[-1, 1]如果目标位姿和当前位姿差距过大,可能会引起较大抖动,建议基于当前位姿逐步累加至目标位置。 |
示例:
robot.system.set_work_mode(
RobotModeParam(mode=RobotWorkMode.SDK)
)
robot.robot_control.set_manipulator_control_mode(
ManipulatorControlModeParam(
mode=ManipulatorControlMode.MANIPULATOR_END_POSE
)
)
pose = Pose()
pose.position = Point(x=0.0, y=0.0, z=0.0)
pose.orientation = Quaternion(x=0.0, y=0.0, z=0.0, w=1.0)
pose.position.z += 0.03
robot.right_arm.set_end_pose(pose)
time.sleep(0.2)get_joint_states 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_joint_states() |
| 函数原型 | def get_joint_states(timeout) -> sensor_msgs_.JointState |
| 功能概述 | 获取机械臂关节状态信息 |
| 参数 | 无 |
| 返回值 | JointState |
| 备注 | 无 |
示例:
joint_state = robot.left_arm.get_joint_states()
print(f"关节名称: {joint_state.name}")
print(f"关节位置: {joint_state.position}")
print(f"关节速度: {joint_state.velocity}")
print(f"关节力矩: {joint_state.effort}")get_end_pose 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_end_pose() |
| 函数原型 | def get_end_pose(timeout) -> geometry_msgs_.PoseStamped |
| 功能概述 | 获取机械臂末端位姿 |
| 参数 | 无 |
| 返回值 | PoseStamped |
| 备注 | 原示例最后一行缺少右括号,已在下方示例中补齐。 |
示例:
cur_pose = robot.left_arm.get_end_pose()
print(f"current_position: {cur_pose}")get_joint_states_stream 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_joint_states_stream() |
| 函数原型 | def get_joint_states_stream(timeout) -> Iterator[sensor_msgs_.JointState] |
| 功能概述 | 获取机械臂关节状态流 |
| 参数 | 无 |
| 返回值 | JointState 迭代器 |
| 备注 | 无 |
示例:
stream = robot.left_arm.get_joint_states_stream()
for msg in stream:
print(msg)get_end_pose_stream 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_end_pose_stream() |
| 函数原型 | def get_end_pose_stream(timeout) -> Iterator[geometry_msgs_.PoseStamped] |
| 功能概述 | 获取机械臂末端位姿流 |
| 参数 | 无 |
| 返回值 | PoseStamped 迭代器 |
| 备注 | 无 |
示例:
stream = robot.left_arm.get_end_pose_stream()
for msg in stream:
print(msg)主臂控制接口
重点提示:主臂接口用于读取和控制主臂侧设备。SDK 客户端入口为 robot.master_left_arm 和 robot.master_right_arm,不要和从臂执行器 robot.left_arm、robot.right_arm 混用。量子 1 号是否可以使用主臂写控制,取决于机器人端是否部署主臂硬件、主臂服务和对应控制模式配置。若机器人端只支持主臂读取或未配置写控制 topic,调用写接口会返回错误。主臂控制模式由左右主臂对象各自提供的 set_control_mode() 接口设置,参数复用 ManipulatorControlModeParam,不通过 robot.robot_control.set_manipulator_control_mode() 设置。
set_control_mode 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_control_mode() |
| 函数原型 | def set_control_mode(manipulator_control_mode_param: ManipulatorControlModeParam, timeout) -> ExecutionResult |
| 功能概述 | 设置主臂控制模式,用于切换后续主臂写控制命令的解释方式 |
| 参数 | mode: ManipulatorControlModeParam - 主臂控制模式 |
| 返回值 | ExecutionResult |
| 备注 | 控制模式:MANIPULATOR_END_POSE:主臂末端位姿控制模式,后续 set_end_pose() 按主臂末端目标位姿解释MANIPULATOR_JOINT_POSITIONS:主臂关节角度控制模式,后续 set_joint_positions() 按 6 个主臂关节目标角度解释MANIPULATOR_GRAVITY_COMPENSATION:主臂重力补偿模式,可用于自主接管不要在主臂运动过程中频繁切换控制模式。左右主臂服务均提供该接口,建议在执行写控制前先确认当前模式。 |
示例:
from x2robot.sdk import (
ManipulatorControlMode,
ManipulatorControlModeParam,
)
robot.master_left_arm.set_control_mode(
ManipulatorControlModeParam(
mode=ManipulatorControlMode.MANIPULATOR_END_POSE
)
)get_control_mode 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_control_mode() |
| 函数原型 | def get_control_mode(timeout) -> ManipulatorControlModeParam |
| 功能概述 | 获取当前主臂控制模式 |
| 参数 | 无 |
| 返回值 | ManipulatorControlModeParam |
| 备注 | 如果当前机器人端控制链路不在主臂关节控制或主臂末端控制模式下,接口可能返回错误。执行主臂写控制前,建议先调用 set_control_mode() 切换到对应模式。 |
示例:
mode = robot.master_left_arm.get_control_mode()
print(mode)set_joint_positions 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_joint_positions() |
| 函数原型 | def set_joint_positions(joint_positions: JointPositions, timeout) -> ExecutionResult |
| 功能概述 | 设置主臂各关节的目标位置,需先通过主臂 set_control_mode() 设置为 MANIPULATOR_JOINT_POSITIONS 模式 |
| 参数 | positions: JointPositions - 6 个主臂关节角度,单位为弧度。 主臂关节顺序为 master_left_arm_joint1~master_left_arm_joint6 或 master_right_arm_joint1~master_right_arm_joint6。joint1:[-2.7925, 2.7925]joint2:[0.0, 3.6652]joint3:[-2.7925, 0.0]joint4:[-1.5708, 1.5708]joint5:[-1.5708, 1.5708]joint6:[-1.9199, 1.9199] |
| 返回值 | ExecutionResult |
| 备注 | SDK 会检查关节数量、数值是否有限以及是否在关节范围内。result.is_success=True 表示 SDK Server 已接受该命令并发布到机器人端控制链路,不表示动作已经完成或已经到达目标位置。 |
示例:
from x2robot.sdk import (
JointPositions,
ManipulatorControlMode,
ManipulatorControlModeParam,
)
master_arm = robot.master_left_arm
master_arm.set_control_mode(
ManipulatorControlModeParam(
mode=ManipulatorControlMode.MANIPULATOR_JOINT_POSITIONS
)
)
joint_state = master_arm.get_joint_states()
target = list(joint_state.position)
target[0] += 0.01
result = master_arm.set_joint_positions(
JointPositions(positions=target)
)
print(result.is_success, result.error_message)set_end_pose 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_end_pose() |
| 函数原型 | def set_end_pose(pose: geometry_msgs_.Pose, timeout) -> ExecutionResult |
| 功能概述 | 设置主臂末端目标位姿,需先通过主臂 set_control_mode() 设置为 MANIPULATOR_END_POSE 模式 |
| 参数 | pose: Pose - 主臂末端目标位姿 |
| 返回值 | ExecutionResult |
| 备注 | set_end_pose() 发送主臂末端绝对位姿命令,位姿解释遵循控制器内部的主臂绝对位姿约定。SDK 会检查位置和四元数是否为有效数值,并检查四元数模长是否接近 1。result.is_success=True 只表示命令已被 SDK Server 接受并发布,不表示 IK 成功、控制器到位或动作完成。 |
示例:
from x2robot.geometry_msgs import Pose, Point, Quaternion
from x2robot.sdk import (
ManipulatorControlMode,
ManipulatorControlModeParam,
)
master_arm = robot.master_left_arm
master_arm.set_control_mode(
ManipulatorControlModeParam(
mode=ManipulatorControlMode.MANIPULATOR_END_POSE
)
)
current = master_arm.get_end_pose()
pose = Pose()
pose.position = Point(
x=current.pose.position.x,
y=current.pose.position.y,
z=current.pose.position.z + 0.002,
)
pose.orientation = Quaternion(
x=current.pose.orientation.x,
y=current.pose.orientation.y,
z=current.pose.orientation.z,
w=current.pose.orientation.w,
)
result = master_arm.set_end_pose(pose)
print(result.is_success, result.error_message)get_joint_states 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_joint_states() |
| 函数原型 | def get_joint_states(timeout) -> sensor_msgs_.JointState |
| 功能概述 | 获取主臂关节状态信息 |
| 参数 | 无 |
| 返回值 | JointState |
| 备注 | 无 |
示例:
joint_state = robot.master_left_arm.get_joint_states()
print(f"关节名称: {joint_state.name}")
print(f"关节位置: {joint_state.position}")
print(f"关节速度: {joint_state.velocity}")
print(f"关节力矩: {joint_state.effort}")get_end_pose 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_end_pose() |
| 函数原型 | def get_end_pose(timeout) -> geometry_msgs_.PoseStamped |
| 功能概述 | 获取主臂末端位姿 |
| 参数 | 无 |
| 返回值 | PoseStamped |
| 备注 | 无 |
示例:
cur_pose = robot.master_left_arm.get_end_pose()
print(f"current_position: {cur_pose}")get_gripper_position 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_gripper_position() |
| 函数原型 | def get_gripper_position(timeout) -> GripperPosition |
| 功能概述 | 获取主臂扳机输入值。主臂侧该值表示抓取输入量,不表示从臂夹爪的实际物理位置。 |
| 参数 | 无 |
| 返回值 | GripperPosition |
| 备注 | 主臂扳机输入值通常为 [0, 1]。当前主臂扳机只支持读取,不支持通过 SDK 设置主臂扳机位置。 |
示例:
trigger = robot.master_left_arm.get_gripper_position()
print(trigger.position)get_joint_states_stream 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_joint_states_stream() |
| 函数原型 | def get_joint_states_stream(timeout) -> Iterator[sensor_msgs_.JointState] |
| 功能概述 | 获取主臂关节状态流 |
| 参数 | 无 |
| 返回值 | JointState 迭代器 |
| 备注 | 无 |
示例:
stream = robot.master_left_arm.get_joint_states_stream()
for msg in stream:
print(msg)get_end_pose_stream 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_end_pose_stream() |
| 函数原型 | def get_end_pose_stream(timeout) -> Iterator[geometry_msgs_.PoseStamped] |
| 功能概述 | 获取主臂末端位姿流 |
| 参数 | 无 |
| 返回值 | PoseStamped 迭代器 |
| 备注 | 无 |
示例:
stream = robot.master_left_arm.get_end_pose_stream()
for msg in stream:
print(msg)get_gripper_state_stream 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_gripper_state_stream() |
| 函数原型 | def get_gripper_state_stream(timeout) -> Iterator[GripperPosition] |
| 功能概述 | 获取主臂扳机输入流 |
| 参数 | 无 |
| 返回值 | GripperPosition 迭代器 |
| 备注 | 主臂还保留 get_gripper_joint_states_stream() 兼容接口,用于读取主臂夹爪或扳机相关的关节状态流。新开发建议优先使用 get_gripper_state_stream() 获取扳机输入值。 |
示例:
stream = robot.master_left_arm.get_gripper_state_stream()
for msg in stream:
print(msg.position)夹爪控制接口
set_position 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_position() |
| 函数原型 | def set_position(gripper_position: GripperPosition, timeout) -> ExecutionResult |
| 功能概述 | 设置夹爪位置,即电机旋转弧度值,需先设置为 SDK 工作模式 |
| 参数 | position: GripperPosition |
| 返回值 | ExecutionResult |
| 备注 | position 参数范围(单位:rad):H 夹爪 [0.0, 4.5];G 夹爪 [0.0, 1.89]。 |
示例:
robot.system.set_work_mode(
RobotModeParam(mode=RobotWorkMode.SDK)
)
robot.right_gripper.set_position(
GripperPosition(position=0.5)
)
sleep(0.05)
position = robot.right_gripper.get_position()
print(position)get_position 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_position() |
| 函数原型 | def get_position(timeout) -> GripperPosition |
| 功能概述 | 获取夹爪位置 |
| 参数 | 无 |
| 返回值 | GripperPosition |
| 备注 | 无 |
示例:
position = robot.left_gripper.get_position()
print(position)get_joint_states_stream 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_joint_states_stream() |
| 函数原型 | def get_joint_states_stream(timeout) -> Iterator[sensor_msgs_.JointState] |
| 功能概述 | 获取夹爪关节状态流 |
| 参数 | 无 |
| 返回值 | JointState |
| 备注 | 无 |
示例:
stream = robot.left_gripper.get_joint_states_stream()
for msg in stream:
print(msg)腰部控制接口
set_lift_position 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | set_lift_position() |
| 函数原型 | def set_lift_position(lift_position: LiftPosition, timeout) -> ExecutionResult |
| 功能概述 | 设置腰部升降位置,需先设置为 SDK 工作模式 |
| 参数 | position: LiftPosition |
| 返回值 | ExecutionResult |
| 备注 | position 参数范围:[0.0, 0.78] |
示例:
cur_position = robot.lift.get_lift_position()
print(f"current_position: {cur_position}")
lift_position = LiftPosition(
position=cur_position.position + 0.2
)
robot.lift.set_lift_position(lift_position)get_lift_position 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_lift_position() |
| 函数原型 | def get_lift_position(timeout) -> LiftPosition |
| 功能概述 | 获取腰部升降位置 |
| 参数 | 无 |
| 返回值 | LiftPosition |
| 备注 | 无 |
示例:
position = robot.lift.get_lift_position()get_joint_states_stream 接口介绍
| 字段 | 内容 |
|---|---|
| 函数名 | get_joint_states_stream() |
| 函数原型 | def get_joint_states_stream(timeout) -> Iterator[sensor_msgs_.JointState] |
| 功能概述 | 获取腰部关节状态流 |
| 参数 | 无 |
| 返回值 | JointState |
| 备注 | 无 |
示例:
stream = robot.lift.get_joint_states_stream()
for msg in stream:
print(msg)