ODrive ASCII 协议串口通信命令整理
将 USB to TTL 插入到电脑 USB 1470 端口,识别为 tty.wchusbserial1470,设置波特率,通过 serial 模块实例化:
import serial
ted = serial.Serial(port='/dev/tty.wchusbserial1470', baudrate=115200)
-
请求信息状态指令
格式:f motor
回复格式:pos vel
注:
f 表示请求返回信息;motor 表示电机编号,0 或 1 ;
pos 当前编码器计数值(float);vel 当前转速,单位 counts/s (float)
ted.write("f 0\n".encode('ascii')) res = ted.readline() print(res) # 回复结果如下 # b'1.234375 0.000000\r\n'
-
参数读写
支持所有 float 和 integer 类型的参数,但并非所有参数都可以通过 ASCII 协议读写
读
格式:r [property]
回复格式:返回锁清秋参数值的文本表示
注:property 属性名称,如 ODrive Tool 中所示
USB 控制下 Drive Tool 中 odrv0 的属性和方法如下:
以及其中 axis0 对应的属性和方法:
相应地摘选可能需要的属性参数通过串口通信来获取,例如:
import serial ted = serial.Serial(port='/dev/tty.wchusbserial1470', baudrate=115200) ted.write("f 0\n".encode('ascii')) res = ted.readline() print(res) ted.write("r vbus_voltage;ted's words\n".encode('ascii')) vbus_voltage = float(ted.readline().decode('ascii')) print("vbus_voltage:",vbus_voltage,type(vbus_voltage)) ted.write("r config.brake_resistance\n".