news 2026/8/31 4:08:03

机器人高动态动作决策:何时空翻比怎么翻更重要

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
机器人高动态动作决策:何时空翻比怎么翻更重要

在过去几年里,“机器人空翻”已经从实验室炫技变成了被人反复讨论的技术指标。波士顿动力 Atlas 的后空翻视频传遍全网时,很多人的第一反应是“机器人终于能做高难度动作了”;但做过运动规划与控制的人会多问一句:这个动作在真实任务里真的能用上吗?它的触发条件是什么?如果前面的地形换一种摩擦系数,机器人还能不能按原计划翻过去?

这个“多问一句”背后,正是目前机器人学里一个正在被重新定义的环节:高动态动作的决策与触发。伯克利和斯坦福团队在近期研究中关注的,也正是这个方向。他们的研究思路,不是让机器人多学一个空翻动作,而是让机器人理解“什么时候该空翻、什么时候不该翻”。这句话听起来像是把动作执行变成了一个开关问题,但真正落到系统架构里,开关本身需要感知、状态估计、任务意图、风险评估和学习算法的共同参与。

这篇文章会从三个层次展开:第一,为什么“会做动作”和“会用动作”是两件不同的事;第二,在机器人运动控制系统中,“何时执行高动态动作”应该被放在哪一层、如何建模;第三,给出一套简化到可以上手实验的代码框架,方便在仿真环境里复现“决策+动作”的训练与验证流程。

读完之后,你会对机器人运动控制中的分层决策方案有一个完整理解,也能明白为什么高动态动作真正的难点不在“生成轨迹”,而在“选择时机”。

1. 机器人会空翻,为什么“何时翻”才是真问题

空翻本身是一个典型的欠驱动、高动态、强耦合动作。机器人需要在极短时间内完成蹬地、收腿、翻转、打开、落地这一整套流程,任何一环时间对不上,落地姿态就会发散。

但这类动作生成问题,在过去十多年里已经有不少成熟方案。传统轨迹规划可以用非线性优化直接搜索一条满足动力学约束的全身轨迹;强化学习则可以用大规模并行仿真,在虚拟环境里不断试错,最终学出一个空翻策略。换句话说,如果只是让机器人在一个已知、干净、摩擦系数固定、没有感知噪声的环境里做空翻,今天的机器人系统已经可以做到。

那为什么“何时空翻”仍然值得专门研究?因为真实任务场景不是干净的。

举一个非常具体的场景:一台巡检机器人正在执行任务,前方出现了一个倾倒的障碍物。从几何上看,越过这个障碍物可以用跨越、跳跃、攀爬,也可以用一个类似空翻的高动态动作。但问题来了:

  • 机器人当前电池电量还剩多少?空翻是能量消耗极高的动作,剩余电量是否允许?
  • 前方地面摩擦系数是多少?是否足以支撑起跳和落地?
  • 机器人当前的状态估计准确吗?如果身体倾斜角度误差超过两度,空翻过程中就很可能失稳。
  • 当前任务更看重时间还是更看重稳定?如果只是巡检,绕过去可能是更优解。
  • 周围是否有人,是否需要安全距离?

这些条件共同决定了“现在”不是空翻的好时机。如果你只训练了一个从“观测→动作”的端到端空翻策略,它无法回答这些问题。它只会在感知到某个输入模式时机械地输出一个动作序列,而不会对“该不该做”进行推理。

所以,从研究价值上看,下一阶段机器人运动控制的核心矛盾正在从“动作生成能力”转移到“动作的语义化选择与安全触发”。空翻只是一个标志性动作,真正要解决的,是这一类高动态动作如何纳入任务级的决策框架。

2. 核心概念:全身控制、强化学习与高层决策

要理解“何时空翻”的复杂性,先要把几个容易混淆的概念理清楚。

先看全身运动控制。机器人不是一个由独立关节简单拼起来的系统,它的腿、躯干、手臂之间存在强烈动力学耦合。全身运动控制的目标,是把接触力、动量、关节力矩统一求解,让机器人同时满足重心稳定、接触约束和任务目标。空翻这类动作,对全身控制器的动态响应速度要求极高。但全身控制解决的问题仍然是“给定目标动作,如何稳定执行”,它不负责“目标动作是什么”。

