From ee8acb32588ecd3a06bbda44a9c0ba74e53f4048 Mon Sep 17 00:00:00 2001 From: guoxy06 <209087794@qq.com> Date: Tue, 14 Apr 2026 17:11:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=BA=95=E7=9B=98=EF=BC=88=E7=96=AF2?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/chassis/chassis.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/application/chassis/chassis.c b/application/chassis/chassis.c index 7109ad5..9d9481f 100644 --- a/application/chassis/chassis.c +++ b/application/chassis/chassis.c @@ -34,6 +34,7 @@ #define CHASSIS_WHEEL_OFFSET 1.0f // 机器人底盘轮子修正偏移量 #elif defined(CHASSIS_STEERING_WHEEL) #define CHASSIS_WHEEL_OFFSET 30.0f // 机器人底盘轮子修正偏移量 +//#define CHASSIS_WHEEL_OFFSET 2.0f #define SQRT2 1.41421356f // 根号2 #elif defined(CHASSIS_OMNI_WHEEL) #define CHASSIS_WHEEL_OFFSET 0.7071f // 机器人底盘轮子修正偏移量,根号2/2,即45度,用于修正全向轮的安装位置 @@ -54,7 +55,7 @@ static Chassis_Ctrl_Cmd_s chassis_cmd_recv; // 底盘接收到的控制 static Chassis_Upload_Data_s chassis_feedback_data; // 底盘回传的反馈数据 static referee_info_t* referee_data; // 用于获取裁判系统的数据 -static Referee_Interactive_info_t ui_data; // UI数据,将底盘中的数据传入此结构体的对应变量中,UI会自动检测是否变化,对应显示UI +static Referee_Interactive_info_t ui_data; // UI数据,将底盘中的数据传入此结构体的对应变量中,UI会自动检测是否变化,对应显示UI/ static SuperCapInstance *cap; // 超级电容 static LKMotorInstance *motor_rf,*motor_lb; // 轮电机9015 @@ -103,11 +104,11 @@ void ChassisInit() chassis_motor_config.can_init_config.tx_id = 1; // chassis_motor_config.controller_setting_init_config.motor_reverse_flag = MOTOR_DIRECTION_REVERSE; - motor_rf = LKMotorInit(&chassis_motor_config); + motor_lb= LKMotorInit(&chassis_motor_config); chassis_motor_config.can_init_config.tx_id = 2; // chassis_motor_config.controller_setting_init_config.motor_reverse_flag = MOTOR_DIRECTION_REVERSE; - motor_lb = LKMotorInit(&chassis_motor_config); + motor_rf = LKMotorInit(&chassis_motor_config); // 舵电机6020初始化 Motor_Init_Config_s chassis_motor_steering_config = { @@ -407,10 +408,11 @@ void ChassisTask() { { single_round_offset += 360.0f; } - chassis_cmd_recv.wz = PIDCalculate(&chassis_follow_pid, single_round_offset, 0)/90; + chassis_cmd_recv.wz = -PIDCalculate(&chassis_follow_pid, single_round_offset, 0)/70.0f; break; case CHASSIS_ROTATE: // 自旋,同时保持全向机动;当前wz维持定值,后续增加不规则的变速策略 - chassis_cmd_recv.wz = 0.75; + // chassis_cmd_recv.wz = 0.75; + chassis_cmd_recv.wz = -0.75;//实验版 break; default: break; @@ -421,8 +423,10 @@ void ChassisTask() { static float sin_theta, cos_theta; cos_theta = arm_cos_f32(chassis_cmd_recv.offset_angle * DEGREE_2_RAD); sin_theta = arm_sin_f32(chassis_cmd_recv.offset_angle * DEGREE_2_RAD); - chassis_vx = chassis_cmd_recv.vx * cos_theta - chassis_cmd_recv.vy * sin_theta; - chassis_vy = chassis_cmd_recv.vx * sin_theta + chassis_cmd_recv.vy * cos_theta; + // chassis_vx = chassis_cmd_recv.vx * cos_theta - chassis_cmd_recv.vy * sin_theta; + // chassis_vy = chassis_cmd_recv.vx * sin_theta + chassis_cmd_recv.vy * cos_theta; + chassis_vy = chassis_cmd_recv.vx * cos_theta - chassis_cmd_recv.vy * sin_theta;//实验版 + chassis_vx = chassis_cmd_recv.vx * sin_theta + chassis_cmd_recv.vy * cos_theta; // 根据控制模式进行正运动学解算,计算底盘输出 SteeringWheelCalculate();