Versions Compared

Key

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

...

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

  • 应答数据包
Wiki Markup
<OK>应答代码error_codeError_messageu32u8\[32\]

...

数据域

...

类型

...

描述

...

error_id

...

u8

...

表示第几个error,是一个小于error count的整数

...

error_code

...

u32

...

具体请参考下表。

...

error_message

Wiki Markup
u8\[32\]

...

表示具体错误信息的字符串

...


Error Flag

Bit

描述

保留

[7:3]

保留

FATAL

[2]

表示是否有FATAL。

0 = Has no FATAL

1 = Has FATAL

ERROR

[1]

表示是否有ERROR。

0 = Has no ERROR

1 = Has ERROR

WARN

[0]

表示是否有WARN。

0 = Has no WARN

1 = Has WARN

HEALTH_GET_ERROR

...

Error 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
\[15:8\]

表示具体的错误信息。

具体组件

Wiki Markup
\[7:0\]

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

...

0x900x02error id(u8)
应答数据包
应答代码负载数据
<OK>error_code(u32)error_message(u8[32])


数据域

类型

描述

error_id

u8

表示第几个error,是一个小于error count的整数.

error_code

u32

具体请参考下表。

error_message

u8[32]

表示具体错误信息的字符串.


Error Code

Bit

描述

错误等级

[31:24]

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

错误组件

[23:16]

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

具体信息

[15:8]

表示具体的错误信息。

具体组件

[7:0]

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

示例代码

Code Block
languagecpp
titleSensor Errors
// 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)

...

 
#define BASE_SENSOR_FATAL_CLIFF_DOWN		(SLAMWARECORE_HEALTH_ERROR_FATAL | BASE_COMPONENT_SENSOR | 0x0200u)

...

 
#define BASE_SENSOR_WARN_SONAR_DOWN			(SLAMWARECORE_HEALTH_ERROR_WARN  | BASE_COMPONENT_SENSOR | 0x0300u)

HEALTH_CLEAR_ERROR

  • 请求数据包:

0x90命令代码0x03error codeu32

  • 应答数据包

<OK>应答代码

...

请求数据包
命令代码负载数据
0x900x03error code(u32)
应答数据包
应答代码负载数据
<OK>

...

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

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

  • 请求数据包:

...

请求数据包
命令代码负载数据
0x35
应答数据包

...

应答代码负载数据
<OK>Flag(u8)Anchors(u8[*])


数据域

类型

描述

Flag

u8

具体请参考图表4-28。

具体请参考后附表格说明。

Anchors

Wiki Markup

u8

\

[*

\

]

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

表示多个AnchorInfo的数据域。具体格式请参考后附表格说明。

...


Flag

Bit

Flag

Bit

描述

辅助传感器类型

unmigrated-wiki-markup

\

[7:5

\

]


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

辅助传感器标准差域

unmigrated-wiki-markup

\

[4

\

]

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

辅助传感器锚数量

unmigrated-wiki-markup

\

[15:8

\

]

表示辅助传感器锚数量。


AnchorInfo[0]

...

第0个AnchorInfo

...

Wiki Markup
AnchorInfo\[0\]
Wiki Markup
AnchorInfo\[1\]
Wiki Markup
AnchorInfo\[n\]

...

注:n 为辅助传感器数量。

AnchorInfo[1]

第1个AnchorInfo
...


AnchorInfo[n]

第n个AnchorInfo


AnchorInfo数据域

类型

描述

id

u16

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

...