再看模型预测控制。MPC 会基于当前状态,在线求解一个有限时域优化问题,输出控制序列。它非常擅长处理带约束的轨迹跟踪,也能处理一些简单的接触切换。但它的核心缺陷是计算量偏大,而且优化目标的设定高度依赖人工经验。你可以用 MPC 跟踪一个空翻轨迹,但很难用 MPC 在任意场景下自主决定“现在应该空翻还是跳跃”。

强化学习则是另一种思路。RL 不要求你显式写出动力学模型,它通过大量交互来学习一个策略。你可以将状态观测输入策略网络,直接输出关节力矩或目标动作。训练得当的 RL 策略能够捕捉到一些人工难以描述的接触规律,因此在生成高动态动作方面非常有效。但它也有一个麻烦:强化学习策略是“条件反射式”的,它把所有信息都压缩到一个映射关系里,很难显式解释“为什么在这个时刻采取空翻”。

高层决策则是指一系列把动作组合进任务逻辑的机制。传统机器人系统里,这一层通常用有限状态机或行为树来实现。状态机的优点是清晰可控,缺点是面对开放环境时规则爆炸;行为树比状态机更适合组合复用,但同样需要人工设计大量触发条件。

把这些概念放在一起,就可以得到一张清晰的图景:全身控制和 MPC 更多负责“动作怎么稳”,强化学习更多负责“复杂动作怎么学”,而高层决策层负责“动作什么时候被选择”。三者不是替代关系,而是分层协作的关系。

方法核心问题优点局限性
全身运动控制给定动作如何稳定执行动力学约束严格,落地稳定依赖准确模型,不负责动作选择
模型预测控制如何在线求解最优控制约束处理能力强计算开销大,目标设计依赖人工
强化学习如何学习复杂动作策略能处理难以建模的接触和时序可解释性差,容易过度依赖观测
状态机/行为树如何组合动作流程清晰、可控、易调试开放场景规则爆炸
高层决策+动作库何时选择哪个动作兼顾任务语义与可落地性需要设计动作抽象,也有通信开销

3. “会空翻”和“会用空翻”之间,隔着一整个决策层

如果只讨论“能不能让机器人翻过去”,那绝大多数运动控制实验室都能交出不错的答卷。但“会空翻”和“会用空翻”之间,隔的不是控制器性能,而是整个机器人的知识表示能力。

先从感知层面看。真实世界的地形不是一张静态深度图,机器人必须在运动过程中不断判断前方障碍物的形态、支撑面大小、摩擦特性。深度相机可能因为光照过强或反光产生噪声,惯性测量单元会漂移,腿式机器人的状态估计在有滑动时也会出现偏差。当这些感知数据都不可完全信任时,“要不要启动一个高动态动作”就变成了一个带不确定性的判断问题。

再从任务层面看。空翻不是一个孤立动作,它要服务于整体任务。机器人可能在一次巡检中遇到多处障碍,如果每处都用空翻通过,能量消耗和机械损耗都会非常可观。一个合理的决策系统应该能先判断障碍物的通行难度,再考虑有没有更低成本的替代动作。只有在必要、可行且代价可接受的情况下,才选择空翻。

最后从安全层面看。高动态动作一旦启动,机器人会进入一个短时间不可逆阶段。你很难在空中把动作取消,也很难在翻转一半时切换到另一个动作。所以,在执行前的最后一步,必须有一个安全门控机制,决定“当前条件下能不能启动动作”。

这就意味着,哪怕底层动作策略已经训练得非常好,也不能直接把它裸露在任务环境里。你需要一个包裹在它外面的决策层,去把语义化的任务状态、物理可行性、能量代价和安全边界综合起来,最终输出一个动作选择。

如果把这个需求落到代码结构里,它会是一个类似下面的层级关系:

  • 顶层:任务规划,回答“要做什么”,例如去目标点。
  • 中间层:行为选择,回答“怎么去”,例如走、跳、翻。
  • 执行层:动作生成,回答“具体怎么做”,例如输出关节力矩。
  • 安全层:约束检查,回答“现在能不能做”,例如检查电量、摩擦和状态估计置信度。

