151 lines
2.6 KiB
C
151 lines
2.6 KiB
C
/*
|
|
|
|
该任务用于接收来自各个不同的控制方式所期望的控制指令 将其集中统一化后分发给各个模块
|
|
|
|
*/
|
|
|
|
#ifndef _CMD_H
|
|
#define _CMD_H
|
|
#include "struct_typedef.h"
|
|
#include "device.h"
|
|
#include "Action.h"
|
|
|
|
//遥控器状态
|
|
typedef enum{
|
|
RC_DR16,
|
|
RC_LD ,
|
|
Control_loss
|
|
}rc_type_t;
|
|
|
|
/* 拨杆位置 */
|
|
typedef enum {
|
|
CMD_SW_ERR = 0,
|
|
CMD_SW_UP = 1,
|
|
CMD_SW_MID = 3,
|
|
CMD_SW_DOWN = 2,
|
|
} CMD_SwitchPos_t;
|
|
|
|
//遥控器数据
|
|
typedef struct {
|
|
|
|
rc_type_t rc_type;
|
|
|
|
struct {
|
|
float ch_l_x; /* 遥控器左侧摇杆横轴值,上为正 */
|
|
float ch_l_y; /* 遥控器左侧摇杆纵轴值,右为正 */
|
|
float ch_r_x; /* 遥控器右侧摇杆横轴值,上为正 */
|
|
float ch_r_y; /* 遥控器右侧摇杆纵轴值,右为正 */
|
|
|
|
CMD_SwitchPos_t sw_r; /* 右侧拨杆位置 */
|
|
CMD_SwitchPos_t sw_l; /* 左侧拨杆位置 */
|
|
|
|
}__attribute__((packed))DJ;
|
|
|
|
struct {
|
|
float ch_l_x ;/* 遥控器左侧摇杆横轴值,上为正 */
|
|
float ch_l_y ;/* 遥控器左侧摇杆纵轴值,右为正 */
|
|
float ch_r_x ;/* 遥控器右侧摇杆横轴值,上为正 */
|
|
float ch_r_y ;/* 遥控器右侧摇杆纵轴值,右为正 */
|
|
|
|
CMD_SwitchPos_t key_A ;
|
|
CMD_SwitchPos_t key_C ;
|
|
CMD_SwitchPos_t key_E ;
|
|
CMD_SwitchPos_t key_F;
|
|
CMD_SwitchPos_t key_G ;
|
|
CMD_SwitchPos_t key_H ;
|
|
|
|
int16_t knob_left;//左旋钮
|
|
int16_t knob_right;//右旋钮
|
|
}__attribute__((packed))LD;
|
|
|
|
} __attribute__((packed))CMD_RC_t;
|
|
|
|
//码盘数据
|
|
typedef struct
|
|
{
|
|
fp32 Vx;
|
|
fp32 Vy;
|
|
fp32 Vw;
|
|
}OpsHopeVector_t;
|
|
|
|
typedef struct {
|
|
|
|
OpsHopeVector_t out;
|
|
|
|
} CMD_ACTION_t;
|
|
|
|
//nuc数据
|
|
typedef struct {
|
|
uint8_t status_fromnuc;
|
|
uint8_t pit_status;
|
|
struct
|
|
{
|
|
float vx;
|
|
float vy;
|
|
float wz;
|
|
}navi;
|
|
struct
|
|
{
|
|
float posx;
|
|
float posy;
|
|
float dis;
|
|
}pick;
|
|
} CMD_NUC_t;
|
|
|
|
//导航数据
|
|
typedef enum{
|
|
POS_1,
|
|
POS_2,
|
|
POS_3,
|
|
}CMD_Chassis_navi_pos;
|
|
|
|
typedef enum{
|
|
RC,
|
|
NAVI,
|
|
STOP,
|
|
}CMD_Chassis_mode;
|
|
|
|
typedef struct{
|
|
CMD_Chassis_navi_pos pos;
|
|
|
|
CMD_Chassis_mode mode;
|
|
|
|
}CMD_Chassis_Ctrl_t;
|
|
|
|
typedef struct {
|
|
float vx;
|
|
float vy;
|
|
float wz;
|
|
}CMD_FOR_NAVI;
|
|
|
|
typedef struct {
|
|
int cmd_power_on_safe; // 上电安全标志
|
|
|
|
CMD_Chassis_Ctrl_t C_cmd;
|
|
|
|
//遥控器输出值
|
|
fp32 Vx;
|
|
fp32 Vy;
|
|
fp32 Vw;
|
|
fp32 throttle;
|
|
|
|
CMD_FOR_NAVI C_navi;//导航输出值
|
|
|
|
float camera_yaw;//nuc输出值
|
|
|
|
} CMD_t;
|
|
|
|
|
|
int8_t CMD_Init(CMD_t *cmd);
|
|
|
|
int8_t CMD_ParseRc(CMD_t *cmd,CMD_RC_t *rc);
|
|
|
|
int8_t CMD_CtrlSet(CMD_t *cmd,const 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);
|
|
|
|
#endif
|
|
|