184 lines
2.8 KiB
C
184 lines
2.8 KiB
C
/*
|
||
|
||
该任务用于接收来自各个不同的控制方式所期望的控制指令 将其集中统一化后分发给各个模块
|
||
|
||
*/
|
||
|
||
|
||
/*
|
||
按键控制逻辑
|
||
RC模式,左按键打到最上,右按键启用,中间无状态,上下各代表模式1、模式2
|
||
雷达导航,左按键打到中间,右按键禁用
|
||
左按键打到下面,保留,未启用
|
||
|
||
*/
|
||
|
||
|
||
|
||
|
||
#ifndef _CMD_H
|
||
#define _CMD_H
|
||
#include "struct_typedef.h"
|
||
#include "device.h"
|
||
|
||
|
||
#define MID (0x09)
|
||
|
||
typedef enum{
|
||
RC,//遥控器控制,左按键上
|
||
MID_NAVI,//雷达导航
|
||
}CMD_Chassis_CtrlType_e;
|
||
|
||
typedef enum{
|
||
RELAXED,//异常模式
|
||
NORMAL,
|
||
GYRO_STAY,
|
||
|
||
RC_MODE1,
|
||
RC_NO_MODE,
|
||
RC_MODE2,
|
||
|
||
RC_MODE3,
|
||
RC_MODE4,
|
||
|
||
AUTO_NAVI
|
||
}CMD_Chassis_mode_e;
|
||
/*该结构体负责接收和解析地盘模块所需要的控制指令*/
|
||
typedef struct{
|
||
|
||
CMD_Chassis_CtrlType_e type;
|
||
|
||
CMD_Chassis_mode_e mode;
|
||
|
||
|
||
}CMD_Chassis_Ctrl_t;
|
||
|
||
|
||
|
||
/* 拨杆位置 */
|
||
typedef enum {
|
||
CMD_SW_ERR = 0,
|
||
CMD_SW_UP = 1,
|
||
CMD_SW_MID = 3,
|
||
CMD_SW_DOWN = 2,
|
||
} CMD_SwitchPos_t;
|
||
|
||
/*遥控器值,使用CMD_RcLogic函数传入CMD_t结构体*/
|
||
typedef struct {
|
||
float ch_l_x; /* 遥控器左侧摇杆横轴值,上为正 */
|
||
float ch_l_y; /* 遥控器左侧摇杆纵轴值,右为正 */
|
||
float ch_r_x; /* 遥控器右侧摇杆横轴值,上为正 */
|
||
float ch_r_y; /* 遥控器右侧摇杆纵轴值,右为正 */
|
||
|
||
float ch_res; /* 第五通道值 */
|
||
|
||
CMD_SwitchPos_t sw_r; /* 右侧拨杆位置 */
|
||
CMD_SwitchPos_t sw_l; /* 左侧拨杆位置 */
|
||
|
||
|
||
uint16_t key; /* 按键值 */
|
||
|
||
uint16_t res; /* 保留,未启用 */
|
||
|
||
} __attribute__((packed))CMD_RC_t;
|
||
|
||
typedef struct
|
||
{
|
||
fp32 Vx;
|
||
fp32 Vy;
|
||
fp32 Vw;
|
||
}OpsHopeVector_t;
|
||
|
||
|
||
typedef struct
|
||
{
|
||
fp32 x;
|
||
fp32 y;
|
||
fp32 z;
|
||
int cnt_point;//计数点
|
||
}ops_point;
|
||
|
||
|
||
typedef struct {
|
||
|
||
OpsHopeVector_t out;
|
||
|
||
int flag;//传递flag触发标志位
|
||
|
||
} CMD_ACTION_t;
|
||
|
||
typedef struct {
|
||
uint8_t status_fromnuc;
|
||
uint8_t ctrl_status; //取其中每一个二进制位用作通信
|
||
struct
|
||
{
|
||
fp32 vx;
|
||
fp32 vy;
|
||
fp32 wz;
|
||
}navi;
|
||
struct
|
||
{
|
||
fp32 posx;
|
||
fp32 posy;
|
||
fp32 posw;
|
||
}pick;
|
||
struct
|
||
{
|
||
fp32 angle;
|
||
}sick_cali;
|
||
} CMD_NUC_t;
|
||
|
||
typedef struct{
|
||
fp32 posy;
|
||
fp32 posx;
|
||
fp32 posw;
|
||
}CMD_FOR_PICK;
|
||
|
||
|
||
typedef struct {
|
||
fp32 vx;
|
||
fp32 vy;
|
||
fp32 wz;
|
||
|
||
|
||
}CMD_FOR_NAVI;
|
||
|
||
typedef struct {
|
||
uint8_t cmd_status;
|
||
uint8_t raw_status;
|
||
|
||
uint8_t status[7];
|
||
|
||
fp32 Vx;
|
||
fp32 Vy;
|
||
fp32 Vw;
|
||
|
||
fp32 poscamear;
|
||
|
||
fp32 key_ctrl_l;
|
||
fp32 key_ctrl_r;
|
||
|
||
fp32 forsick_wz;
|
||
|
||
CMD_Chassis_Ctrl_t C_cmd;
|
||
CMD_FOR_NAVI C_navi;
|
||
|
||
} CMD_t;
|
||
|
||
|
||
int8_t CMD_Init(CMD_t *cmd);
|
||
|
||
int8_t CMD_ParseRc(CMD_t *cmd,CMD_RC_t *rc);
|
||
|
||
int8_t CMD_ParseAction(CMD_t *cmd,CMD_ACTION_t *act);
|
||
|
||
int8_t CMD_ParseNuc(CMD_t *cmd,CMD_NUC_t *n);
|
||
|
||
|
||
int8_t CMD_SwitchStatus(CMD_t *cmd);
|
||
|
||
int8_t CMD_CtrlSet(CMD_t *cmd);
|
||
|
||
#endif
|
||
|