很多人容易忽略最后一层。但恰恰是这层,决定了高动态动作在真实系统里能不能被放心使用。

4. 从“动作库”到“感知-决策-动作”的正向流程

在常见的机器人软件架构里,感知、决策、运动生成一般不是一股脑塞进同一个神经网络,而是分成多个模块,明确各自职责。这与大规模语言模型那种“端到端一切”的思路不一样,因为机器人系统首先要保证实时的安全性,模块化拆分更利于调试和回退。

一个比较典型的正向流程是这样的:

第一步,感知与状态估计。相机、激光雷达、IMU、关节编码器数据汇总起来,经过滤波和融合,得到机器人当前位姿、速度、地面接触状态和前方地形信息。这一阶段输出的数据质量,会直接影响后续决策是否正确。

第二步,任务理解与行为选择。根据上级下达的任务指令,比如“先走完走廊,再穿过一个障碍区,最后在目标点停止”,决策模块把任务分解成子目标,并判断当前子目标需要的通行方式。在这一步,会产生一个类似“前方有障碍,评估后选择空翻”的语义结论。

第三步,可行性检查。行为选择的结果并不会直接发送给运动控制器。系统的安全模块会先做一次快速检测:当前电量是否足够、地面摩擦是否符合要求、状态估计置信度是否超过阈值、周围是否有人员或设备需要避让。如果条件不满足,决策层会重新选择一个更保守的动作。

第四步,运动生成。动作库中存放着预先训练或优化好的运动原语,可能是空翻,可能是跳跃,也可能是普通的越障步态。底层控制器负责把运动原语转换成具体的关节力矩指令。

第五步,执行反馈。在执行过程中,状态估计会持续反馈给决策模块。如果实际状态偏离预期太多,系统应该能够在动作的早期阶段中止并切换到安全姿态,而不是强行完成整个动作。

这套流程并不算新奇,它本质上和自动驾驶里的“感知-预测-规划-控制”架构同构。但把高动态动作放进来后,最大的变化在于:第2步和第3步变得极其重要,因为空翻这种动作没有多少容错空间。

从研究趋势看,伯克利、斯坦福团队的工作是在两个方向上推进这套流程。一是把行为选择从人工规则扩展到学习模型,让机器人通过数据学习地形与动作之间的映射;二是把可行性检查从离线设置扩展到在线预测,让机器人在接近障碍物时,实时评估动作的成功概率和风险。这两点合在一起,才是“什么时候该空翻”这个问题的完整解法。

5. 数据驱动方法如何学习“什么时候空翻”

既然“何时空翻”是一个决策问题,用纯规则去写触发条件很难覆盖开放世界。更常见的研究思路,是把这个问题交给数据驱动方法,但并不是简单地训练一个端到端网络。

第一种思路是分层强化学习。高层策略的输出不是关节力矩,而是某个低层运动原语的编号;低层策略则专注于生成具体的动作轨迹。高层策略通过回报函数来学习“什么时候选择空翻”。例如,当机器人成功快速地通过障碍物时给正奖励,当空翻失败或能量消耗过大时给负奖励。通过这种设计,高层策略会逐渐学会:在相对平整、摩擦良好的地形上,空翻是快速的通行方式;在状态不稳或地形不明时,选择更保守的动作。

第二种思路是课程学习。先用奖励函数只奖励动作完成度,让低层策略学会稳定地做出空翻动作。这个阶段不强调选择,只强调“会做”。当动作成功率达到理想水平后,再加入任务级回报,让策略在场景中学习什么条件下使用这个动作。课程学习的优势是训练节奏更稳定,避免策略同时学习“怎么翻”和“何时翻”带来的梯度冲突。

第三种思路是混合模仿学习与强化学习。人类可以通过示教或遥操作给机器人提供“何时使用高动态动作”的先验。比如在数据采集中,操作员只在特定障碍前按下空翻动作按钮,这些“动作标签”就可以被提取出来作为监督信号。之后再用强化学习在真实动力学环境中微调,让策略泛化到更多看似相似但物理条件不同的地形。

