...
类型编号 | 描述 |
---|---|
0x00 | 两轮差动 |
传感器安装位置的pos数据表示为:
数据域 | 类型 | 描述 |
---|---|---|
X轴向距离 | s32 | 传感器中心距离外部系统中心的X轴向距离,Q8定点小数 |
Y轴向距离 | s32 | 传感器中心距离外部系统中心的Y轴向距离,Q8定点小数 |
Z轴向距离 | s32 | 传感器中心距离外部系统中心的Z轴向距离,Q8定点小数 |
角度 | u32 | 传感器中心跟外部系统中心点的逆时针夹角,Q8定点小数 |
外部系统配置获取请求(GET_BINARY_CONF)
...
外部系统状态获取请求(GET_BASE_STATUS)
SLAMWARE CORE室内定位导航模块在准备好后会一直发送外部系统连接请求确认外部系统已正常工作。直到外部系统响应此请求后SLAMWARE CORE才会开始正常工作。SLAMWARE CORE正常工作后将不断轮询获取外部系统的状态,外部系统应当在规定的时间内给予答复。否则SLAMWARE CORE将认为外部系统断开连接。
- 请求数据包:
0x30命令代码
- 应答数据包:
...
Core室内定位导航模块在准备好后会一直发送外部系统连接请求确认外部系统已正常工作。直到外部系统响应此请求后SLAMWARE Core才会开始正常工作。SLAMWARE Core正常工作后将不断轮询获取外部系统的状态,外部系统应当在规定的时间内给予答复。否则SLAMWARE Core将认为外部系统断开连接。
请求数据包 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | |||||||||||
0x30 | 无 | |||||||||||
应答数据包 | ||||||||||||
应答代码 | 负载数据 | |||||||||||
<OK> | 电池电量百分比(u8) | 电池充电状态(u8) |
数据域 | 类型 | 描述 |
---|---|---|
电池电量百分比 | u8 | 外部系统的电池电量百分比,0-100 |
电池充电状态 | u8 | 外部系统的电池状态,该变量为一个位图。 |
...
...
外部系统轮组状态获取请求(GET_BASE_MOTOR_DATA)
...
SLAMWARE CORE室内定位导航模块正常工作后将不断轮询获取外部系统的轮组状态,外部系统应当在规定的时间内给予答复。否则SLAMWARE CORE将认为外部系统断开连接。
- 请求数据包:
0x31命令代码
- 应答数据包:
...
SLAMWARE Core室内定位导航模块正常工作后将不断轮询获取外部系统的轮组状态,外部系统应当在规定的时间内给予答复。否则SLAMWARE Core将认为外部系统断开连接。
请求数据包 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | |||||||||||
0x31 | 无 | |||||||||||
应答数据包 | ||||||||||||
应答代码 | 负载数据 | |||||||||||
<OK> | 左轮电机累计里程(s32) | 右轮电机累计里程(s32) |
数据域 | 类型 | 描述 |
---|---|---|
左轮电机累计里程 | s32 | 外部系统的左轮电机累计运动里程,单位为mm。 |
右轮电机累计里程 | s32 | 外部系统的右轮电机累计运动里程,单位为mm。 |
...
Note |
---|
...
|
...
| |
该命令支持的轮组类型为两轮差动。。 |
...
外部系统距离传感器数据获取请求(GET_BASE_SENSOR_
...
DATA)
SLAMWARE Core室内定位导航模块正常工作后将不断轮询获取外部系统的距离传感器数据,外部系统应当在规定的时间内给予答复。
如果在系统参数获取请求时外部系统告知没有配置距离传感器,SLAMWARE Core将不会发送此请求。
请求数据包 | ||||||
---|---|---|---|---|---|---|
命令代码 | 负载数据 | |||||
0x32 | 无 | |||||
应答数据包 | ||||||
应答代码 | 负载数据 | |||||
<OK> | 距离传感器数据(u32[16]) |
数据域 | 类型 | 描述 |
---|---|---|
距离传感器数据 | u32[16] | 外部系统的距离传感器数据,结果为距离传感器到障碍物的距离信息,单位为mm,Q16定点小数,最多支持16组距离传感器。 |
外部系统触碰传感器数据获取请求(GET_BASE_
...
BUMPER_DATA)
SLAMWARE CORE室内定位导航模块正常工作后将不断轮询获取外部系统的距离传感器数据,外部系统应当在规定的时间内给予答复。Core室内定位导航模块正常工作后将不断轮询获取外部系统的触碰传感器数据,外部系统应当在规定的时间内给予答复。
如果在系统参数获取请求时外部系统告知没有配置距离传感器,SLAMWARE CORE将不会发送此请求。 如果在系统参数获取请求时外部系统告知没有配置触碰传感器,SLAMWARE Core将不会发送此请求。
...
请求数据包 |
---|
0x32命令代码
- 应答数据包:
...
命令代码 | 负载数据 | |||||
0x33 | 无 | |||||
应答数据包 | ||||||
---|---|---|---|---|---|---|
应答代码 | 负载数据 | |||||
<OK> | 触碰传感器数据(u8) |
数据域 | 类型 | 描述 |
---|
距离传感器数据
Wiki Markup |
---|
u32\[16\] |
外部系统的距离传感器数据,结果为距离传感器到障碍物的距离信息,单位为mm,Q16定点小数,最多支持16组距离传感器。
距离传感器包含红外测距传感器和超声波传感器。
注:当使用0x20底盘配置指令时,最多可支持8组距离传感器,此时最多可获取8组距离传感器数据;当使用0x21 Binary Config指令配置时,最多可支持16组距离传感器,此时最多可获取16组距离传感器数据。
...
触碰传感器数据 | u8 | 表示外部系统的触碰传感器数据。自最低位开始,每个bit代表一个碰撞传感器的状态,顺序与配置中的顺序相同。指定位为1时,表示该碰撞传感器未触发,指定位为0时,表示该碰撞传感器触发。最多支持8组触碰传感器 |
外部系统自动回充数据获取(GET_AUTO_HOME_DATA)
SLAMWARE Core室内定位导航模块在试图进行自动回充时,会通过该指令获取自动回充相关的信息。当前主要用于获得对接灯塔Beacon信息。
请求数据包 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | |||||||||||
0x34 | 数据类型(u8) | |||||||||||
应答数据包 | ||||||||||||
应答代码 | 负载数据 | |||||||||||
<OK> | 信标数量(u8) | 接收头数量(u8) | 接收头数据(u8 |
0x34命令代码请求数据包中数据域定义如下:
SLAMWARE CORE室内定位导航模块正常工作后将不断轮询获取外部系统的触碰传感器数据,外部系统应当在规定的时间内给予答复。
如果在系统参数获取请求时外部系统告知没有配置触碰传感器,SLAMWARE CORE将不会发送此请求。
- 请求数据包:
0x33命令代码
- 应答数据包
<OK>应答代码负载数据触碰传感器数据u8
数据域 | 类型 | 描述 |
---|
数据类型 | u8 |
表示外部系统的触碰传感器数据。自最低位开始,每个bit代表一个碰撞传感器的状态,顺序与配置中的顺序相同。指定位为1时,表示该碰撞传感器未触发,指定位为0时,表示该碰撞传感器触发。最多支持8组触碰传感器
...
SLAMWARE CORE室内定位导航模块在试图进行自动回充时,会通过该指令获取自动回充相关的信息。当前主要用于获得对接灯塔Beacon信息。
- 请求数据包:
0x34命令代码负载数据数据类型u8
数据域 | 类型 | 描述 |
数据类型 | u8 | SLAMWARE CORE想要获取的自动回充的数据类型,当前支持的类型只有一种: |
...
- 应答数据包(当数据类型为0时)
Wiki Markup |
---|
<span style="color: #262626"><OK></span>应答代码负载数据<span style="color: #262626">信标数量</span>u8<span style="color: #262626">接收头数量</span>u8<span style="color: #262626">接收头数据</span>u8\[n\] |
...
数据域
...
类型
...
描述
...
信标数量
...
u8
...
外部系统充电座上的信标的数量。当前只支持3个信标时,0号信标指的是左信标,1号信标指的是主信标,2号信标指的是右信标.
...
接收头
数量
...
u8
...
外部系统机器人上接收头的数量。当前只支持3个接收头,0号接收头指的是左接收头,1号接收头指的是主接收头,2号接收头指的是右接收头
...
接收头
数据
Wiki Markup |
---|
u8\[n\] |
...
Wiki Markup |
---|
Data\[1\] = (1 << 0) | (1 << 1) |
...
SLAMWARE CORE室内定位导航模块通过发送运动控制请求控制外部系统运动。外部系统需要根据请求数据包的内容准确控制系统运动才能使SLAMWARE CORE正常工作。
...
Wiki Markup |
---|
<span style="color: #262626">0x40</span>命令代码负载数据s32\[4\]<span style="color: #262626">运动速度</span> |
- 应答数据包
<OK>应答代码
...
数据域
...
类型
...
描述
...
运动速度
Wiki Markup |
---|
s32\[4\] |
...
外部系统的轮子运动速度,单位为mm/s
...
该指令用于设置外部系统运动速度。
- 请求数据包:
0x41命令代码负载数据s32X轴向速度量Y轴向速度量角速度量s32s32
- 应答数据包
<OK>应答代码负载数据X轴向位移Y轴向位移角度位移s32s32s32
数据域 | 类型 | 描述 |
X轴向速度量 | s32 | X轴向速度,Q16定点小数 |
Y轴向速度量 | s32 | Y轴向速度,Q16定点小数 |
角速度量 | s32 | 逆时针角速度,Q16定点小数 |
X轴向位移 | s32 | 外部系统整体相对于上一次应答此请求时的X轴向位移,单位为mm,Q16定点小数。 |
Y轴向位移 | s32 | 外部系统整体相对于上一次应答此请求时的Y轴向位移,单位为mm,Q16定点小数。 |
角度位移 | s32 | 外部系统整体相对于上一次应答此请求时的逆时针角度位移,单位为度,Q16定点小数。 |
...
- 根据左右轮的里程累积计算三个位移量(dx, dy, dyaw);
- 将指令中提供的速度量(vx, vy, omega)转换成左右轮的线速度(vl, vy);
- 返回第一步中的计算结果
通过里程累积计算三个位移量的方法:
变量定义:
变量名称 | 定义 | 单位 |
dl | 左轮位移,机器人向前为正 | m |
dr | 右轮位移,机器人向前为正 | m |
dx | 机器人正方向位移,机器人前方为正 | m |
dy | 机器人侧向位移,机器人左侧为正 | m |
dyaw | 机器人角位移,逆时针为正 | rad |
...
dyaw=dr-dl2R
dx=dl+dr2cos(dyaw)
dy=dl+dr2sin(dyaw)
注:R是机器人轮距半径,单位为m,下文同。
...
代码示例
base_set_velocity_request_t req = (base_set_velocity_request_t)request->payload; |
---|
根据速度量计算左右轮线速度的方法:
变量定义
变量名称 | 定义 | 单位 |
vx | 机器人正向线速度,前进方向为正 | m/s |
vy | 机器人侧向线速度,向左为正, 对于二轮差动机器人,该值为0 | m/s |
omega | 机器人角速度,逆时针为正 | rad/s |
vl | 机器人左轮线速度,机器人向前为正 | m/s |
vr | 机器人右轮线速度,机器人向前为正 | m/s |
...
vl=vx-omega*R
vr=vx+omega*R
...
base_set_velocity_request_t req = (base_set_velocity_request_t)request->payload; |
...
- 请求数据包:
0x50命令代码
- 应答数据包
...
类型
...
描述
...
外部系统命令代码
...
u8
...
外部系统的命令代码,只能是SLAMWARE CORE支持的命令代码。详情请见下表。
...
外部系统命令代码 | 命令名称 | 描述 |
0x51 | GET_INFO | 获取SLAMWARE CORE系统信息,包含软硬件版本,网络配置。 |
0x52 | RESET_WIFI | 重置SLAMWARE CORE无线网络 |
0x53 | FW_UPGRADING | 更新SLAMWARE CORE固件 |
0x80 | START_SWEEP | 开始清扫(仅针对扫地机版本) |
0x81 | STOP_SWEEP | 结束清扫(仅针对扫地机版本) |
0x82 | SPOT_SWEEP | 定点清扫(仅针对扫地机版本) |
0x90 | GET_HEALTH | 获取健康状况 |
0xA0 | MOVE_FORWARD | 向前 |
0xA1 | MOVE_BACKWARD | 向 后 |
0xA2 | TURN_LEFT | 向左 |
0xA3 | TURN_RIGHT | 向右 |
0xAF | CANCEL_ACTION | 取消上一步操作 |
0xB0 | GET_AUXILIARY_ANCHOR | 获取辅助定位传感器 |
...
SLAMWARE CORE在处理完外部系统的命令请求后会给予回应,回应请求总是与外部系统命令查询请求成对出现。
SLAMWARE CORE支持的外部系统命令代码暂未定义。
- 请求数据包:
0x5F命令代码
- 应答数据包
<OK>应答代码负载数据应答数据u8
数据域 | 类型 | 描述 |
应答数据 | u8 | 外部系统命令的应答数据,与SLAMWARE CORE命令代码相关 |
...
SLAMWARE CORE室内定位导航模块会不定期的向外部系统发送系统事件通知。外部系统可以根据系统事件通知作出相应反应。
注意,SLAMWARE CORE支持的系统事件代码可能会增减。
- 请求数据包:
0x60命令代码负载数据系统事件代码u8
- 应答数据包
<OK>应答代码
数据域 | 类型 | 描述 |
系统事件代码 | u8 | SLAMWARE CORE的系统事件代码,详见下表 |
...
系统事件代码 | 命令名称 | 描述 |
0x61 | LIDAR_CONN_FAIL | LIDAR连接失败 |
0x62 | LIDAR_RAMPUP_FAIL | LIDAR启动失败 |
0x63 | SYSTEM_UP_OK | 系统启动成功 |
0x64 | FIRMWARE_UPDATE | 系统固件升级 |
0x65 | CORE_DISCONNECT | 系统断开连接 |
0x66 | FIRMWARE_UPDATE_OK | 固件升级成功 |
0x80 | START_SWEEP | 通知外部系统清扫开始(仅针对扫地机版本) |
0x81 | END_SWEEP | 通知外部系统清扫结束(仅针对扫地机版本) |
...
SLAMWARE CORE室内定位导航模块会不定期的向外部系统发送健康管理相关的命令请求。外部系统可以根据具体的命令请求作出相应的反应。具体支持的事件代码如下:
健康管理事件代码 | 命令名称 | 描述 |
0x01 | HEALTH_GET_HEALTH | 获取外部系统健康状况 |
0x02 | HEALTH_GET_ERROR | 请求取外部系统错误的详细信息 |
0x03 | HEALTH_CLEAR_ERROR | 请求清除外部系统错误信息 |
...
HEALTH_GET_HEALTH
- 请求数据包:
0x90命令代码0x01
- 应答数据包
<OK>应答代码Health_flagError_countu8u8
数据域 | 类型 | 描述 |
Health_flag | u8 | 表示健康信息按照严重程度的分类,具体定义请参考下表 |
Error_count | u8 | 表示错误信息的数目 |
...
Error Flag
...
Bit
...
描述
...
保留
Wiki Markup |
---|
\[7:3\] |
...
保留
...
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="936dafd2-676b-47db-b721-f56883e851f0"><ac:plain-text-body><![CDATA[
...
FATAL
...
[2]
...
表示是否有FATAL。
]]></ac:plain-text-body></ac:structured-macro>
0 = Has no FATAL
1 = Has FATAL
...
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="0cbb5690-a83a-4c55-82b5-50476bf8fb28"><ac:plain-text-body><![CDATA[
...
ERROR
...
[1]
...
表示是否有ERROR。
]]></ac:plain-text-body></ac:structured-macro>
0 = Has no ERROR
1 = Has ERROR
...
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e109f90d-af22-4736-9fe2-c4a1a991a9f3"><ac:plain-text-body><![CDATA[
...
WARN
...
[0]
...
表示是否有WARN。
]]></ac:plain-text-body></ac:structured-macro>
0 = Has no WARN
1 = Has WARN
SLAMWARE Core想要获取的自动回充的数据类型,当前支持的类型只有一种: |
0x34命令代码请求数据包中数据域定义如下:
数据域 | 类型 | 描述 |
---|---|---|
信标数量 | u8 | 外部系统充电座上的信标的数量。当前只支持3个信标时,0号信标指的是左信标,1号信标指的是主信标,2号信标指的是右信标. |
接收头 | u8 | 外部系统机器人上接收头的数量。当前只支持3个接收头,0号接收头指的是左接收头,1号接收头指的是主接收头,2号接收头指的是右接收头 |
接收头 | u8[n] | 每个接收头对应一个字节,每个字节代表这个接收头能接收到的信标。 |
外部系统运动控制请求(SET_BASE_MOTOR)
SLAMWARE Core室内定位导航模块通过发送运动控制请求控制外部系统运动。外部系统需要根据请求数据包的内容准确控制系统运动才能使SLAMWARE Core正常工作。
请求数据包 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | ||||||||||
0x40 | 运动速度(s32[4]) | ||||||||||
应答数据包 | |||||||||||
应答代码 | 负载数据 | ||||||||||
<OK> | 无 |
数据域 | 类型 | 描述 |
---|---|---|
运动速度 | s32[4] | 外部系统的轮子运动速度,单位为mm/s |
外部系统设置速度及获取Deadreckon数据请求(SET_V_AND_GET_DEADRECKON)
该指令用于设置外部系统运动速度。
请求数据包 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | |||||||||||
0x41 | X轴向速度量(s32) | Y轴向速度量(s32) | 角速度量(s32) | |||||||||
应答数据包 | ||||||||||||
应答代码 | 负载数据 | |||||||||||
<OK> | X轴向位移(s32) | Y轴向位移(s32) | 角度位移(s32) |
数据域 | 类型 | 描述 |
---|---|---|
X轴向速度量 | s32 | X轴向速度,Q16定点小数 |
Y轴向速度量 | s32 | Y轴向速度,Q16定点小数 |
角速度量 | s32 | 逆时针角速度,Q16定点小数 |
X轴向位移 | s32 | 外部系统整体相对于上一次应答此请求时的X轴向位移,单位为mm,Q16定点小数。 |
Y轴向位移 | s32 | 外部系统整体相对于上一次应答此请求时的Y轴向位移,单位为mm,Q16定点小数。 |
角度位移 | s32 | 外部系统整体相对于上一次应答此请求时的逆时针角度位移,单位为度,Q16定点小数。 |
Note | ||
---|---|---|
| ||
此处的坐标轴是以机器人自身为中心的右手坐标系, 机器人正前方为x轴。 |
示例
以两轮差动机器人为例,当机器人收到该指令时,应当:
- 根据左右轮的里程累积计算三个位移量(dx, dy, dyaw);
- 将指令中提供的速度量(vx, vy, omega)转换成左右轮的线速度(vl, vy);
- 返回第一步中的计算结果
通过里程累积计算三个位移量的方法:
变量定义:
变量名称
定义
单位
dl
左轮位移,机器人向前为正
m
dr
右轮位移,机器人向前为正
m
dx
机器人正方向位移,机器人前方为正
m
dy
机器人侧向位移,机器人左侧为正
m
dyaw
机器人角位移,逆时针为正
rad
- 计算公式:
dyaw=(dr-dl)/2R
dx=cos(dyaw)×(dl+dr)/2
dy=sin(dyaw)×(dl+dr)/2
Note title 注意 R是机器人轮距半径,单位为m,下文同。
- 示例代码
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
float d_yaw = (d_dist_r_mm_f - d_dist_l_mm_f)/2.0f/robot_radius_mm;
float displacement = (d_dist_l_mm_f + d_dist_r_mm_f)/2.0f;
float dx = cos(d_yaw)*displacement;
float dy = sin(d_yaw)*displacement;
ans_pkt->base_dx_mm_q16 = (_32)(dx*(1<<16))
ans_pkt->base_dy_mm_q16 = (_32)(dy*(1<<16))
ans_pkt->base_dtheta_degree_q16 = (_32)(d_yaw/M_PIF*180*(1<<16)) |
根据速度量计算左右轮线速度的方法:
变量定义
变量名称
定义
单位
vx
机器人正向线速度,前进方向为正
m/s
vy
机器人侧向线速度,向左为正, 对于二轮差动机器人,该值为0
m/s
omega
机器人角速度,逆时针为正
rad/s
vl
机器人左轮线速度,机器人向前为正
m/s
vr
机器人右轮线速度,机器人向前为正
m/s
- 计算公式(以二轮差动模型为例)
vl=vx-omega*R
vr=vx+omega*R 示例代码
Code Block language cpp title base_set_velocity_request linenumbers true base_set_velocity_request_t *req = (base_set_velocity_request_t*)request->payload; float speed_l_mm = (float)req->velocity_x_q16 * 1000.0 / (1 << 16); float speed_r_mm = speed_l_mm; float line_speed_mm = (float)req->angular_velocity_q16 / (1 << 16) * robot_radius_mm; speed_l_mm -= line_speed_mm; speed_r_mm += line_speed_mm;
外部系统命令查询请求(POLL_BASE_CMD)
SLAMWARE Core室内定位导航模块可接受外部系统的命令,但由于单向通讯的模式,外部系统只能在SLAMWARE Core发送外部系统控制命令查询请求的时候才可以发送控制命令。SLAMWARE Core会定期向外部系统查询控制命令。对于外部系统希望SLAMWARE Core尽快响应的控制命令可以通过#CMD信号通知SLAMWARE Core尽快发送外部系统控制命令查询请求。在#BUSY信号置高电平的时候表示SLAMWARE Core正处于忙碌状态,无法响应外部系统的控制命令。但外部系统仍需及时响应SLAMWARE Core发送的请求命令。请注意,SLAMWARE Core不会应答外部系统的命令,当SLAMWARE Core接受外部系统的命令后,外部系统可以检测到#BUSY信号的脉冲。外部系统必须在应答外部系统命令查询请求后拉低#CMD信号,否则系统将会工作在未知状态。
请求数据包 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | ||||||||||
0x50 | 无 | ||||||||||
应答数据包 | |||||||||||
应答代码 | 负载数据 | ||||||||||
<OK> | 外部系统命令代码(u8) |
数据域 | 类型 | 描述 |
---|---|---|
外部系统命令代码 | u8 | 外部系统的命令代码,只能是SLAMWARE CORE支持的命令代码。详情请见下表。 |
外部系统命令代码 | 命令名称 | 描述 |
---|---|---|
0x51 | GET_INFO | 获取SLAMWARE CORE系统信息,包含软硬件版本,网络配置。 |
0x52 | RESET_WIFI | 重置SLAMWARE CORE无线网络 |
0x53 | FW_UPGRADING | 更新SLAMWARE CORE固件 |
0x80 | START_SWEEP | 开始清扫(仅针对扫地机版本) |
0x81 | STOP_SWEEP | 结束清扫(仅针对扫地机版本) |
0x82 | SPOT_SWEEP | 定点清扫(仅针对扫地机版本) |
0x90 | GET_HEALTH | 获取健康状况 |
0xA0 | MOVE_FORWARD | 向前 |
0xA1 | MOVE_BACKWARD | 向 后 |
0xA2 | TURN_LEFT | 向左 |
0xA3 | TURN_RIGHT | 向右 |
0xAF | CANCEL_ACTION | 取消上一步操作 |
0xB0 | GET_AUXILIARY_ANCHOR | 获取辅助定位传感器 |
外部系统命令回应请求(POLL_BASE_ANS_CMD)
SLAMWARE Core在处理完外部系统的命令请求后会给予回应,回应请求总是与外部系统命令查询请求成对出现。
SLAMWARE Core支持的外部系统命令代码暂未定义。
请求数据包 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | ||||||||||
0x5F | 无 | ||||||||||
应答数据包 | |||||||||||
应答代码 | 负载数据 | ||||||||||
<OK> | 应答数据(u8) |
数据域 | 类型 | 描述 |
---|---|---|
应答数据 | u8 | 外部系统命令的应答数据,与SLAMWARE CORE命令代码相关 |
SLAMWARE CORE系统事件通知命令(SEND_EVENT)
SLAMWARE CORE室内定位导航模块会不定期的向外部系统发送系统事件通知。外部系统可以根据系统事件通知作出相应反应。
注意,SLAMWARE CORE支持的系统事件代码可能会增减。
请求数据包 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | ||||||||||
0x60 | 系统事件代码(u8) | ||||||||||
应答数据包 | |||||||||||
应答代码 | 负载数据 | ||||||||||
<OK> | 无 |
数据域 | 类型 | 描述 |
---|---|---|
系统事件代码 | u8 | SLAMWARE CORE的系统事件代码,详见下表 |
目前支持的系统事件代码有:
系统事件代码 | 命令名称 | 描述 |
---|---|---|
0x61 | LIDAR_CONN_FAIL | LIDAR连接失败 |
0x62 | LIDAR_RAMPUP_FAIL | LIDAR启动失败 |
0x63 | SYSTEM_UP_OK | 系统启动成功 |
0x64 | FIRMWARE_UPDATE | 系统固件升级 |
0x65 | CORE_DISCONNECT | 系统断开连接 |
0x66 | FIRMWARE_UPDATE_OK | 固件升级成功 |
0x80 | START_SWEEP | 通知外部系统清扫开始(仅针对扫地机版本) |
0x81 | END_SWEEP | 通知外部系统清扫结束(仅针对扫地机版本) |
外部系统健康管理命令请求(HEALTH_MGMT)
SLAMWARE CORE室内定位导航模块会不定期的向外部系统发送健康管理相关的命令请求。外部系统可以根据具体的命令请求作出相应的反应。具体支持的事件代码如下:
健康管理事件代码 | 命令名称 | 描述 |
---|---|---|
0x01 | HEALTH_GET_HEALTH | 获取外部系统健康状况 |
0x02 | HEALTH_GET_ERROR | 请求取外部系统错误的详细信息 |
0x03 | HEALTH_CLEAR_ERROR | 请求清除外部系统错误信息 |
HEALTH_GET_HEALTH
请求数据包 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | |||||||||||
0x90 | 0x10 | |||||||||||
应答数据包 | ||||||||||||
应答代码 | 负载数据 | |||||||||||
<OK> | Health_flag(u8) | Error_count(u8) |
数据域 | 类型 | 描述 |
---|---|---|
Health_flag | u8 | 表示健康信息按照严重程度的分类,具体定义请参考下表 |
Error_count | u8 | 表示错误信息的数目 |
...
HEALTH_GET_ERROR
- 请求数据包:
0x90命令代码0x02error idu8
...
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
Error Code | Bit | 描述 | Code | Bit | 描述 | |||||||||
错误等级 |
| 表示错误的严重程度。 | ||||||||||||
错误组件 |
| 表示发生错误的具体位置或组件。 | ||||||||||||
具体信息错误等级 |
| 表示错误的严重程度。 表示具体的错误信息。 0x01 = warn; | ||||||||||||
具体组件 | 错误组件 |
| 表示发生错误的具体位置或组件。 | 具体信息 |
Wiki Markup |
---|
\[15:8\] |
表示具体的错误信息。
具体组件
Wiki Markup |
---|
\[7:0\] |
表示具体某个组件有错误。
...
表示具体某个组件有错误。 |
Anchor | ||||
---|---|---|---|---|
|
Sample:
// sensor errors |
HEALTH_
...
CLEAR_ERROR
...
- 请求数据包:
0x90命令代码0x03error codeu32
- 应答数据包
<OK>应答代码
Anchor | ||||
---|---|---|---|---|
|
Anchor | ||||
---|---|---|---|---|
|
SLAMWARE CORE室内定位导航模块会不定期的向外部系统发送获取辅助定位数据相关的命令请求。
- 请求数据包:
0x35命令代码
- 应答数据包
Wiki Markup |
---|
<span style="color: #262626"><OK></span>应答代码负载数据<span style="color: #262626">Flag</span><span style="color: #262626">Anchors</span>u8u8\[*\] |
数据域 | 类型 | 描述 | ||
Flag | u8 | 具体请参考图表4-28。 | ||
Anchors |
| 表示多个AnchorInfo的数据域。具体格式请参考图表4-29。 |
Anchor | ||||
---|---|---|---|---|
|
Flag | Bit | 描述 | ||
辅助传感器类型 |
| 表示辅助传感器的类型。 | ||
辅助传感器标准差域 |
| 表示辅助数据是否支持标准差测量。 | ||
辅助传感器锚数量 |
| 表示辅助传感器锚数量。 |
Anchor | ||||
---|---|---|---|---|
|
Wiki Markup |
---|
AnchorInfo\[0\] |
Wiki Markup |
---|
AnchorInfo\[1\] |
HEALTH_CLEAR_ERROR
- 请求数据包:
0x90命令代码0x03error codeu32
- 应答数据包
<OK>应答代码
...
SLAMWARE CORE室内定位导航模块会不定期的向外部系统发送获取辅助定位数据相关的命令请求。
- 请求数据包:
0x35命令代码
- 应答数据包
Wiki Markup |
---|
<span style="color: #262626"><OK></span>应答代码负载数据<span style="color: #262626">Flag</span><span style="color: #262626">Anchors</span>u8u8\[*\] |
...
数据域
...
类型
...
描述
...
Flag
...
u8
...
具体请参考图表4-28。
...
Wiki Markup |
---|
...
AnchorInfo\[ |
...
n\] |
...
第0个AnchorInfo第1个AnchorInfo第n个AnchorInfo注:n 为辅助传感器数量。
Anchor | ||||
---|---|---|---|---|
|
…
FlagAnchorInfo数据域 | Bit类型 | 描述 | |||||||||||
id | u16 | 辅助传感器类型 |
Wiki Markup |
---|
\[7:5\] |
表示辅助传感器的类型。
0x00 = UWB;
辅助传感器标准差域
Wiki Markup |
---|
\[4\] |
表示辅助数据是否支持标准差测量。
0 = 不支持;
1 = 支持;
辅助传感器锚数量
Wiki Markup |
---|
\[15:8\] |
表示辅助传感器锚数量。
...
Wiki Markup |
---|
AnchorInfo\[0\] |
Wiki Markup |
---|
AnchorInfo\[1\] |
Wiki Markup |
---|
AnchorInfo\[n\] |
...
表示Anchor的id。 | ||
distance | u16 | 表示当前Anchor的距离单位为毫米。 |
Max error | u8 | 表示距离的标准差。单位为毫米。(如果传感器不支持标准差测量,则没有此数据域。) |
u8[n]
base_set_velocity_request_t *req = (base_set_velocity_request_t*)request->payload;
float speed_l_mm = (float)req->velocity_x_q16 * 1000.0 / (1 << 16);
float speed_r_mm = speed_l_mm;
float line_speed_mm = (float)req->angular_velocity_q16 / (1 << 16) * robot_radius_mm;
speed_l_mm -= line_speed_mm;
speed_r_mm += line_speed_mm;
…
...
AnchorInfo数据域
...
类型
...
描述
...
id
...
u16
...
表示Anchor的id。
...
distance
...
u16
...
表示当前Anchor的距离单位为毫米。
...
Max error
...
u8
...
表示距离的标准差。单位为毫米。(如果传感器不支持标准差测量,则没有此数据域。)
u8[n]