跳到主要内容

灵动Python SDK使用说明

1. 介绍

灵动Python SDK (https://github.com/Xuanya-Robotics/Alicia-D-SDK)是一个用于控制六轴机械臂(带夹爪)的 Python 工具包。它提供了通过串口与机械臂通信、控制关节运动、操作夹爪以及读取状态信息的功能。

1.1 主要特性

  • 关节控制: 设置和读取六个关节的角度。

  • 夹爪控制: 控制夹爪的开合角度。

  • 力矩控制: 启用或禁用机械臂关节力矩,允许自由拖动或锁定位置。

  • 零点设置: 将机械臂当前位置设置为新的零点。

  • 状态读取: 获取关节角度、夹爪角度和按钮状态的实时数据。

  • 串口通信: 自动查找或指定串口进行连接。

  • 数据解析: 解析来自机械臂的反馈数据帧。

2. 安装

克隆灵动Python SDK库:

git clone https://github.com/Xuanya-Robotics/Alicia-D-SDK.git
cd Alicia-D-SDK

安装依赖:

pip install pyserial
conda install -c conda-forge python-orocos-kdl
pip install -r requirements.txt

硬件连接:

2.1 验证安装

连接好机械臂后,在终端运行以下代码:

cd examples
python3 read_angles.py

若成功安装及配置,在终端可看到持续输出的机械臂关节角度、夹爪角度和按钮状态。按 Ctrl+C 退出程序。

2.2 故障排除

无法连接到机械臂 / 未找到可用串口时,请参考如下内容:
  • 检查 USB 线是否牢固连接。

  • 确保机械臂已上电。

  • 确认您的用户有权限访问串口设备 (在 Linux 上,可能需要将用户添加到 dialout 组,例如 sudo usermod -a -G dialout $USER,然后重新登录)。

  • 如果 SDK 无法自动找到端口,您可以在初始化 ArmController 时手动指定端口,例如:

# filepath: examples/your_script.py
# ...existing code...
# controller = ArmController() # 自动搜索
controller = ArmController(port="/dev/ttyUSB0") # Linux 示例
# controller = ArmController(port="COM3") # Windows 示例
# ...existing code...
  • 权限错误 (Permission denied):

    • 在 Linux 上,尝试使用 sudo python3 your_script.py 运行,或者参照上述方法将用户添加到 dialout 组。

3. 示例代码说明

examples 目录包含了一些演示如何使用 Alicia Duo SDK 与机械臂交互的 Python 脚本。

3.1 read_angles.py

此示例连接到机械臂并持续读取和显示所有六个关节的角度(单位:度)、夹爪的开合角度(单位:度)以及夹爪上两个按钮的状态。同时,包含如何启用调试模式以获取更详细的日志输出。

  • 主要功能:

    • 初始化 ArmController (可带 debug_mode=True)。

    • 连接到机械臂 (controller.connect())。

    • 循环读取完整的关节状态 (controller.read_joint_state())。

    • JointState 对象中提取角度和按钮信息。

    • 将弧度转换为度 (controller.RAD_TO_DEG)。

    • 优雅地处理 KeyboardInterrupt (Ctrl+C) 以断开连接。

    • 断开与机械臂的连接 (controller.disconnect())。

3.2 arm_movement.py

演示如何控制机械臂进行多种类型的运动,包括将所有关节移动到零位、逐个关节测试、模拟波浪运动、力矩控制(启用/禁用)、设置当前位置为零点,以及一个完整的模拟抓取和放置过程。

  • 主要功能:

    • 读取初始关节状态。

    • 设置所有关节到指定角度 (controller.set_joint_angles())。

    • 角度单位转换 (controller.DEG_TO_RAD, controller.RAD_TO_DEG)。

    • 禁用和启用关节力矩 (controller.disable_torque(), controller.enable_torque())。

    • 设置当前位置为零点 (controller.set_zero_position())。

    • 控制夹爪开合 (controller.set_gripper())。

    • 使用 time.sleep() 在动作之间添加延迟。

3.3 gripper_control.py

  • 文件: examples/gripper_control.py

  • 描述: 此示例专注于控制机械臂的夹爪。它演示了如何将夹爪设置到完全打开、半闭合和完全闭合的位置,并读取夹爪的实际角度和按钮状态。此外,它还提供了一个交互模式,允许用户通过键盘输入来控制夹爪的角度。

  • 主要功能:

    • 设置夹爪角度 (controller.set_gripper())。

    • 读取夹爪数据(角度和按钮状态)(controller.read_gripper_data())。

    • 交互式用户输入处理。

    • 在程序结束前将夹爪复位到打开状态。