diff --git a/application/chassis/balance.c b/application/chassis/balance.c index 0d63c26..6bd1f4c 100644 --- a/application/chassis/balance.c +++ b/application/chassis/balance.c @@ -139,7 +139,7 @@ static void ControlSwitch() // 右侧拨杆向下,进入遥控器底盘控制,此时不响应云台控制指令 if (switch_is_down(rc_data->rc.switch_right) && RemoteControlIsOnline()) { - if (rc_data->rc.rocker_l1 < -600) + if (switch_is_up(rc_data->rc.switch_left)) { chassis_cmd_recv.chassis_mode = CHASSIS_RESET; chassis_cmd_recv.vx = 0.05 * (float)rc_data[TEMP].rc.rocker_r1; // speed x, unit m/s @@ -272,7 +272,7 @@ static void ParamAssemble() static void LegControl() /* 腿长控制和Roll补偿 */ { - static float gravity_comp = 54.54; + static float gravity_comp = 57.63; l_side.F_leg = PIDCalculate(&leglen_pid_l, l_side.height, l_side.target_len) + gravity_comp; r_side.F_leg = PIDCalculate(&leglen_pid_r, r_side.height, r_side.target_len) + gravity_comp; } diff --git a/application/chassis/balance.h b/application/chassis/balance.h index 2f7ed74..d32a1d8 100644 --- a/application/chassis/balance.h +++ b/application/chassis/balance.h @@ -5,7 +5,7 @@ #define THIGH_LEN 0.14f // 大腿 #define JOINT_DISTANCE 0.11f // 关节间距 #define WHEEL_RADIUS 0.075f // 轮子半径 -#define LIMIT_LINK_RAD 0.205467224 // 初始限位角度,见ParamAssemble +#define LIMIT_LINK_RAD 0.220039368 // 初始限位角度,见ParamAssemble #define BALANCE_GRAVITY_BIAS 0 #define ROLL_GRAVITY_BIAS 0 #define MAX_ACC_REF 0.5f diff --git a/application/chassis/lqr_calc.h b/application/chassis/lqr_calc.h index ffb198d..16e2a48 100644 --- a/application/chassis/lqr_calc.h +++ b/application/chassis/lqr_calc.h @@ -9,18 +9,18 @@ */ static void CalcLQR(LinkNPodParam *p, ChassisParam *chassis) { - float k[12][3] = {85.842511,-168.176021,-4.383994, - -8.011354,-27.544550,0.946791, - 40.658824,-34.245857,-13.443024, - 33.057883,-37.645803,-8.872245, - 186.414265,-182.258244,59.110130, - 12.371459,-12.979501,4.575691, - -2.044517,-13.973090,28.443243, - -8.073717,8.553946,2.899594, - 109.977348,-109.218563,37.018016, - 67.432105,-68.632617,25.883284, - -210.173934,175.310058,96.350481, - -15.827060,13.395116,3.049615}; + float k[12][3] = {85.365277,-164.978797,-4.643325, + -7.817260,-26.353895,0.955791, + 43.461413,-37.225135,-12.040913, + 34.470271,-39.045724,-7.813613, + 171.639863,-172.946723,59.632812, + 11.281864,-11.926075,4.239721, + -19.517972,1.032904,27.896023, + -10.715152,11.663766,2.651705, + 96.039929,-99.227575,36.121143, + 56.371947,-60.347262,25.166639, + -213.707672,181.799382,93.194337, + -14.287060,12.217074,3.285836}; float T[2] = {0}; // 0 T_wheel 1 T_hip float l = p->leg_len; float lsqr = l * l;