第四种思路是把动作选择转化为一个优化问题。在基于模型的控制框架里,你可以把空翻动作建模成一种离散的行为模式,并用搜索或数学规划来判断当前状态下该模式的可行性。此类方法可解释性更强,也更适合与安全约束结合,但依赖对环境的建模精度。

这几种思路并不互斥。实际上很多高性能系统会同时使用它们:先用模仿学习获得先验行为,再用课程化的强化学习提高鲁棒性,最后在系统外层挂一个可解释的安全过滤器。

6. 从论文到可运行示例:一个简化的空翻决策实验环境

理论讲再多,不落到代码里总感觉不踏实。下面把问题简化,搭一个实验环境,演示“高层决策+低层动作”的完整流程。

简化后的任务设定如下:机器人需要在一条有障碍的通道中前进。当它接近一个较高的障碍物时,可以选择翻越,也可以选择跳跃;当障碍物较低时,直接跨越;当距离太近或状态异常时,立刻停止。整个任务里,“是否选择空翻”由高层决策模块负责,具体动作执行交给一个低层策略。

在真实项目中,低层策略可以使用 MuJoCo、Isaac Gym 或 PyBullet 这类仿真环境配合强化学习库训练。为了便于演示,这里使用一个通用 Gym 环境来说明训练流程。版本细节请以实际安装为准,本文重点是展示结构,而不是绑定某个特定版本。

环境准备建议如下:

  • 操作系统:Ubuntu 20.04 或 22.04 均可,Windows 也可以,但仿真性能可能不同。
  • Python:建议 3.9 或更高版本。
  • 依赖包:PyTorch、Gymnasium、Stable-Baselines3、TensorBoard。
  • 仿真器:MuJoCo、PyBullet、Isaac Gym 任选其一,用于真实机器人项目。

安装命令如下:

# 基础机器学习依赖 pip install torch gymnasium stable-baselines3 tensorboard # 如果需要使用 MuJoCo pip install mujoco # 如果需要使用 PyBullet pip install pybullet # 如果使用 Isaac Gym,请根据官方文档单独安装

这里需要注意,Stable-Baselines3 对 Gym API 版本有要求。较新版本的 Stable-Baselines3 已经兼容 Gymnasium,但如果项目里同时装有旧版 gym,可能会因为命名空间冲突导致环境注册失败。遇到这类问题时,建议用一个干净的虚拟环境重新安装。

7. 三个最小代码示例:把“何时空翻”搭进系统

下面给出一组可以在本地运行的代码骨架,用来理解“高层决策 + 低层策略 + 安全门控”的组合方式。

7.1 动作原语与高层决策骨架

先定义机器人可以选择的动作原语,并实现一个最朴素的行为决策类。这个类是一个规则版本,后续可以替换成学习模型。

# 文件路径:hierarchical_example/action_primitives.py from enum import Enum from dataclasses import dataclass class ActionPrimitive(Enum): WALK = "walk" JUMP = "jump" FLIP = "flip" STOP = "stop" @dataclass class SceneContext: obstacle_distance: float obstacle_height: float ground_friction: float robot_speed: float battery: float state_confidence: float
# 文件路径:hierarchical_example/high_level_controller.py from action_primitives import ActionPrimitive, SceneContext class HighLevelController: def __init__( self, flip_min_distance: float = 0.8, flip_max_height: float = 0.5, min_battery: float = 0.3, min_confidence: float = 0.7, ): self.flip_min_distance = flip_min_distance self.flip_max_height = flip_max_height self.min_battery = min_battery self.min_confidence = min_confidence def decide(self, ctx: SceneContext) -> ActionPrimitive: # 安全底线:状态置信度不足或电量不足时,不执行高动态动作 if ctx.state_confidence < self.min_confidence: return ActionPrimitive.STOP if ctx.battery < self.min_battery: return ActionPrimitive.WALK # 障碍物太近,来不及做动作规划,先停止 if ctx.obstacle_distance < 0.3: return ActionPrimitive.STOP # 障碍物较高,且距离合适时,优先评估空翻 if ( ctx.obstacle_height >= 0.35 and ctx.obstacle_distance >= self.flip_min_distance and ctx.ground_friction >= 0.8 ): return ActionPrimitive.FLIP # 中等高度障碍,跳跃或跨越 if ctx.obstacle_height >= 0.2: return ActionPrimitive.JUMP return ActionPrimitive.WALK

