修复HT电机解算bug,待添加零位校准。修复bsp_can module id未初始化问题

This commit is contained in:
NeoZng 2022-12-14 17:15:54 +08:00
parent 4637cb8297
commit 3dbc0a7b0a
7 changed files with 33 additions and 24 deletions

View File

@ -42,7 +42,13 @@
"quaternionekf.h": "c",
"shoot.h": "c",
"lk9025.h": "c",
"ht04.h": "c"
"ht04.h": "c",
"rtc.h": "c",
"tim.h": "c",
"usb_device.h": "c",
"gpio.h": "c",
"rng.h": "c",
"cmsis_os.h": "c"
},
"C_Cpp.default.configurationProvider": "ms-vscode.makefile-tools",
"C_Cpp.intelliSenseEngineFallback": "enabled",

View File

@ -55,14 +55,14 @@
// 机器人状态
typedef enum
{
ROBOT_STOP,
ROBOT_STOP=0,
ROBOT_READY,
} Robot_Status_e;
// 应用状态
typedef enum
{
APP_OFFLINE,
APP_OFFLINE=0,
APP_ONLINE,
APP_ERROR,
} App_Status_e;
@ -74,7 +74,7 @@ typedef enum
*/
typedef enum
{
CHASSIS_ZERO_FORCE, // 电流零输入
CHASSIS_ZERO_FORCE=0, // 电流零输入
CHASSIS_ROTATE, // 小陀螺模式
CHASSIS_NO_FOLLOW, // 不跟随,允许全向平移
CHASSIS_FOLLOW_GIMBAL_YAW, // 跟随模式,底盘叠加角度环控制
@ -83,7 +83,7 @@ typedef enum
// 云台模式设置
typedef enum
{
GIMBAL_ZERO_FORCE, // 电流零输入
GIMBAL_ZERO_FORCE=0, // 电流零输入
GIMBAL_FREE_MODE, // 云台自由运动模式,即与底盘分离(底盘此时应为NO_FOLLOW)反馈值为电机total_angle;似乎可以改为全部用IMU数据?
GIMBAL_GYRO_MODE, // 云台陀螺仪反馈模式,反馈值为陀螺仪pitch,total_yaw_angle,底盘可以为小陀螺和跟随模式
} gimbal_mode_e;
@ -91,24 +91,24 @@ typedef enum
// 发射模式设置
typedef enum
{
SHOOT_ON = 0,
SHOOT_OFF,
SHOOT_OFF = 0,
SHOOT_ON,
} shoot_mode_e;
typedef enum
{
FRICTION_OFF, // 摩擦轮关闭
FRICTION_OFF=0, // 摩擦轮关闭
FRICTION_ON, // 摩擦轮开启
} friction_mode_e;
typedef enum
{
LID_CLOSE, // 弹舱盖打开
LID_OPEN, // 弹舱盖关闭
LID_OPEN=0, // 弹舱盖打开
LID_CLOSE, // 弹舱盖关闭
} lid_mode_e;
typedef enum
{
LOAD_STOP, // 停止发射
LOAD_STOP=0, // 停止发射
LOAD_REVERSE, // 反转
LOAD_1_BULLET, // 单发
LOAD_3_BULLET, // 三发

View File

@ -79,6 +79,7 @@ CANInstance *CANRegister(CAN_Init_Config_s *config)
instance[idx]->tx_id = config->tx_id; // 好像没用,可以删掉
instance[idx]->rx_id = config->rx_id;
instance[idx]->can_module_callback = config->can_module_callback;
instance[idx]->id=config->id;
CANAddFilter(instance[idx]); // 添加CAN过滤器规则
return instance[idx++]; // 返回指针

View File

@ -28,7 +28,7 @@
// PID 优化环节使能标志位
typedef enum
{
NONE = 0b00000000, // 0000 0000
PID_IMPROVE_NONE = 0b00000000, // 0000 0000
Integral_Limit = 0b00000001, // 0000 0001
Derivative_On_Measurement = 0b00000010, // 0000 0010
Trapezoid_Intergral = 0b00000100, // 0000 0100

View File

@ -52,13 +52,14 @@ typedef enum
typedef enum
{
MODE_AIM = 0,
MODE_SMALL_BUFF = 1,
MODE_BIG_BUFF = 2
VISION_MODE_AIM = 0,
VISION_MODE_SMALL_BUFF = 1,
VISION_MODE_BIG_BUFF = 2
} Work_Mode_e;
typedef enum
{
BULLET_SPEED_NONE = 0,
BIG_AMU_10 = 10,
SMALL_AMU_15 = 15,
BIG_AMU_16 = 16,

View File

@ -50,14 +50,14 @@ static void HTMotorDecode(CANInstance *motor_can)
measure->last_angle = measure->total_angle;
tmp = (uint16_t)((rxbuff[1] << 8) | rxbuff[2]);
measure->total_angle = RAD_2_ANGLE * uint_to_float(tmp, P_MAX, P_MIN, 16);
measure->total_angle = RAD_2_ANGLE * uint_to_float(tmp, P_MIN, P_MAX, 16);
tmp = (uint16_t)((rxbuff[3] << 4) | (rxbuff[4] >> 4));
measure->speed_aps = RAD_2_ANGLE * SPEED_SMOOTH_COEF * uint_to_float(tmp, V_MAX, V_MIN, 12) +
measure->speed_aps = RAD_2_ANGLE * SPEED_SMOOTH_COEF * uint_to_float(tmp, V_MIN, V_MAX, 12) +
(1 - SPEED_SMOOTH_COEF) * measure->speed_aps;
tmp = (uint16_t)(((rxbuff[4] & 0x0f) << 8) | rxbuff[5]);
measure->real_current = CURRENT_SMOOTH_COEF * uint_to_float(tmp, T_MAX, T_MIN, 12) +
measure->real_current = CURRENT_SMOOTH_COEF * uint_to_float(tmp, T_MIN, T_MAX, 12) +
(1 - CURRENT_SMOOTH_COEF) * measure->real_current;
}

View File

@ -45,7 +45,7 @@ typedef enum
/* 反馈来源设定,若设为OTHER_FEED则需要指定数据来源指针,详见Motor_Controller_s*/
typedef enum
{
MOTOR_FEED,
MOTOR_FEED=0,
OTHER_FEED,
} Feedback_Source_e;
@ -94,11 +94,12 @@ typedef struct
/* 电机类型枚举 */
typedef enum
{
GM6020 = 0,
M3508 = 1,
M2006 = 2,
LK9025 = 3,
HT04 = 4,
MOTOR_TYPE_NONE = 0,
GM6020,
M3508,
M2006,
LK9025,
HT04,
} Motor_Type_e;
/**