
我一直觉得类人机器人是机器人领域里最骗人的门类。不是骗别人是骗自己。网上那些跑得又稳又快的双足机器人背后是几十万级的关节模组、定制减速器、力控算法团队。但如果你只是想做一个能挥手、能转头、能抓取小物件的类人上半身成本完全可以压到几千块以内前提是你在机械结构和电子系统上愿意花心思。这篇文章就围绕我手头这个中配方案展开——它不追求 Atlas 那种动态跑酷目标很朴素用桌面级材料和开源硬件搭出一个结构可靠、控制接口清晰、具备扩展性的类人机器人原型。我会把机械结构的设计取舍、电子系统的选型逻辑、关节驱动的参数匹配以及我在调试过程中踩过的坑一次性讲透。1. 整体设计与需求拆解1.1 先想清楚你做的到底是哪种类人机器人类人机器人humanoid robot这个概念范围太宽了。全臂双足灵巧手是一个方向固定基座双臂也是一个方向甚至只做一个带头部和单臂的桌面级装置也可以叫类人机器人。我的建议是第一步先明确形态边界。这个中配方案最终定的是固定腰座双7自由度手臂3自由度头部的组合。简单说就是腰部固定在一个底座上两只手臂各有7个关节肩3、肘1、腕3头部可以左右转、上下俯仰、左右侧摆。没做腿原因是双足涉及到的动态平衡和足端力控在几千块预算内根本做不出可用效果硬做只会得到一个会摔倒的昂贵摆件。提示如果你第一次做类人机器人建议从上半身开始。这不仅省钱更重要的是能把精力集中在最核心的机械结构设计和电子系统调试上而不是被运动控制的复杂性拖垮。1.2 中配方案的核心指标和预算分配既然说中配就得有个量化标准。我在设计前定了几个硬指标单臂自由度7冗余自由度方便末端避障和姿态调整末端负载能力至少 300g能拿起一个小水杯关节最大转速不低于 60°/s整机供电12V/5A 直流输入总线供电控制周期10ms100Hz 刷新率预算分配上我建议这样切机械结构件和标准件占 35%关节驱动舵机/电机减速器占 45%电子系统主控、传感器、电源占 20%。关节驱动是大头这里不能省一个关节的可靠性直接决定了整机能坚持多久不散架。1.3 机械和电子的分界模块化思维的起点做机器人最忌讳的就是机械和电子各搞各的。很多新手把结构画完才发现传感器没地方装、线束没走线槽、电机线干涉运动。我的做法是在设计初期就定好物理接口和数据接口的边界物理接口所有关节采用统一的输出法兰尺寸和安装孔位方便换装不同型号的舵机或电机模组。电气接口关节电机统一使用串行总线控制我用的串行总线舵机电源线和信号线分离传感器走独立 I2C 或 UART不与动力线混在一起。想清楚这些后面每个环节都会顺畅很多。2. 机械结构关节选型与材料工艺2.1 关节驱动选型为什么是串行总线舵机类人机器人每个关节都需要一个能精确转到指定角度的执行器。可选方案有 RC 舵机PWM 控制、串行总线舵机、无刷电机行星减速器驱动器、步进电机。我这个中配方案选的是串行总线舵机核心原因有三点接线简单所有舵机用一根总线串联电源信号不像 PWM 舵机那样每个舵机单独三根线拉回主控板。手臂上 7 个舵机两根线就搞定机械设计不用为线束头疼。反馈完整位置、温度、电压、负载都可以通过总线读回来。没有反馈的机器人控制系统就跟闭眼走路一样调试起来极其痛苦。成本可控一个中等扭矩20kg·cm 级别的串行总线舵机大概在 80 到 150 元之间整机动动 17 个关节预算还能压得住。注意串行总线舵机不是万能的。它的位置控制精度大约在 0.3° 左右重复定位精度还行但绝对精度受舵机内部电位器或磁编码器线性度影响所以不要指望用它做需要高重复精度的工业级操作。对类人机器人原型来说这个精度足够用了。2.2 结构件材料铝板、3D打印和碳纤维管的搭配机械结构材料的选择我认为是整个中配方案里最考验经验的环节。选错了走弯路选对了事半功倍。我的物料清单是结构主体6061 铝合金板3mm 厚激光切割或线切割成型。铝的比强度和刚性都比较均衡3mm 厚度做手臂连杆够用开减重孔后能控制在合理重量。复杂连接件3D 打印PLA 或 PETG。凡是形状不规则、需要走线的转接件都用 3D 打印解决。比如肩部关节的复合支架、腕部的多角度安装座。长距离支撑碳纤维圆管外径 10mm壁厚 1.5mm。前臂和上臂的连杆不用实心铝用碳管既轻又硬还能把舵机线从管内穿过整机美观度提升很多。标准件M3 杯头内六角螺丝、铜柱、法兰轴承、尼龙垫片。注意凡是活动关节两侧的固定都必须加法兰轴承或自润滑垫片否则金属件直接摩擦的阻力会让你怀疑机器人是不是坏了。这一套组合下来整机重量控制在 2.5kg 左右结构刚度实测在手腕处施加 500g 负载时末端下沉小于 3mm可以满足日常调试和桌面演示需求。2.3 关节结构设计旋转中心对齐是底线做多关节机械臂和仿人手臂最容易犯的错误是关节旋转中心和实际安装的舵机输出轴不重合。一旦错位运动学解算结果全部失真即使算法再正确末端轨迹也会是歪的。我的设计原则是每个关节的旋转轴必须严格穿过舵机输出轴的中心且垂直于安装法兰面。为此我在 CAD 里反复检查配合关系并在所有关节连接件的设计上加了定位止口凸台和凹槽配合保证装配误差控制在 0.1mm 以内。具体关节分配方式如下肩部3 个自由度前后摆、外展内收、内外旋是整条手臂的力量核心选用最大扭矩的舵机25kg·cm 级别。肘部1 个自由度屈伸扭矩要求略低20kg·cm 级别。腕部3 个自由度俯仰、偏摆、翻滚末端负载小用 12kg·cm 级别足够。颈部3 个自由度左右转、俯仰、侧摆用中型舵机即可。实操心得肩部内外旋这个自由度很多人会用舵机串联的方式硬做其实可以改成舵机固定连杆驱动的结构让扭矩传递更合理重心也更集中。但代价是结构复杂度上升。中配方案里我用的是直连方式简单可靠调试成本低。2.4 装配顺序和工艺细节机械装配的顺序很重要。我踩过一次坑先把所有手臂连杆装上再装肩部舵机结果因为空间干涉连螺丝刀都伸不进去。后面总结出的合理步骤是先装底座和腰座固定基础校准水平。再装肩关节的固定端舵机锁死在肩部支架上。搭上臂连杆把舵盘和连杆固定转动测试运动范围。依次向下装肘、腕每装一个关节都要先手动转动确认无卡滞再通电测试行程。最后装头部颈部结构简单放最后不会影响手臂调试。装配过程中至少要准备好内六角扳手公制全套、螺丝胶、镊子、尖嘴钳和一个万用表。所有舵机在装入结构前先逐个通电测试确认中位和行程正确再装入机械结构。3. 电子系统架构搭建与关键选型3.1 主控选型什么样的板子撑得起整机控制类人机器人主控需要兼顾算力、接口数量和实时性。我的选择是ESP32 开发板可能很多人会觉得奇怪为什么不用 STM32 或树莓派理由如下ESP32 支持双核 240MHz单核跑控制循环单核跑通信和日志互不干扰。自带 Wi-Fi 和蓝牙做上位机无线调试非常方便。有 3 个 UART 接口正好分配给串行舵机总线、传感器、调试日志。价格便宜20 元左右坏了不心疼。对于中配类人机器人而言ESP32 的算力完全够用。如果你后续要在机载跑视觉识别、路径规划这类重负载任务再考虑加一块树莓派 / 工控机作为上位机通过串口和 ESP32 通信。这个层级划分很清晰上位机负责动脑感知、规划下位机负责动手运动执行、关节控制。3.2 供电系统所有诡异故障的罪魁祸首在电子系统里我特别想说供电。类人机器人整机 17 个舵机同时工作时瞬时峰值电流可以到 8-10A。如果供电跟不上表现不是转不动而是随机死机舵机抖动位置漂移。这些问题在代码层面查一辈子都查不出来。我的供电架构是12V/5A 外置电源适配器 → 输入到机器人底座。底座内放一个DC-DC 降压模块把 12V 降到 6V/7.4V给舵机总线供电串行总线舵机的工作电压范围通常在 4.8-8.4V但建议稳定在统一的电压。另外一路 12V 通过5V/3A 的 DC-DC 模块给主控板和传感器供电。关键提醒舵机电源和主控供电必须共地否则串行通信信号的电平参考不一致会出现间歇性通信错误。我一开始没共地舵机一动作主控就重启排查了大半天。接线的时候把两者的 GND 连在一起问题立刻消失。另一个容易忽略的点是舵机线太长会造成压降。手臂末端舵机和腰座电源之间可能有 40cm 以上的距离启动瞬间电压跌落明显。解决办法是采用电源总线方案用较粗的硅胶线20AWG 以上沿手臂结构走一路 6V 总线每个舵机就近从总线上取电不能一个接一个串联供电。3.3 传感器配置少而精的反馈闭环类人机器人不是光能转就行还要知道自己在什么状态。我在这台中配方案里装了三类传感器惯性测量单元安装在上身躯干用于检测身体姿态俯仰角、侧倾角。未来如果加装腿部这个是姿态闭环的基础。电流检测通过主控的 ADC 或总线舵机的负载反馈监控每个关节的扭矩变化。比如舵机堵转时负载值会飙高代码里可以及时报警或断电保护避免烧舵机。末端力传感器可选如果预算充足可以在手腕加一个六维力传感器但中配方案里我用的是自制触摸开关——在夹爪内侧贴薄膜压力传感器做出基本的抓取感知。常见误区新手喜欢堆传感器觉得越多越高级。实际上传感器数据融合是很大的工作量一次控制循环就 10ms你不可能花 5ms 去解算传感器数据。先想清楚每个传感器的数据用来做什么闭环再决定装不装。3.4 通信拓扑主控如何指挥 17 个关节用 ESP32 控制串行总线舵机物理层接线很简单ESP32 的 UARTTTL 电平通过一个逻辑电平转换模块或直接用舵机支持的 TTL 电平信号接到舵机总线的数据口所有舵机并联在这根数据线上。每个舵机通过 ID 区分。控制逻辑是这样的ESP32 发送操作指令帧包含目标舵机 ID、目标位置、运行时间/速度舵机收到后执行动作并返回状态帧当前位置、温度、电压、负载ESP32 循环查询所有舵机状态实时更新控制模型注意总线舵机的通信协议通常有严格的帧格式比如固定帧头 0xFF 0xFF、ID、长度、指令、参数、校验和在使用时务必核对官方的协议手册。我在调试时犯过一个低级错误把校验和算法里的累加和当成了异或和导致所有舵机都不响应。这种问题没有捷径只能对照手册逐位排查。4. 控制实现从示教到自动动作4.1 两种控制模式直接角度与轨迹插值机械结构装好了、电子系统跑通了机器人还是不会动得像个机器人。控制软件层面我实现了两种模式直接角度模式向每个舵机发送目标角度。用于手动调试、单关节测试、示教录制。轨迹插值模式预先定义一组关键姿态由主控在多个姿态间进行时间规划梯形速度规划让动作平滑过渡。轨迹插值看起来高大上其实原理很简单假设机器人要从姿态 A一组关节角度运动到姿态 B不能一步直接跳过去否则关节会有猛烈的冲击。我用的方式是在 500ms 到 2s 的时长内把每个关节的角度变化分成 50 到 200 个微步每 10ms 下发一个微步让动作平滑连续。注意不同关节的运动时间要同步。如果只是简单地每个关节走自己的速度会出现动作脱节的现象——手腕到位了肩膀还在半路。正确做法是先计算所有关节中运动角度最大、需要最长时间的那个然后以这个时间为基准反推其他关节的每步运动量。4.2 上位机调试用手机/PC 做远程调试这个方案的另一个亮点是 ESP32 的 Wi-Fi 能力。我在 PC 端跑了一个 Python 写的上位机通过 UDP 跟 ESP32 通信。这样就能实时读取机器人状态、发送动作指令、调整 PID 参数如果有闭环控制需求。调试流程一般是这样的上位机发送读取所有舵机角度的指令 → ESP32 返回 17 个关节的角度和负载值 → 上位机实时显示在 3D 模型上。在界面上拖动滑动条调整某个关节角度观察实际动作。觉得某个姿态不错点记录把这一组角度存为一个动作帧。把多个动作帧按时间顺序串起来就形成了一个动作序列。我自己实际体验是有上位机调试和无上位机调试的效率差基本是 10 倍以上。如果你也在做类似的机器人强烈建议尽早搭一个能可视化关节状态的调试界面。4.3 裸机但有状态机程序架构要点很多初学者写机器人控制代码喜欢在loop()里堆一堆 if-else读传感器、算运动学、发舵机指令全混在一起。这样的代码刚开始能跑但一旦要加功能就会崩溃。我的建议是采用有限状态机的架构来组织主控程序。核心状态包括待机所有关节上电保持位置监听指令。执行动作正在按轨迹插值运行动作序列。急停紧急停止所有舵机进入锁定状态。错误传感器异常或舵机反馈异常进入错误处理。这个架构的好处是每个状态内部逻辑独立状态之间通过事件跳转代码可读性和可维护性大大提升。对初学者来说这是迈向工程化的必要一步。5. 调参与优化那些文档上查不到的实战经验5.1 最常踩的坑舵机抖动和共振我调试肘部关节的时候遇到一个很典型的问题当舵机转到某个角度附近会出现高频抖动蜂鸣声用手摸能明显感觉到震动。一开始我怀疑是舵机本身坏了换了一个还是这样。后来排查发现问题出在两个方面负载反射肘部舵机支撑着前臂和腕部的重量在接近垂直位置时舵机需要输出很大扭矩来维持位置。串行舵机的闭环控制在这种情况下容易产生极限环振荡表现为抖动。机械共振3D 打印的连接件在某个频率下会放大舵机传来的震动。解决的思路不是调参而是物理层面优化。我做了两件事一是给前臂做了一个固定支撑点减少肘部舵机的静负载二是在关节连接处加了弹性垫圈破坏共振条件。机械结构微调之后抖动问题基本消除。5.2 舵机堵转保护一夜之间烧掉三个舵机的教训这是我最惨痛的一次教训。有一版动作序列里有一个让手臂从上往下快速移动的动作结果末端碰到桌面上的一本书舵机堵转了。我以为是瞬时现象没在意结果一夜之间三个舵机过热损坏。后面我加了两道防线软件保护每个控制周期读取舵机负载值如果某个舵机负载连续 20 次约 200ms超过设定阈值立即触发急停状态。硬件保护在电源线上加了一个 5A 的保险丝或自恢复保险丝并给舵机总线的每路供电加了一颗大电容1000µF吸收瞬态浪涌。提醒千万不要省掉负载监控。串行总线舵机的负载值读取是它的核心优势你可以随时知道每个关节用没用力、用了多大力。这对排查机械卡死、碰撞检测甚至是后续做简单的力控都是必不可少的数据。5.3 噪声干扰舵机一动作传感器数据就跳还有一个非常隐蔽的问题舵机启动时电机换向产生的电磁干扰EMI会通过电源线传导到传感器导致 IMU 数据出现尖峰跳变。表现是传感器读数在静止状态下本来很稳定一让手臂动作加速度计的数值就疯狂跳。处理手段优先级如下传感器供电和舵机供电彻底分开已经做了。在传感器电源引脚对地并联 0.1µF 陶瓷电容 10µF 电解电容做滤波。I2C 信号线加上拉电阻并用双绞线连接。如果还不行在代码里对传感器数据做滑动平均滤波中值滤波牺牲一点实时性换稳定。我实测下来前两步就能解决 80% 的干扰问题。如果做完前三步还有噪声大概率是接地回路的问题需要检查整个系统的单点接地设计。5.4 动作设计的物理边界为什么机器人总是摔给自己看最后聊一个经常被忽略、但直接影响成品表现的问题动作设计时的物理边界。很多人搭好机器人满怀期待地设计了一套太极拳动作序列结果跑起来不是这里卡住就是那里撞到机器人看上去像在跳机械舞完全达不到预期。这里有一个核心概念叫可达空间。每个关节的舵机都有角度限位比如 0° 到 300°当你在上位机里规划动作时必须确保每个关节的目标角度在可达范围内而且多个关节联动后末端不能撞到机身。我的做法是在上位机上加了一个简单的碰撞检测逻辑把机器人简化为若干圆柱体包围盒动起来之前先检测连杆之间、连杆与躯干之间有没有干涉。这样可以省掉大量的实体调试时间。同时给所有动作序列都设置了软限位偏移——真正到极限角度前留出 5° 的余量避免机器人长期在极限位置工作。舵机长期运行在机械限位附近会对齿轮和电机造成不可逆的损伤。6. 后续扩展空间这台机器人还能往哪走中配方案的一个重要意义是留足了扩展空间。如果你做完这台机器人的基础功能这个结构上还能继续往上加东西加装末端夹爪把固定手腕换成舵机驱动的平行夹爪或三指灵巧手成本增加不多但实用性和观赏性提升明显。接入视觉识别在头部加一个摄像头模块通过上位机跑简单的颜色识别、目标定位让机器人具备看到物体并抓取的能力。这个方向有 Wi-Fi 的 ESP32 天然有优势帧率虽然不高但做静态识别够了。改为轮式移动平台把固定腰座的部分换成麦克纳姆轮底盘做成上半身类人移动底盘的组合。这在仓储和教育场景里很常见比双足简单得多但活动的范围大大增加。语音交互加一个麦克风阵列模块做语音控制让机器人听懂挥手转身等指令。对访客展示和教学演示来说语音交互的冲击力远大于遥控操作。我个人建议的路线是先把夹爪和视觉识别加上既能做演示又能通过实际抓取任务反推机械结构和电子系统的不足。视觉这块也不用一开始就上深度学习先用颜色识别或者 ArUco 码定位跑通整个闭环再逐步复杂化。写在最后的实在话做这台类人机器人最大的感触不是技术难度有多高而是每一个环节都要为下一个环节留余地。结构设计要为走线留槽位电子系统要为后期加传感器留接口代码架构要为新增功能留模块边界。你前期的每一个偷懒决定都会在现场调试时变本加厉地还回来。另外不要迷信高配——这个中配方案的每一条取舍背后都是性能和成本的博弈。你现在手中的每一分预算都应该优先花在关节执行器和供电系统上这两样是整机的地基。如果预算还有富余再去堆传感器、堆算力。这套方案整体跑下来从画图到整机动起来大约需要三到四周的业余时间。我希望这篇拆解能让你少走一些弯路把时间花在真正有价值的事情上——调出你的第一个流畅动作或者让你的机器人在伸手抓取时稳稳当当。技术这条路动手永远是第一步。