灵动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
组。
- 在 Linux 上,尝试使用
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()
)。 -
交互式用户输入处理。
-
在程序结束前将夹爪复位到打开状态。
-