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