灵动示教臂Python SDK使用
1. 介绍
Alicia-D SDK 是一个用于控制【灵动 Alicia-D】系列机械臂的 Python 工具包。对于 灵动示教臂 (Leader Arm),SDK 主要用于读取其关节状态,以实现对操作臂的遥操作控制。
1.1 主要特性
- 状态读取:实时获取关节角、夹爪角与末端姿态。
- 自动串口连接:自动搜索串口或手动指定。
- 零点设置:将当前位置设置为新的零点。
- 智能日志系统:支持日志级别过滤,可控制控制台输出详细程度。
2. 安装与配置
2.1 安装
克隆灵动Python SDK库:
git clone https://github.com/Synria-Robotics/Alicia-D-SDK.git -b v6.0.0
cd Alicia-D-SDK
安装依赖:
pip install -e .
2.2 设置串口权限
在Linux系统上,您需要为USB串口设备配置访问权限。
# 方法1:将用户添加到dialout组(推荐,永久有效)
sudo usermod -a -G dialout $USER
# 注意:需要注销并重新登录以使组权限生效
# 方法2:临时设置串口权限
sudo chmod 666 /dev/ttyUSB*
# 方法3:创建udev规则(永久有效)
echo 'KERNEL=="ttyUSB*", MODE="0666"' | sudo tee /etc/udev/rules.d/99-serial.rules
sudo udevadm control --reload-rules
sudo udevadm trigger
2.3 硬件连接与验证
- 将示教臂通过USB连接至计算机。
- 检查串口是否被系统识别:
ls -l /dev/ttyUSB* - 运行版本读取示例以验证连接:
如果连接成功,终端将显示示教臂的固件版本等信息。
cd examples
python3 00_demo_read_version.py
2.4 故障排除
无法连接到示教臂 / 未找到可用串口?
- 检查硬件:确保USB线已牢固连接且示教臂已上电。
- 检查权限:确认您的用户有权限访问串口设备。
- 手动指定端口:如果SDK无法自动找到端口,您可以在启动程序时手动指定:
python3 00_demo_read_version.py --port /dev/ttyUSB0 - 波特率问题:
- 固件版本
v5.4.19及以上版本使用波特率1000000。 - 旧版本固件使用
921600。SDK会根据版本自动选择,但也可手动指定:
python3 00_demo_read_version.py --baudrate 921600 - 固件版本
3. 示例代码说明
examples 目录包含了适用于示教臂的演示脚本。对于示教臂,主要功能集中在状态读取和校准。
3.1 主要参数说明
示教臂示例脚本支持以下通用命令行参数:
| 参数 | 数据类型 | 默认值 | 描述 |
|---|---|---|---|
--port | str | /dev/ttyUSB0 | 指定示教臂连接的串口号,如 /dev/ttyUSB0。 |
--baudrate | int | 1000000 | 指定串口通信的波特率。 |
--robot_version | str | v5_6 | 机械臂结构版本。 |
--gripper_type | str | 50mm | 夹爪型号。 |
附加参数
部分示例脚本还包含特定功能的参数:
--format: 角度显示格式,可选rad(弧度)或deg(角度),默认为deg--single: 单次打印状态(仅适用于状态读取脚本)
3.2 核心功能
对于示教臂,核心功能是读取状态和进行校准。
00_demo_read_version.py
- 描述: 读取示教臂版本信息,用于验证连接。
- 用法:
python3 00_demo_read_version.py --port /dev/ttyUSB0
02_demo_zero_calibration.py
- 描述: 示教臂调零程序。将当前位置设置为新的零点。此操作不可逆,请谨慎使用。
- 注意: 请慎重运行此代码! 示教臂在出厂时已校准。仅在出现严重位置偏移时才需要重新校准。
- 校准姿态:
1处关节保持垂直,2处关节保持45度角,3处刻度线对准,4处保持按钮朝上。
- 用法:
在两个按键没有按下的情况下(无蓝灯亮起),运行以下代码:
成功调零后示教臂将进入满力矩状态,需按下右侧按钮两次以解除锁定。
python3 02_demo_zero_calibration.py
03_demo_read_state.py
- 描述: 持续读取并打印示教臂的关节角度、夹爪角度和按钮状态。这是遥操作的基础。
- 用法:
python3 03_demo_read_state.py --port /dev/ttyUSB0 --robot_version v5_6 --gripper_type 50mm