上一篇聊了轻量化机器人的关节控制和力控——那是控制算法层面。这篇聊支撑这些算法运行的硬件和底层软件——嵌入式系统。天太的轻量化机器人受限于体积和功耗,嵌入式系统的设计约束跟Walker那种大家伙很不一样:算力更受限(不能用太耗电的高性能处理器)、实时性要求更高(轻量化机器人对控制延迟更敏感)、功耗要严格控制(电池容量小,每一瓦特都得精打细算)。面试核心考RTOS和电机驱动。
面试官的开场问题很实际:"天太的机器人有12个关节,每个关节需要一个电机驱动控制器。你设计一套嵌入式系统架构,让主控制器能同时实时控制这12个关节。"
RTOS选型与任务调度
面试官问:"主控制器用什么芯片?跑什么操作系统?"
轻量化机器人的主控制器通常选ARM Cortex-A系列的应用处理器(比如NXP i.MX8或者瑞芯微RK3588)——算力够跑上层算法(导航、感知等),功耗在可接受范围内(5-10W)。操作系统选Linux+PREEMPT_RT实时补丁——跟前面聊过的优必选方案类似,但天太的实时性要求更苛刻。原因是轻量化机器人的控制频率更高——重型机器人的平衡控制可能200-500Hz就够了,轻量化机器人因为惯性小、响应快,控制频率通常要做到1000Hz甚至更高(1毫秒一个控制周期)。
面试官问:"12个关节的控制任务怎么在RTOS上调度?"
12个关节的控制任务在每一个控制周期(1毫秒)里都要执行一遍——读取所有关节的状态、运行全身控制算法、下发新的力矩指令。这些任务有严格的时序要求:必须在1毫秒内全部完成,否则下一个控制周期的数据就会过期。任务分解方式是流水线——第一个任务从各个关节驱动器收集传感器数据(通过CAN总线或者EtherCAT,约200微秒),第二个任务运行控制算法(约300微秒),第三个任务向各关节下发控制指令(约200微秒),剩余300微秒作为裕量(应对偶尔的计算波动)。三个任务用SCHED_FIFO实时调度策略,按优先级顺序执行。
面试官追问:"如果控制算法某次执行时间超了(比如遇到了数值奇点导致矩阵求逆耗时增加),导致1毫秒周期超时了怎么办?"
这就是Watchdog超时保护的用武之地。每个控制周期开始时启动一个硬件看门狗定时器(设定1.2毫秒超时——留200微秒裕量)。如果控制算法在1.2毫秒内没有完成,看门狗触发中断,系统立即进入安全模式——所有关节切换到零力矩模式(电机停止输出力矩,关节制动器锁死),机器人缓慢蹲下或者直接原地停机。安全模式的处理逻辑是写在中断服务程序(ISR)里的,不依赖操作系统的调度——即使RTOS本身出了问题,ISR也能直接控制硬件执行安全动作。
电机驱动:从数字信号到电力输出
面试官问:"关节控制器收到主控制器的力矩指令后,怎么转换成电机的三相PWM信号?"
关节控制器是一个小型的嵌入式板子(通常基于STM32或者TI C2000系列的DSP),上面跑着FOC算法(前面044篇详细聊过)。整个链路是:接收力矩指令(通过CAN/EtherCAT)→力矩转换成iq目标值→iq跟实际测量的iq做差→PI控制器算出Vq→反Park变换得到Vα、Vβ→SVPWM生成三相PWM→驱动MOSFET功率管→三相电流流过电机绕组→电机产生力矩。这个链路在关节控制器上每100微秒执行一遍(10kHz的电流环频率),远高于主控制器的1kHz控制频率。
面试官问:"编码器的信号处理也在关节控制器上做吗?"
是的——编码器的原始信号(增量式的ABZ脉冲或者绝对式的SPI/SSI数据)由关节控制器采集和处理。增量式编码器的ABZ脉冲需要用硬件计数器(STM32的定时器编码器模式)来计数,再转换成角度和速度。绝对式编码器通过SPI接口读取——每次采样读一个数字值,直接就是角度。速度信号通常不是编码器直接给的,而是通过差分计算——相邻两个采样点的角度差除以采样周期得到角速度。但差分计算会放大噪声(特别是低速时角度分辨率有限),所以通常加一个低通滤波器或者用锁相环(PLL)来估计更平滑的速度信号。天太的关节控制器据说用了一个二阶PLL来做速度估计,在低速下比简单的差分+滤波方案平滑得多。
面试官追问:"电机驱动板的EMI(电磁干扰)问题怎么处理?"
电机驱动是嵌入式系统里EMI最大的来源之一——MOSFET的高速开关(PWM频率通常16-20kHz,上升沿几十纳秒)会产生很强的高频电磁辐射,可能干扰编码器信号、通信总线、甚至主控制器的ADC采样。EMC设计的几个关键措施:功率地和信号地分开——MOSFET的大电流回路(功率地)跟编码器和通信芯片的小信号回路(信号地)在PCB上走不同的地平面,只在电源入口处单点连接;MOSFET栅极加串联电阻——减缓开关速度(上升沿从20ns变成100ns),降低高频辐射(代价是开关损耗略增);编码器信号用差分传输——用RS-422或者LVDS差分信号代替单端信号,抗干扰能力提升10倍以上。
面试官追问:"轻量化机器人的电机驱动器跟重型机器人的有什么区别?"
最大的区别是尺寸和散热。重型机器人的关节模组里空间充裕,可以用大尺寸的驱动板和散热片。轻量化机器人的关节模组非常紧凑(直径可能只有40-50毫米),驱动板必须做高密度设计——用小型化的MOSFET(比如DFN封装的GaN FET,比传统硅MOSFET体积小50%以上)、多层PCB布局(四层或六层板把功率电路和控制电路分层放置)。散热方面不能靠风扇(关节模组是密封的),只能用导热设计——把MOSFET的焊盘通过热过孔(thermal via)连接到PCB的内层铜皮,再通过外壳的铝合金散热。
面试官问:"关节控制器跟主控制器之间用什么通信协议?"
轻量化机器人常用的有两种:CAN总线和EtherCAT。CAN总线是机器人行业最成熟的通信方案——12个关节节点挂在同一条CAN总线上,波特率1Mbps,一帧数据8字节,轮询12个节点大约需要150微秒。CAN的优点是简单可靠、布线成本低,缺点是带宽有限(如果数据量大了通信延迟会增加)。EtherCAT的带宽高得多(100Mbps),轮询12个节点只需几十微秒,但硬件成本高(每个关节需要一个EtherCAT从站控制器芯片)。天太据说用的是CAN FD(CAN的升级版,波特率可达8Mbps,每帧最多64字节)——在成本和性能之间取了一个折中。
面试官问:"整个系统的电源怎么设计?电池供电的情况下怎么管理功耗?"
轻量化机器人通常用一块锂电池组(比如6S,标称22.2V,容量4000-6000mAh)。12个关节电机是最大的功耗来源——每个电机峰值功率约50W(力矩×转速),12个同时满载就是600W,电池只能撑几分钟。实际使用中不会所有关节同时满载——行走时大约3-4个关节同时大功率输出,其他关节处于低功率状态,平均总功耗约100-200W,电池可以支撑30-60分钟。
功耗管理策略包括:动态电压调节——关节在低负载时降低母线电压(从24V降到12V),减少MOSFET的开关损耗;睡眠模式——关节在长时间静止时(比如机器人站着不动等待指令),关节控制器进入低功耗睡眠模式(电流从50mA降到5mA),需要运动时主控制器发一个唤醒信号在100微秒内恢复全速运行;再生制动——关节减速时电机变成发电机,把动能回充到电池里(类似电动车的动能回收),虽然回收的能量不多(每次减速回收几百焦耳),但对续航有一定帮助。
准备天太嵌入式系统工程师的面试,建议重点掌握三个方向:一是RTOS基础(任务调度、中断处理、看门狗、实时优先级),二是FOC电机控制(从原理到代码实现,推荐看SimpleFOC和TI MotorControl SDK的文档),三是嵌入式通信协议(CAN/CAN FD/EtherCAT的原理和区别)。如果有条件的话,自己用STM32+驱动板做一个单关节的FOC控制器,从硬件选型到代码调试完整走一遍,面试时能讲出具体踩过的坑非常加分。
下一篇预告:天太系列到此结束。第53篇进入加速进化(Accelerated Evolution),聊强化学习算法工程师面试——RL步态学习和Sim2Real方向。这家公司在强化学习步态方面走得很前沿,面试风格偏学术。
点赞、在看、转发,三连是对我最大的支持!
「具身机器人大厂面经·从入门到精通」连载系列
上一篇:第051篇 天太机器人·轻量化人形机器人控制工程师面试
下一篇预告:第053篇 加速进化·强化学习算法工程师面试
评论区聊聊:你面试过哪家机器人公司?最难的题是什么?
关于本系列:「具身机器人大厂面经·从入门到精通」是360篇连载系列,覆盖大疆、宇树、智元、华为、腾讯等60+家具身机器人公司的真实面试内容。本篇属于人形机器人创业公司阶段。
夜雨聆风