3.2. 協議內容

3.2.1. SDK 模式控制

3.2.1.1. 進入 SDK 模式

IN:command;

  • 描述
    • 控制機器人進入 SDK 模式
    • 當機器人成功進入 SDK 模式後,才可以響應其餘控制命令

3.2.1.2. 退出 SDK 模式

IN: quit;

  • 描述
    • 控制機器人退出 SDK 模式,重置所有設置項
    • Wi-Fi/USB 連接模式下,當連接斷開時,機器人會自動退出 SDK 模式

3.2.2. 機器人控制

3.2.2.1. 機器人運動模式控制

IN:robot mode <mode>

  • 描述
    • 設置機器人運動模式
  • 參數
  • 示例
    • robot mode chassis_lead; : 將機器人的運動模式設置為「雲台跟隨底盤模式」

備註

機器人運動模式

機器人運動模式描述了雲台與底盤之前相互作用與相互運動的關係,每種機器人模式都對應了特定的作用關係。

機器人運動模式分為三種模式:

  1. 雲台跟隨底盤模式:該模式下,雲台的 YAW 軸會進入持續跟隨底盤 YAW 軸的運動的狀態,雲台將不響應所有控制指令中 YAW 軸控制的部分,影響指令有 雲台運動速度控制 雲台相對位置控制 雲台絕對位置控制
  2. 底盤跟隨雲台模式:該模式下,底盤的 YAW 軸會進入持續跟隨雲台 YAW 軸的運動的狀態,底盤將不響應所有控制指令中 YAW 軸控制的部分,影響指令有 底盤運動速度控制 底盤輪子速度控制 底盤相對位置控制
  3. 自由模式:該模式下,雲台的 YAW 軸與底盤的 YAW 軸運動互不影響

3.2.2.2. 機器人運動模式獲取

IN: robot mode ?

  • 描述
    • 查詢當前機器人運動模式
  • 返回值
  • 示例
    • IN:robot mode ?; : 查詢當前的機器人運動模式
    • OUT: chassis_lead; : 機器人返回當前的運動模式為 雲台跟隨底盤模式

警告

獲取指令中的 ?

注意:查詢指令中的 ? 與前面命令部分中間存在一個空格

3.2.2.3. 機器人剩餘電量獲取

IN: robot battery ?

  • 描述
    • 查詢當前機器人剩餘電量
  • 返回值
    • battery_percentage (int:[1-100]): 機器人剩餘電量,滿電量為100
  • 示例
    • IN:robot battery ?; : 查詢當前的機器人剩餘電量
    • OUT: 20; : 機器人返回當前的剩餘電量為 20

3.2.3. 底盤控制

3.2.3.1. 底盤運動速度控制

IN: chassis speed x <speed_x> y <speed_y> z <speed_z>

  • 描述
    • 控制底盤運動速度
  • 參數
    • speed_x (float:[-3.5,3.5]): x 軸向運動速度,單位 m/s
    • speed_y (float:[-3.5,3.5]): y 軸向運動速度,單位 m/s
    • speed_z (float:[-600,600]): z 軸向旋轉速度,單位 °/s
  • 示例
    • chassis speed x 0.1 y 0.1 z 1; : 底盤 x 軸速度為 0.1 m/s,y 軸速度為 0.1 m/s,z 軸旋轉速度為 1°/s

3.2.3.2. 底盤輪子速度控制

IN: chassis wheel w1 <speed_w1> w2 <speed_w2> w3 <speed_w3> w4 <speed_w4>

  • 描述
    • 控制四個輪子的速度
  • 參數
    • speed_w1 (int:[-1000, 1000]): 右前麥輪速度,單位 rpm
    • speed_w2 (int:[-1000, 1000]): 左前麥輪速度,單位 rpm
    • speed_w3 (int:[-1000, 1000]): 右後麥輪速度,單位 rpm
    • speed_w4 (int:[-1000, 1000]): 左後麥輪速度,單位 rpm
  • 示例
    • chassis wheel w2 100 w1 12 w3 20 w4 11; : 底盤左前麥輪的速度為 100 rpm,右前麥輪速度為 12 rpm,右後麥輪速度為 20 rpm,左後麥輪速度為 11 rpm

3.2.3.3. 底盤相對位置控制

