Versions Compared

Key

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

...

Table of Contents
maxLevel2
exclude本页内容3
stylecircle

...

简介

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想要获取的自动回充的数据类型,当前支持的类型只有一种:
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)

...

  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
languagecpptext
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))

...

HEALTH_CLEAR_ERROR

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

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

...

请求数据包
命令代码负载数据
0x35
应答数据包
应答代码负载数据
<OK>Flag(u8)Anchors(u8[*])


数据域

类型

描述

Flag

u8

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

Anchors

u8[*]

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


Flag

Bit

描述

辅助传感器类型

[7:5]


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

辅助传感器标准差域

[4]

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

辅助传感器锚数量

[15:8]

表示辅助传感器锚数量。

...