Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

类型编号

描述

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

外部系统的电池状态,该变量为一个位图。
从低位到高位分别是:是否处于充电状态、是否连接了外部电源、是否连接了充电座。
当机器人通过电缆连接了充电器,且电池处于充电状态时,该状态应为3,即二进制00000011;当机器人正在通过充电座进行充电,该状态应为5,即二进制00000101

...

...

外部系统轮组状态获取请求(GET_BASE_MOTOR_DATA)

...

SLAMWARE CORE室内定位导航模块正常工作后将不断轮询获取外部系统的轮组状态,外部系统应当在规定的时间内给予答复。否则SLAMWARE CORE将认为外部系统断开连接。

  • 请求数据包:

0x31命令代码

  • 应答数据包:

...

SLAMWARE Core室内定位导航模块正常工作后将不断轮询获取外部系统的轮组状态,外部系统应当在规定的时间内给予答复。否则SLAMWARE Core将认为外部系统断开连接。

请求数据包
命令代码负载数据
0x31

应答数据包
应答代码负载数据
<OK>左轮电机累计里程(s32)右轮电机累计里程(s32)


数据域

类型

描述

左轮电机累计里程

s32

外部系统的左轮电机累计运动里程,单位为mm。

右轮电机累计里程

s32

外部系统的右轮电机累计运动里程,单位为mm。

...


Note

...

title

...

注意

该命令支持的轮组类型为两轮差动。。

...

外部系统距离传感器数据获取请求(GET_BASE_SENSOR_

...

DATA)


SLAMWARE Core室内定位导航模块正常工作后将不断轮询获取外部系统的距离传感器数据,外部系统应当在规定的时间内给予答复。
如果在系统参数获取请求时外部系统告知没有配置距离传感器,SLAMWARE Core将不会发送此请求。

请求数据包
命令代码负载数据
0x32

应答数据包
应答代码负载数据
<OK>距离传感器数据(u32[16])


数据域

类型

描述

距离传感器数据


u32[16]

外部系统的距离传感器数据,结果为距离传感器到障碍物的距离信息,单位为mm,Q16定点小数,最多支持16组距离传感器。
距离传感器包含红外测距传感器和超声波传感器。
注:当使用0x20底盘配置指令时,最多可支持8组距离传感器,此时最多可获取8组距离传感器数据;当使用0x21 Binary Config指令配置时,最多可支持16组距离传感器,此时最多可获取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

Anchor_Toc446332099_Toc446332099

数据域

类型

描述

触碰传感器数据

数据类型

u8

表示外部系统的触碰传感器数据。自最低位开始,每个bit代表一个碰撞传感器的状态,顺序与配置中的顺序相同。指定位为1时,表示该碰撞传感器未触发,指定位为0时,表示该碰撞传感器触发。最多支持8组触碰传感器

...

SLAMWARE CORE室内定位导航模块在试图进行自动回充时,会通过该指令获取自动回充相关的信息。当前主要用于获得对接灯塔Beacon信息。

  • 请求数据包:

0x34命令代码负载数据数据类型u8

数据域

类型

描述

数据类型

u8

SLAMWARE CORE想要获取的自动回充的数据类型,当前支持的类型只有一种:
0 – 获取自动回充灯塔信息
如果这个值不为0,请使用not support错误信息回复该请求(0x8000)

...

  • 应答数据包(当数据类型为0时)
Wiki Markup
<span style="color: #262626">&lt;OK&gt;</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定点小数。

...

  1. 根据左右轮的里程累积计算三个位移量(dx, dy, dyaw);
  2. 将指令中提供的速度量(vx, vy, omega)转换成左右轮的线速度(vl, vy);
  3. 返回第一步中的计算结果

通过里程累积计算三个位移量的方法:

变量定义:

变量名称

定义

单位

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;
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;

根据速度量计算左右轮线速度的方法:

变量定义

变量名称

定义

单位

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;
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;

...

  • 请求数据包:

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想要获取的自动回充的数据类型,当前支持的类型只有一种:
0 – 获取自动回充灯塔信息
如果这个值不为0,请使用not support错误信息回复该请求(0x8000)

0x34命令代码请求数据包中数据域定义如下:

数据域

类型

描述

信标数量

u8

