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