Uart_Demo

UART的接口为GH1.0的5pin,从螺丝孔那里开始从左到右分别是GND、TRIG、TX、RX、5V。

../_images/image_YcAJ7_52sA.png

如果是单纯串口通信的话就是接GND、TX、RX即可,需要注意的是串口电平是3.3V的如果接了5V会把串口烧掉。

Demo代码地址:Hessian-matrix/mini_serial_demo: serial demo for baton_mini

一.数据协议

串口波特率:115200

1.系统控制帧

单帧共34byte

帧头 控制位 algo_type 保留位 和校验位 帧尾
0x67 0x28 控制系统运行状态的指令 切换stereo3/stereo4算法 保留位,保持全0 累加和(不包含帧头帧尾校验位) 0x09 0x0d
2byte 1byte 1byte 27byte 1byte 2byte

控制位:

  • 0x01 启动算法程序

  • 0x02 停止算法程序

  • 0x03 重启算法程序

algo_type:

  • 0x00: 选择stereo3算法、

  • 0x01: 选择stereo4算法

校验和: 计算校验和时从第3byte的控制位开始计算,一直累加到保留位的最后一位为止,一共要计算29bit

unsigned char check = 0;
for(int i = 2;i < 31;i++){
    check += receiveBuffer[i];
}

以下是启动stereo3/stereo4的完整十六进制数据,可在串口工具中以十六进制发送:

stereo3

  • 启动:

    67 28 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 09 0D
    
  • 停止:

    67 28 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 09 0D
    
  • 重启:

    67 28 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 09 0D
    

stereo4

  • 启动:

    67 28 01 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 09 0D
    
  • 停止:

    67 28 02 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 09 0D
    
  • 重启:

    67 28 03 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 09 0D
    

2.姿态输出帧

单帧共61byte

帧头 frame_id pose 四元数 线速度 角速度 校验和 帧尾
0x66 0x27 int pose的x、y、z三维坐标输出,每个分量4byte x、y、z、w四个分量,每个分量4byte lx、ly、lz三个分量,每个分量4byte ax、ay、az三个分量,每个分量4byte 数据部分(不包含帧头帧尾校验位部分)的所有数据累加和 0x08 0x0a
2byte 4byte 12byte 16byte 12byte 12byte 1byte 2byte

数据位: 数据位传输的是结构体通过内存拷贝到char数组上的方式传输,实际上就是float型数据在内存中存放的数据位,同理解析时也是通过memcpy进行内存拷贝解码。

校验和: 计算校验和的方式和系统控制帧的计算方式相同。

数据位的结构体示例:

struct pose_t{
    float px,py,pz,qx,qy,qz,qw;    //pose 和 四元素
};
struct speed_t{
    float lx,ly,lz,ax,ay,az;      //线速度 和 角速度
};
struct odom_t{
    pose_t pose;
    speed_t speed;
};

二.示例代码

#完整工程:
git clone https://github.com/Hessian-matrix/mini_serial_demo.git
#工程依赖ros-serial库,可以通过apt安装或者下载ros serial的源码
sudo apt install  ros-noetic-serial
git clone https://github.com/wjwwood/serial.git