IN: chassis move { [x <distance_x>] | [y <distance_y>] | [z <degree_z>] } [vxy <speed_xy>] [vz <speed_z>]

  • 描述
    • 控制底盤運動當指定位置,坐標軸原點為當前位置
  • 參數
    • distance_x (float:[-5, 5]): x 軸向運動距離,單位 m
    • distance_y (float:[-5, 5]): y 軸向運動距離,單位 m
    • degree_z (int:[-1800, 1800]): z 軸向旋轉角度,單位 °
    • speed_xy (float:(0, 3.5]): xy 軸向運動速度,單位 m/s
    • speed_z (float:(0, 600]): z 軸向旋轉速度, 單位 °/s
  • 示例
    • chassis move x 0.1 y 0.2; :以當前位置為坐標原點,向 x 軸運動 0.1 m,向 y 軸運動 0.2 m

3.2.3.4. 底盤速度獲取

IN: chassis speed ?

  • 描述
    • 獲取底盤速度信息
  • 返回值
    • <x> <y> <z> <w1> <w2> <w3> <w4> :x 軸向運動速度(m/s),y 軸向運動速度(m/s),z 軸向旋轉速度(°/s),w1 右前麥輪速度(rpm),w2 左前麥輪速速(rpm),w3 右後麥輪速度(rpm),w4 左後麥輪速度(rpm)
  • 示例
    • IN: chassis speed ?; : 獲取底盤的運動速度信息
    • OUT: 1 2 30 100 150 200 250; : 底盤當前的 x 軸向運動速度為 1 m/s,y 軸向運動速度 2 m/s,z 軸向旋轉速度為 20°/s,1 號輪子轉速為 100 rpm,2 號輪子轉速為 100 rpm,3 號輪子轉速為 100 rpm,4 號輪子轉速為 100 rpm

3.2.3.5. 底盤位置獲取

IN: chassis position ?

  • 描述
    • 獲取底盤位置信息
  • 返回值
    • <x> <y> <z> :x 軸位置(m),y 軸位置(m),偏航角度(°)
  • 示例
    • IN: chassis position ?; :獲取底盤的位置信息
    • OUT: 1 1.5 20; :底盤當前的位置距離上電時刻位置,沿 x 軸運動了 1 m,沿 y 軸運動了 1.5 m,旋轉了 20°

3.2.3.6. 底盤姿態獲取

IN: chassis attitude ?

  • 描述
    • 獲取底盤姿態信息
  • 返回值
    • <pitch> <roll> <yaw> :pitch 軸角度(°),roll 軸角度(°),yaw 軸角度(°)
  • 示例
    • chassis attitude ?; :查詢底盤的姿態信息

3.2.3.7. 底盤狀態獲取

IN: chassis status ?

  • 描述
    • 獲取底盤狀態信息
  • 返回值
    • <static> <uphill> <downhill> <on_slope> <pick_up> <slip> <impact_x> <impact_y> <impact_z> <roll_over> <hill_static>
      • static:是否靜止
      • uphill:是否上坡
      • downhill:是否下坡
      • on_slope:是否溜坡
      • pick_up:是否被拿起
      • slip:是否滑行
      • impact_x:x 軸是否感應到撞擊
      • impact_y:y 軸是否感應到撞擊
      • impact_z:z 軸是否感應到撞擊
      • roll_over:是否翻車
      • hill_static:是否在坡上靜止
  • 示例
    • IN: chassis status ?; :查詢底盤的狀態
    • OUT: 0 1 0 0 0 0 0 0 0 0 0; : 底盤當前處於上坡狀態

3.2.3.8. 底盤信息推送控制

IN:chassis push {[position <switch> pfreq <freq>][attitude <switch> afreq <freq>] | [status <switch> sfreq <switch>] [freq <freq_all>]}

  • 描述
    • 打開/關閉底盤中相應屬性的信息推送
    • 頻率設置
      • 各單獨的功能支持單獨的頻率設置,如:
        • chassis push position on pfreq 1 attitude on; : 打開位置和姿勢推送,位置推送頻率為 1 Hz,姿勢推送頻率使用默認設置 5 Hz
      • 支持當前模塊所有功能頻率統一設置,如:
        • chassis push freq 10; #chassis 推送統一為 10 Hz
        • chassis push position pfreq 1 freq 5; #此時有 freq 參數,將會忽略 pfreq
      • 支持的頻率 1, 5, 10, 20, 30, 50
    • 推送數據格式參見 底盤推送信息數據
  • 參數
    • switch (switch_enum) :當此處參數使用 on 時,表示打開對應屬性的推送;當此處參數使用 off 時,表示關閉對應屬性的推送
    • freq (int:(1,5,10,20,30,50)) :對應的屬性推送的推送頻率
    • freq_all (int:(1,5,10,20,30,50)) : 整個底盤所有相關推送信息的推送頻率
  • 示例
    • chassis push attitude on; : 打開底盤姿態信息推送
    • chassis push attitude on status on; :打開底盤姿態、狀態信息推送
    • chassis push attitude on afreq 1 status on sfreq 5; :打開底盤的姿態信息推送,推送頻率為每秒一次,同時打開底盤的狀態信息推送,推送頻率為每秒五次
    • chassis push freq 10; :底盤所有信息推送的頻率為每秒十次