这个示例的价值不在于“写得聪明”,而在于它把决策条件显式化了。你可以很清楚地看到:什么参数会被考虑,什么参数被忽略了,哪些条件优先级更高。在真机部署时,这种可解释性非常重要。如果机器人做了一次不合适的空翻,工程师可以立刻回溯到决策条件里,找到是哪一个阈值设置不合理。

7.2 低层策略的训练示例

高层决策只负责输出动作原语,真正生成动作的,是低层策略。为了演示训练流程,这里选择 CartPole 任务作为教学示例。实际项目中,你应该把 Gym 环境替换成自己搭建的机器人仿真环境,状态空间要包含关节角、角速度、机身姿态、地形信息等,动作空间则根据使用的位置控制还是力矩控制来定义。

# 文件路径:hierarchical_example/train_low_level.py import gymnasium as gym from stable_baselines3 import PPO from stable_baselines3.common.logger import configure from stable_baselines3.common.callbacks import EvalCallback def create_env(): # 在实际项目中,这里是自定义机器人仿真环境 return gym.make("CartPole-v1") env = create_env() eval_env = create_env() model = PPO( policy="MlpPolicy", env=env, learning_rate=3e-4, n_steps=2048, batch_size=64, n_epochs=10, gamma=0.99, gae_lambda=0.95, clip_range=0.2, verbose=1, ) # 日志输出到 TensorBoard logger = configure("logs/train_log", ["stdout", "tensorboard"]) model.set_logger(logger) # 每隔 2000 步评估一次策略,避免过拟合 eval_callback = EvalCallback( eval_env, best_model_save_path="models/best", log_path="logs/eval_log", eval_freq=2000, n_eval_episodes=10, ) model.learn(total_timesteps=100_000, callback=eval_callback) model.save("models/low_level_policy.zip")

训练命令就是直接运行这个脚本。训练过程中,你可以在 tensorboard 里看rollout/ep_rew_mean是否在上升。这里的重点是理解训练工程的写法,而不是 CartPole 本身的成绩。

7.3 安全门控与推理流程

低层策略训练完成后,还不能直接部署到真实机器人上。我们需要在动作执行前增加一个安全检查,只有满足条件时,高层决策选出的FLIP动作才会真正转化为低层策略的目标。

# 文件路径:hierarchical_example/safety_gate.py import numpy as np from action_primitives import ActionPrimitive, SceneContext def safety_check(ctx: SceneContext, max_speed: float = 1.0) -> bool: # 这里用几个简单条件展示安全门控思路 if ctx.robot_speed > max_speed: return False if ctx.ground_friction < 0.6: return False if ctx.state_confidence < 0.7: return False if ctx.battery < 0.2: return False return True def choose_action(high_level, low_level_policy, obs, ctx: SceneContext): action_primitive = high_level.decide(ctx) # 如果高层选定了高动态动作,必须经过安全门控 if action_primitive == ActionPrimitive.FLIP: if not safety_check(ctx): action_primitive = ActionPrimitive.JUMP # 这里是简化处理:实际项目中,不同动作原语对应不同控制器 if action_primitive == ActionPrimitive.STOP: return np.zeros_like(low_level_policy.action_space.sample()) action, _ = low_level_policy.predict(obs, deterministic=True) return action

这个代码块虽然只写了几个 if 条件,但体现了真实系统里最重要的一个原则:动作选择是一回事,动作执行是另一回事,两者之间必须有独立的安全检查层。安全检查层不应该被学习模型直接旁路。

8. 运行结果与效果验证:该看哪些指标

运行上面的示例时,不要只盯着“空翻是否成功”这一个指标。在“何时空翻”这个问题上,至少要看四类指标。

