ASCII格式協議
如何傳送指令
透過 USB :Windows : 使用Zadig將ODrive的驅動程式設定為usbser。隨後將使該裝置識別為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; comment [new line character] 11
*42表示相容GCode的校驗和,它可以被省略。當且僅當提供校驗和時,裝置才會在響應中包括校驗和(如果有)。如果提供了校驗和,但無效,則忽略該行。校驗和計算為星號(*)之前所有字元的按位異或。
註釋也是相容GCode。
一旦遇到換行符,將開始解釋該指令。
電機軌跡指令
t motor destination 11
t表示軌跡控制模式
motor表示電機編號,0或1
destination目標位置,值表示編碼器的計數
例如:t 0 -200對於一般繞軸運動,推薦使用這種命令。以上命令傳送後會觸發對應電機的內部看門狗餵狗動作。
電機位置指令
對於一次傳送一個設定位置的應用,請使用q命令。如果您的應用是實時控制位置,您應該不斷的傳送處於軌跡上的各個位置,來實現自定義的軌跡跟蹤,請使用p命令。
q motor position velocity_lim current_lim 11
q表示位置控制模式
motor表示電機編號,0 或 1
position目標位置,值表示編碼器的計數
velocity_lim轉速限制,單位為turns /s (可選的)
current_lim電流限制,單位為A(可選的)例如: q 0 -200 10 10
p motor position velocity_ff current_ff 11
p表示位置控制模式
motor表示電機編號, 0或1
velocity_ff速度前饋,單位為turns /s(可選的)
current_ff電流前饋,單位為A(可選的)
例如: p 0 -200 0 0
請注意,如果您不瞭解前饋和它的作用,只需將其忽略即可。以上命令傳送後會觸發對應電機的內部看門狗餵狗動作。
電機電流指令
c motor current 11
c表示電流控制模式
current目標電流,單位為A
以上命令傳送後會觸發對應電機的內部看門狗餵狗動作。
f motor response: pos vel 12341234
f表示請求返回資訊
motor 表示電機編號,0或1
pos當前編碼器計數值(float)
vel當前轉速,單位為turns/s (float)
更新電機看門狗
u motor 11
u表示更新/餵狗
此命令僅僅更新電機的看門狗定時器,不影響其它任何指令。
引數讀/寫
並非所有引數都可以透過ASCII協議讀寫,但支援所有float和integer型別的引數。
讀:
r [property] 11
property屬性名稱,如ODrive Tool中所示
response: 返回所請求引數值的文字表示
例如: r vbus_voltage => response: 24.087744
寫:
w [property] [value] 11
value想要設定的值
例如:w axis0.controller.pos_setpoint -123.456
系統指令:
ss-儲存配置
se-擦除配置
sr-重啟。
ASCII格式協議
如何傳送指令
透過 USB :Windows : 使用Zadig將ODrive的驅動程式設定為usbser。隨後將使該裝置識別為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; comment [new line character] 11
*42表示相容GCode的校驗和,它可以被省略。當且僅當提供校驗和時,裝置才會在響應中包括校驗和(如果有)。如果提供了校驗和,但無效,則忽略該行。校驗和計算為星號(*)之前所有字元的按位異或。
註釋也是相容GCode。
一旦遇到換行符,將開始解釋該指令。
指令格式
電機軌跡指令
t motor destination 11
t表示軌跡控制模式
motor表示電機編號,0或1
destination目標位置,值表示編碼器的計數
例如:t 0 -200對於一般繞軸運動,推薦使用這種命令。以上命令傳送後會觸發對應電機的內部看門狗餵狗動作。
電機位置指令
對於一次傳送一個設定位置的應用,請使用q命令。如果您的應用是實時控制位置,您應該不斷的傳送處於軌跡上的各個位置,來實現自定義的軌跡跟蹤,請使用p命令。
q motor position velocity_lim current_lim 11
q表示位置控制模式
motor表示電機編號,0 或 1
position目標位置,值表示編碼器的計數
velocity_lim轉速限制,單位為turns /s (可選的)
current_lim電流限制,單位為A(可選的)例如: q 0 -200 10 10
p motor position velocity_ff current_ff 11
p表示位置控制模式
motor表示電機編號, 0或1
position目標位置,值表示編碼器的計數
velocity_ff速度前饋,單位為turns /s(可選的)
current_ff電流前饋,單位為A(可選的)
例如: p 0 -200 0 0
請注意,如果您不瞭解前饋和它的作用,只需將其忽略即可。以上命令傳送後會觸發對應電機的內部看門狗餵狗動作。
電機電流指令
c motor current 11
c表示電流控制模式
motor表示電機編號,0或1
current目標電流,單位為A
以上命令傳送後會觸發對應電機的內部看門狗餵狗動作。
電機電流指令
f motor response: pos vel 12341234
f表示請求返回資訊
motor 表示電機編號,0或1
pos當前編碼器計數值(float)
vel當前轉速,單位為turns/s (float)
更新電機看門狗
u motor 11
u表示更新/餵狗
motor表示電機編號,0或1
此命令僅僅更新電機的看門狗定時器,不影響其它任何指令。
引數讀/寫
並非所有引數都可以透過ASCII協議讀寫,但支援所有float和integer型別的引數。
讀:
r [property] 11
property屬性名稱,如ODrive Tool中所示
response: 返回所請求引數值的文字表示
例如: r vbus_voltage => response: 24.087744
寫:
w [property] [value] 11
property屬性名稱,如ODrive Tool中所示
value想要設定的值
例如:w axis0.controller.pos_setpoint -123.456
系統指令:
ss-儲存配置
se-擦除配置
sr-重啟。