机器人动作慢,真的只有模型推理在拖后腿吗?
统计 阅读时间大约6分钟(2050字)

2026-10-30 机器人动作慢,真的只有模型推理在拖后腿吗?

来源:具身研习社
机器人反应的时间,花在哪里?

出品:机器人技术笔记

看具身智能机器人的演示,有时会觉得它动作很慢:抓取之前停一下,换个动作又等一会儿,整个任务做得断断续续。这种迟缓很容易让人把原因归到模型身上。

但在有些系统里,单次模型推理其实只要几十毫秒。如果模型30毫秒就算完一次,机器人为什么仍然显得迟缓?

要解释这件事,得先看这30毫秒从哪里算起。如果从处理好的图像进入模型开始,到模型输出动作结束,这个数字只覆盖了中间一段。环境发生变化后,相机采集、图像处理、指令传输和控制器更新也要花时间,它们共同决定了机器人多久才能作出反应。

01

模型推理只是总延迟的一部分

以机器人根据物体的新位置修正动作为例。物体移动后,系统首先得拿到反映这次变化的图像,而相机未必恰好正在采集下一帧。

等图像拍下来,驱动还要把数据交给程序。程序接着进行缩放、归一化;如果模型同时使用多台相机和关节状态,还需要把这些输入按时间配好。

准备好输入,才轮到推理。而在CPU回调和GPU任务繁忙时,输入还可能先排一会儿队;采用远程推理的系统,也要经过网络传输。

直到模型算完,结果才会进入解码、转换和下发环节。控制器收到新目标后,再在自己的更新周期里采用它。沿着这条路径,就能看出推理前后还有多少环节要经过。

我们用一组示例数字,看看时间是怎样花在各个环节上的。

76f53d95eb89edd595c492c139d5255b.png

原创图解,计时到控制器采用新指令为止。

这一轮里,模型用了30毫秒,从物体位置变化到新指令被采用却用了100毫秒。模型推理占其中三成,其余时间花在了采集、处理、传输与等待上。

如果其他环节照旧,只把推理从30毫秒压到15毫秒,总时间就从100毫秒缩短到85毫秒。推理速度翻了一倍,反应时间却只减少了15毫秒,原因就在于其他环节还占着原来的时间。

实际系统可以让相机采下一帧、GPU处理上一帧、控制器执行动作,这些工作同时进行后,每秒能处理更多数据。不过,某一帧图像从采集到影响动作,仍然要经过相应的处理和等待。这些等待还会带来另一个问题:轮到模型计算时,画面可能已经旧了。

02

图像排队会让机器人处理旧画面

设相机每秒采30帧,相邻帧大约相隔33毫秒。如果整条处理链跟不上图像到来的速度,又按顺序处理每一帧,图像就会在队列里积起来。前面只要多排几帧,当前进入模型的画面就可能来自一百多毫秒以前。

这时模型每次依然只算30毫秒,动作却始终落后于现场,因为它一直在根据过去的位置作判断。

这种积压也可能发生在消息处理环节。ROS 2的官方执行器文档说明,回调处理较慢时,消息和事件可能积在底层。于是,一帧图像虽然已经送到程序,处理它的回调却还没开始执行,画面就在这段等待里继续变旧。

要看清这种影响,可以从动作被采用的时刻往回数:它依据的那份观察,距离采集已经过去了多久?

看图中的例子:环境变化后20毫秒,相机采到了画面;第100毫秒,基于这帧画面的指令被采用。此时这份观察已经过去80毫秒。如果目标以每秒0.3米的速度匀速移动,它在这80毫秒里又走了2.4厘米。画面中的位置与当前位置之间,便多出了这段距离。

减少这种滞后,可以从图像队列入手。对于可被新帧替代的观察,限制队列长度、优先取最新有效帧,能减少旧画面积压。选择新帧时,多相机之间仍要保持时间对齐,需要历史信息的模型也要保留相应的时序窗口。这样模型拿到的输入才既新鲜,又符合它的使用方式。

03

等待下一段动作会造成停顿

旧画面会让机器人对变化反应迟钝,而演示里那种“动一段、停一下”的节奏,还可能来自模型与控制器交接动作的方式。

不少学习策略一次会预测未来一小段动作,称为动作分块,英文是action chunk。控制器按节奏逐步执行这一段,模型就不必为每一个控制周期都重新推理。

如果等这一段全部执行完,才启动下一次推理,控制器就会在两段之间等结果。这样的等待每次只有几十毫秒,反复出现在抓取、整理等连续任务中,就会形成一停一走的节奏。

要减少停顿,可以在当前动作还没执行完时,就开始计算下一段,让推理和执行重叠起来。

计算期间机器人仍在运动:新一段动作开始计算时,机械臂位于A处;等结果出来,上一段动作已经把它带到了B处。新动作接上时,需要与此刻正在执行的轨迹相容,否则可能发生突变。

因此,下一段的生成要考虑推理期间哪些动作会被执行,让结果能够接上当前轨迹,同时根据新观察修正后续动作。这样,控制器可以在模型计算时继续执行动作,等新结果出来,再衔接到更新后的轨迹上。

04

耗时波动会导致动作更新超时

动作交接安排好了,下一次结果能否按时送到,还取决于耗时是否稳定。图里的每个环节都标了一个固定时间,实际运行时,这些时间会来回波动。

比如,GPU上的其他任务可能让这次推理多等一会儿,网络拥塞也可能拖慢这次传输。多数轮次都很快,少数轮次明显变慢,平均值仍然可能很好看;控制器遇到的却是一次真实的迟到。

假设系统给一轮动作更新留了50毫秒预算,模型平均推理30毫秒,剩下20毫秒就要容纳图像准备、排队、传输和下发。任何一段等待增加,都可能让这一轮超时。因此,平均推理耗时还需要与整条路径的延迟分布放在一起看。

P99延迟大致表示,统计样本中99%的耗时不超过这个值,能帮助观察等待较久的情况;截止时间满足率则直接统计多少轮更新按时完成。结合迟到样本,才能进一步看出哪些环节在波动,以及波动会怎样影响动作。

对这些迟到的更新,控制器也要有相应的处理方式,例如短时沿用已有轨迹、切换本地策略或进入受控停止。具体选择取决于任务和控制接口,因为保持一个位置与保持一条速度命令,带来的运动结果可能完全不同。

即使新指令按时送到,机械臂也要在速度、加速度等约束下完成运动响应。这段时间同样会影响我们看到的反应速度。

推荐阅读
{{item.author_display_name}}
{{item.author_display_name}}
{{item.author_user_occu}}
{{item.author_user_sign}}
×
右键可直接复制图片
×