简介:这份资源是面向电子设计竞赛参赛者、自动控制与机器人方向学生的轮腿式自平衡小车完整项目包,聚焦动态平衡原理与嵌入式控制实践。压缩包共1311个文件,约49.48MB,以C源码(619个)和头文件(316个)为主体,辅以汇编启动文件、链接脚本、CMake构建配置、数学库及少量工程与说明文档,覆盖从底层驱动到控制算法的完整代码链路。项目围绕轮式推进与腿部支撑相结合的创新结构展开,涉及陀螺仪与加速度计数据采集、传感器融合滤波、PID等平衡控制策略以及电机驱动逻辑,并可能包含硬件原理图、PCB布局与元器件清单,便于理解电力系统与传感器配置方案。目前已有585人学习下载,适合希望深入掌握自平衡控制、嵌入式开发与传感器应用的读者参考复现,也可作为电赛备赛与课程设计的实战素材。1. 电赛平衡小车:从“能站起来”到“能拿分”的考点拆解电赛控制类题目里,轮腿式平衡小车几乎是“年年见”的题型。很多人以为它考的是PID调参玄学,其实真正拉开差距的是状态观测、串级控制结构、以及动态解耦这三块硬骨头。这份资源把轮腿式平衡小车的完整工程拆成了可复现的模块,从直立环、速度环到转向环的参数整定,再到轮腿机构的运动学建模,全部有对应的代码和调试记录。如果你正在准备电赛控制题,或者想搞懂平衡小车从“能站起来”到“能抗扰”的每一步,这份资料能帮你省掉大量翻车重来的时间。它适合已经学过基础PID、但一上实物就发现“理论能跑、实际就倒”的备赛者。2. 考点分布:轮腿式平衡小车的三个核心模块2.1 直立环与速度环的串级结构平衡小车的控制骨架是串级PID:外环速度、内环角度。很多队伍翻车就翻在把两个环并在一起调,结果小车要么低频晃动,要么高频抖动。正确的做法是先调内环直立环,让车身能在外力轻推后回正,且回正过程没有明显超调;再串外环速度环,用编码器反馈抑制车体缓慢漂移。直立环的输入是角度偏差和角速度,输出是PWM占空比。关键参数是角度环的P和D。P决定回正力度,D决定阻尼。经验值是先给P让车能站起来但会前后晃,再加D把晃动压住。速度环的输入是编码器脉冲差值,输出叠加到角度环的目标角度上。这里有个易错点:速度环的输出极性必须和直立环一致,否则会形成正反馈直接倒地。// 直立环PD + 速度环PI 串级输出示例 float angle_pid(float target_angle, float current_angle, float gyro_y) { float error = target_angle - current_angle; float p_out = ANGLE_KP * error; float d_out = ANGLE_KD * gyro_y; // 陀螺仪直接测角速度 return p_out - d_out; // 注意符号:角速度方向与偏差方向相反 } float speed_pid(float target_speed, float current_speed) { static float integral = 0; float error = target_speed - current_speed; integral += error * SPEED_KI; integral = constrain(integral, -INTEGRAL_LIMIT, INTEGRAL_LIMIT); return SPEED_KP * error + integral; } // 最终输出:速度环输出改变直立环目标角度 float speed_out = speed_pid(0, encoder_speed); float final_pwm = angle_pid(speed_out, imu_angle, gyro_y);这段代码里,ANGLE_KP和ANGLE_KD是直立环参数,SPEED_KP和SPEED_KI是速度环参数。注意gyro_y的符号:如果陀螺仪安装方向与车体前倾方向相反,这里要取反,否则D项会变成正反馈。INTEGRAL_LIMIT是积分限幅,防止速度环积分饱和导致车体突然前冲。调试顺序必须是先关掉速度环,只调直立环,用手轻推车体,看它能否在2秒内回正且不振荡;再打开速度环,从很小的SPEED_KP开始加,直到小车能缓慢跟随遥控指令移动。2.2 轮腿机构的运动学解耦轮腿式结构和纯轮式最大的区别在于:轮子的转动和腿的摆动会耦合。腿摆动时重心偏移,轮子需要额外补偿才能保持平衡。很多队伍直接套用纯轮式平衡车的参数,结果发现腿一动就倒。正确的思路是把腿摆角作为前馈量引入直立环目标角度。具体做法:根据腿的摆角θ_leg和腿长L,计算重心在水平方向的偏移量Δx = L * sin(θ_leg)。把这个偏移量乘以一个补偿系数K_ff,叠加到直立环的目标角度上。这样腿往前摆时,目标角度自动往后偏,轮子会提前做出补偿动作。// 轮腿运动学前馈补偿 float leg_angle = get_leg_angle(); // 腿摆角,单位弧度 float leg_length = get_leg_length(); // 当前腿长 float com_offset = leg_length * sinf(leg_angle); float feedforward_angle = K_FF * com_offset; // 将前馈量叠加到速度环输出上 float target_angle = speed_out + feedforward_angle; float final_pwm = angle_pid(target_angle, imu_angle, gyro_y);K_FF需要实测:固定腿摆角,逐渐增大K_FF直到小车在腿摆动时车身倾斜最小。这个系数和腿长、重心高度有关,换电池或加装传感器后需要重新标定。注意sinf是弧度制,如果传感器输出的是角度值,要先乘以π/180。2.3 真题演练:2023年电赛控制题“轮腿机器人”这道题要求轮腿机器人在行进中保持平衡,同时完成指定路径。现场很多队伍卡在“直线走不直”和“转弯时倒地”两个问题上。直线走不直通常是陀螺仪零漂未校准,或者左右轮编码器分辨率不一致导致速度环积分不对称。转弯倒地则是转向环和直立环的耦合没处理好。答题思路:先做静态校准,上电后前3秒不输出PWM,采集陀螺仪零漂并取平均,后续所有角速度减去这个均值。左右轮编码器要在同一段直线上手动推车,对比脉冲数,差值超过5%就要在速度环里做比例补偿。转向时,把转向环输出限幅到直立环输出的30%以内,避免转向过猛破坏平衡。提示:电赛现场没有时间让你慢慢调参,赛前必须把校准流程写成上电自动执行,包括陀螺仪零漂、编码器一致性检查、电池电压补偿。3. 高频考点:从传感器融合到电机驱动的答题模板3.1 姿态解算:互补滤波还是卡尔曼电赛平衡小车最常用的姿态解算方案是互补滤波,因为计算量小、参数直观。陀螺仪积分得到角度,但会漂移;加速度计测重力方向得到角度,但噪声大。互补滤波用高通滤波取陀螺仪的高频分量,用低通滤波取加速度计的低频分量,加权融合。// 互补滤波姿态解算 float dt = 0.005f; // 5ms控制周期 float alpha = 0.98f; // 陀螺仪权重 float angle = 0; void imu_update(float accel_angle, float gyro_rate) { // 陀螺仪积分预测 float predicted = angle + gyro_rate * dt; // 加速度计修正 angle = alpha * predicted + (1 - alpha) * accel_angle; }alpha越大,越信任陀螺仪,动态响应好但会漂移;alpha越小,越信任加速度计,静态稳但动态滞后。平衡小车通常取0.95到0.99之间。注意accel_angle要用atan2计算,且只在车体加速度较小时才可信,所以很多方案会在电机加速时降低加速度计权重。面试官最想听的是:你为什么选互补滤波而不是卡尔曼?答案要落到“控制周期5ms以内,卡尔曼的矩阵运算在8位单片机上跑不完,互补滤波计算量小且参数物理意义明确”。如果面试官追问卡尔曼,你要能说出状态方程和观测方程分别对应陀螺仪和加速度计,以及协方差矩阵的物理含义。3.2 电机驱动:PWM频率与死区补偿直流有刷电机用H桥驱动时,PWM频率选10kHz到20kHz。太低会有可听噪声,太高则MOS管开关损耗大。电赛常用TB6612或DRV8833,前者支持100kHz但实际用10kHz足够。死区补偿是很多队伍忽略的点:H桥上下管切换时需要死区时间防止直通,但死区会导致低占空比时电机不转。解决办法是在PWM输出上加一个最小占空比偏置,或者用硬件死区时间可调的驱动芯片。// 电机死区补偿 #define DEAD_ZONE 0.05f // 5%占空比以下电机不转 float motor_output(float pwm) { if (pwm > 0) { return (pwm < DEAD_ZONE) ? DEAD_ZONE : pwm; } else if (pwm < 0) { return (pwm > -DEAD_ZONE) ? -DEAD_ZONE : pwm; } return 0; }DEAD_ZONE要实测:给电机逐渐增大的占空比,记录它开始转动的最小值。补偿后,速度环在低速时不会因为死区而积分饱和。注意这个补偿只对开环有效,如果速度环有积分项,积分会自动补偿死区,但会带来启动延迟。3.3 真题演练:2021年电赛“送药小车”平衡控制部分这道题要求小车在载药后保持平衡并行驶。载药后重心升高,直立环的P和D都要重新整定。很多队伍直接沿用空载参数,结果小车一放药就倒。答题思路:先测空载和满载的重心高度,根据重心高度调整直立环参数。重心越高,P越小、D越大,因为高重心系统更容易振荡。具体操作:空载时调好直立环,记录P0和D0。满载后,把P降到P0的70%,D升到D0的1.3倍,再微调。同时速度环的积分限幅要减小,因为满载时电机加速慢,积分容易累积过大导致过冲。现场可以用砝码模拟载重,提前标定一组参数。注意:电赛现场不允许带砝码,但可以用矿泉水瓶装水模拟,提前在实验室做好重量-参数对照表。4. 易错点:平衡小车调试中最容易翻车的五个地方4.1 陀螺仪零漂未校准就上电错在哪:上电后直接进入控制循环,陀螺仪零漂导致角度积分持续偏移,小车会缓慢向一个方向加速直到倒地。为什么错:MEMS陀螺仪零漂随温度变化,冷启动和热机后零漂不同,不校准等于给直立环加了一个持续偏差。怎么答对:上电后前2秒电机不输出,采集100次陀螺仪读数取平均作为零漂,后续所有角速度减去这个值。如果比赛现场温度变化大,每5分钟重新校准一次。4.2 速度环积分限幅过大错在哪:速度环积分项没有限幅或限幅过大,小车被挡住时积分持续累积,一旦障碍移除,小车会突然猛冲。为什么错:积分项的作用是消除稳态误差,但执行器有物理极限,积分超过极限后只会造成过冲。怎么答对:积分限幅设为电机最大输出对应占空比的20%到30%,并且当PWM输出饱和时停止积分累积。4.3 直立环D项直接用角度差分错在哪:用角度差分计算D项,噪声被放大,电机发出高频啸叫。为什么错:角度差分等价于对角度的噪声求导,噪声频率越高,差分值越大。怎么答对:直接用陀螺仪输出的角速度作为D项,因为陀螺仪测的就是角速度,不需要差分。如果陀螺仪噪声大,加一级低通滤波,截止频率设为50Hz到100Hz。4.4 轮腿前馈系数未随腿长变化错在哪:腿长变化时前馈系数不变,导致腿伸长时补偿不足、腿缩短时补偿过度。为什么错:前馈量Δx = L * sin(θ_leg),L变化时Δx成比例变化,固定K_FF无法适应。怎么答对:把K_FF乘以当前腿长与标定腿长的比值,或者直接在线计算Δx而不查表。4.5 转向环与直立环共用PWM输出错在哪:转向环输出直接叠加到左右轮PWM上,没有限幅,转弯时一侧轮子PWM饱和,直立环失效。为什么错:直立环需要PWM余量来维持平衡,转向占用了全部余量,车体必然倒。怎么答对:转向环输出限幅到直立环输出的20%到30%,并且优先保证直立环输出,转向只在余量内分配。5. 答题技巧:电赛现场如何快速整定参数现场调试时间通常只有4到6小时,不可能从零开始调参。我的习惯是提前在实验室做好三组参数:空载直立环、满载直立环、速度环基础参数。现场只做微调,微调顺序固定为:先陀螺仪零漂校准,再直立环P和D,再速度环P和I,最后转向环限幅。具体操作:上电后先用手推车体,看回正力度。如果回正太慢,加P;如果回正后振荡,加D。直立环调好后,给一个很小的速度指令,看小车能否缓慢移动。如果不动,加速度环P;如果移动时前后晃动,减速度环P或加直立环D。转向环最后调,先给很小的转向指令,看车体倾斜程度,倾斜大就减转向限幅。提示:现场用蓝牙模块实时传回角度、速度、PWM数据,用上位机画曲线,比盲调快得多。没有蓝牙就用OLED屏显示关键数据,至少能看到角度和PWM。押题思路:轮腿式平衡小车今年大概率还是考“动态平衡+路径跟踪”。动态平衡的考点是变重心补偿,路径跟踪的考点是转向环与直立环的解耦。把这两个点吃透,题目怎么变都不怕。另外,电赛近年喜欢加“无线充电”或“视觉识别”模块,平衡控制部分反而简化,所以不要把全部时间花在调参上,留出时间做任务逻辑。从那以后我每次赛前都会强制走一遍校准流程:陀螺仪零漂、编码器一致性、电池电压补偿、死区补偿,一个都不跳过。希望帮到你。本文还有配套的精品资源,点击获取
简介:这份资源是面向电子设计竞赛参赛者、自动控制与机器人方向学生的轮腿式自平衡小车完整项目包,聚焦动态平衡原理与嵌入式控制实践。压缩包共1311个文件,约49.48MB,以C源码(619个)和头文件(316个)为主体,辅以汇编启动文件、链接脚本、CMake构建配置、数学库及少量工程与说明文档,覆盖从底层驱动到控制算法的完整代码链路。项目围绕轮式推进与腿部支撑相结合的创新结构展开,涉及陀螺仪与加速度计数据采集、传感器融合滤波、PID等平衡控制策略以及电机驱动逻辑,并可能包含硬件原理图、PCB布局与元器件清单,便于理解电力系统与传感器配置方案。目前已有585人学习下载,适合希望深入掌握自平衡控制、嵌入式开发与传感器应用的读者参考复现,也可作为电赛备赛与课程设计的实战素材。1. 电赛平衡小车:从“能站起来”到“能拿分”的考点拆解电赛控制类题目里,轮腿式平衡小车几乎是“年年见”的题型。很多人以为它考的是PID调参玄学,其实真正拉开差距的是状态观测、串级控制结构、以及动态解耦这三块硬骨头。这份资源把轮腿式平衡小车的完整工程拆成了可复现的模块,从直立环、速度环到转向环的参数整定,再到轮腿机构的运动学建模,全部有对应的代码和调试记录。如果你正在准备电赛控制题,或者想搞懂平衡小车从“能站起来”到“能抗扰”的每一步,这份资料能帮你省掉大量翻车重来的时间。它适合已经学过基础PID、但一上实物就发现“理论能跑、实际就倒”的备赛者。2. 考点分布:轮腿式平衡小车的三个核心模块2.1 直立环与速度环的串级结构平衡小车的控制骨架是串级PID:外环速度、内环角度。很多队伍翻车就翻在把两个环并在一起调,结果小车要么低频晃动,要么高频抖动。正确的做法是先调内环直立环,让车身能在外力轻推后回正,且回正过程没有明显超调;再串外环速度环,用编码器反馈抑制车体缓慢漂移。直立环的输入是角度偏差和角速度,输出是PWM占空比。关键参数是角度环的P和D。P决定回正力度,D决定阻尼。经验值是先给P让车能站起来但会前后晃,再加D把晃动压住。速度环的输入是编码器脉冲差值,输出叠加到角度环的目标角度上。这里有个易错点:速度环的输出极性必须和直立环一致,否则会形成正反馈直接倒地。// 直立环PD + 速度环PI 串级输出示例 float angle_pid(float target_angle, float current_angle, float gyro_y) { float error = target_angle - current_angle; float p_out = ANGLE_KP * error; float d_out = ANGLE_KD * gyro_y; // 陀螺仪直接测角速度 return p_out - d_out; // 注意符号:角速度方向与偏差方向相反 } float speed_pid(float target_speed, float current_speed) { static float integral = 0; float error = target_speed - current_speed; integral += error * SPEED_KI; integral = constrain(integral, -INTEGRAL_LIMIT, INTEGRAL_LIMIT); return SPEED_KP * error + integral; } // 最终输出:速度环输出改变直立环目标角度 float speed_out = speed_pid(0, encoder_speed); float final_pwm = angle_pid(speed_out, imu_angle, gyro_y);这段代码里,ANGLE_KP和ANGLE_KD是直立环参数,SPEED_KP和SPEED_KI是速度环参数。注意gyro_y的符号:如果陀螺仪安装方向与车体前倾方向相反,这里要取反,否则D项会变成正反馈。INTEGRAL_LIMIT是积分限幅,防止速度环积分饱和导致车体突然前冲。调试顺序必须是先关掉速度环,只调直立环,用手轻推车体,看它能否在2秒内回正且不振荡;再打开速度环,从很小的SPEED_KP开始加,直到小车能缓慢跟随遥控指令移动。2.2 轮腿机构的运动学解耦轮腿式结构和纯轮式最大的区别在于:轮子的转动和腿的摆动会耦合。腿摆动时重心偏移,轮子需要额外补偿才能保持平衡。很多队伍直接套用纯轮式平衡车的参数,结果发现腿一动就倒。正确的思路是把腿摆角作为前馈量引入直立环目标角度。具体做法:根据腿的摆角θ_leg和腿长L,计算重心在水平方向的偏移量Δx = L * sin(θ_leg)。把这个偏移量乘以一个补偿系数K_ff,叠加到直立环的目标角度上。这样腿往前摆时,目标角度自动往后偏,轮子会提前做出补偿动作。// 轮腿运动学前馈补偿 float leg_angle = get_leg_angle(); // 腿摆角,单位弧度 float leg_length = get_leg_length(); // 当前腿长 float com_offset = leg_length * sinf(leg_angle); float feedforward_angle = K_FF * com_offset; // 将前馈量叠加到速度环输出上 float target_angle = speed_out + feedforward_angle; float final_pwm = angle_pid(target_angle, imu_angle, gyro_y);K_FF需要实测:固定腿摆角,逐渐增大K_FF直到小车在腿摆动时车身倾斜最小。这个系数和腿长、重心高度有关,换电池或加装传感器后需要重新标定。注意sinf是弧度制,如果传感器输出的是角度值,要先乘以π/180。2.3 真题演练:2023年电赛控制题“轮腿机器人”这道题要求轮腿机器人在行进中保持平衡,同时完成指定路径。现场很多队伍卡在“直线走不直”和“转弯时倒地”两个问题上。直线走不直通常是陀螺仪零漂未校准,或者左右轮编码器分辨率不一致导致速度环积分不对称。转弯倒地则是转向环和直立环的耦合没处理好。答题思路:先做静态校准,上电后前3秒不输出PWM,采集陀螺仪零漂并取平均,后续所有角速度减去这个均值。左右轮编码器要在同一段直线上手动推车,对比脉冲数,差值超过5%就要在速度环里做比例补偿。转向时,把转向环输出限幅到直立环输出的30%以内,避免转向过猛破坏平衡。提示:电赛现场没有时间让你慢慢调参,赛前必须把校准流程写成上电自动执行,包括陀螺仪零漂、编码器一致性检查、电池电压补偿。3. 高频考点:从传感器融合到电机驱动的答题模板3.1 姿态解算:互补滤波还是卡尔曼电赛平衡小车最常用的姿态解算方案是互补滤波,因为计算量小、参数直观。陀螺仪积分得到角度,但会漂移;加速度计测重力方向得到角度,但噪声大。互补滤波用高通滤波取陀螺仪的高频分量,用低通滤波取加速度计的低频分量,加权融合。// 互补滤波姿态解算 float dt = 0.005f; // 5ms控制周期 float alpha = 0.98f; // 陀螺仪权重 float angle = 0; void imu_update(float accel_angle, float gyro_rate) { // 陀螺仪积分预测 float predicted = angle + gyro_rate * dt; // 加速度计修正 angle = alpha * predicted + (1 - alpha) * accel_angle; }alpha越大,越信任陀螺仪,动态响应好但会漂移;alpha越小,越信任加速度计,静态稳但动态滞后。平衡小车通常取0.95到0.99之间。注意accel_angle要用atan2计算,且只在车体加速度较小时才可信,所以很多方案会在电机加速时降低加速度计权重。面试官最想听的是:你为什么选互补滤波而不是卡尔曼?答案要落到“控制周期5ms以内,卡尔曼的矩阵运算在8位单片机上跑不完,互补滤波计算量小且参数物理意义明确”。如果面试官追问卡尔曼,你要能说出状态方程和观测方程分别对应陀螺仪和加速度计,以及协方差矩阵的物理含义。3.2 电机驱动:PWM频率与死区补偿直流有刷电机用H桥驱动时,PWM频率选10kHz到20kHz。太低会有可听噪声,太高则MOS管开关损耗大。电赛常用TB6612或DRV8833,前者支持100kHz但实际用10kHz足够。死区补偿是很多队伍忽略的点:H桥上下管切换时需要死区时间防止直通,但死区会导致低占空比时电机不转。解决办法是在PWM输出上加一个最小占空比偏置,或者用硬件死区时间可调的驱动芯片。// 电机死区补偿 #define DEAD_ZONE 0.05f // 5%占空比以下电机不转 float motor_output(float pwm) { if (pwm > 0) { return (pwm < DEAD_ZONE) ? DEAD_ZONE : pwm; } else if (pwm < 0) { return (pwm > -DEAD_ZONE) ? -DEAD_ZONE : pwm; } return 0; }DEAD_ZONE要实测:给电机逐渐增大的占空比,记录它开始转动的最小值。补偿后,速度环在低速时不会因为死区而积分饱和。注意这个补偿只对开环有效,如果速度环有积分项,积分会自动补偿死区,但会带来启动延迟。3.3 真题演练:2021年电赛“送药小车”平衡控制部分这道题要求小车在载药后保持平衡并行驶。载药后重心升高,直立环的P和D都要重新整定。很多队伍直接沿用空载参数,结果小车一放药就倒。答题思路:先测空载和满载的重心高度,根据重心高度调整直立环参数。重心越高,P越小、D越大,因为高重心系统更容易振荡。具体操作:空载时调好直立环,记录P0和D0。满载后,把P降到P0的70%,D升到D0的1.3倍,再微调。同时速度环的积分限幅要减小,因为满载时电机加速慢,积分容易累积过大导致过冲。现场可以用砝码模拟载重,提前标定一组参数。注意:电赛现场不允许带砝码,但可以用矿泉水瓶装水模拟,提前在实验室做好重量-参数对照表。4. 易错点:平衡小车调试中最容易翻车的五个地方4.1 陀螺仪零漂未校准就上电错在哪:上电后直接进入控制循环,陀螺仪零漂导致角度积分持续偏移,小车会缓慢向一个方向加速直到倒地。为什么错:MEMS陀螺仪零漂随温度变化,冷启动和热机后零漂不同,不校准等于给直立环加了一个持续偏差。怎么答对:上电后前2秒电机不输出,采集100次陀螺仪读数取平均作为零漂,后续所有角速度减去这个值。如果比赛现场温度变化大,每5分钟重新校准一次。4.2 速度环积分限幅过大错在哪:速度环积分项没有限幅或限幅过大,小车被挡住时积分持续累积,一旦障碍移除,小车会突然猛冲。为什么错:积分项的作用是消除稳态误差,但执行器有物理极限,积分超过极限后只会造成过冲。怎么答对:积分限幅设为电机最大输出对应占空比的20%到30%,并且当PWM输出饱和时停止积分累积。4.3 直立环D项直接用角度差分错在哪:用角度差分计算D项,噪声被放大,电机发出高频啸叫。为什么错:角度差分等价于对角度的噪声求导,噪声频率越高,差分值越大。怎么答对:直接用陀螺仪输出的角速度作为D项,因为陀螺仪测的就是角速度,不需要差分。如果陀螺仪噪声大,加一级低通滤波,截止频率设为50Hz到100Hz。4.4 轮腿前馈系数未随腿长变化错在哪:腿长变化时前馈系数不变,导致腿伸长时补偿不足、腿缩短时补偿过度。为什么错:前馈量Δx = L * sin(θ_leg),L变化时Δx成比例变化,固定K_FF无法适应。怎么答对:把K_FF乘以当前腿长与标定腿长的比值,或者直接在线计算Δx而不查表。4.5 转向环与直立环共用PWM输出错在哪:转向环输出直接叠加到左右轮PWM上,没有限幅,转弯时一侧轮子PWM饱和,直立环失效。为什么错:直立环需要PWM余量来维持平衡,转向占用了全部余量,车体必然倒。怎么答对:转向环输出限幅到直立环输出的20%到30%,并且优先保证直立环输出,转向只在余量内分配。5. 答题技巧:电赛现场如何快速整定参数现场调试时间通常只有4到6小时,不可能从零开始调参。我的习惯是提前在实验室做好三组参数:空载直立环、满载直立环、速度环基础参数。现场只做微调,微调顺序固定为:先陀螺仪零漂校准,再直立环P和D,再速度环P和I,最后转向环限幅。具体操作:上电后先用手推车体,看回正力度。如果回正太慢,加P;如果回正后振荡,加D。直立环调好后,给一个很小的速度指令,看小车能否缓慢移动。如果不动,加速度环P;如果移动时前后晃动,减速度环P或加直立环D。转向环最后调,先给很小的转向指令,看车体倾斜程度,倾斜大就减转向限幅。提示:现场用蓝牙模块实时传回角度、速度、PWM数据,用上位机画曲线,比盲调快得多。没有蓝牙就用OLED屏显示关键数据,至少能看到角度和PWM。押题思路:轮腿式平衡小车今年大概率还是考“动态平衡+路径跟踪”。动态平衡的考点是变重心补偿,路径跟踪的考点是转向环与直立环的解耦。把这两个点吃透,题目怎么变都不怕。另外,电赛近年喜欢加“无线充电”或“视觉识别”模块,平衡控制部分反而简化,所以不要把全部时间花在调参上,留出时间做任务逻辑。从那以后我每次赛前都会强制走一遍校准流程:陀螺仪零漂、编码器一致性、电池电压补偿、死区补偿,一个都不跳过。希望帮到你。本文还有配套的精品资源,点击获取