...
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
- 应答数据包
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
...
请求数据包 |
---|
命令代码 |
负载数据 |
错误等级
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\] |
表示具体某个组件有错误。
...
0x90 | 0x02 | error 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] | 表示错误的严重程度。 |
错误组件 | [23:16] | 表示发生错误的具体位置或组件。 |
具体信息 | [15:8] | 表示具体的错误信息。 |
具体组件 | [7:0] | 表示具体某个组件有错误。 |
示例代码
Code Block | ||||
---|---|---|---|---|
| ||||
// 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>应答代码
...
请求数据包 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | |||||||||||
0x90 | 0x03 | error code(u32) | ||||||||||
应答数据包 | ||||||||||||
应答代码 | 负载数据 | |||||||||||
<OK> | 无 |
...
外部系统辅助定位数据获取请求(GET_AUXILIARY_ANCHOR)
SLAMWARE CORE室内定位导航模块会不定期的向外部系统发送获取辅助定位数据相关的命令请求。
- 请求数据包:
...
请求数据包 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | |||||||||||
0x35 | 无 | |||||||||||
应答数据包 |
...
应答代码 | 负载数据 | |||||||||||
<OK> | Flag(u8) | Anchors(u8[*]) |
数据域 | 类型 | 描述 |
---|---|---|
Flag | u8 |
具体请参考后附表格说明。 |
Anchors |
u8 |
[* |
] |
表示多个AnchorInfo的数据域。具体格式请参考后附表格说明。 |
...
Flag | Bit |
---|
Flag
描述 | |
---|---|
辅助传感器类型 |
[7:5 |
] | 表示辅助传感器的类型。 |
辅助传感器标准差域 |
[4 |
] | 表示辅助数据是否支持标准差测量。 |
辅助传感器锚数量 |
[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;
...