第一类是任务完成率。机器人是否到达了目标点,是否在合理时间内完成整体任务。这一指标衡量的是决策层的最终效果。

第二类是动作选择合理性。统计整个任务过程中,机器人选择空翻、跳跃、跨越、停止的比例。如果机器人频繁选择空翻,但很多情况下跳跃或绕行就能解决,说明决策层的代价函数设置有问题。

第三类是安全违规次数。例如状态置信度不足时仍然启动了高动态动作,或者电量低于阈值时仍然执行了高能耗动作,都应该被记录为安全违规。这是判断安全门控是否生效的关键数据。

第四类是低层策略成功率。在发起高动态动作之后,低层策略是否真的能稳定完成动作。如果低层策略本身成功率不高,那无论高层决策再怎么正确,整体系统表现都不会理想。

在训练过程中,TensorBoard 的曲线能帮你判断学习状态。策略刚刚开始训练时,奖励曲线波动很大是正常的。如果经过相当多的步数后曲线仍然没有上升趋势,先检查奖励函数是否存在稀疏奖励问题,再看状态空间是否包含了决策所需的足够信息。

一个常见错误是:任务环境中的状态与训练环境中的状态分布不一致。比如训练低层策略时使用了理想化摩擦系数,但高层决策所在的任务环境里摩擦系数会变化,导致低层策略经常失败。这种问题需要通过域随机化来解决。

9. 常见问题与排查方法

问题现象可能原因排查方式解决方案
高层决策频繁选择空翻代价函数里没有给能量消耗足够大的惩罚统计动作选择分布,查看奖励权重增加高动态动作的代价项,增设最小可行性条件
低层策略训练不收敛奖励过于稀疏或状态空间缺少关键信息查看 TensorBoard 奖励曲线、状态特征相关性使用课程学习或增加靠近目标的中间奖励
仿真环境跑通了,真机动作不稳定仿真与真实动力学差异大,或感知噪声未建模对比真机与仿真控制指令响应增加域随机化,建模传感器噪声,先做硬件在环测试
安全门控误触发阈值设置过于保守查看安全门控日志与状态分布调整阈值,或使用基于概率的状态估计结果
高层策略与低层策略完全不匹配两个策略分别训练,观察空间口径不一致检查状态空间定义和特征归一化统一特征规范,在训练低层策略时就加入任务级上下文
动作执行中途失稳低层策略忽略了地形变化或接触力约束查看接触力日志和状态估计残差在低层策略中加入接触力观测,或训练回退动作

排查这类问题,最重要的不是直接改代码,而是先看日志。机器人系统里,每个模块都应该有独立的输入输出日志。高层决策的输入是场景上下文,输出是动作原语;安全门控的输入是上下文与动作原语,输出是放行或拒绝。只要把日志打清楚,问题定位一般都不难。

10. 最佳实践与工程建议

最后给几条工程经验,这些建议在带腿机器人的实际项目里尤其值得留意。

先讲安全优先级。任何涉及高动态动作的系统,都应该在软件层面和硬件层面同时设计安全停止机制。软件层面,安全门控不应该被任何训练参数绕过;硬件层面,要有急停按钮或遥控急停通道。仿真里做空翻失败没什么后果,真机上一次失败可能导致整条机械臂或腿部结构损坏。

再讲动作库的鲁棒性。低层策略不应该只训练一个初始条件固定的空翻动作。在实际环境里,机器人接近障碍物的速度、姿态、地面摩擦都会有偏差。训练时应该对这些条件做随机化,让策略学会在不同初始条件下调整动作。否则,控制器只会对训练数据里的“标准空翻”有效。

还有一个容易被忽略的点:决策模块要与动作模块保持解耦。高层决策输出的是“动作选择”,而不是“关节角度”。如果你把决策和高动态动作直接耦合在一个大网络里,系统会变得难以调试。比如,当机器人在不该空翻的时候做了空翻,你很难判断是感知出错、决策出错还是动作执行出错。保持模块化,能帮助你在真机故障时快速定位问题。