外部系统充电座上的信标的数量。当前只支持3个信标时,0号信标指的是左信标,1号信标指的是主信标,2号信标指的是右信标.

接收头
数量

u8

外部系统机器人上接收头的数量。当前只支持3个接收头,0号接收头指的是左接收头,1号接收头指的是主接收头,2号接收头指的是右接收头

接收头
数据

u8[n]

每个接收头对应一个字节,每个字节代表这个接收头能接收到的信标。
例如1号接收头能接收到0号和1号信标的数据,那么 Data[1]=(1≤0)(1≤1)

外部系统运动控制请求(SET_BASE_MOTOR)

SLAMWARE Core室内定位导航模块通过发送运动控制请求控制外部系统运动。外部系统需要根据请求数据包的内容准确控制系统运动才能使SLAMWARE Core正常工作。

请求数据包
命令代码负载数据
0x40

运动速度(s32[4])

应答数据包
应答代码负载数据
<OK>


数据域

类型

描述

运动速度

s32[4]

外部系统的轮子运动速度,单位为mm/s

外部系统设置速度及获取Deadreckon数据请求(SET_V_AND_GET_DEADRECKON)

该指令用于设置外部系统运动速度。

请求数据包
命令代码负载数据
0x41X轴向速度量(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
title注意

此处的坐标轴是以机器人自身为中心的右手坐标系, 机器人正前方为x轴。

示例

以两轮差动机器人为例,当机器人收到该指令时,应当:

  1. 根据左右轮的里程累积计算三个位移量(dx, dy, dyaw);
  2. 将指令中提供的速度量(vx, vy, omega)转换成左右轮的线速度(vl, vy);
  3. 返回第一步中的计算结果
通过里程累积计算三个位移量的方法:
  1. 变量定义:

    变量名称

    定义

    单位

    dl

    左轮位移,机器人向前为正

    m

    dr

    右轮位移,机器人向前为正

    m

    dx

    机器人正方向位移,机器人前方为正

    m

    dy

    机器人侧向位移,机器人左侧为正

    m

    dyaw

    机器人角位移,逆时针为正

    rad


  2. 计算公式:

    dyaw=(dr-dl)/2R

    dx=cos(dyaw)×(dl+dr)/2

    dy=sin(dyaw)×(dl+dr)/2

    Note
    title注意

    R是机器人轮距半径,单位为m,下文同。


  3. 示例代码
Code Block
languagecpp
titlebase_set_velocity_request
linenumberstrue
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))
根据速度量计算左右轮线速度的方法:
  1. 变量定义

    变量名称

    定义

    单位

    vx

    机器人正向线速度,前进方向为正

    m/s

    vy

    机器人侧向线速度,向左为正, 对于二轮差动机器人,该值为0

    m/s

    omega

    机器人角速度,逆时针为正

    rad/s

    vl

    机器人左轮线速度,机器人向前为正

    m/s

    vr

    机器人右轮线速度,机器人向前为正

    m/s


  2. 计算公式(以二轮差动模型为例)
    vl=vx-omega*R
    vr=vx+omega*R
  3. 示例代码

    Code Block
    languagecpp
    titlebase_set_velocity_request
    linenumberstrue
    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

请求数据包
命令代码负载数据
0x900x10
应答数据包
应答代码负载数据
<OK>Health_flag(u8)Error_count(u8)


数据域

类型

描述

Health_flag

u8

表示健康信息按照严重程度的分类,具体定义请参考下表

Error_count

u8

表示错误信息的数目

...








HEALTH_GET_ERROR


  • 请求数据包:


0x90命令代码0x02error idu8

...

Anchor
_Toc465950256
_Toc465950256
Anchor
OLE_LINK10
OLE_LINK10
图表4-25 HEALTH_GET_ERROR 命令数据域描述


Error Code

Bit

描述

Code

Bit

描述

错误等级


Wiki Markup
\[31:24\]


表示错误的严重程度。
0x01 = warn;
0x02 = error;
0x03 = fatal

错误组件


Wiki Markup
\[23:16\]


表示发生错误的具体位置或组件。
0 = USER;
1 = SYSTEM;
2 = POWER;
3 = MOTION;
4 = SENSOR

具体信息错误等级


Wiki Markup
\[3115:248\]


表示错误的严重程度。 表示具体的错误信息。 0x01 = warn;
0x02 = error;
0x03 = fatal

