diff --git a/User/module/command.c b/User/module/command.c new file mode 100644 index 0000000..e69de29 diff --git a/User/module/command.h b/User/module/command.h new file mode 100644 index 0000000..e69de29 diff --git a/User/module/config.c b/User/module/config.c index ca68362..f4906e6 100644 --- a/User/module/config.c +++ b/User/module/config.c @@ -168,8 +168,8 @@ Config_RobotParam_t robot_config = { .chassis_param = { .yaw={ - .k=0.8f, - .p=1.2f, + .k=1.0f, + .p=1.0f, .i=0.01f, .d=0.05f, .i_limit=0.0f, @@ -211,12 +211,12 @@ Config_RobotParam_t robot_config = { }, .tp={ - .k=1.0f, + .k=2.0f, .p=2.0f, /* 俯仰角比例系数 */ .i=0.0f, /* 俯仰角积分系数 */ .d=0.0f, /* 俯仰角微分系数 */ .i_limit=0.0f, /* 积分限幅 */ - .out_limit=2.0f, /* 输出限幅,腿长差值限制 */ + .out_limit=10.0f, /* 输出限幅,腿长差值限制 */ .d_cutoff_freq=30.0f, /* 微分截止频率 */ .range=-1.0f, /* 不使用循环误差处理 */ }, diff --git a/User/module/shoot.c b/User/module/shoot.c index ea1611e..0f38e8d 100644 --- a/User/module/shoot.c +++ b/User/module/shoot.c @@ -303,3 +303,4 @@ int8_t Shoot_Control(Shoot_t *s, Shoot_CMD_t *cmd) + diff --git a/User/task/command.c b/User/task/command.c index c93b319..9d11fc7 100644 --- a/User/task/command.c +++ b/User/task/command.c @@ -36,7 +36,7 @@ void Task_command(void *argument) { while (1) { tick += delay_tick; /* 计算下一个唤醒时刻 */ /* USER CODE BEGIN */ - + /* USER CODE END */ osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */ } diff --git a/User/task/ctrl_chassis.c b/User/task/ctrl_chassis.c index f5c0456..58afc94 100644 --- a/User/task/ctrl_chassis.c +++ b/User/task/ctrl_chassis.c @@ -55,10 +55,10 @@ void Task_ctrl_chassis(void *argument) { while (1) { tick += delay_tick; /* 计算下一个唤醒时刻 */ /* USER CODE BEGIN */ - if (osMessageQueueGet(task_runtime.msgq.Chassis_cmd, &chassis_cmd, NULL, 0) != osOK) { + if (osMessageQueueGet(task_runtime.msgq.chassis.cmd, &chassis_cmd, NULL, 0) != osOK) { // 没有新命令,保持上次命令 } - osMessageQueueGet(task_runtime.msgq.chassis_yaw, &chassis.feedback.yaw, NULL, 0); + osMessageQueueGet(task_runtime.msgq.chassis.yaw, &chassis.feedback.yaw, NULL, 0); Chassis_UpdateFeedback(&chassis); diff --git a/User/task/ctrl_gimbal.c b/User/task/ctrl_gimbal.c index f795815..4bf4999 100644 --- a/User/task/ctrl_gimbal.c +++ b/User/task/ctrl_gimbal.c @@ -49,7 +49,7 @@ void Task_ctrl_gimbal(void *argument) { Gimbal_UpdateFeedback(&gimbal); // osMessageQueueReset(task_runtime.msgq.chassis_yaw); - osMessageQueuePut(task_runtime.msgq.chassis_yaw, &gimbal.feedback.motor.yaw, 0, 0); + osMessageQueuePut(task_runtime.msgq.chassis.yaw, &gimbal.feedback.motor.yaw, 0, 0); Gimbal_Control(&gimbal, &gimbal_cmd); diff --git a/User/task/ctrl_shoot.c b/User/task/ctrl_shoot.c index 98010f9..eed31a6 100644 --- a/User/task/ctrl_shoot.c +++ b/User/task/ctrl_shoot.c @@ -40,6 +40,7 @@ void Task_ctrl_shoot(void *argument) { /* USER CODE BEGIN */ osMessageQueueGet(task_runtime.msgq.shoot.shoot_cmd, &shoot_cmd, NULL, 0); Shoot_UpdateFeedback(&shoot); + // Shoot_Test(&shoot); Shoot_Control(&shoot,&shoot_cmd); /* USER CODE END */ osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */ diff --git a/User/task/init.c b/User/task/init.c index ad183cf..aeaad5d 100644 --- a/User/task/init.c +++ b/User/task/init.c @@ -46,9 +46,9 @@ void Task_Init(void *argument) { // 创建消息队列 /* USER MESSAGE BEGIN */ task_runtime.msgq.user_msg= osMessageQueueNew(2u, 10, NULL); - task_runtime.msgq.chassis_imu = osMessageQueueNew(2u, sizeof(Chassis_IMU_t), NULL); - task_runtime.msgq.Chassis_cmd = osMessageQueueNew(2u, sizeof(Chassis_CMD_t), NULL); - task_runtime.msgq.chassis_yaw = osMessageQueueNew(2u, sizeof(MOTOR_Feedback_t), NULL); + task_runtime.msgq.chassis.imu = osMessageQueueNew(2u, sizeof(Chassis_IMU_t), NULL); + task_runtime.msgq.chassis.cmd = osMessageQueueNew(2u, sizeof(Chassis_CMD_t), NULL); + task_runtime.msgq.chassis.yaw = osMessageQueueNew(2u, sizeof(MOTOR_Feedback_t), NULL); task_runtime.msgq.gimbal.imu= osMessageQueueNew(2u, sizeof(Gimbal_IMU_t), NULL); task_runtime.msgq.gimbal.cmd= osMessageQueueNew(2u, sizeof(Gimbal_CMD_t), NULL); task_runtime.msgq.shoot.shoot_cmd = osMessageQueueNew(2u, sizeof(Shoot_CMD_t), NULL); diff --git a/User/task/rc.c b/User/task/rc.c index 8f23e7f..e362885 100644 --- a/User/task/rc.c +++ b/User/task/rc.c @@ -78,8 +78,8 @@ void Task_rc(void *argument) { cmd_for_chassis.height = dr16.data.ch_res; osMessageQueueReset( - task_runtime.msgq.Chassis_cmd); // 重置消息队列,防止阻塞 - osMessageQueuePut(task_runtime.msgq.Chassis_cmd, &cmd_for_chassis, 0, + task_runtime.msgq.chassis.cmd); // 重置消息队列,防止阻塞 + osMessageQueuePut(task_runtime.msgq.chassis.cmd, &cmd_for_chassis, 0, 0); // 非阻塞发送底盘控制命令 switch (dr16.data.sw_l) { diff --git a/User/task/user_task.h b/User/task/user_task.h index ae5a6c8..91f3040 100644 --- a/User/task/user_task.h +++ b/User/task/user_task.h @@ -58,9 +58,11 @@ typedef struct { struct { osMessageQueueId_t user_msg; /* 用户自定义任务消息队列 */ - osMessageQueueId_t chassis_imu; - osMessageQueueId_t Chassis_cmd; - osMessageQueueId_t chassis_yaw; + struct { + osMessageQueueId_t imu; + osMessageQueueId_t cmd; + osMessageQueueId_t yaw; + }chassis; struct { osMessageQueueId_t imu; osMessageQueueId_t cmd;