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 ⚠️ 重要提醒#
- 连接稳定性:确保 IP 地址正确且网络连接稳定
- 参数范围:注意各关节的角度限制范围
- 异常处理:建议添加适当的异常处理机制
- 资源释放:使用完毕后及时释放资源