具体组件

错误组件


Wiki Markup
\[237:160\]

表示发生错误的具体位置或组件。
0 = USER;
1 = SYSTEM;
2 = POWER;
3 = MOTION;
4 = SENSOR

具体信息

Wiki Markup
\[15:8\]

表示具体的错误信息。

具体组件

Wiki Markup
\[7:0\]

表示具体某个组件有错误。

...


表示具体某个组件有错误。


Anchor
_Toc465950257
_Toc465950257
图表4-26 HEALTH_GET_ERROR 命令中返回数据error_code定义
Sample:


// sensor errors
#define BASE_SENSOR_FATAL_CONTROLLER_DOWN(SLAMWARECORE_HEALTH_ERROR_FATAL | BASE_COMPONENT_SENSOR | 0x0000u)
#define BASE_SENSOR_WARN_BUMPER_DOWN (SLAMWARECORE_HEALTH_ERROR_WARN | BASE_COMPONENT_SENSOR | 0x0100u)
#define BASE_SENSOR_ERROR_BUMPER_DOWN (SLAMWARECORE_HEALTH_ERROR_ERROR | BASE_COMPONENT_SENSOR | 0x0100u)
#define BASE_SENSOR_FATAL_BUMPER_DOWN (SLAMWARECORE_HEALTH_ERROR_FATAL | BASE_COMPONENT_SENSOR | 0x0100u)
#define BASE_SENSOR_WARN_CLIFF_DOWN (SLAMWARECORE_HEALTH_ERROR_WARN | BASE_COMPONENT_SENSOR | 0x0200u)
#define BASE_SENSOR_ERROR_CLIFF_DOWN (SLAMWARECORE_HEALTH_ERROR_ERROR | BASE_COMPONENT_SENSOR | 0x0200u) // sensor errors
#define BASE_SENSOR_FATAL_CONTROLLERCLIFF_DOWN (SLAMWARECORE_HEALTH_ERROR_FATAL | BASE_COMPONENT_SENSOR | 0x0000u0x0200u)
#define BASE_SENSOR_WARN_BUMPERSONAR_DOWN (SLAMWARECORE_HEALTH_ERROR_WARN | BASE_COMPONENT_SENSOR | 0x0100u0x0300u)#define BASE


HEALTH_

...

CLEAR_ERROR

...


  • 请求数据包:


0x90命令代码0x03error codeu32


  • 应答数据包


<OK>应答代码


Anchor
_外部系统辅助定位数据获取请求(GET_AUXILIARY_ANCHOR
_外部系统辅助定位数据获取请求(GET_AUXILIARY_ANCHOR
Anchor
_Toc465950209
_Toc465950209
外部系统辅助定位数据获取请求(GET_AUXILIARY_ANCHOR)


SLAMWARE CORE室内定位导航模块会不定期的向外部系统发送获取辅助定位数据相关的命令请求。


  • 请求数据包:


0x35命令代码


  • 应答数据包


Wiki Markup
<span style="color: #262626">&lt;OK&gt;</span>应答代码负载数据<span style="color: #262626">Flag</span><span style="color: #262626">Anchors</span>u8u8\[*\]


数据域

类型

描述

Flag

u8

具体请参考图表4-28。

Anchors


Wiki Markup
u8\[*\]


表示多个AnchorInfo的数据域。具体格式请参考图表4-29。


Anchor
_Toc465950258
_Toc465950258
图表4-27 GET_AUXILIARY_ANCHOR命令数据域描述


Flag

Bit

描述

辅助传感器类型


Wiki Markup
\[7:5\]


表示辅助传感器的类型。
0x00 = UWB;

辅助传感器标准差域


Wiki Markup
\[4\]


表示辅助数据是否支持标准差测量。
0 = 不支持;
1 = 支持;

辅助传感器锚数量


Wiki Markup
\[15:8\]


表示辅助传感器锚数量。


Anchor
_Toc465950259
_Toc465950259
图表4-28 GET_AUXILIARY_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">&lt;OK&gt;</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
_Toc465950258Toc465950260
_Toc465950258Toc465950260
图表4-27 29 GET_AUXILIARY_ANCHOR命令数据域描述ANCHOR命令中AnchorInfo的数据格式



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]