3.2.3.9. 底盤推送信息數據

OUT: chassis push <attr> <data>

  • 描述
    • 當用戶使能底盤信息推送後,機器人會以設置的頻率向用戶推送相應信息
  • 參數
    • attr (chassis_push_attr_enum) : 訂閱的屬性名稱
    • data : 訂閱的屬性數據
      • attrposition 時,data 內容為 <x> <y>
      • attrattitude 時,data 內容為 <pitch> <roll> <yaw>
      • attrstatus 時,data 內容為 <static> <uphill> <downhill> <on_slope> <pick_up> <slip> <impact_x> <impact_y> <impact_z> <roll_over> <hill_static>
  • 示例
    • chassis push attitude 0.1 1 3; :當前底盤的 pitch、roll、yaw 姿態信息分別為 0.1、1、3

3.2.4. 雲台控制

3.2.4.1. 雲台運動速度控制

IN: gimbal speed p <speed> y <speed>

  • 描述
    • 控制雲台運動速度
  • 參數
    • p (float:[-450, 450]) :pitch 軸速度,單位 °/s
    • y (float:[-450, 450]) :yaw 軸速度,單位 °/s
  • 示例
    • gimbal speed p 1 y 1; :雲台的 pitch 軸速度為 1°/s,yaw 軸速度為 1°/s

3.2.4.2. 雲台相對位置控制

IN: gimbal move { [p <degree>] [y <degree>] } [vp <speed>] [vy <speed>]

  • 描述
    • 控制雲台運動到指定位置,坐標軸原點為當前位置
  • 參數
    • p (float:[-55, 55]) :pitch 軸角度, 單位 °
    • y (float:[-55, 55]) :yaw 軸角度,單位 °
    • vp (float:[0, 540]) :pitch 軸運動速速,單位 °/s
    • vy (float:[0, 540]) :yaw 軸運動速度,單位 °/s
  • 示例
    • gimbal move p 10; :以當前位置為坐標基準,控制雲台運動到 pitch 軸角度為 10° 的狀態

3.2.4.3. 雲台絕對位置控制

IN: gimbal moveto { [p <degree>] [y <degree>] } [vp <speed>] [vy <speed>]

  • 描述
    • 控制雲台運動到指定位置,坐標軸原點為上電位置
  • 參數
    • p (int:[-25, 30]) :pitch 軸角度(°)
    • y (int:[-250, 250]) :yaw 軸角度(°)
    • vp (int:[0, 540]) :pitch 軸運動速度(°)
    • vy (int:[0, 540]) :yaw 軸運動速度(°)
  • 示例
    • gimbal moveto p 10 y -20 vp 0.1; :以機器人上電位置為坐標基準,控制雲台運動到 pitch 軸角度為 10°,yaw 軸角度為 -20° 的狀態,運動時指定 pitch 軸的運動速度為 0.1°/s

3.2.4.4. 雲台休眠控制

IN: gimbal suspend

  • 描述
    • 控制雲台進入休眠狀態
  • 示例
    • gimbal suspend; :使雲台進入休眠狀態

3.2.4.5. 雲台恢復控制

IN: gimbal resume

  • 描述
    • 控制雲台從休眠狀態中恢復
  • 參數
    • None
  • 示例
    • gimbal resume; :使雲台退出休眠狀態

警告

休眠狀態 當雲台進入休眠狀態時,雲台兩軸電機將會釋放控制力,雲台整體不響應任何控制指令。

要解除雲台休眠狀態,請參見 雲台恢復控制

3.2.4.6. 雲台回中控制

IN: gimbal recenter

  • 描述
    • 雲台回中
  • 示例
    • gimbal recenter; :控制雲台回中

3.2.4.7. 雲台姿態獲取

IN: gimbal attitude ?

  • 描述
    • 獲取雲台姿態信息
  • 返回值
    • <pitch> <yaw> :pitch 軸角度(°),yaw 軸角度(°)
  • 示例
    • IN:gimbal attitude ?; :查詢雲台的角度信息
    • OUT: -10 20; :雲台當前 pitch 軸角度 -10°,yaw 軸角度 20°

