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 進行交流。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章