3.2. 协议内容¶
3.2.1. SDK 模式控制¶
3.2.2. 机器人控制¶
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>] [afreq <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 : 订阅的属性数据
- 当 attr 为 position 时,data 内容为 <x> <y>
- 当 attr 为 attitude 时,data 内容为 <pitch> <roll> <yaw>
- 当 attr 为 status 时,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.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: 订阅的属性数据
- 当 attr 为 attitude 时,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.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>
- 描述
- 控制装甲板检测事件上报
- 事件上报数据格式参见 装甲板事件上报数据
- 参数
- attr (
armor_event_attr_enum
) : 事件属性名称- switch (
switch_enum
) : 事件属性控制开关
- 示例
- armor event hit on; :打开装甲板检测事件推送
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>
- 描述
- 声音识别时间上报控制,开启之后会有相关的事件上报
- 事件上报数据格式详参见 声音识别事件上报数据
- 参数
- attr (
sound_event_attr_enum
) : 事件属性名称- switch (
switch_enum
) : 事件属性控制开关
- 示例
- sound event applause on; :打开声音(掌声)识别
3.2.7.2. 声音识别事件上报数据¶
OUT: sound event <attr> <data>
- 描述
- 当发生特定声音事件时,可以从事件推送端口接收到此数据
- 使能该事件请参见 声音识别事件上报控制
- 参数
- attr (
sound_event_attr_enum
): 事件属性名称
- data :事件属性数据
- 当 attr 为
applause
时, 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>
- 描述
- 打开/关闭所有红外传感器开关
- 参数
- switch (
switch_enum
):红外传感器的开关
- 示例
- 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.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.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.16. 音频流控制¶
3.2.17. IP 广播¶
OUT: robot ip <ip_addr>
- 描述
- 当未与机器人建立连接时,可以从 IP 广播端口接收到此消息,连接成功后,该消息停止广播
- 描述当前机器人的 IP 地址,适用于与机器人在同一局域网内,但未知机器人 IP 信息的情况
- 参数
- ip_addr : 机器人当前 IP 地址
- 示例
- robot ip 192.168.1.102 : 机器人当前的 IP 地址为 192.168.1.102