101 lines
1.9 KiB
C
101 lines
1.9 KiB
C
/*
|
|
视觉与电控通信协议
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
#define NUC_HEAD (0xFF)
|
|
#define NUC_END (0xFE)
|
|
#define NUC_ID (0x09)
|
|
#define NUC_CTRL (0x01)
|
|
|
|
#define IMU_ID (0x01)
|
|
#define CMD_ID (0x02)
|
|
|
|
|
|
/* 电控 -> 视觉 IMU数据结构体*/
|
|
typedef struct __attribute__((packed))
|
|
{
|
|
struct __attribute__((packed))
|
|
{
|
|
float x;
|
|
float y;
|
|
float z;
|
|
} gyro; /* 陀螺仪数据 */
|
|
|
|
struct __attribute__((packed))
|
|
{
|
|
float x;
|
|
float y;
|
|
float z;
|
|
} accl; /* 四元数 */
|
|
struct __attribute__((packed))
|
|
{
|
|
float q0;
|
|
float q1;
|
|
float q2;
|
|
float q3;
|
|
} quat; /* 四元数 */
|
|
|
|
} Protocol_UpDataIMU_t;
|
|
|
|
/* 电控 -> 视觉 控制数据结构体*/
|
|
typedef struct __attribute__((packed))
|
|
{
|
|
int8_t cmd; /* 控制命令 */
|
|
} Protocol_UpDataCMD_t;
|
|
|
|
/* 视觉 -> 电控 数据结构体*/
|
|
typedef struct __attribute__((packed))
|
|
{
|
|
struct __attribute__((packed))
|
|
{
|
|
float vx; /* x轴移动速度 */
|
|
float vy; /* y轴移动速度 */
|
|
float wz; /* z轴转动速度 */
|
|
} chassis_move_vec; /* 底盘移动向量 */
|
|
|
|
float distance; /* 距离(单位:米) */
|
|
|
|
float angle; /* 角度(单位:弧度) */
|
|
|
|
bool notice; /* 控制命令 */
|
|
} Protocol_DownData_t;
|
|
|
|
typedef struct __attribute__((packed))
|
|
{
|
|
uint8_t head;
|
|
uint8_t id; /* 数据包ID */
|
|
uint8_t ctrl; /* 控制字 */
|
|
Protocol_UpDataIMU_t data;
|
|
uint8_t end; /* 数据包结束符 */
|
|
|
|
} Protocol_UpPackageIMU_t;
|
|
|
|
typedef struct __attribute__((packed))
|
|
{
|
|
uint8_t head;
|
|
uint8_t id;
|
|
uint8_t ctrl;
|
|
Protocol_UpDataCMD_t data;
|
|
uint8_t end;
|
|
} Protocol_UpPackageCMD_t;
|
|
|
|
typedef struct __attribute__((packed))
|
|
{
|
|
Protocol_DownData_t data;
|
|
uint16_t crc16;
|
|
} Protocol_DownPackage_t;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|