Skip to content

agilexrobotics/piper_sdk

Repository files navigation

Piper 机械臂 SDK使用说明

EN

Ubuntu STATE
ubuntu18.04 Pass
ubuntu20.04 Pass
ubuntu22.04 Pass

Test:

PYTHON STATE
python3.6 Pass
python3.8 Pass
python3.10 Pass

本SDK用于接收can数据帧,然后处理为自定义数据类型,没有包括数据偏移帧

说明 文档
接口函数的详细说明 Interface_V1 README
Interface_V2 README
协议解析部分说明 Protocol_V1 README
Protocol_V2 README
消息部分说明 Msgs_V1 README
Msgs_V2 README
机械臂DEMO列举 DMEO
机械臂DEMO piper_sdk/demo/V1
piper_sdk/demo/V2
双臂的主从配置和读取数据 double_piper
使用pyQT5的开源UI Piper_sdk_ui
Q&A Q&A

1 安装方法

1.1 安装依赖

注: python-can版本应高于3.3.4

pip3 install python-can
pip3 install piper_sdk

查看piper_sdk细节,比如安装路径,版本等信息

pip3 show piper_sdk

0.0.x 为机械臂V1.5-2固件版本前的sdk支持

若要卸载

pip3 uninstall piper_sdk

1.2 安装can工具

sudo apt update && sudo apt install can-utils ethtool

这两个工具用于配置 CAN 模块

如果执行bash脚本出现ip: command not found,请安装ip指令,一般是sudo apt-get install iproute2

2 快速使用

2.1 使能can模块

2.1.1 激活单个can模块, 此处使用can_activate.sh脚本

1) pc只插入一个usb转can模块

直接执行

bash can_activate.sh can0 1000000
2) pc插入多个usb转can模块, 但每次只激活一个can模块

注: 此处用于同时使用机械臂和底盘的的情况

(1) 查看can模块插在usb端口的硬件地址。拔掉所有can模块,只将连接到机械臂的can模块插入PC,执行

sudo ethtool -i can0 | grep bus

并记录下bus-info的数值,例如1-2:1.0

注:一般第一个插入的can模块会默认是can0,如果没有查询到can可以使用bash find_all_can_port.sh来查看刚才usb地址对应的can名称

(2) 激活can设备。假设上面的操作记录的bus-info数值为1-2:1.0,执行:

bash can_activate.sh can_piper 1000000 "1-2:1.0"

注:1-2:1.0硬件编码的usb端口插入的can设备,名字被重命名为can_piper,波特率为1000000,并激活

(3) 检查是否激活成功

执行ifconfig查看是否有can_piper,如果有则can模块设置成功

2.1.2 同时激活多个can模块,此处使用can_config.sh脚本

1) 逐个拔插can模块并一一记录每个模块对应的usb口硬件地址

can_config.sh中,EXPECTED_CAN_COUNT参数为想要激活的can模块数量,现在假设为2

(1) 然后can模块中的其中一个单独插入PC,执行

sudo ethtool -i can0 | grep bus

并记录下bus-info的数值例如1-2:1.0

(2) 接着插入下一个can模块,注意不可以与上次can模块插入的usb口相同,然后执行

sudo ethtool -i can1 | grep bus

注:一般第一个插入的can模块会默认是can0,第二个为can1,如果没有查询到can可以使用bash find_all_can_port.sh来查看刚才usb地址对应的can名称

2) 预定义USB 端口、目标接口名称及其比特率

假设上面的操作记录的bus-info数值分别为1-2:1.01-4:1.0,则将下面的USB_PORTS["1-9:1.0"]="can_left:1000000"的中括号内部的双引号内部的参数换为1-2:1.01-4:1.0.

最终结果为:

USB_PORTS["1-2:1.0"]="can_left:1000000"

USB_PORTS["1-4:1.0"]="can_right:1000000"

注:1-2:1.0硬件编码的usb端口插入的can设备,名字被重命名为can_left,波特率为1000000,并激活

3) 看终端输出是否激活成功

执行bash can_config.sh

4) 查看can是否设置成功

执行ifconfig查看是不是有can_leftcan_right

注意事项

  • 需要先激活can设备,并且设置正确的波特率,才可以读取机械臂消息或者控制机械臂
  • C_PiperInterface 接口类在实例化时可传入激活的can路由名称,这个名称可以通过ifconfig得到
  • 有时执行can发送,终端反馈Message NOT sent,是can模块没有成功连接设备,先检查模块与机械臂的连接状态,然后将机械臂断电后上电,再尝试发送
  • sdk的interface在创建实例后会检测是否激活自带的can模块,如果是其它can设备,可以将第二个形参设定为False,如:piper = C_PiperInterface_V2("can0",False)
  • 机械臂的mit协议控制单关节电机为高级功能,使用时需注意,此协议的使用不当会导致机械臂损坏!!!

联系我们

您可以在github上提issue

也可以加入discordhttps://discord.gg/wrKYTxwDBd