3.2.4.8. 雲台信息推送控制

IN: gimbal push <attr> <switch> [afreq <freq_all>]

  • 描述
  • 參數
    • attr (gimbal_push_attr_enum) : 訂閱的屬性名稱
    • switch (switch_enum) :當此處參數使用 on 時,表示打開對應屬性的推送;當此處參數使用 off 時,表示關閉對應屬性的推送
    • freq_all : 雲台所有相關推送信息的推送頻率
  • 示例
    • gimbal push attitude on; :打開雲台的信息推送

3.2.4.9. 雲台推送信息數據

OUT: gimabal push <attr> <data>

  • 描述
    • 當用戶使能雲台信息推送後,機器人會以設置的頻率向用戶推送相應信息
  • 參數
    • attr (gimbal_push_attr_enum) : 訂閱的屬性名稱
    • data: 訂閱的屬性數據
      • attrattitude 時,data 內容為 <pitch> <yaw>
  • 示例
    • gimbal push attitude 20 10; :當前雲台的 pitch 角度為 20°,yaw 角度為 10°

3.2.5. 發射器控制

3.2.5.1. 發射器單次發射量控制

IN:blaster bead <num>

  • 描述
    • 設置發射器單次發射量
  • 參數
    • num (int:[1,5]) :發射量
  • 示例
    • blaster bead 2; :控制發射器單次發射兩發

3.2.5.2. 發射器發射控制

IN: blaster fire

  • 描述
    • 控制水彈槍發射一次
  • 示例
    • blaster fire; :控制水彈槍發射一次

3.2.5.3. 發射器單次發射量獲取

IN: blaster bead ?

  • 描述
    • 獲取水彈槍單次發射的水彈數
  • 返回值
    • <num> :水彈槍單次發射的水彈數
  • 示例
    • IN: blaster bead ?; :查詢水彈槍單次發射的水彈數
    • OUT: 3; :當前水彈槍單次發射水彈數量為 3

3.2.6. 裝甲板控制

3.2.6.1. 裝甲板靈敏度控制

IN: armor sensitivity <value>

  • 描述
    • 設置裝甲板打擊檢測靈敏度
  • 參數
    • value (int:[1,10]) :裝甲板靈敏度,數值越大,越容易檢測到打擊。默認靈敏度值為 5
  • 示例
    • armor sensitivity 1; :設置裝甲板打擊檢測靈敏度為 1

3.2.6.2. 裝甲板靈敏度獲取

IN: armor sensitivity ?

  • 描述
    • 獲取裝甲板打擊檢測靈敏度
  • 參數
    • <value> :裝甲板靈敏度
  • 示例
    • IN: armor sensitivity ?; :查詢裝甲板打擊檢測靈敏度
    • OUT: 5; :查詢裝甲板打擊檢測靈敏度

3.2.6.3. 裝甲板事件上報控制

IN: armor event <attr> <switch>

3.2.6.4. 裝甲板事件上報數據

OUT: armor event hit <index> <type>

  • 描述
    • 當發生裝甲板敲擊事件時,可以從事件推送端口接收到此消息
  • 參數
    • index (int:[1, 6]) :當前發生敲擊事件的裝甲板 ID
      • 1 底盤後
      • 2 底盤前
      • 3 底盤左
      • 4 底盤右
      • 5 雲台左
      • 6 雲台右
    • type (int:[0, 2]) :當前敲擊事件的種類
      • 0 水彈攻擊
      • 1 撞擊
      • 2 手敲擊
  • 示例
    • armor event hit 1 0; :1 號裝甲板檢測到水彈槍攻擊

3.2.7. 聲音識別控制

3.2.7.1. 聲音識別事件上報控制

IN: sound event <attr> <switch>

  • 描述
  • 參數
  • 示例
    • sound event applause on; :打開聲音(掌聲)識別

3.2.7.2. 聲音識別事件上報數據

OUT: sound event <attr> <data>

  • 描述
  • 參數
    • attr (sound_event_attr_enum): 事件屬性名稱
    • data :事件屬性數據
      • attrapplause 時, data<count>,表示短時間內擊掌的次數
  • 示例
    • sound event applause 2; :識別到短時間內有 2 次拍掌

3.2.8. PWM 控制

3.2.8.1. PWM 輸出占空比控制

