ODrive ASCII格式协议

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来手动发送指令或者使用您喜欢的其它串口工具来发送指令。
  • 通过 UART: 将ODrive的TX(GPIO1)连接到主机的RX。 将ODrive的RX(GPIO2)连接到主机的TX。 ODrive的逻辑电平为3.3V。
    • Arduino: 您可以调用我们的库和ODrive通信,该库位于ODrive源码根目录/Arduino/ODriveArduino下。
    • Windows/Linux/macOS: 您可以使用USB转串口模块(如CP2102)连接ODrive进行通信。

指令格式

使用ASCII 格式协议方便直接阅读,它的格式如下:

command *42 ; 注释 [换行符]
  • *42表示兼容GCode的校验和,它可以被省略。
  • 注释也是兼容GCode。
  • 一旦遇到换行符,将开始解释该指令。

指令参考

电机轨迹指令

t motor destination
  • t 表示轨迹控制模式
  • motor 表示电机编号, 01
  • destination 目标位置,值表示编码器的计数

例如: t 0 -20000

对于一般绕轴运动,推荐使用这种命令。

以上命令发送后会触发对应电机的内部看门狗喂狗动作。

电机位置指令

对于一次发送一个设定位置的应用,请使用q命令。
如果您的应用是实时控制位置,您应该不断的发送处于轨迹上的各个位置,来实现自定义的轨迹跟踪。

q motor position velocity_lim current_lim
  • q 表示位置控制模式
  • motor 表示电机编号, 01
  • position 目标位置,值表示编码器的计数
  • velocity_lim 转速限制,单位为counts/s (可选的)
  • current_lim 电流限制,单位为A(可选的)

例如: q 0 -20000 10000 10

p motor position velocity_ff current_ff
  • p 表示位置控制模式
  • motor 表示电机编号, 01
  • position 目标位置,值表示编码器的计数
  • velocity_ff 速度前馈,单位为counts/s(可选的)
  • current_ff 电流前馈, 单位为A(可选的)

例如: p 0 -20000 0 0

请注意,如果您不了解前馈和它的作用,只需将其忽略即可。

以上命令发送后会触发对应电机的内部看门狗喂狗动作。

电机速度指令

v motor velocity current_ff
  • v 表示速度控制模式
  • motor 表示电机编号, 01
  • velocity 目标转速,单位为 counts/s
  • current_ff 电流前馈, 单位为 A(可选的)

例如: v 0 1000 0

请注意,如果您不了解前馈和它的作用,只需将其忽略即可。

以上命令发送后会触发对应电机的内部看门狗喂狗动作。

电机电流指令

c motor current
  • c 表示电流控制模式
  • motor 表示电机编号, 01
  • current 目标电流,单位为A

以上命令发送后会触发对应电机的内部看门狗喂狗动作。

请求状态信息指令

f motor

response:
pos vel
  • f 表示请求返回信息
  • motor 表示电机编号, 01
  • pos 当前编码器计数值 (float)
  • vel当前转速,单位为 counts/s (float)

更新电机看门狗

u motor
  • u 表示更新/喂狗
  • motor 表示电机编号, 01

此命令仅仅更新电机的看门狗定时器,不影响其它任何指令。

参数读/写

并非所有参数都可以通过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 进行交流。

发布了16 篇原创文章 · 获赞 9 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/abf1234444/article/details/103367062