318 lines
8.3 KiB
C
318 lines
8.3 KiB
C
#include "config.h"
|
||
#include "string.h"
|
||
|
||
#define DEBUG
|
||
|
||
#define CONFIG_BASE_ADDRESS (ADDR_FLASH_SECTOR_11)
|
||
|
||
#ifdef DEBUG
|
||
Config_Param_t config = {
|
||
|
||
#else
|
||
|
||
static const Config_Param_t config = {
|
||
|
||
#endif
|
||
|
||
.chassis = {
|
||
|
||
.motor_3508_param[0] = {BSP_CAN_1, 0x201, MOTOR_M3508, false, false},
|
||
.motor_3508_param[1] = {BSP_CAN_1, 0x202, MOTOR_M3508, false, false},
|
||
.motor_3508_param[2] = {BSP_CAN_1, 0x203, MOTOR_M3508, false, false},
|
||
.motor_3508_param[3] = {BSP_CAN_1, 0x204, MOTOR_M3508, false, false},
|
||
|
||
.motor_6020_param[0] = {BSP_CAN_1, 0x205, MOTOR_GM6020, false, false},
|
||
.motor_6020_param[1] = {BSP_CAN_1, 0x206, MOTOR_GM6020, false, false},
|
||
.motor_6020_param[2] = {BSP_CAN_1, 0x207, MOTOR_GM6020, false, false},
|
||
.motor_6020_param[3] = {BSP_CAN_1, 0x208, MOTOR_GM6020, false, false},
|
||
|
||
.C6020Omega_param = {
|
||
.k = 1.0f,
|
||
.p = 0.5f,
|
||
.i = 0.1f,
|
||
.d = 0.0f,
|
||
.i_limit = 1.0f,
|
||
.out_limit = 1.0f,
|
||
.d_cutoff_freq = -1.0f,
|
||
.range = -1.0f},
|
||
|
||
.C6020Angle_param = {
|
||
.k = 0.2f,
|
||
.p = 0.21f,
|
||
.i = 0.1f,
|
||
.d = 0.0f,
|
||
.i_limit = 1.0f,
|
||
.out_limit = 30.0f,
|
||
.d_cutoff_freq = -1.0f,
|
||
.range = 360
|
||
},
|
||
|
||
.M3508v_param = {
|
||
// .k=0.2f,
|
||
// .p=0.25f,
|
||
// .i=0.1f,
|
||
// .d=0.0f,
|
||
// .i_limit=1.0f,
|
||
// .out_limit=1.0f,
|
||
// .d_cutoff_freq= -1.0f,
|
||
// .range=-1.0f
|
||
.k = 1.0f,
|
||
.p = 4.0f,
|
||
.i = 0.0f,
|
||
.d = 0.0f,
|
||
.i_limit = 1.0f,
|
||
.out_limit = 1.0f,
|
||
.d_cutoff_freq = -1.0f,
|
||
.range = -1.0f
|
||
},
|
||
.chassis_follow_gimbalPID = {
|
||
.k = 0.7f,
|
||
.p = 0.5f,
|
||
.i = 0.1f,
|
||
.d = 0.0f,
|
||
.i_limit = 1.0f,
|
||
.out_limit = 0.5f,
|
||
.d_cutoff_freq = -1.0f,
|
||
.range = M_2PI
|
||
},
|
||
|
||
/*这两个数据是云台6020的零点和机械限位*/
|
||
.mech_zero = 1.31f,
|
||
.travel = 1.4f,
|
||
.mech_zero_4310=2.06f,
|
||
|
||
|
||
},
|
||
|
||
.gimbal = {
|
||
.yaw_6020_motor ={BSP_CAN_2, 0x209, MOTOR_GM6020, false, true},
|
||
|
||
.yaw_4310_motor = {
|
||
.can = BSP_CAN_2,
|
||
.can_id = 0x1,
|
||
.master_id = 0x11,
|
||
.module = MOTOR_DM_J4310,
|
||
.reverse = false
|
||
},
|
||
|
||
.pitch_4310_motor = {
|
||
.can = BSP_CAN_2,
|
||
.can_id = 0x2,
|
||
.master_id = 0x12,
|
||
.module = MOTOR_DM_J4310,
|
||
.reverse = true
|
||
},
|
||
|
||
.pid.pitch_4310_motor_angle = {
|
||
.k = -2.0f,
|
||
.p = 3.1f, //2.0
|
||
.i = 0.1f, //0.0
|
||
.d = 2.5f, //0.0
|
||
.i_limit = 1.0f,
|
||
.out_limit = 10.0f,
|
||
.d_cutoff_freq = -1.0f,
|
||
.range = M_2PI
|
||
},
|
||
|
||
.pid.pitch_4310_motor_omega = {
|
||
.k = 0.3f,
|
||
.p = 0.3f,
|
||
.i = 0.0f,
|
||
.d = 0.0f,
|
||
.i_limit = 0.0f,
|
||
.out_limit = 1.0f,
|
||
.d_cutoff_freq = -1.0f,
|
||
.range = -1.0f
|
||
},
|
||
|
||
.pid.yaw_4310_motor_angle = {
|
||
// .k = 2.0f,
|
||
// .p = 6.0f,
|
||
// .i = 0.01f,
|
||
// .d = 0.1f,
|
||
// .i_limit = 0.0f,
|
||
// .out_limit = 7.0f,
|
||
// .d_cutoff_freq = 20.0f,
|
||
// .range = M_2PI
|
||
.k = 2.0f,
|
||
.p = 5.0f,
|
||
.i = 0.0f,
|
||
.d = 1.0f,
|
||
.i_limit = 0.0f,
|
||
.out_limit = 10.0f,
|
||
.d_cutoff_freq = 20.0f,
|
||
.range = M_2PI
|
||
},
|
||
|
||
.pid.yaw_4310_motor_omega = {
|
||
.k = 0.5f,
|
||
.p = 0.5f,
|
||
.i = 0.0f,
|
||
.d = 0.0f,
|
||
.i_limit = 0.0f,
|
||
.out_limit = 1.0f,
|
||
.d_cutoff_freq = -1.0f,
|
||
.range = -1.0f
|
||
},
|
||
|
||
.pid.yaw_6020_motor_angle = {
|
||
// .k = 2.0f,
|
||
// .p = 2.5f,
|
||
// .i = 0.0f,
|
||
// .d = 0.0f,
|
||
// .i_limit = 0.0f,
|
||
// .out_limit = 10.0f,
|
||
// .d_cutoff_freq = 0.0f,
|
||
// .range = M_2PI
|
||
/*上面一组pid会导致电机超调,可能是因为pid计算错误,正在进行重新修改pid*/
|
||
// .k = 2.0f,
|
||
// .p = 5.0f,
|
||
// .i = 0.0f,
|
||
// .d = 0.0f,
|
||
// .i_limit = 1.0f,
|
||
// .out_limit = 10.0f,
|
||
// .d_cutoff_freq = 0.0f,
|
||
// .range = M_2PI
|
||
|
||
.k = 2.0f,
|
||
.p = 7.0f,
|
||
.i = 0.5f,
|
||
.d = 1.0f,
|
||
.i_limit = 1.0f,
|
||
.out_limit = 10.0f,
|
||
.d_cutoff_freq = 0.0f,
|
||
.range = M_2PI
|
||
},
|
||
|
||
.pid.yaw_6020_motor_omega = {
|
||
// .k = 0.30f,
|
||
// .p = 0.4f,
|
||
// .i = 0.01f,
|
||
// .d = 0.0f,
|
||
// .i_limit = 1.0f,
|
||
// .out_limit = 1.0f,
|
||
// .d_cutoff_freq = -1.0f,
|
||
// .range = -1.0f
|
||
|
||
// .k = 0.35f,
|
||
// .p = 0.3f,
|
||
// .i = 0.0f,
|
||
// .d = 0.0f,
|
||
// .i_limit = 1.0f,
|
||
// .out_limit = 1.0f,
|
||
// .d_cutoff_freq = -1.0f,
|
||
// .range = -1.0f
|
||
|
||
.k = 0.35f,
|
||
.p = 0.35f,
|
||
.i = 0.0f,
|
||
.d = 0.0f,
|
||
.i_limit = 1.0f,
|
||
.out_limit = 1.0f,
|
||
.d_cutoff_freq = -1.0f,
|
||
.range = -1.0f
|
||
},
|
||
|
||
.mech_zero = {
|
||
.yaw_6020 = 1.31f,
|
||
.yaw_4310 = 2.06f, /*大yaw零点*/
|
||
.pitch_4310 = 0.93f,
|
||
},
|
||
.travel = {
|
||
.yaw_6020 = 1.4f,
|
||
.yaw_4310 = -1.0f, /*大yaw无限位*/
|
||
.pitch_4310 = 0.9f,
|
||
// .pitch_4310=-1.0f,/*pitch无限位*/
|
||
},
|
||
.low_pass_cutoff_freq={
|
||
.out = -1.0f,
|
||
.gyro = 20.0f,
|
||
}
|
||
|
||
},
|
||
.shoot = {
|
||
.motor.fric[0] = {{BSP_CAN_2, 0x201, MOTOR_M3508, false, false},.level=1},
|
||
.motor.fric[1] = {{BSP_CAN_2, 0x202, MOTOR_M3508, true, false},.level=1},
|
||
.motor.trig = {BSP_CAN_2, 0x203, MOTOR_M2006, false, true},
|
||
|
||
.basic.projectileType = SHOOT_PROJECTILE_17MM,
|
||
.basic.fric_num = 2,
|
||
.basic.extra_deceleration_ratio = 1,
|
||
.basic.ratio_multilevel[0] = 1.0f,
|
||
.basic.num_trig_tooth = 8,
|
||
.basic.shot_freq = 5.0f,
|
||
.basic.shot_burst_num = 1,
|
||
|
||
.jamDetection.enable = true,
|
||
.jamDetection.threshold = 120.0f,
|
||
.jamDetection.suspectedTime = 0.5f,
|
||
|
||
.pid = {
|
||
.fric_follow = {
|
||
.k = 1.0f,
|
||
.p = 1.5f,
|
||
.i = 0.3f,
|
||
.d = 0.0f,
|
||
.i_limit = 0.2f,
|
||
.out_limit = 0.9f,
|
||
.d_cutoff_freq = -1.0f,
|
||
.range = -1.0f,
|
||
},
|
||
|
||
.fric_err={
|
||
.k=0.0f,
|
||
.p=4.0f,
|
||
.i=0.4f,
|
||
.d=0.0f,
|
||
.i_limit=0.25f,
|
||
.out_limit=0.25f,
|
||
.d_cutoff_freq=-1.0f,
|
||
.range=-1.0f,
|
||
},
|
||
|
||
.trig_2006={
|
||
.k=0.7f,
|
||
.p=0.7f,
|
||
.i=0.5f,
|
||
.d=0.05f,
|
||
.i_limit=0.2f,
|
||
.out_limit=1.0f,
|
||
.d_cutoff_freq=-1.0f,
|
||
.range=M_2PI,
|
||
},
|
||
|
||
.trig_omg_2006={
|
||
.k=3.0f,
|
||
.p=2.0f,
|
||
.i=0.2f,
|
||
.d=0.5f,
|
||
.i_limit=0.2f,
|
||
.out_limit=1.0f,
|
||
.d_cutoff_freq=-1.0f,
|
||
.range=-1.0f,
|
||
},
|
||
},
|
||
.filter = {
|
||
.fric = {
|
||
.in = 30.0f,
|
||
.out = 30.0f,
|
||
},
|
||
.trig = {
|
||
.in = 30.0f,
|
||
.out = 30.0f,
|
||
},
|
||
}
|
||
|
||
}
|
||
|
||
};
|
||
|
||
/**
|
||
* @brief 获取机器人配置参数
|
||
* @return 机器人配置参数指针
|
||
*/
|
||
Config_Param_t *Config_GetRobotParam(void)
|
||
{
|
||
return &config;
|
||
}
|