做具身智能载具平台这一年,我在轮式移动底盘和无人机视觉避障两个项目上反复折腾端侧AI选型。最开始一脸天真地看厂商标称的TOPS,买回来发现真正跑起感知模型和控制闭环,瓶颈全在散热、功耗、工具链和系统调度这些地方。这篇内容想把这些实测趟过的坑整理下来,重点是车载和机载两种工况下的算力芯片与整板硬件怎么选、怎么避坑,给同样正在做具身智能硬件落地的朋友一份能直接当参考的实战笔记。
先说明一下,文里所有数据和结论只代表我自己的测试环境、测试样本和固件版本,不同批次的板子、不同驱动版本、不同场景下的表现会有差异。但它反映的逻辑是通用的:端侧AI从来不是“芯片算力越大越好”,而是“算力、功耗、时延、生态、成本这五件事在你具体的机器人平台里能不能平衡”。下面从需求拆解开始讲。
1. 选型第一课:算力需求不能只看TOPS
1.1 具身智能硬件端到端到底在跑什么任务
很多刚开始做机器人感知的朋友,第一反应是“我需要一个100TOPS的板子”,因为模型越来越大、分辨率越来越高。这个思路不能说错,但它把问题过度简化了。端侧AI硬件部署里,一个真正的车载感知节点或者机载视觉节点,算力消耗是分布在很多环节的,不仅仅是跑那个深度神经网络。我拿我双车项目里的一个轮式底盘举例,它一个完整周期内要做的事包括:读取MIPI CSI接口的摄像头原始数据、做ISP处理(去拜耳、白平衡、色彩校正)、图像缩放和透视变换、运行一个目标检测模型、运行一个路面分割模型、状态估计(轮式里程计+IMU融合)、行为决策、向底盘CAN发送控制指令、同时还要把关键帧通过Wi-Fi图传回显到地面站。
如果在无人机上,还会多出云台增稳、视觉定位、紧急避障等任务,任务数只多不少。算力评估不能只看检测模型本身的FLOPs,ISP、坐标变换、后处理NMS、控制解算这些全都需要消耗CPU、GPU或者专门的硬件单元。忽略这些,就很容易出现“明明芯片算力标称很高,但实机画面就是卡”的情况。
下面我把自己在三种常见具身智能形态里统计到的典型计算构成列出来,这是按照我项目里的实际配置估算的:桌面机械臂(单目抓取)、轮式配送底盘(双目+激光雷达辅助)、小型无人机(单目视觉避障)。这几种平台共同点是都在端侧跑视觉AI,但对“实时性”和“算力形态”的要求完全不一样。
| 平台类型 | 感知传感器配置 | 端侧常用模型 | 单帧主要耗时瓶颈 | 对计算平台最敏感的点 |
|---|---|---|---|---|
| 桌面机械臂 | 单目RGB-D相机 | 目标6D姿态估计、抓取点回归 | 点云预处理+DNN推理 | 能否在20ms内完成一次抓取规划 |
| 轮式移动底盘 | 双目相机+单线激光 | 目标检测、可通行区域分割 | 双路ISP+双模型推理串行 | CPU中断和GPU/NPU调度的稳定度 |
| 小型无人机 | 下视/前视单目 | 光流+深度估计、目标检测 | 光流的传统CV算法+DNN混跑 | 整板功耗是否突破机载供电极限 |
从这张表能看出,机械臂主要靠的是“单帧推理时延”低,底盘的难点是“同时跑多个视觉任务时不互相拖累”,无人机则更极端,整个端侧AI硬件部署首先被功耗上限卡死。所以选型第一步,绝对不是翻参数表,而是把自己业务的完整任务链列出来。
1.2 端到端延迟预算是选型的第一张表
我习惯在处理任何端侧AI硬件部署前,先画一张延迟预算表。公式很简单:如果传感器希望跑到30帧每秒,那么一帧的周期约是33毫秒;60帧每秒则约16.7毫秒。这个周期要分配给传感器曝光、ISP处理、AI推理、后处理、决策算法、指令传输、执行器响应整个链路。注意,硬件厂商给的“毫秒级推理”通常只是模型在纯算力单元上的计算时间,真正的闭环时延会是这个值的2到3倍。
拿我的无人机避障项目举例,前视相机设置为30fps,一帧33毫秒内的预算大概是:传感器曝光5毫秒、ISP与图像预处理3毫秒、DNN推理8毫秒、光流与避障决策5毫秒、控制更新2毫秒。看起来还剩大约10毫秒余量,可实际上系统里还有日志打印、遥测传输、中断处理。CPU一旦被其他线程抢占了,ISP和DNN之间数据搬运如果没做好异步,实测单帧耗时能从20毫秒飘到40毫秒。所以我在选型时不仅看算力单元的标称性能,更会注意整个SoC有没有独立的ISP、编解码器、NPU是否支持多个任务并发调度。
延迟预算这张表的最大作用,是逼你在买板子前先弄清楚瓶颈在哪个子系统。很多项目买到算力强劲的板子,最后性能上不去,是因为摄像头输入通道只有一个、CPU核心还不够分配、或者DNN和实时控制任务抢了同一个大核。这些都是TOPS参数不会告诉你的细节。
1.3 不同任务类型对算力形态的要求
我把端侧视觉平台上的计算任务粗略分成四类。第一类是DNN推理,典型的卷积、Transformer结构;第二类是传统CV算法,比如特征点提取、光流、图像金字塔;第三类是实时控制逻辑,如PID、模型预测控制、状态机;第四类是数据记录与网络传输。
- DNN推理适合GPU、NPU这类大规模并行计算单元。
- 传统CV在GPU上也能跑,但算子切换频繁,很多时候高主频CPU加SIMD优化反而更高效。
- 实时控制逻辑对延时抖动极其敏感,必须在有实时核的处理器上跑,或者用专门的控制内核。
- 数据记录和Wi-Fi图传主要吃内存带宽和网络接口。
我见过不少项目把运动控制也放在Jetson板子的普通Linux系统上跑,结果某次系统更新、后台进程一多,控制周期抖动直接导致机器人晃动。所以选型建议是,车载/机载平台尽量选择“应用处理器+实时控制器”分离的结构,比如SoM模组外加一颗MCU处理编码器和PWM输出,或者在SoC上启用隔离的实时CPU核心。不要指望一块通用AI板子解决所有问题。
2. 我实测过的几类端侧算力平台横向对比
2.1 为什么选这几个方案做对比
为了做这次选型,我把不同量级的方案都买回来实测了一圈,包括英伟达Jetson Orin NX 16GB和Orin Nano 8GB两款开发套件、一套瑞芯微RK3588方案、一套专门做低功耗视觉处理的NPU模组,另外还借了一台工业FPGA板卡做时延对照组。选这些不是为了跑分,而是因为它们代表了当前车载/机载端侧AI的几条主流路线:海量生态的CUDA体系、性价比高的国产SoC、极致低功耗的专用NPU,以及强调硬实时的FPGA方案。每套板子我都在实际的机器人硬件环境里跑了至少两周。
每一类方案适合的场景差异很大。Jetson系列生态最省心,模型转换工具链和社区资料多,但成本、功耗也高;RK3588这类8核SoC优势是CPU性能强、接口丰富、价格友好,NPU只支持自家RKNN工具链;低功耗NPU模组能效比很突出,但可编程性和通用性弱;工业FPGA硬实时很强,可开发效率和大模型支持是硬伤。做具身智能的硬件选型,想清楚自己吃哪套生态,有时候比算力更重要。
2.2 关键参数横向对比表
下表是我在相同室温、相同输入分辨率(1920x1080)下,跑同一套端侧部署流水线时记录到的典型数据。注意“整板功耗”是在空载+轻载混合状态下的实测值,不是理论峰值。
| 方案 | 芯片标称AI算力 | 内存 | 整板实测功耗范围 | 参考成本量级 | 开发工具链现状 | 车载/机载环境适配性 |
|---|---|---|---|---|---|---|
| Jetson Orin NX 16GB | 100TOPS(INT8稀疏) | 16GB LPDDR5 | 10W-25W | 高 | 非常成熟,几乎任何模型都能跑 | 需要主动散热,适合较大型载具 |
| Jetson Orin Nano 8GB | 40TOPS(INT8稀疏) | 8GB LPDDR5 | 7W-15W | 中高 | 成熟,受内存限制较大 | 功耗相对友好,适合小型轮式或大无人机 |
| 某国产8核SoC(RK3588类) | 6TOPS(INT8) | 8GB起步 | 5W-12W | 中低 | RKNN链路清晰,但算子覆盖有限 | 功耗和成本优势明显,需处理散热 |
| 某低功耗NPU模组 | 约2TOPS-4TOPS | 1GB-4GB | 2W-5W | 低 | 只支持厂商预设的模型格式 | 续航极好,适合做单一功能的轻量避障 |
| 工业FPGA | N/A(逻辑资源) | 外挂DDR | 5W-20W可选 | 中高 | 需要硬件描述语言或HLS开发 | 时延最低、硬实时,但大模型部署很吃力 |
我先声明一项重要观测:标称的TOPS数字几乎都有前提条件。比如INT8稀疏算力,要真正发挥出来,既要求模型权重满足特定的稀疏度,还要工具的调度器能落到实处。常规用FP16稠密算力去估算,Orin NX的可用AI算力通常在50TOPS量级,甚至更低。你如果只看宣传里最大的那个数字,后面对不上账会很困惑。
2.3 各平台实测后的直接感受
Jetson Orin NX确实是省心之王。我几乎没有在驱动和部署上花费额外时间,PyTorch模型转TensorRT基本一把过,算子兼容性最好。缺点也很明显,整板跑满负载时发热量巨大,我用在轮式底盘上都要专门设计风道,如果考虑机载小载荷场景基本劝退。Orin Nano表现像是一个甜点级选择,普通目标检测和分割够用,8GB内存跑大模型有点紧,但只要你会做量化裁剪,大多数工业场景都能罩住,而且功耗比NX低一截。
某国产8核SoC这套方案,我是先在开发板上跑通了老项目里的YOLOv5模型,再集成到一块带AI加速的工控主板上的。它的NPU单位算力成本很漂亮,跑INT8模型能达到我的帧率要求,工具链转化过程相对清晰,连板子的文档都全。唯一要忍耐的是,框架里有些小众算子要手工拆解或等价替换,而且深度学习框架版本升级后可能会有一段空窗期。这类板子还需要做NPU与CPU共享内存的访问优化,否则数据搬运时间比推理本身还长。
低功耗NPU模组和FPGA,我在无人机上做了专项测试。低功耗NPU模组如果只跑一个用途明确的小模型(比如人形检测、线缆识别),效果非常好,2W到5W的功耗对续航很理想,但你要是想随时更新网络结构,封装好的接口会让你想摔板子。FPGA我们试着跑了一个轻量级CNN,时延确实漂亮,完全不需要操作系统参与,可整个团队为此付出了大量的验证工时,小团队真的不推荐把它作为通用感知主力,除非你有专职硬件工程师。
顺带一提,博客园上关于端侧部署的不少帖子都很有价值,尤其是针对Jetson和RKNN这两类平台的实践分享,很多冷门算子跳坑方法都是大家一条评论一条评论补出来的。选型阶段不要光看官方文档,多翻翻这类社区记录能少走很多弯路。
3. 功耗、散热与供电问题:车载/机载里最容易翻车的三项
3.1 功耗和续航之间的矛盾要先算物理账
算力芯片的功耗不能只看标称值,得结合你整机的供电能力来看。无人机平台尤其敏感。我的一架四旋翼测试机,悬停电流大概在14安培左右,电池是6S 5200mAh。如果机载AI模块满负载功耗是25W(大约4安培),那在保证足够返航余量的情况下,有效飞行时间会明显缩短。我算过一笔账:总电量约115Wh,电机消耗平均约250W,AI模块25W听起来占比不大,但飞行时间有可能下降8%到10%,再加上图传和传感器,整个续航余量会被压得很紧。
车载平台看似供电宽裕,实际更考验瞬态。车辆12V电源在启动电机、空调压缩机等大负载设备切换的瞬间会有比较大的电压跌落。我遇到过AI板卡在底盘急加速瞬间反复重启,查到最后是DC-DC模块的输入保持时间不够,电池电压一波动输出就掉电。所以无论车载机载,我给AI系统供电的原则都是:加一级宽压DC-DC,输出端留足电容,把电源域和电机驱动器电源域彻底分开,最好加一个几毫秒的掉电保持电路,否则再强的算力也扛不住一次瞬时断电。
3.2 散热不当,再好的芯片也会自我降频
Jetson Orin NX满负载运行时的发热量真的不小。有一次我在密闭的底盘控制箱里测试,没有加主动散热,只靠一块被动铝片,结果录到这样的曲线:开局模型推理单帧只要8毫秒,10分钟后SoC温度升到87摄氏度,CPU和GPU频率开始下降,单帧推理延迟一路飙到14毫秒,整体帧率下降了约30%。这对端侧AI硬件部署是致命的,因为机器人控制逻辑不会等你降频,延迟一旦超过阈值,避障反应就晚了。
我的解决方法是给所有超过10W的板子都配主动风冷或者导热到金属外壳。温度管理策略上,并不是风扇从一开始就满转,我设置的是SoC温度60摄氏度以下风扇低转速,超过60摄氏度逐步线性提速,到75摄氏度以上满转。这样既能让散热噪声保持在可接受范围,也能让芯片在大多数工况下顶着上限跑。设计风道时要注意进风口和出风口的防尘、防溅水,我在底盘上加了一层不锈钢网,飞尘环境里坚持很久也不会堵。
机载环境下风扇多一克都是负担,所以无人机里的算力板要优先选择功耗低于10W的方案,然后尽量利用机身下洗气流做被动散热。低温环境反而有一个坑:有几次冬季清晨测试,板子开机后CPU温度过低,传感器读数异常,系统把风扇策略判断成故障状态。我在软件里加了开机预热逻辑,等温度到达5摄氏度以上再放开风扇控制,这个小问题就消失了。
3.3 供电线材和连接器也是不可忽视的隐形瓶颈
我踩过一个相当无语的坑:一台底盘设备偶尔死机,排查了很久,最后发现是给AI板供电的JST端子接触不良,电流一大连接器就发热,压降跟着变大,板子进入欠压保护。后来统一换成了XT60或者带锁扣的大电流端子,问题立刻消失。常做车载/机载的朋友一定要记住,不在连接器上省钱是基本原则,震动环境中锁扣式连接器远比插拔式可靠。
另外,飞行控制、电机驱动产生的PWM噪声如果耦合进AI板供电,会导致一些非常奇怪的偶发问题,比如NPU计算结果偶尔错误、串口丢包、传感器读数跳变。这个问题的隐蔽性在于它不是每次都出现,而是和电机负载强相关。我的经验是,AI板供电单独走一条屏蔽线,传感器和AI板之间也用隔离或差分传输,同时把整个系统的数字地、功率地单点汇合,避免地环路形成。这些电源和接地的细节,往往是端侧部署稳定和飘忽的分水岭。
做过一轮温度与电源完整的摸底以后,我建议任何载具项目在正式定型前都要至少跑一次48小时高温满载老化测试,用真实场景的连续数据看频率、温度和延迟漂移。很多器件的隐患只有在这种持续高负载下才会暴露出来。
4. 模型部署和具身智能二次开发的实操细节
4.1 从训练框架到端侧引擎的完整转换链路
模型训练只是整个端侧AI硬件部署的开始,真正的工程在于让训练框架产物在目标芯片上低延迟、高效率地跑起来。我目前的主力流程是:PyTorch训练,导出ONNX,然后用目标芯片厂商的转换工具转成对应的引擎格式。以下是我在Jetson平台上常用的导出代码片段,其中最容易踩坑的是opset版本和动态轴设置:
import torch import torch.nn as nn model = YourTrainedModel().eval() dummy_input = torch.randn(1, 3, 640, 640) # 容易踩坑:opset版本过低,某些算子导不出来;版本过高,部分TensorRT版本又认不出 torch.onnx.export( model, dummy_input, "model.onnx", input_names=["input"], output_names=["output"], opset_version=17, do_constant_folding=True, dynamic_axes={"input": {0: "batch"}, "output": {0: "batch"}} ) print("ONNX export done")如果目标平台不支持动态batch,我会把batch固定成1,把宽高轴也固定住,这样TensorRT会在构建引擎时做更多层融合,时延能低不少。代价是输入分辨率一旦改变就得重新构建引擎。对一个具体载具项目来说,摄像头分辨率通常是固定的,所以固定shape往往是更理性的选择。
转成ONNX后,Jetson上用trtexec就能生成TensorRT引擎:
# FP16模式构建引擎 trtexec --onnx=model.onnx --saveEngine=model_fp16.engine --fp16 # INT8模式需要提供校准数据 trtexec --onnx=model.onnx --saveEngine=model_int8.engine --int8 \ --calib=/path/to/calibration_imagesINT8量化是提升推理速度的重要方式,在具身智能端侧尤其值得做。但它的效果高度依赖校准数据集,如果校准数据分布和目标场景差别太大,模型精度会明显下降。我一般会从真实场景里截取至少几百帧原始图(要覆盖白天、夜晚、逆光、不同角度)来做校准,而不是随便拿一些网图凑数。做完量化后还要在完整的实车测试集上复测mAP和端到端成功率,不能只看板子上跑得快不快。
RK3588这类平台则是把ONNX模型放到RKNN-Toolkit2里做转换和量化,整体流程类似,但自定义算子的兼容性需要更早验证。
4.2 具身智能二次开发中,NPU和主控任务的调度冲突
传统AI项目往往只关心模型推理和结果输出,但具身智能平台不一样,它需要把AI结果实时反馈到电机、舵机、底盘控制器上。这就带来一个调度问题:Linux系统不是硬实时系统,如果CPU核心被AI预处理、后台日志、Wi-Fi传输等任务占满,控制线程可能得不到及时执行。尤其用Jetson默认的“最大性能模式”时,所有核心都处于高负载,控制线程反而不稳定。
我的做法是给不同的任务固定CPU核心。比如一个4核CPU,我把核心0和核心1预留给传感器采集和主控制线程,核心2和核心3跑AI预处理和推理调度。如果平台支持,还会把实时控制线程设置成FIFO调度策略并提高优先级。用taskset命令可以这样操作:
# 把PID为1234的进程绑定到核心2和核心3 taskset -cp 2,3 1234 # 或者启动程序时直接指定 taskset -c 2,3 ./your_ai_node另一个很容易吃亏的地方是数据拷贝。如果图像采集线程把数据从ISP缓冲区拷贝到NPU输入缓冲区的过程是同步的,那么每一帧都会浪费大量时间。真正能提升吞吐的做法是使用双缓冲或环形缓冲:采集线程写数据到A缓冲,推理线程读B缓冲,下一帧再交换。这个改动做下来,我某些端侧任务的有效帧率提高了将近两倍,接近硬件上限。
许多找上我咨询的同行把“具身智能二次开发”理解成编写AI模型,实际落地时却发现难点在系统集成。控制指令的CAN总线收发要做到确定性,模型推理结果要能在毫秒级到达底层控制器,这需要把通信中间件、线程优先级、内存分配全部打通。所以做二次开发时,尽量从第一天就把控制闭环跑通,而不是先单独把AI做成一个demo再看怎么接。
4.3 算子兼容性和INT8量化那些填不完的坑
模型转换中经典的坑之一,是某个训练时很自然的算子到了端侧引擎不被支持。我之前在语义分割模型里用了一个自定义上采样模块,导出ONNX没问题,转到TensorRT时直接报不支持。解决路径是把它改写成一个等价的标准卷积加双线性插值组合,跑出来的输出完全一致。类似的还有Transformer类结构里的 einsum、动态循环等,遇到这类问题先在目标芯片官方算子文档里查有没有等价实现,再考虑写插件。
同一模型在不同芯片间迁移时,数值一致性也要警惕。同一份权重在同一张图上,Jetson的FP16输出和RK3588的INT8输出会略有差异。如果下游是一个对置信度阈值非常敏感的决策模块,这一点影响就能导致行为改变。我建议迁移平台后必须在真实场景重标定阈值,不能直接沿用老平台的参数。可以说,端侧AI硬件部署的关键工作不在“把模型转起来”,而在“把经过量化、算子替换的模型重新调优到可用状态”。
表格里我整理了最近部署中最常见的几类问题,基本上每个平台都能对上号。
| 故障现象 | 常见原因 | 处理方式 |
|---|---|---|
| 转引擎时报Unsupported Operator | 模型用了工具链不支持的算子 | 改写为等价算子组合,或升级/更换工具链 |
| INT8量化后精度大跌 | 校准集和真实环境差异太大 | 用真实场景多时段数据重新校准,并做精度复测 |
| 推理速度快但控制延迟高 | CPU调度不合理、线程互相抢占 | 绑核、提优先级、分开实时和算法线程 |
| 一段时间后帧率慢下来 | 散热不够导致降频,或内存泄漏 | 改善散热,长期跑内存监控定位泄漏 |
| 偶发数据错乱 | 电源噪声或地线干扰 | 供电隔离、屏蔽线和单点接地 |
说到行业资料,很多人都在找《人形机器人与具身智能标准体系》之类的参考文档,我建议把这些文档当作总体框架来看,它能帮你建立系统接口和安全的全局意识,但真到具体芯片选型、具体工具链参数时,还是要翻芯片手册、厂商SDK文档和社区案例笔记。做硬件和驱动的工程师都知道,一手经验永远比框架文档更能解决燃眉之急。
5. 端侧AI部署常见问题与排查速查表
5.1 开机即重启、反复不进系统
这种情况在第一次上电时出现得最多。先别怀疑板子质量,最有可能是电源问题。开发板在启动瞬间会有较大电流尖峰,一些额定电流看起来够用的电源适配器在尖峰时电压跌落严重,就会造成反复重启。排查办法是串一个带峰值记录的电流计,观察启动瞬间电流,同时用示波器看电压跌落幅度。如果是机载电池供电,还要检查电池是否满电、连接线是否过细过长。
线材压降这个细节我很想强调。很多载具平台为了布线方便,给AI板供了很长一段DC线。DC-DC输入端电压在满负载时可能比你万用表空载测到的低不少,一旦低于模块最低工作电压,整机就极其不稳定。我一般用16AWG甚至更粗的硅胶线给大功率模块供电,并尽量把DC-DC模块放在靠近电池的位置。
5.2 运行一段时间后延迟开始漂移
启动时一切正常,跑十几分钟后延迟逐渐变大,通常有两大类原因。一是热降频,参考前面散热那节,用类似nvtop或者芯片自带的温度工具看一下频率曲线就能确认。二是内存泄漏或系统缓存被占满,可以用监控命令持续记录内存占用,观察是否随时间单调上升。端侧平台内存本来就紧张,我见过某个推理进程每帧都创建一个临时Tensor却忘了释放,跑半小时后内存耗尽,系统开始动用交换分区,延迟自然飘上天。
碰到这种情况,最直接的办法是尽量使用推理框架提供的内存池,避免在推理循环里频繁申请和释放内存。另外,日志系统也要做限流,不要每个控制周期都打印大量调试信息,磁盘IO和串口输出都可能成为隐藏的阻塞点。
5.3 图像偶发撕裂、跳帧和颜色异常
CSI摄像头在端侧采集时遇到图像撕裂、跳帧,多半是采集线程和ISP处理节奏没对上。可以试着为采集线程使用实时调度优先级,并给它绑定一个独立CPU核心。其次检查是否误开了自动曝光和自动白平衡调节,在某些光线快速变化场景下,自动ISP参数会和模型推理抢资源,导致帧率波动,必要时可把曝光和增益固定下来,只在特定时刻允许重新收敛。
颜色异常则要考虑摄像头排线屏蔽和布线。机载电机转动产生的磁场干扰如果耦合进排线,会直接污染图像数据。我处理过一例画面偏紫的问题,换了带屏蔽层的FPC排线后彻底恢复。这类硬件干扰问题排查起来很费时间,建议一开始选型时就选择接口带锁扣、线缆屏蔽良好的组合。
5.4 典型问题排查速查表
| 故障 | 可能原因 | 快速检查方式 | 解决参考 |
|---|---|---|---|
| 系统反复重启 | 电源瞬时跌落 | 示波器/万用表测启动电压 | 换电源、加电容、缩短DC线 |
| 运行变卡 | 温度过高降频 | 查看芯片温度与频率 | 加主动散热、改善风道 |
| 内存耗尽导致异常 | 推理进程内存泄漏 | 监控内存曲线 | 使用内存池、修复释放逻辑 |
| 图像撕裂/跳帧 | 采集线程调度乱 | 检查线程CPU核与优先级 | 实时优先级+绑核 |
| ISP颜色异常 | 排线屏蔽差/干扰 | 更换屏蔽线测试 | 换线、隔离走线 |
| 偶发模型输出错误 | 电源噪声/地回路 | 检查电机负载时是否频发 | 分电源域、单点接地 |
| 模型转换尺寸不匹配 | 锚点或输入尺寸配置错 | 打印模型输入输出shape | 统一预处理参数 |
5.5 测了这么久总结下来的避坑清单
- 任何板子都不要裸奔使用,先确认散热方案并做好满载测试,再谈性能。
- 以“实测稳定功耗”为选型依据,而不是芯片标称的最大功耗或TDP。
- 端侧平台的内存尽量选大一点,8GB是起步,16GB会让工作从容很多。
- 为项目里所有计算任务预先划分好CPU/NPU/GPU资源,避免后期调度混乱。
- 量产前一定要跑“满载高温24小时老化+振动测试”,很多隐性问题会在这个阶段暴露。
- 除非团队有专职驱动开发,否则优先选工具链成熟、社区资料多的平台。
6. 给新手和向具身智能方向转型的工程师一些建议
6.1 别从“买哪块板子”开始,要从应用任务开始
我看过太多人入门端侧AI硬件部署时的第一件事,就是四处问“哪个板子性价比高”,买回来才发现自己的应用场景根本用不到那么多算力,或者恰恰相反,接口数量根本不够。更合理的路径是,先描述清楚你的机器人要完成什么任务:需要在多大的视野范围内、以多快的频率、识别什么目标,然后从传感器分辨率、帧率、识别时延、整机功耗这些指标反推芯片需求。算力是手段,任务闭环才是目的。
以桌面机械臂抓取为例,如果你的目标物体种类只有十几种且位置相对固定,一块中低算力平台完全够用,没必要上100TOPS;如果要做开放场景的任意物体抓取并跑视觉大模型,就要认真考虑高算力平台和它的散热、供电代价。定义不对,后续所有工作都会被带偏。
6.2 把具身智能当作“整个计算系统”来系统学习
具身智能与传统CV项目的核心差异在于:它强调智能体与物理世界的实时交互。因此除了模型结构,你还得了解控制理论、操作系统调度、传感器标定、通信与供电可靠性。想要形成一套自己的学习路线,我会建议从一条非常实用的动手链路入手,而不是从论文堆里出发:先在一个简单的轮式底盘上实现“摄像头采集+目标检测+底盘跟随”的完整闭环,接着换成更快的执行机构(如机械臂),再过渡到无人机这类对重量和功耗都苛刻的平台。每换一种平台,你对硬件约束的理解就会深一层。
6.3 实测心态和方法比经验更重要
最后想多说一句:做端侧AI没有捷径,所谓经验大多是从表格里的每一行数据堆出来的。我每次换平台,都会第一时间用同一套基准场景跑出三个层面的数据:一是模型纯推理时延,二是包含采集和前后处理的端到端时延,三是长时间运行后的稳定性曲线。有了这套自己的基线数据,后面做方案评估时就不用听厂商宣传,直接拿实际任务跑一遍,数据会告诉你答案。这也是为什么我在正文里反复写“以实测为准”,因为大多数选型失败都源于对纸面指标的过度信任。
如果让我回头给刚开始接触这个领域的人一句忠告,那就是:把核心场景的地基打得足够扎实,把散热、供电、工具链、实时调度这些“不性感”的环节当成头等大事来做。具身智能未来的想象空间确实很大,但任何能稳定运行的机器人产品背后,最终拼的都是这些基础工程问题的解决质量。愿你少走一点我走过的弯路,也希望这篇实测记录能帮你把第一块板子选得更准一点。