智能车竞赛轮腿穿越组:PMSM驱动、TC264与动态前瞻实战解析
发布时间:2026/9/30 6:20:13 锦皓数字建站

第二十一届全国大学生智能汽车竞赛总决赛的调试区比我想象中要吵得多。电机啸叫、风扇声、对讲机声混在一起地面上随处是拆下来的轮毂、弹簧腿和排线。我站在英飞凌轮腿穿越组的备赛区域旁边看一支队伍把一个刚刚跳完障碍、还在微微发颤的轮腿机器人抬回工位开始读遥测日志。这是第21届比赛里我印象最深的画面——以前的智能车拼的是贴着地面跑的速度和稳定性现在的轮腿穿越组要求你用轮子加速、用腿越过障碍等于把“车”和“机器人”两个命题硬生生焊在了一起。这篇现场采访笔记我想结合我在场边看到的队伍状态、听到的技术讨论以及我自己做电机驱动和嵌入式开发的经验把轮腿穿越组背后的技术点拆开讲讲英飞凌的TC264与AURIX开发环境、PMSM电机驱动方案、动态前瞻路径跟踪以及那些只有真到比赛现场才看得见的坑。不管你是正在备赛的队员、带队的老师还是做轮足机器人相关项目的工程师这篇内容都能帮你少走不少弯路。1. 轮腿穿越组一场从“车速”到“机器人”的规则革新1.1 从平路竞速到越障穿越赛制到底改了什么全国大学生智能汽车竞赛这些年一直在变。早期的电磁、摄像头组说白了就是让车模沿着赛道高速跑考验的是传感器滤波、转向控制和极限速度下的稳定性。但从第20届开始出现的轮腿相关组别和第二十一届正式全面铺开的英飞凌轮腿穿越组规则逻辑完全换了方向车不再是四个轮子贴地跑而是采用轮腿式结构wheel-legged在赛道中要完成上下坡、穿越障碍甚至跳跃动作。这种规则变化背后有很现实的原因。平路竞速的天花板太明显了——当一辆车已经能稳定跑出很快的速度时剩下能优化的东西反而变成了车模的机械极限而不是学生能力而加上障碍、台阶、颠簸路面之后速度只是结果真正的难点变成了怎么在复杂的机械动力学条件下保持稳定和控制。我采访的几支队伍里基本没有哪支是直接沿用上一届代码的全都得从机械结构开始重新设计。1.2 轮腿机构的机械红利与工程代价轮腿结构最大的红利是“通过性”。轮子负责快速平顺地前进腿负责在障碍物面前提供额外的自由度——可以抬起、可以弹跳、可以在落地的瞬间吸收冲击。现场看到的主流方案有两种一种是后轮驱动加前腿跳跃一种是四轮独立悬挂里加入主动抬腿机构。前一种更像“能跳的车”后一种更像“带轮子的机器人”。两种方案对MCU实时性和电机响应速度的要求都非常高。代价也很明显。轮腿结构让整车重心比普通车模高出一截急转弯时侧倾力矩变大跳跃落地时如果姿态环跟不上很容易直接翻车。我现场看到不少队伍的调试过程就是在反复做三件事调重心、调避震、调落地瞬间的电机力矩。机械结构决定了这台车“能不能跳”控制算法决定它“跳完之后还能不能跑”——这两件事在轮腿组里是强耦合的任何一方掉链子整车表现都会立刻露馅。2. 英飞凌AURIX平台为什么大家都绕不开TC2642.1 TC264的性能定位与选型逻辑轮腿穿越组指定使用英飞凌平台这个约束本身就把技术栈拉齐了。绝大多数参赛队伍接触到的第一款AURIX芯片就是TC264TriCore内核主频200MHz片内集成FPU和DSP指令还有专门为电机控制设计的GTM定时器模块和12位ADC。对智能车这种对实时性要求极高的场景来说TC264的性能上限非常够用而且很多做竞速组的队伍本来就用它代码和调试经验可以直接迁移一部分。但轮腿组和竞速组有个本质区别竞速组主要是“读传感器→控制转向→跑”轮腿组还要叠加姿态解算、步态决策、跳跃时序这些任务。TC264在跑FOC电流环加姿态环加路径规划时CPU占用率往往已经超过一半。我现场听到一个队伍吐槽“原来跑摄像头组的时候TC264闲得很现在加了IMU解算和跳跃状态机一看CPU Load直接飙到70%”。所以选型不是看芯片好不好而是看你有没有把算力花在刀刃上。2.2 ADS编译器的上手路线与常见坑很多队伍从Keil或STM32转过来第一道坎就是英飞凌的开发环境。英飞凌官方的AURIX Development StudioADS是个免费的Eclipse IDEGCC编译链不需要许可证这点对学生极其友好相对而言Tasking编译器虽然性能好、代码密度高但授权费用不是每个学校都愿意掏。所以现场问了一圈绝大多数人用的都是ADS少数用IAR。ADS最初的坑集中在三点下载、工程模板、iLLD库路径。先说下载ADS安装包本身就大国内下载速度不稳定建议直接去英飞凌官网注册后下载或者找已经装好的队友拷贝整个安装目录。再说模板新建工程时最好直接选“AURIX TC26x”对应的空工程模板不要把例程里的一堆demo代码直接拷进来否则后面想加自己的模块时例程里的外设初始化会和你的代码打架。最后是iLLD建议把英飞凌的iLLD库放在工程外部的固定目录通过路径引用而不是把整个LIB文件夹复制进每个工程否则库一更新所有工程都得重弄一遍。2.3 GTM、iLLD与MCAL底层资源怎么分配对轮腿组来说GTM是整块芯片里最值得花时间研究的外设。GTM不是一个简单的定时器它内部有多个子模块其中最常用的两个是TOM和TIMTOM用来生成PWM波形TIM用来做输入捕获接编码器或者霍尔传感器都很方便。很多同学第一次配GTMPWM不出波大概率不是代码写错而是忘了给CMU时钟管理单元配置正确的时钟源和分频系数。GTM和普通定时器的思维模型完全不同它是“时钟树子模块通道”的三层结构建议先画个图再配寄存器。MCAL则代表了另一个方向。AURIX还可以用EB tresos配置AUTOSAR MCAL驱动包这是车企做ECU的主流路线。竞赛里用MCAL的人很少因为iLLD这种轻量级驱动库对单核MCU的开发效率更高。但我建议参赛队员至少花点时间了解MCAL是什么、EB tresos怎么生成代码——因为你毕业后面试做汽车电子的公司时聊AURIX加MCAL几乎是必考题而竞赛里正好给了你接触AURIX硬件的机会。在iLLD和MCAL之间做选择本质是在“快速开发调试”和“工程化标准化”之间做取舍。3. PMSM驱动系统轮腿机器人的动力核心3.1 为什么轮腿组离不开PMSM比赛现场转一圈会发现轮腿组的电机清一色都是PMSM永磁同步电机基本看不到传统竞速组里那种直流有刷电机或者普通无刷电机。原因很直接轮腿机器人需要在极短时间内输出大扭矩来完成跳跃、落地缓冲、急加速度变化有刷电机的碳刷磨损和换向火花在高动态场景下是致命问题而PMSM的转子是永磁体没有换向机构效率高、力矩密度大、调速范围宽天生适合这种爆发力场景。而且英飞凌在PMSM驱动这条链路上有完整方案MCU负责FOC算法门驱动芯片负责把MCU输出的3.3V PWM信号放大成能驱动MOSFET的电压三相全桥负责把母线电压变成可控的交流电压给电机。现场很多队伍直接采用“MCU驱动芯片三相全桥编码器”的标准架构方案成熟调试时大家互相也有参考。核心区别就在于FOC代码是自己写的、用官方库改的还是直接用带算法集成的专用芯片——这也决定了你在场上的调试上限。3.2 FOC控制链路从电流采样到SVPWMFOC磁场定向控制是PMSM驱动的核心算法。简单说就是把三相交流电流通过Clark变换和Park变换从静止的abc坐标系变换到随转子旋转的dq坐标系让电流控制变成两个直流量d轴励磁电流和q轴转矩电流。这样一来电机控制的思路就退化成两个独立PID控制极大地简化了高动态下的力矩控制。现场和队伍聊下来成熟方案基本是三环结构电流环、速度环、位置环电流环频率做到10kHz以上速度环1kHz以上位置环根据场景放在200Hz到1kHz之间。实现FOC的最后一公里是SVPWM空间矢量调制。它比传统的SPWM电压利用率更高同样母线电压下能输出更大的相电压幅值这对比赛来说就是同样的电池容量能跑出更高的速度。但SVPWM的代码量不算小而且对PWM频率和死区配置很敏感。现场有个队伍让我看他们的相电流波形明显带尖峰一问才知道是死区时间设太长电流采样窗口又正好落在死区附近采出来的电流不干净导致电流环抖动。这种问题不是看PDF能发现的必须用示波器加电流探头实测才能定位。3.3 现场实测电机发热、噪声与PID调参经验比现场更真实的是调试区的各种“病”。我注意到不少队伍都很在意电机温度因为轮腿机器人的电机经常工作在堵转边缘——跳跃发力瞬间电流可以到额定值的几倍要是电机过热退磁力矩会断崖式下降。一个队员分享的实测经验是先用温度贴纸监控电机外壳温度连续跑10次跳跃动作如果温度超过80°C先别急着改PID而要先查机械阻力和电流环采样是否正常因为发热大概率是电流失控或者机械卡顿而不是PID参数不精致。PID调参方面轮腿组有一个和竞速组很不一样的体验竞速组调转向PID可以慢工出细活轮腿组的电流环如果参数不对电机立刻啸叫。现场听到一个比较实用的小技巧电流环的I分量不要一开始就拉太高先只调P让电流跟随目标值等电流波形没有明显超调再慢慢加I消除稳态误差速度环用PI就够了D项在这个环节通常只会放大编码器噪声。调完三环之后再用前馈把姿态环和速度环的解耦做好比盲目堆高增益有效得多。4. 动态前瞻与运动控制轮腿“怎么跑得稳”的关键4.1 纯跟踪模型前瞻距离背后的几何本质动态前瞻这个词在智能车圈子里出现的频率越来越高尤其到了有连续弯道障碍的轮腿赛道。它的本质可以追溯到经典的纯跟踪Pure Pursuit几何模型从后轴中心出发在目标路径前方找到一个距离为Ld的前瞻点然后计算当前车头方向与该点的夹角α代入转向公式δ atan(2L sinα / Ld) 得到需要的转向角。其中L是轴距Ld就是最核心的调节参数。前瞻距离Ld决定了轨迹跟踪的“激进程度”Ld很小车会更贴路径但在高速下容易振荡Ld很大车会更平滑但过急弯时会产生明显的切弯误差。所以工程上最常见的做法不是选一个固定Ld而是让它和车速成正比Ld k * v b。低速时用较短的前瞻保证贴线精度高速时自动拉长前瞻抑制振荡。这个思路在现场很多队伍的代码里都能看到区别只在系数标定和滤波处理上。4.2 动态前瞻的工程实现不能只调一个系数动态前瞻听起来只是一个公式但实际落地时有三层细节。第一层是路径输入前瞻点必须在平滑后的目标路径上取而不是直接在原始离散路点里找否则误差本身就带噪声。第二层是车速估计轮腿机器人跳跃前后速度变化剧烈直接用码盘速度算Ld会在落地的瞬间把前瞻距离突然拉长导致方向突变所以速度要先过一阶低通滤波。第三层是前瞻点的连续性上一帧的前瞻点和这一帧的前瞻点不能跳变太大否则转向角会抖现场队伍普遍会在前瞻点坐标上再做一次移动平均。跳跃动作对动态前瞻的影响也是现场才注意到的。轮腿在跳过障碍的那几百毫秒里轮子可能离地速度环实际是开环的这时候路径跟踪如果还在算落地之后的前瞻点就是错的。比较好的做法是引入一个“跳跃状态”跳跃前缓存落地后的目标前瞻点跳跃中冻结横向控制落地后再重新计算前瞻。这和传统的连续路径跟踪思路不太一样属于轮腿组特有的工程细节。4.3 姿态环、速度环与路径环的分层配合轮腿机器人的控制系统比普通车模多了一层姿态环。普通车模是二轮或四轮贴地车身姿态基本由机械结构决定轮腿组一旦跳跃车身在空中没有地面支撑姿态只能靠腿部和轮子的瞬时动作来调整。现场看到的主流方案是姿态环采用IMU数据经过加速度计加陀螺仪的互补滤波很多队伍用Mahony解算出俯仰角再把它作为上层控制器的输入输出给腿部的伸缩机构或轮子的加速度补偿。三层控制环的配合顺序很关键路径环决定车该往哪走速度环决定车该走多快姿态环决定车在运动过程中别翻。层次越低控制频率越高优先级也越高。很多队伍把姿态环直接放到FOC的中断里保证落地瞬间姿态修正不被打断路径环则放在主循环里低频运行。现场看下来凡是姿态环和FOC耦合不好的队伍跳跃动作都会很生硬落地一瞬车头乱摆耦合得好的跳完立刻能继续走线外人看上去就像多了一个会刹车的人在帮忙扶车。5. 现场采访实录备赛队伍的真实状态与踩坑记录5.1 开发环境与编译调试的“隐藏陷阱”现场采访里聊得最多的不是控制算法而是开发环境和代码稳定性。轮腿穿越组用的工程规模比竞速组大得多一个工程里往往有电机控制、IMU解算、路径规划和上位机通信好几套模块同时跑。这时编译器优化等级的问题就特别突出有个队伍在O1优化下一切正常把优化等级改成O2之后中断里的标志位在主循环里死活读不到查了半天才发现是没加volatile。这种问题在比赛调试期非常典型几乎每一届都有人踩。还有一支队伍跟我讲了他们的协作教训比赛前一周为了合并代码三个人用同一个网盘目录改代码改到后面没人知道当前哪个版本能跑。最后他们现场手动回退白白浪费了大半天。所以这次比赛让我感触最深的一点是代码版本管理不是大公司才需要的东西哪怕只是三个人的小队用Git管理和备份也远比“最后一个人改完发群里”可靠。现场统计下来用Git的队伍在比赛日的紧张程度明显低一截。5.2 机械与电子的联调难题重心、打滑与共振轮腿组的机械结构不是画完CAD就完事的。采访中一位负责机械的队员提到他们最初设计的前腿组件用了太多铝件和加强筋组装完之后整车比预期重了将近400g直接导致跳跃时需要更大的力矩PMSM发热严重姿态环的响应频率也上不去。后来被迫把腿部的结构件换成碳纤维板重新做拓扑减重才把第一版跑起来。轮腿组的结构设计一定要把“减重”当成和“强度”一样重要的指标因为多出来的每一克都是在给电机和电池分摊压力。轮子打滑是另一个现场高频词。轮腿跳跃落地瞬间轮子受到水平和垂直方向的同时冲击如果轮胎抓地力不够起步那一瞬间就会出现明显的打滑导致编码器测速失真速度环误判。一个队伍的解决方案是在轮毂外加了一层橡胶热缩管增大摩擦系数虽然看起来有些硬凑但实测确实有效。还有一个现场并不罕见的问题是共振跳跃落地时车身某个频率被持续激发姿态环越调越颠。这种时候不要急着加控制器增益先检查机械结构上有没有松动有时候只是螺丝没拧紧。5.3 比赛当天的稳定性策略冗余设计与应急方案到了决赛当天队伍拼的全都是“不出事”。我观察到做得好的队伍有几个共性第一准备了多套参数集快速赛道、复杂障碍、雨天打滑各存一套通过一个宏开关切换第二全部关键外设都加了看门狗一旦程序卡死能在几百毫秒内自动重启而不是直接翻车第三车上预留了无线调试接口即使不用上位机调参也能通过蓝牙模块远程改关键参数避免每次都要插线重启导致电池电压波动。还有一个细节让我印象很深一支队伍在候场区发现了电池电压在跳跃时会瞬间跌落导致MCU复位。他们排查了一圈发现是跳跃瞬间电机电流过大在电池内阻上压降太大供电线又细触发了芯片的欠压复位。最后的应急做法是把原来18AWG的电源线换成16AWG并在电源入口加了一颗大容量电解电容。这种问题谁也不愿意在比赛当天遇到但它恰恰说明了电源完整性在强动态负载下有多重要——不只是选一个稳压芯片就完事。6. 给下一届备赛队伍的实操清单6.1 时间轴与团队分工别把FOC留到最后三个月这次现场采访我的一个强烈体会是轮腿组的周期和传统竞速组完全不同。传统竞速组可以先把车模跑起来再慢慢调算法轮腿组从机械结构到电机驱动再到路径规划每一步都依赖前一步的稳定时间轴必须拉得很开。建议的排期是正式备赛前三个月把机械结构定稿并完成电机驱动平台验证赛前两个月进入全系统联调最后一个月专门留作稳定性测试和参数冗余。前三个月如果还在改机械结构后面所有算法工作都会被拖着走。团队分工上轮腿组至少需要四个人机械结构设计与减重、硬件驱动板与电源、嵌入式FOC与底层驱动、算法路径规划与上位机。如果条件允许最好是机械和嵌入式各配一名有经验的队员带新人。我在现场采访中听到最多的遗憾就是“我们算法队友一直等到机械完全能跑之后才介入结果根本没有时间调动态前瞻”这种衔接问题完全可以靠明确分工提前规避。6.2 硬件选型与冗余设计三项必需的前期投资硬件选型直接影响后面所有工作能不能顺利推进。首先是电机与编码器建议直接选择有成熟开源驱动的PMSM和磁编码器避免把时间花在解一个没资料的电机协议上其次是驱动板要么选口碑好的成熟驱动板要么自己画板但一定要预留电流采样和母线电压检测引脚这两个信号对FOC调试和电源监测都很重要第三是电源方案轮腿的电流峰值比竞速组大得多电源线径、滤波电容、电池放电倍率都必须提前算好否则比赛当天很容易出现复位和掉电。冗余设计方面一个很实用的做法是给整车做一个“保守模式”当检测到电池电压低于阈值、或者IMU数据异常时自动切换到一组低速低增益参数宁可跑得慢也不要翻车。比赛成绩往往是“跑完的比跑得快但翻车的排名高”这个经验在轮腿组尤其适用。6.3 软件架构与调试工具让问题可以“被观测”轮腿系统复杂调试不能靠“感觉”。建议从一开始就把软件分成清晰的状态机待机、启动、巡线、跳跃准备、跳跃、落地缓冲、恢复、急停。每个状态有独立的进入条件和退出条件配合一个环形日志缓存把关键变量电流、速度、姿态角、PWM占空比、状态转移时间戳按周期刷进内存通过串口或者蓝牙在上位机里回放。没有日志系统跳跃失败就是两眼一抹黑只能靠反复试。参数整定也是同理。多写几个上位机页面电流曲线、速度曲线、姿态角曲线、路径跟踪误差曲线比任何玄学调参都有效。队伍里最值钱的不是某个调好的PID参数而是“知道怎么把问题定位到具体模块”的调试流程。现场很多队伍的设备其实都齐全差距就在有没有把调试流程沉淀成自己的方法论。我个人在第二十一届智能汽车竞赛总决赛现场的体会是轮腿穿越组真正难的不是某个单项技术而是机械、电机控制、路径决策、现场稳定性这些事互相咬合任何一环出问题都会在跳跃落地那一瞬间被放大。如果你正准备下一届比赛我的建议就是先把FOC调到“电流波形干净”再把姿态环做到“跳完不晃”最后才去追求动态前瞻跑得有多快——这个顺序倒过来大概率是要在调试区熬夜的。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。