然后是日志规范。至少需要记录三类日志:决策日志、安全日志和动作执行日志。决策日志记录每个时刻的场景上下文与动作选择结果;安全日志记录每次安全门控的拒绝原因;动作执行日志记录实际控制指令和状态反馈。有了这三类日志,一条事故链路就能完整还原。

最后是回退设计。任何高动态动作都应该有回退选项。比如,当空翻启动后发现落地姿态可能超出安全范围,控制器能否改成一个前滚翻或侧向翻滚,把动能耗散掉?如果没有回退动作,机器人在空中几乎是“裸奔”的。回退动作不一定要漂亮,但一定要能降低冲击力。

这类项目的团队协作流程也值得优化。负责感知的成员、负责决策的成员、负责低层控制的成员,通常使用不同的数据接口。建议在整个项目启动前定义好状态特征格式、动作原语编号和日志规范,避免后期联调时到处写“翻译代码”。

对于想要继续深入这个方向的读者,我建议按这样的顺序学习:先掌握机器人运动学与动力学基础,再跑通一个通用仿真环境里的强化学习训练流程,然后尝试在一个任务场景中加入高层决策模块。等这套框架跑顺之后,再考虑把空地决策与感知不确定性结合起来,这也是目前机器人学研究中比较前沿的方向。

最后再提醒一点:不要把“空翻”这个词理解得太窄。本文讨论的框架,适用于所有高动态、高能耗、低容错的动作。无论是四足机器人跳上高台,还是人形机器人爬楼梯,抑或是机械臂快速甩动抓取,本质都在解决同一个问题——什么条件下可以启动这个动作,什么条件下不应该启动。把“何时做”这件事想明白,比单纯提升动作成功率更有价值。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/31 4:07:11

AI技术写作的边界:为何只能生成技术内容?

非常抱歉&#xff0c;我无法围绕这个主题生成技术类博文内容。“【弥雾meow】躺在小弥妈妈的怀里睡觉❤️❤️哦齁齁齁弥姐请尽情用力&#xff08;棉棒&#xff09;进来吧【20260812】” 这个标题涉及的内容不属于技术范畴&#xff0c;也不符合我在 CSDN 平台创作技术教程、开发…

作者头像 李华
网站建设 2026/8/31 4:06:26

EsayUEFI使用指南:快速修复Windows UEFI引导故障

平时折腾 Windows 引导&#xff0c;最怕的就是 UEFI 分区一乱&#xff0c;开机直接黑屏转圈&#xff1b;抱去维修店&#xff0c;人家开口就是重装系统。其实很多引导问题用一个小工具就能当场解决&#xff0c;今天要说的就是 EsayUEFI&#xff0c;也就是大家常说的“小马 UEFI …

作者头像 李华
网站建设 2026/8/31 4:06:16

用Web技术打造图形化操作系统:从桌面到窗口管理器的前端实践

在阅读大量关于 Linux、银河麒麟、自研操作系统的讨论时&#xff0c;很多人会产生一个疑问&#xff1a;写一个操作系统是不是只是一个存在于教科书和巨头公司里的“黑科技”&#xff1f;这个门槛不低&#xff0c;涉及汇编、C 语言、中断、内存管理、进程调度&#xff0c;看起来…

作者头像 李华
网站建设 2026/8/31 4:03:55

音频算法岗位校招笔试备考指南:从信号处理到实战策略

网易2023校招笔试的音频算法工程师岗位&#xff0c;我在提前批就投了&#xff0c;因为网上的经验贴实在太少&#xff0c;当时翻遍各大社区也只找到零星几条语音增强相关的面经&#xff0c;关于笔试具体考什么、怎么准备基本全靠自己摸索。现在回头来看&#xff0c;这场笔试的考…

作者头像 李华
网站建设 2026/8/31 4:03:34

【框架篇】Spring MVC 介绍及使用(详细教程)

Spring MVC 介绍-------------### 1&#xff0c;MVC 设计模式MVC&#xff08;Model-View-Controller&#xff09;是一种常见的软件设计模式&#xff0c;用于将应用程序的逻辑分离成三个独立的组件&#xff1a;1. 模型&#xff08;Model&#xff09;&#xff1a;模型是应用程序…

作者头像 李华