8. 跳转至

8. MMK2机器人SDK API文档#

8.1 初始化接口#

功能 接口 参数说明 返回值
连接机器人 MMK2Robot.__init__(ip) ip: 下位机的有线或无线IP地址 -

8.2 数据获取接口#

功能 接口 参数说明 返回值
获取当前关节数据 get_joint_states() -> JointStates - 包含位置、速度、力矩的关节状态对象
获取当前末端执行器位姿 get_arm_pose(arm: str) -> Tuple[List[float], List[float]] arm: 机械臂类型 ('left' 或 'right') (位置, 四元数) 元组,位置单位:米
获取底盘姿态数据 get_base_pose() -> List[float] - [x, y, theta] 列表,单位:米和弧度

8.3 相机数据获取接口#

功能 接口 参数说明 返回值
使能相机并配置相机参数 camera.set_camera_config(config: Dict[str, Any]) -> None config: YAML格式的相机配置字典 -
获取头部相机数据 camera.get_head_camera_frame() -> Dict[str, np.ndarray] - 包含 'rgb', 'depth' 的字典
获取左臂相机数据 camera.get_left_camera_frame() -> Dict[str, np.ndarray] - 包含 'rgb', 'depth' 的字典
获取右臂相机数据 camera.get_right_camera_frame() -> Dict[str, np.ndarray] - 包含 'rgb', 'depth' 的字典

8.4 机械臂控制接口#

功能 接口 参数说明 返回值
双臂关节角度控制 move_arm_joints(arm: str, joints: List[float], block: bool = True) -> bool arm: 'left'/'right'/'all'
joints: 关节角度列表
block: 是否阻塞等待完成
是否成功到达目标位置
双臂关节轨迹控制 move_arm_joint_waypoints(arm: str, waypoints: List[float], block: bool = True) -> bool arm: 'left'/'right'/'all'
waypoints: 关节轨迹点列表
block: 是否阻塞等待完成
是否成功到达目标位置
双臂末端绝对位姿控制 move_arm_pose(arm: str, pose: List[float], block: bool = True) -> bool arm: 'left'/'right'/'all'
pose: 位姿列表
block: 是否阻塞等待完成
是否成功到达目标位姿
双臂末端位姿轨迹控制 move_arm_pose_waypoints(arm: str, waypoints: List[float], block: bool = True) -> bool arm: 'left'/'right'/'all'
waypoints: 位姿轨迹点列表
block: 是否阻塞等待完成
是否成功到达目标位姿
双臂末端相对位姿控制 move_arm_relative(arm: str, delta_pose: List[float], block: bool = True) -> bool arm: 'left'/'right'
delta_pose: 相对位姿变化
block: 是否阻塞等待完成
是否成功完成相对运动
控制末端夹爪开合 control_gripper(arm: str, position: float, block: bool = True) -> bool arm: 'left'/'right'/'all'
position: 夹爪开度(0.0-1.0)
block: 是否阻塞等待完成
是否成功设置夹爪位置

8.5 头部控制接口#

功能 接口 参数说明 返回值
头部关节角度控制 set_head(yaw: float, pitch: float, block: bool = True) -> bool yaw: 偏航角(-0.47到0.47弧度)
pitch: 俯仰角(-0.98到0.32弧度)
block: 是否阻塞等待完成
是否成功设置

8.6 脊柱控制接口#

功能 接口 参数说明 返回值
设置脊柱高度 set_spine(position: float, block: bool = True) -> bool position: 目标高度(向上0.04m,向下0.87m)
block: 是否阻塞等待完成
是否成功设置

8.7 底盘控制接口#

功能 接口 参数说明 返回值
位姿控制 move_base(x: float, y: float, theta: float, block: bool = True) -> bool x: 目标X坐标(米)
y: 目标Y坐标(米)
theta: 目标角度(弧度)
block: 是否阻塞等待完成
是否成功到达目标位置
前向移动 move_forward(distance: float, block: bool = True) -> bool distance: 前进距离(米)
block: 是否阻塞等待完成
是否成功完成移动
后向移动 move_backward(distance: float, block: bool = True) -> bool distance: 后退距离(米)
block: 是否阻塞等待完成
是否成功完成移动
左转 turn_left(angle: float, block: bool = True) -> bool angle: 转动角度(弧度)
block: 是否阻塞等待完成
是否成功完成转动
右转 turn_right(angle: float, block: bool = True) -> bool angle: 转动角度(弧度)
block: 是否阻塞等待完成
是否成功完成转动
侧向移动 lateral_move(distance: float, block: bool = True) -> bool distance: 侧向移动距离(米)
block: 是否阻塞等待完成
是否成功完成移动
设置初始位置 set_base_zero() -> bool - 是否成功设置零点

8.8 重置功能接口#

功能 接口 参数说明 返回值
重置到起始姿态 reset_to_start(arm_type: str = "all") -> bool arm_type: 重置类型('left'/'right'/'all') 是否成功重置
重置到零点姿态 reset_to_zero(arm_type: str = "all") -> bool arm_type: 重置类型('left'/'right'/'all') 是否成功重置
停止控制 stop_all() -> None - -

8.9 使用示例#

# 初始化连接
robot = MMK2Robot("192.168.1.100")

# 获取关节状态
joint_states = robot.get_joint_states()

# 控制左臂运动
robot.move_arm_joints("left", [0.1, 0.2, 0.3, 0.4, 0.5, 0.6])

# 获取相机数据
camera_data = robot.camera.get_head_camera_frame()

# 控制底盘移动
robot.move_base(1.0, 0.5, 0.0)

9. 📝 注意事项#

9.1 🔧 参数单位说明#

  • 所有角度参数单位均为弧度

    • 关节角度、头部偏航俯仰角、底盘转动角度等
    • 示例:0.5 表示 0.5 弧度
  • 位置参数单位均为米

    • 末端执行器位置、底盘移动距离、脊柱高度等
    • 示例:0.1 表示 0.1 米

9.2 🦾 夹爪控制说明#

  • 夹爪开度范围为 0.0 到 1.0
    • 0.0:完全打开
    • 1.0:完全关闭
    • 示例:0.5 表示半开状态

9.3 ⏱️ 执行模式说明#

  • 阻塞模式 (block=True)

    • 等待动作执行完成后再返回
    • 适合需要确保动作完成的场景
  • 非阻塞模式 (block=False)

    • 立即返回,不等待动作完成
    • 适合需要并行执行多个任务的场景

9.4 ⚠️ 重要提醒#

  1. 连接稳定性:确保 IP 地址正确且网络连接稳定
  2. 参数范围:注意各关节的角度限制范围
  3. 异常处理:建议添加适当的异常处理机制
  4. 资源释放:使用完毕后及时释放资源