IN: pwm value <port_mask> <value>

  • 描述
    • PWM 輸出占空比設置
  • 參數
    • port_mask (hex:0-0xffff) :PWM 拓展口掩碼組合, 編號為 X 的輸出口對應掩碼為 1 << (X-1)
    • value (float:0-100) :PWM 輸出占空比,默認輸出為 12.5
  • 示例
    • pwm value 1 50; : 控制 1 號 PWM 口的占空比為 50%

3.2.8.2. PWM 輸出頻率控制

IN: pwm freq <port_mask> <value>

  • 描述
    • PWM 輸出頻率設置
  • 參數
    • port_mask (hex:0-0xffff) :PWM 拓展口掩碼組合, 編號為 X 的輸出口對應掩碼為 1 << (X-1)
    • value (int:XXX) :PWM 輸出頻率值
  • 示例
    • pwm freq 1 1000; : 控制 1 號 PWM 口的頻率為 1000 Hz

3.2.9. LED 控制

3.2.9.1. LED 燈效控制

IN:led control comp <comp_str> r <r_value> g <g_value> b <value> effect <effect_str>

  • 描述
    • 機器人 LED 燈效控制接口,可設置多種效果
    • 跑馬燈效果僅可作用於雲台兩側 LED
  • 參數
    • comp_str (led_comp_enum) :LED 編號
    • r_value (int:[0, 255]) :RGB 紅色份量值
    • g_value (int:[0, 255]) :RGB 綠色份量值
    • b_value (int:[0, 255]) :RGB 藍色份量值
    • effect_str (led_effect_enum) :LED 燈效類型
  • 示例
    • led control comp all r 255 g 0 b 0 effect solid; : 機器人所有 LED 常亮為紅色

3.2.10. 傳感器轉接板控制

3.2.10.1. 傳感器轉接板 ADC 值獲取

IN: sensor_adapter adc id <adapter_id> port <port_num> ?

  • 描述
    • 獲取傳感器轉接板的 ADC 數值
  • 參數
    • adapter_id (int:[1, 6]) :轉接板的 ID 號
    • port_num (int:[1, 2]) :port 的編號
  • 返回值
    • adc_value :測量得到相應轉接板上指定端口的電壓值,電壓取值範圍[0V, 3,3V]
  • 示例
    • IN: sensor_adapter adc id 1 port 1 ?; : 查詢 1 號轉接板上 1 號端口的 ADC 數值
    • OUT: 1.1; :當前查詢端口 ADC 值為 1.1

3.2.10.2. 傳感器轉接板 IO 值獲取

IN: sensor_adapter io_level id <adapter_id> port <port_num> ?

  • 描述
    • 獲取傳感器轉接板 IO 口的邏輯電平
  • 參數
    • adapter_id (int:[1, 6]) :轉接板的 ID 號
    • port_num (int:[1, 2]) :port 的編號
  • 返回值
    • io_level_value :測量得到相應轉接板上指定端口的邏輯電平值,0 或 1
  • 示例
    • IN: sensor_adapter io_level id 1 port 1 ?; :查詢 1 號轉接板上 1 號端口的 IO 邏輯電平
    • OUT: 1; :當前查詢端口的 IO 值為 1

3.2.10.3. 傳感器轉接板 IO 引腳電平跳變時間值獲取

IN: sensor_adapter pulse_period id <adapter_id> port <port_num>

  • 描述
    • 獲取傳感器轉接板 IO 口電平跳變持續時間
  • 參數
    • adapter_id (int:[1, 6]):轉接板的 ID 號
    • port_num (int:[1, 2]):port 的編號
  • 返回值
    • pulse_period_value: 測量得到相應轉接板上指定端口的電平跳變持續時間值,單位 ms
  • 示例
    • sensor_adapter pulse_period id 1 port 1; :查詢 1 號轉接板上 1 號端口的電平跳變持續時間

3.2.10.4. 傳感器轉接板事件上報控制

