ODrive ASCII格式协议
ASCII 格式协议如何发送指令通过 USB:Windows: 使用Zadig将ODrive的驱动程序设置为usbser。 Windows随后将使该设备识别为COM端口。您可以使用PuTTY手动发送指令或使用您喜欢的编程语言打开COM端口自己编写代码发送指令。Linux/macOS: 在命令终端中输入ls /dev/tty* Enter 来列出所有串口。在Linux下ODrive显示为...
·
ASCII格式协议
如何发送指令
- 通过 USB:
- Windows: 使用Zadig将ODrive的驱动程序设置为
usbser
。 Windows随后将使该设备识别为COM端口。您可以使用PuTTY手动发送指令或使用您喜欢的编程语言打开COM端口自己编写代码发送指令。 - Linux/macOS: 在命令终端中输入
ls /dev/tty*
Enter 来列出所有串口。在Linux下ODrive显示为/dev/ttyACM0
在macOS下显示为/dev/tty.usbmodem[...]
。找到了ODrive显示的串口名称后, 您可以使用screen /dev/ttyACM0
(请自行替换为您的串口名称) Enter来手动发送指令或者使用您喜欢的其它串口工具来发送指令。
- Windows: 使用Zadig将ODrive的驱动程序设置为
- 通过 UART: 将ODrive的TX(GPIO1)连接到主机的RX。 将ODrive的RX(GPIO2)连接到主机的TX。 ODrive的逻辑电平为3.3V。
- Arduino: 您可以调用我们的库和ODrive通信,该库位于
ODrive源码根目录/Arduino/ODriveArduino
下。 - Windows/Linux/macOS: 您可以使用USB转串口模块(如CP2102)连接ODrive进行通信。
- Arduino: 您可以调用我们的库和ODrive通信,该库位于
指令格式
使用ASCII 格式协议方便直接阅读,它的格式如下:
command *42 ; 注释 [换行符]
*42
表示兼容GCode的校验和,它可以被省略。- 注释也是兼容GCode。
- 一旦遇到换行符,将开始解释该指令。
指令参考
电机轨迹指令
t motor destination
t
表示轨迹控制模式motor
表示电机编号,0
或1
destination
目标位置,值表示编码器的计数
例如: t 0 -20000
对于一般绕轴运动,推荐使用这种命令。
以上命令发送后会触发对应电机的内部看门狗喂狗动作。
电机位置指令
对于一次发送一个设定位置的应用,请使用q
命令。
如果您的应用是实时控制位置,您应该不断的发送处于轨迹上的各个位置,来实现自定义的轨迹跟踪。
q motor position velocity_lim current_lim
q
表示位置控制模式motor
表示电机编号,0
或1
position
目标位置,值表示编码器的计数velocity_lim
转速限制,单位为counts/s (可选的)current_lim
电流限制,单位为A(可选的)
例如: q 0 -20000 10000 10
p motor position velocity_ff current_ff
p
表示位置控制模式motor
表示电机编号,0
或1
position
目标位置,值表示编码器的计数velocity_ff
速度前馈,单位为counts/s(可选的)current_ff
电流前馈, 单位为A(可选的)
例如: p 0 -20000 0 0
请注意,如果您不了解前馈和它的作用,只需将其忽略即可。
以上命令发送后会触发对应电机的内部看门狗喂狗动作。
电机速度指令
v motor velocity current_ff
v
表示速度控制模式motor
表示电机编号,0
或1
velocity
目标转速,单位为 counts/scurrent_ff
电流前馈, 单位为 A(可选的)
例如: v 0 1000 0
请注意,如果您不了解前馈和它的作用,只需将其忽略即可。
以上命令发送后会触发对应电机的内部看门狗喂狗动作。
电机电流指令
c motor current
c
表示电流控制模式motor
表示电机编号,0
或1
current
目标电流,单位为A
以上命令发送后会触发对应电机的内部看门狗喂狗动作。
请求状态信息指令
f motor
response:
pos vel
f
表示请求返回信息motor
表示电机编号,0
或1
pos
当前编码器计数值 (float)vel
当前转速,单位为 counts/s (float)
更新电机看门狗
u motor
u
表示更新/喂狗motor
表示电机编号,0
或1
此命令仅仅更新电机的看门狗定时器,不影响其它任何指令。
参数读/写
并非所有参数都可以通过ASCII协议读写,但支持所有float和integer类型的参数。
-
读:
r [property]
property
属性名称,如ODrive Tool中所示- response: 返回所请求参数值的文本表示
- 例如:
r vbus_voltage
=> response:24.087744
-
写:
w [property] [value]
property
属性名称,如ODrive Tool中所示value
想要设定的值- 例如:
w axis0.controller.pos_setpoint -123.456
系统指令:
ss
-保存配置se
-擦除配置sr
-重启
如果您有任何问题或疑问,欢迎您加入ODrive社区或QQ群 851421965 进行交流。
更多推荐
已为社区贡献1条内容
所有评论(0)