...
Table of Contents | ||||||
---|---|---|---|---|---|---|
|
...
简介
SLAMWARE Core模块与外部系统通过Control Bus低速总线连接。通过Control Bus总线协议,SLAMWARE Core可以获取外部系统的状态参数,例如外部系统的电池电量信息,是否在充电状态,外部系统的电机转速,传感器状态等信息。同时,SLAMWARE Core也通过Control Bus总线协议控制外部系统的电机运动,从而实现完整的室内定位导航功能。
Control Bus总线协议是运行在串口上的,波特率为115200bps,外部系统必须实现此总线协议才可以使SLAMWARE Core正常工作。
SLAMWARE Core Control Bus通讯协议使用的是Inter-chip通讯协议的扩展模式。Inter-chip通讯协议是SLAMTEC专门为底层电子系统,诸如微控制器之间、微控制器与宿主系统、微控制器与设备之间相互通讯而设计的协议。它以数据包为单位在通讯媒介上传递数据,通讯包中包含了数据校验机制以及帧同步机制,可以实现可靠的通讯链路。目前该协议广泛用于SLAMTEC的机器人系统、传感器和模块设备中,并可在USART、USB、I2C、TCP以太网中使用。
...
该字段用于表示本数据包携带的数据长度信息。其定义为Payload字段和CMD字段长度的总和,即:
Len=sizeof(Payload[n])+1 |
由于Len字段为一个字节,因此当只有Len字段出现时,当前的数据包只能携带至多254字节的Payload数据。
...
数据域 | 类型 | 描述 |
---|---|---|
数据类型 | u8 | SLAMWARE Core想要获取的自动回充的数据类型,当前支持的类型只有一种: |
0x34命令代码请求数据包中数据域定义如下:
数据域 | 类型 | 描述 |
---|---|---|
信标数量 | u8 | 外部系统充电座上的信标的数量。当前只支持3个信标时,0号信标指的是左信标,1号信标指的是主信标,2号信标指的是右信标. |
接收头 | u8 | 外部系统机器人上接收头的数量。当前只支持3个接收头,0号接收头指的是左接收头,1号接收头指的是主接收头,2号接收头指的是右接收头 |
接收头 | u8[n] | 每个接收头对应一个字节,每个字节代表这个接收头能接收到的信标。 |
外部系统运动控制请求(SET_BASE_MOTOR)
...
变量定义:
变量名称
定义
单位
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)) |
...
HEALTH_CLEAR_ERROR
请求数据包 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | |||||||||||
0x90 | 0x03 | error code(u32) | ||||||||||
应答数据包 | ||||||||||||
应答代码 | 负载数据 | |||||||||||
<OK> | 无 |
外部系统辅助定位数据获取请求(GET_AUXILIARY_ANCHOR)
...
请求数据包 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
命令代码 | 负载数据 | |||||||||||
0x35 | 无 | |||||||||||
应答数据包 | ||||||||||||
应答代码 | 负载数据 | |||||||||||
<OK> | Flag(u8) | Anchors(u8[*]) |
数据域 | 类型 | 描述 |
---|---|---|
Flag | u8 | 具体请参考后附表格说明。 |
Anchors | u8[*] | 表示多个AnchorInfo的数据域。具体格式请参考后附表格说明。 |
Flag | Bit | 描述 |
---|---|---|
辅助传感器类型 | [7:5] | 表示辅助传感器的类型。 |
辅助传感器标准差域 | [4] | 表示辅助数据是否支持标准差测量。 |
辅助传感器锚数量 | [15:8] | 表示辅助传感器锚数量。 |
...