Python SDK使用说明
1. 介绍
灵越Python SDK (https://github.com/Synria-Robotics/Bessica-D-SDK) 是一个用于控制7轴双机械臂的 Python 工具包。它提供了通过串口与机械臂通信、控制关节运动、操作夹爪以及读取状态信息的功能。
1.1 主要特性
- 串口通信:自动查找或指定串口进行连接
- 数据解析:解析来自机械臂的反馈数据帧
- 零点设置:将机械臂当前位置设置为新的零点
- 力矩控制:启用或禁用机械臂关节力矩,允许自由拖动或锁定位置
- 单双臂关节控制:同步控制双臂关节角度,可分别控制左右臂某个关节
- 夹爪控制:控制夹爪的开合角度
- 拖动示教:关闭扭矩后手动拖拽,将当前位置设置为零点,控制机械臂运动至设置位置
2. 安装
1.克隆或下载SDK 可以使用Git克隆此仓库:
git clone https://github.com/Synria-Robotics/Bessica-D-SDK.git
cd Bessica-D-SDk
2.安装依赖项 创建conda环境 (必须):
conda create -n bessica_d_sdk python=3.8
conda activate bessica_d_sdk
安装库以及依赖
pip install -r requirements.txt
pip install -e .
3.硬件连接
- 使用电源适配器给机械臂供电并打开电源键。
- 使用type-c数据线将 Bassica-D 机械臂连接到您的计算机。
- 操作系统操作系统通常会自动识别 USB 转串口设备。在 Linux 系统上,设备通常显示为
/dev/ttyUSB0、/dev/ttyUSB1等。在 Windows 上,它会显示为 COMx (例如 COM3), 在MacOS上,它会显示为cu.usbserial-xxxx(例如cu.usbserial-1440)
设置串口权限
# 方法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
硬件连接验证
-
将机械臂通过USB连接至计算机;
-
检查串口是否被系统识别;
ls -l /dev/ttyUSB*
- 确认串口设备名称(如ttyUSB0、ttyUSB1等)。
验证安装
连接好机械臂之后,您可以尝试运行一个示例程序来验证SDK是否正常工作。
运行 read_angles.py 示例:
python ./exampels/demo_read_state.py
如果一切配置正确,您应该能在终端看到持续输出的机械臂关节角度和夹爪角度。按 Ctrl+c 退出程序。
故障排除
- 无法连接到机械臂/未找到可用串口:
- 确保机械臂供电正常。
- 检查Type-C数据线是否连接稳定。
- 确认您的用户有权限访问串口设备 (在 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 上,尝试使用
如果您还遇到其他问题,请检查 SDK 日志输出或在项目的 lssue 跟踪系统中报告问题。
3. 示例代码说明
examples 目录包含使用 Bessica-D SDK 与机械臂交互的演示脚本,涵盖基本控制、状态读取、夹爪操作和示教功能。
| 脚本文件 | 功能说明 |
|---|---|
demo_read_state.py | 读取指定机械臂当前的关节角度和夹爪角度,支持持续输出 |
demo_single_arm.py | 控制单臂的七个关节:设置角度、归零、单关节操作 |
demo_dual_arm.py | 同步控制双臂的全部关节角度,可分别控制左右臂某个关节 |
demo_gripper.py | 控制夹爪开合角度,支持单/双臂夹爪设置和交互式输入 |
demo_zero_calibration.py | 关闭扭矩后手动拖拽,将当前位置设置为零点 |
demo_interactivate_mode.py | 综合控制界面,支持关节操作、夹爪控制、示教往复、扭矩开关等交互模式 |
3.1 推荐阅读顺序
demo_read_state.py:了解状态读取机制demo_single_arm.py:学习单臂控制流程demo_dual_arm.py:扩展到双臂控制demo_gripper.py:掌握夹爪使用方式demo_zero_calibration.py:了解零点设置方法demo_interactivate_mode.py:实际部署或测试前的综合调试入口
3.2 注意事项
- 所有脚本均使用
ArmController类作为控制入口。 - 请确保运行前机械臂已正确连接并上电。
- 在操作夹爪和归零前,请注意保持机械臂物理安全。