IN: sensor_adapter event io_level <switch>

  • 描述
    • 打開/關閉傳感器轉接板電平跳變事件推送,打開後當 IO 上電平跳變時推送消息,見下一章中[傳感器轉接板電平跳變事件推送](#傳感器轉接板電平跳變推送)的介紹
  • 參數
    • switch (switch_enum):電平跳變事件上報的控制開關
  • 示例
    • sensor_adapter event io_level on; :打開傳感器轉接板的電平跳變事件推送、

3.2.10.5. 傳感器轉接板事件上報數據

OUT: sensor_adapter event io_level (<id>, <port_num>, <io_level>)

  • 描述
    • 當傳感器轉接板發生電平跳變時推送,可以從事件推送端口接收到此消息
    • 需要打開傳感器轉接板電平跳變推送,參見 傳感器轉接板事件上報數據
  • 參數
    • id:傳感器轉接板的 ID
    • port_num:IO 的 ID
    • io_level:當前的邏輯電平值
  • 示例
    • sensor_adapter event io_level (1, 1, 0); :當前 1 號轉接板的 1 號 IO 的邏輯電平跳變為 0

3.2.11. 紅外深度傳感器控制

3.2.11.1. 紅外深度傳感器開關控制

IN: ir_distance_sensor measure <switch>

  • 描述
    • 打開/關閉所有紅外傳感器開關
  • 參數
  • 示例
    • ir_distance_sensor measure on; :打開所有紅外深度傳感器

3.2.11.2. 紅外深度傳感器距離獲取

IN: ir_distance_sensor distance <id> ?

  • 描述
    • 獲取指定 ID 的紅外深度傳感器距離
  • 參數
    • id (int:[1, 4]):紅外傳感器的 ID
  • 返回值
    • distance_value:指定 ID 的紅外傳感器測得的距離值,單位 mm
  • 示例
    • IN: ir_distance_sensor distance 1 ?; :查詢 1 號紅外深度傳感器測得的距離值
    • OUT: 1000; :當前查詢紅外深度傳感器距離值為 1000 mm

3.2.12. 舵機控制

3.2.12.1. 舵機角度控制

IN: servo angle id <servo_id> angle <angle_value>

  • 描述
    • 設置舵機角度
  • 參數
    • servo_id (int:[1, 3]):舵機的 ID
    • angle_value (float:[-180, 180]):指定的角度,單位 °
  • 示例
    • servo angle id 1 angle 20; :控制 1 號舵機的角度為 20°

3.2.12.2. 舵機速度控制

IN: servo speed id <servo_id> speed <speed_value>

  • 描述
    • 設置指定舵機的速度
  • 參數
    • servo_id (int:[1, 3]):舵機的 ID
    • speed_value (float:[-1800, 1800]):設置的速度值,單位 °/s
  • 示例
    • servo speed id 1 speed 20; :設置 1 號舵機的速度為 10°/s

3.2.12.3. 舵機停止控制

IN: servo stop

  • 描述
    • 停止舵機運動
  • 示例
    • servo stop; :控制舵機停止運動

3.2.12.4. 舵機角度查詢

IN: servo angle id <servo_id> ?

  • 描述
    • 獲取指定舵機的角度
  • 參數
    • servo_id (int:[1, 3]):舵機的 ID
  • 返回值
    • angle_value : 指定舵機的角度值
  • 示例
    • IN: servo angle id 1 ?; :獲取 1 號舵機的角度值
    • OUT: 30; :當前查詢舵機角度值為 30°

3.2.13. 機械臂控制

3.2.13.1. 機械臂相對位置運動控制

IN: robotic_arm move x <x_dist> y <y_dist>

  • 描述
    • 控制機械臂運動一段距離,當前位置為坐標原點
  • 參數
    • x_dist (float:[]) :x 軸運動距離,單位 cm
    • y_dist (float:[]) :y 軸運動距離,單位 cm
  • 示例
    • robotic_arm move x 5 y 5; :控制機械臂在 x 軸運動 5 cm,在 y 軸運動 5 cm

3.2.13.2. 機械臂絕對位置運動控制

IN: robotic_arm moveto x <x_pos> y <y_pos>

  • 描述
    • 控制機械臂運動到某位置,機器人上電位置為坐標原點
  • 參數
    • x_pos (float:[]):x 軸運動到的坐標,單位 cm
    • y_pos (float:[]):y 軸運動到的坐標,單位 cm
  • 示例
    • robotic_arm moveto x 5 y 5; :控制機械臂 x 軸運動到 5 cm 的坐標位置,y 軸運動到 5 cm 的坐標位置

3.2.13.3. 機械臂回中控制

IN: robotic_arm recenter

  • 描述
    • 控制機械臂回中
  • 參數
    • None
  • 示例
    • robotic_arm recenter; :控制機械臂回中

3.2.13.4. 機械臂停止運動控制

IN: robotic_arm stop

  • 描述
    • 停止機械臂運動
  • 參數
    • None
  • 示例
    • robotic_arm stop; :停止機械臂運動

3.2.13.5. 機械臂絕對位置查詢

IN: robotic_arm position ?

  • 描述
    • 獲取機械臂的位置
  • 參數
    • None
  • 返回值
    • <x_pos> <y_pos>: 機械臂的位置坐標
      • x_pos:x 軸的坐標,單位 cm
      • y_pos:y 軸的坐標,單位 cm
  • 示例
    • IN: robotic_arm position ?; :查詢機械臂的位置
    • OUT:50 60; :當前查詢機械臂的位置距離標定點 x 軸距離為 50 cm, y 軸距離為 60 cm

3.2.14. 機械爪控制

3.2.14.1. 機械爪張開運動控制

IN: robotic_gripper open [leve <level_num>]

  • 描述
    • 張開機械爪
  • 參數
    • level_num (int:[1,4]):機械爪張開的力度等級,取值範圍[1,4]
  • 示例
    • robotic_gripper open 1; :控制機械臂以力度 1 打開

3.2.14.2. 機械爪關閉運動控制

IN: robotic_gripper close [leve <level_num>]

  • 描述
    • 閉合機械爪
  • 參數
    • level_num (int:[1,4]):機械爪閉合的力度等級,取值範圍[1,4]
  • 示例
    • robotic_gripper close 1; :控制機械臂以力度 1 關閉

備註

機械爪控制力度

機械爪控制力度 描述了機械爪在運動過程中的運動速度以及在堵轉狀態下最大夾取力度

力度越大,運動速度越快,夾取力越大;反之。

3.2.14.3. 機械爪開合狀態查詢

IN: robotic_gripper status ?

  • 描述
    • 獲取機械爪開合狀態
  • 參數
    • None
  • 返回值
    • status : 機械爪當前的開合狀態
      • 0 機械爪完全閉合
      • 1 機械爪既沒有完全閉合,也沒有完全張開
      • 2 機械爪完全張開
  • 示例
    • IN: robotic_gripper status ?; :獲取機械爪的開合狀態
    • OUT: 2; :當前查詢的機械爪狀態為張開

3.2.15. 智能識別功能控制

3.2.15.1. 智能識別功能屬性控制

IN: AI attribute { [line_color <line_color>] [marker_color <marker_color>] [marker_dist <dist>] }

  • 描述
    • 智能識別功能屬性控制
  • 參數
    • line_color (line_color_enum): 線識別顏色
    • marker_color (marker_color_enum): 視覺標籤顏色
    • marker_dist (float:[0.5, 3]): 視覺標籤最小有效距離,單位m
  • 示例
    • IN: AI attribute line_color red; :設置線識別的顏色為紅色

3.2.15.2. 智能識別功能推送控制

IN: AI push <attr> <switch>

  • 描述
    • 智能識別功能推送控制
    • 不同智能識別功能之間存在互斥關係,互斥的功能無法同時開啟,若單次同時打開的功能集合中存在互斥關係的功能,則本次功能開啟全部失敗。關於互斥關係請參見:智能識別功能互斥關係
    • 暫不支持頻率設置
    • 數據提送格式參見 智能識別功能推送數據
  • 參數
    • attr (AI_push_attr_enum): 智能識別功能枚舉,部分參數之前不可同時打開
    • switch (switch_enum):當此處參數使用 on 時,表示打開對應屬性的推送;當此處參數使用 off 時,表示關閉對應屬性的推送
  • 示例
    • IN: AI push marker on line on; :打開線和視覺標籤識別數據推送

備註

智能識別功能互斥關係

由於機器人計算資源有限,智能識別功能中存在互斥關係,互斥的智能功能無法同時開啟。 我們將智能識別功能分為AB兩組:

A people pose marker robot
B line

以上兩組,任意一組內同時僅能開啟一個功能,兩組間可任意組合功能

3.2.15.3. 智能識別功能推送數據

OUT: AI push <attr> <data>

  • 描述
    • 當用戶使能智能識別功能推送後,機器人會以歸固定的頻率向用戶推送相應信息
  • 參數
    • attr (AIi_push_attr_enum): 訂閱的功能名稱
    • data :訂閱的屬性數據
      • attrperson 時,內容為 <n> <x1> <y1> <w1> <h1> <x2> <y2> … <wn> <hn>
      • attrgesture 時 內容為 <n> <info1> <x1> <y1> <w1> <h1> <x2> <y2> … <wn> <hn>, info 含義請參見 AI_pose_id_enum
      • attrmarker 時,內容為 <n> <info1> <x1> <y1> <w1> <h1> <x2> <y2> … <wn> <hn>, info 含義請參見 AI_marker_id_enum
      • attrline 時,內容為 <n> <x1> <y1> <θ1> <c1> <x2> <y2> … <θ10n> <c10n>
      • attrrobot 時,內容為 <n> <x1> <y1> <w1> <h1> <x2> <y2> … <wn> <hn>
  • 示例
    • OUT: AI push person 1 0.5 0.5 0.3 0.7; : 當前識別到1個行人,坐標位於(0.5, 0.5),目標寬度為0.3,高度為0.7

備註

智能功能推送數據

智能識別功能推送數據中,n,x,y,w,h 均為通用數據,解釋如下:

n : 識別到的目標數量

x : 識別到的目標中心點位於視野中的x坐標

y : 識別到的目標中心點位於視野中的y坐標

w : 識別到的目標寬度

h : 識別到的目標高度

線識別推送數據中,n, x, y, θ, c 解釋如下:

n : 識別到線的數量,每條線分別存在10個點,詳細點數據請參下

x : 線上點位於視野中的x坐標

y : 線上點位於視野中的y坐標

θ : 線上點的切線角角度

c : 線上點對應的曲線的曲率,取值範圍 [0, 10], 0表示純直線

以上 x,y,w,h 均為歸一化的值,範圍為[0, 1],坐標遠點位於視野左上方

3.2.16. 相機控制

3.2.16.1. 相機曝光設置

IN: camera exposure <ev_level>

  • 描述
    • 相機曝光值設置
  • 參數
  • 示例
    • camera exposure small; :設置相機曝光值為小

3.2.17. 視頻流控制

3.2.17.1. 視頻流開啟控制

IN: stream on

  • 描述
    • 打開視頻流
    • 打開後,可從視頻流端口接收到 H.264 編碼的碼流數據
  • 示例
    • stream on; :打開視頻流

3.2.17.2. 視頻流關閉控制

IN: stream off

  • 描述
    • 關閉視頻流
    • 關閉視頻流後,H.264 編碼的碼流數據將會停止輸出
  • 示例
    • stream off; :關閉視頻流

3.2.18. 音頻流控制

3.2.18.1. 音頻流開啟控制

IN: audio on

  • 描述
    • 打開音頻流
    • 關閉音頻流後,可以從音頻流端口接收到 Opus 編碼的音頻流數據
  • 示例
    • audio on; :打開音頻流

3.2.18.2. 音頻流關閉控制

IN: audio off

  • 描述
    • 關閉音頻流
    • 關閉音頻流後,Opus 編碼的音頻流數據將會停止輸出
  • 示例
    • audio off; :關閉音頻流

3.2.19. IP 廣播

OUT: robot ip <ip_addr>

  • 描述
    • 當未與機器人建立連接時,可以從 IP 廣播端口接收到此消息,連接成功後,該消息停止廣播
    • 描述當前機器人的 IP 地址,適用於與機器人在同一局域網內,但未知機器人 IP 信息的情況
  • 參數
    • ip_addr : 機器人當前 IP 地址
  • 示例
    • robot ip 192.168.1.102; : 機器人當前的 IP 地址為 192.168.1.102

3.2.20. 賽事數據獲取

3.2.20.1. 鍵盤數據數據推送開啟

IN: game_msg on

  • 描述
    • 青少年賽事系統,打開鍵盤鼠標數據推送
  • 參數
    • None
  • 示例
    • game_msg on; :打開鍵盤鼠標數據推送

3.2.20.2. 鍵盤數據數據推送關閉

IN: game_msg off

  • 描述
    • 青少年賽事系統,關閉鍵盤鼠標數據推送
  • 參數
    • None
  • 示例
    • game_msg off; :關閉鍵盤鼠標數據推送

3.2.20.3. 鍵盤數據數據推送數據

OUT: game msg push <data>

  • 描述
    • 當用戶使能賽事數據推送後,機器人會以固定的頻率向用戶推送相應信息,數據為字符串
  • 參數
    • data :訂閱的屬性數據
      • 內容為 [cmd_id, len, mouse_press, mouse_x, mouse_y, seq, key_num, key_1, key2, ….]
      • mouse_press: 1為鼠標右鍵, 2為鼠標左鍵, 4為鼠標中間
      • mouse_x : 鼠標移動距離, 範圍-100 ~ 100
      • mouse_y : 鼠標移動距離, 範圍-100 ~ 100
      • seq: 序列號 0~255
      • key_num: 識別到的按鍵數, 最多識別三個按鍵
      • key1: 鍵值
  • 示例
    • OUT: game msg push [0, 6, 1, 0, 0, 255, 1, 199]; : cmd_id為0, 數據長度為6, 識別到鼠標右擊, 按鍵w按下, 包序號255