From a61ed6ff257e81ed5b62b25cd50031ddbc44c6bc Mon Sep 17 00:00:00 2001 From: guoxy06 <209087794@qq.com> Date: Wed, 18 Mar 2026 21:08:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=91=A9=E6=93=A6=E8=BD=AE=EF=BC=8C=E6=8B=A8?= =?UTF-8?q?=E7=9B=98=20driver?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/cmd/robot_cmd.c | 17 ++++++++++++----- application/shoot/shoot.c | 8 ++++---- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/application/cmd/robot_cmd.c b/application/cmd/robot_cmd.c index ffee775..94e1188 100644 --- a/application/cmd/robot_cmd.c +++ b/application/cmd/robot_cmd.c @@ -12,6 +12,7 @@ #include "bsp_dwt.h" #include "bsp_log.h" #include "main.h" +#include "shoot.h" // 私有宏,自动将编码器转换成角度值 #define YAW_ALIGN_ANGLE (YAW_CHASSIS_ALIGN_ECD * ECD_ANGLE_COEF_DJI) // 对齐时的角度,0-360 #define PTICH_HORIZON_ANGLE (PITCH_HORIZON_ECD * ECD_ANGLE_COEF_DJI) // pitch水平时电机的角度,0-360 @@ -356,8 +357,7 @@ static void EmergencyHandler() } /* 机器人核心控制任务,200Hz频率运行(必须高于视觉发送频率) */ -void RobotCMDTask() -{ +void RobotCMDTask() { // 从其他应用获取回传数据 #ifdef ONE_BOARD SubGetMessage(chassis_feed_sub, (void *)&chassis_fetch_data); @@ -371,11 +371,18 @@ void RobotCMDTask() // 根据gimbal的反馈值计算云台和底盘正方向的夹角,不需要传参,通过static私有变量完成 CalcOffsetAngle(); // 根据遥控器左侧开关,确定当前使用的控制模式为遥控器调试还是键鼠 - if (switch_is_down(rc_data[TEMP].rc.switch_left)) // 遥控器左侧开关状态为[下],遥控器控制 + if (switch_is_down(rc_data[TEMP].rc.switch_left)){ // 遥控器左侧开关状态为[下],遥控器控制 RemoteControlSet(); - else if (switch_is_up(rc_data[TEMP].rc.switch_left)) // 遥控器左侧开关状态为[上],键盘控制 + shoot_cmd_send.shoot_mode =SHOOT_OFF; +} + else if (switch_is_up(rc_data[TEMP].rc.switch_left)) { + // 遥控器左侧开关状态为[上],键盘控制 MouseKeySet(); - + shoot_cmd_send.shoot_mode =SHOOT_OFF; + } + else if (switch_is_mid( rc_data[TEMP].rc.switch_left)) { + shoot_cmd_send.shoot_mode =SHOOT_ON; + } EmergencyHandler(); // 处理模块离线和遥控器急停等紧急情况 // 设置视觉发送数据,还需增加加速度和角速度数据 diff --git a/application/shoot/shoot.c b/application/shoot/shoot.c index 4063116..cf52c92 100644 --- a/application/shoot/shoot.c +++ b/application/shoot/shoot.c @@ -27,7 +27,7 @@ void ShootInit() }, .controller_param_init_config = { .speed_PID = { - .Kp = 0, // 20 + .Kp = 20, // 20 .Ki = 0, // 1 .Kd = 0, .Improve = PID_Integral_Limit, @@ -52,10 +52,10 @@ void ShootInit() .motor_reverse_flag = MOTOR_DIRECTION_NORMAL, }, .motor_type = M3508}; - friction_config.can_init_config.tx_id = 3, + friction_config.can_init_config.tx_id = 8, friction_l = DJIMotorInit(&friction_config); - friction_config.can_init_config.tx_id = 4; // 右摩擦轮,改txid和方向就行 + friction_config.can_init_config.tx_id = 5; // 右摩擦轮,改txid和方向就行 friction_config.controller_setting_init_config.motor_reverse_flag = MOTOR_DIRECTION_REVERSE; friction_r = DJIMotorInit(&friction_config); @@ -63,7 +63,7 @@ void ShootInit() Motor_Init_Config_s loader_config = { .can_init_config = { .can_handle = &hcan2, - .tx_id = 5, + .tx_id = 7, }, .controller_param_init_config = { .angle_PID = {