[论文梳理] 足式机器人规划控制流程 - 接触碰撞的控制 - 模型误差 - 自动驾驶车的安全合规(4个课堂讨论问题)

目录

问题 1:足式机器人运动规划 & 控制的典型流程 (pipline)

1.1 问题

1.2 目标

1.3 典型流程(Pipeline)

1.3.1 环境感知(Perception)

1.3.2 高层规划(High-Level Planning)

1.3.3 足迹规划(Footstep Planning)

1.3.4 身体轨迹生成(Body Trajectory Generation / Trajectory Optimization)

补充论文

1.3.5 全身控制(Whole-Body Control, WBC)

1.3.6 反馈闭环

问题 2:接触事件建模 & 混合系统控制

2.1 问题

2.2 背景

2.3 接触建模方法

2.4 混合系统控制方法

问题 3:处理模型误差

3.1 问题

3.2 背景

3.3 处理方法

问题 4:自动驾驶汽车的安全交互 & 驾驶模式差异

4.1 问题

4.2 意外交互中的安全 & 合规

4.3 普通驾驶 vs. 赛车 的区别

  • 港科广 马老师 的机器人学 课堂讨论 (seminar) 记录
  • 问题驱动的学习,有助于进一步提出有价值的问题
  • 梳理机器人运动规划和控制领域的主流问题技术
  • 以问题为框架梳理论文更高效

问题 1:足式机器人运动规划 & 控制的典型流程 (pipline)

1.1 问题

足式机器人 因其在复杂地形中的高机动性而备受关注。那么,足式机器人的 运动规划与控制典型流程(pipeline)是怎样的?

1.2 目标

  • 使足式机器人在复杂环境中稳定、高效地移动

1.3 典型流程(Pipeline)

足式机器人的pipeline类似无人车,但机器人的控制是全身控制,比车更困难

1.3.1 环境感知(Perception)

  • 使用传感器(激光雷达 LiDAR、摄像头 Camera、惯性测量单元 IMU、关节编码器、足底力传感器等)获取环境信息(地形、障碍物)和机器人自身状态(位置、姿态、速度、接触状态)
  • 生成环境地图(如点云图、栅格图、高程图)和估计机器人状态(State Estimation)。状态估计通常融合 IMU、运动学和接触信息
自动驾驶多模态视觉感知经典 [ ICCV'23 ]: arxiv.org/pdf/2303.03991 [2303.03991] OpenOccupancy: A Large Scale Benchmark for Surrounding Semantic Occupancy Perception (arxiv.org) arxiv.org/pdf/2303.03991

1.3.2 高层规划(High-Level Planning)

  • 根据任务目标(如“到达 A 点”)和环境地图,规划出一条全局路径(通常是机器人身体中心 质心 (CoM) [质量中心] 的路径),避开大的障碍物。常用算法如图搜索(A*, RRT*)

  • 最新的接入LLM的高层规划导航方法有:
AAAI-2024 | 视觉语言导航-NavGPT: [2305.16986] NavGPT: Explicit Reasoning in Vision-and-Language Navigation with Large Language Models (arxiv.org)

1.3.3 足迹规划(Footstep Planning)

  • 根据高层规划的路径和局部地形信息,规划出一系列离散的足底落点位置和时间。
  • 需要考虑:运动学可达性(腿长限制)、运动稳定性(如基于 ZMP - Zero Moment Point、Capture Point 的判据)、地形适应性(寻找平坦、稳固的落脚点)、避免碰撞等
足式机器人步态和轨迹规划 ETH PhD论文 [ RAL-2018 ]: research-collection.ethz.ch/bitstream/handle/20.500.11850/241888/18-ral-winkler_.pdf?sequence=1

1.3.4 身体轨迹生成(Body Trajectory Generation / Trajectory Optimization)

  • 根据规划好的足迹,生成机器人身体(CoM)和摆动腿(Swing Leg)的连续运动轨迹
  • 通常是一个优化问题,目标是平滑、节能、稳定,同时满足动力学约束(如 ZMP 约束)、运动学约束和足迹约束
意大利理工大学 和 曼切斯特大学 2022年开源的全身控制工作: [2211.12849] Whole-Body Trajectory Optimization for Robot Multimodal Locomotion (arxiv.org)
补充论文
  • 其它的轨迹生成的工作(不是全身轨迹,只是手臂轨迹生成)
ICL伦敦帝国理工-2023年的工作: [2309.07550] Naturalistic Robot Arm Trajectory Generation via Representation Learning (arxiv.org)
  • 最新的接入LLM的端到端视觉-语言-动作模型有:(直接从感知 -> 动作轨迹生成)
Google 2023年的 RT-2 的端到端训练:在机器人和公开数据上共同微调了一个预训练的视觉-语言模型(VLM)。得到的模型接收机器人摄像头图像,语言指令,当前动作,并直接预测机器人执行的动作
类似于LLaVA用transformer做next token prediction;输入:视觉token+文本token+先前动作token;输出:动作token (做下一步的规划控制)

1.3.5 全身控制(Whole-Body Control, WBC)

  • 这是最底层的控制。根据期望的身体轨迹、足部轨迹和接触状态,计算需要施加到每个关节的力矩(Torque)
  • 通常也表述为一个优化问题(如二次规划 QP),目标是精确跟踪期望运动,同时满足多个任务和约束:
    • 任务(优先级可能不同): 保持身体姿态、跟踪 CoM 轨迹、跟踪摆动腿轨迹、维持接触力等。
    • 约束: 关节角度/速度/力矩限制、摩擦力约束(Friction Cone)、接触运动学约束(着地脚速度为零)
  • 常用方法包括基于任务空间/操作空间(Task/Operational Space)的控制、基于逆动力学的控制等。
MIT 2019 年的经典WBC论文,用MPC+WBC,论文名:Highly Dynamic Quadruped Locomotion via Whole-Body Impulse Control and Model Predictive Control ( arxiv.org/pdf/1909.06586)

1.3.6 反馈闭环

  • 整个流程是闭环的。感知到的实际状态会反馈给规划和控制层,用于纠正偏差
  • 例如,如果实际落脚点与计划不符,或身体姿态发生倾斜,控制器会实时调整
腾讯RoboticsX发表在 [RAL2021] 的 论文:  (PDF) Learning-Based Balance Control of Wheel-Legged Robots (researchgate.net)

问题 2:接触事件建模 & 混合系统控制

2.1 问题

接触事件 会导致系统状态发生不连续的跳变(例如速度突变)。我们如何有效地在 系统动力学 中为这种接触进行 建模?对于这类具有 非光滑动力学 特性的 混合系统(hybrid systems),我们又该如何进行 控制

2.2 背景

  • 接触(如机器人脚落地、物体碰撞)是许多物理系统中常见的现象。它会导致速度、加速度等状态量瞬间改变,使得系统的动力学模型在接触点变得不连续、非光滑。这类系统既包含连续变化的动态(如空中飞行),又包含离散的事件(接触瞬间),因此被称为“混合系统”

2.3 接触建模方法

  • 刚体碰撞模型(Impact Maps): 这是最经典的方法之一。假设碰撞时间无限短,利用冲量-动量定理来计算碰撞后的速度。通常会引入“恢复系数”(Coefficient of Restitution, e)来描述碰撞的能量损失程度(e=1 为完全弹性碰撞, e=0 为完全非弹性碰撞)。对于多点接触或复杂几何体,需要考虑接触点的位置、法线方向以及摩擦(如库仑摩擦模型)
  • 连续接触力模型(Penalty Methods / Regularization): 这种方法避免了不连续性。它将接触力模拟为非常“硬”的弹簧和阻尼器。当物体相互穿透时,会产生一个非常大的排斥力将它们推开。优点是模型是连续的,易于仿真和控制设计;缺点是需要选择合适的刚度和阻尼系数,可能导致数值计算上的“刚性问题”(stiffness),并且物理真实性可能不如碰撞模型
  • 互补约束(Complementarity Constraints): 这是目前在机器人学和仿真中非常流行且物理意义明确的方法。它将接触条件(如:不穿透距离 d≥0、接触力 fn​≥0、两者不能同时大于零 d⋅fn​=0)以及摩擦力(如最大静摩擦力约束)表示为一组数学上的互补约束(通常是线性互补问题 LCP 或非线性互补问题 NCP)。这种方法能够精确地描述“接触/分离”的逻辑切换
  • 事件驱动方法(Event-Driven): 精确地检测接触事件发生的时间点,然后在事件点切换动力学模型或应用冲击模型。这在仿真中很常用,但在实时控制中可能较难实现

2.4 混合系统控制方法

  • 分段控制/切换系统理论(Switched Systems): 为系统的每种模态(接触/非接触)分别设计控制器,并设计切换逻辑来保证稳定性。挑战在于处理切换瞬间的状态跳变和保证切换过程的稳定性
  • 模型预测控制(MPC): MPC 天然适合处理约束。可以将互补约束或接触力约束直接纳入优化问题中,预测未来一段时间的系统行为并计算最优控制输入。对于混合系统,需要使用混合整数规划(Mixed-Integer Programming)或专门处理互补约束的优化算法
  • 能量/耗散理论(Passivity-Based Control): 利用系统的能量特性来设计控制器,特别是在处理接触时的能量交换和耗散
  • 力/阻抗控制(Force/Impedance Control): 不直接控制位置,而是控制机器人与环境交互时的力或表现出的机械阻抗(力与位移/速度的关系)。这对于处理接触时的不确定性和保证柔顺性非常有效。
  • 基于学习的控制: 利用强化学习等方法让系统自主学习如何在接触中稳定运动

问题 3:处理模型误差

3.1 问题

模型 总归是 近似 的。我们如何处理模型中存在的 误差

3.2 背景

  • 任何数学模型都是对现实世界的简化和近似。误差来源包括:参数不确定(质量、摩擦系数未知)、未建模的动态(如柔性、驱动器延迟)、传感器噪声、环境干扰等

3.3 处理方法

  • 鲁棒控制(Robust Control): 设计控制器时就考虑模型不确定性的存在范围,目标是即使在最坏的模型误差情况下,系统依然能保持稳定并满足一定的性能指标。常用方法包括 H-infinity 控制、滑模控制(Sliding Mode Control)等。滑模控制对匹配不确定性(matching uncertainty)尤其鲁棒
  • 自适应控制(Adaptive Control): 控制器能够在线估计模型参数或不确定性的大小,并根据估计结果调整自身的控制律,以适应模型变化
  • 迭代学习控制(Iterative Learning Control, ILC): 适用于重复性任务。通过每次试验的误差来修正下一次试验的控制输入,逐步提高性能,对模型精度要求不高
  • 基于观测器的控制: 设计状态观测器(如卡尔曼滤波器、扩展卡尔曼滤波器、无迹卡尔曼滤波器、粒子滤波器等)来估计系统内部状态和干扰,并将估计值用于反馈控制,以补偿模型误差和噪声的影响
  • 数据驱动/学习方法:
    • 系统辨识(System Identification): 在控制设计前,通过实验数据更精确地估计模型参数或建立数据驱动模型
    • 残差建模(Residual Modeling): 用机器学习模型(如高斯过程、神经网络)来学习“标称模型”(nominal model)与实际系统之间的差异(残差),并将这个学习到的残差加入到控制设计中
    • 强化学习(Reinforcement Learning): 直接从与环境的交互中学习最优控制策略,可以不依赖精确的模型
  • 增加反馈增益: 在一定范围内,提高反馈控制器的增益可以增强系统抑制干扰和克服模型误差的能力,但过高的增益可能导致系统不稳定或放大噪声

问题 4:自动驾驶汽车的安全交互 & 驾驶模式差异

4.1 问题

自动驾驶汽车 有时需要进行 激进驾驶(aggressive driving)并与其它车辆进行复杂的 交互。在这种 意外交互 发生时,我们如何保证车辆行为的 安全合规(compliant)?此外,普通驾驶赛车(car racing)之间有什么 区别

4.2 意外交互中的安全 & 合规

  • 环境感知与预测: 精确感知周围车辆、行人、障碍物的位置、速度和意图。利用运动模型、交互模型甚至机器学习模型预测它们未来的行为轨迹
  • 风险评估: 实时评估潜在的碰撞风险(如 Time-to-Collision, TTC)和其他危险情况
  • 决策规划:
    • 规则遵从: 严格遵守交通规则(如保持车道、安全距离、让行规则)。形式化方法(如 RSS - Responsibility-Sensitive Safety)可以提供可验证的安全保证
    • 防御性驾驶策略: 预留足够的安全裕度,对其他道路使用者的不确定行为保持警惕,选择风险最低的策略
    • 应急处理(Contingency Planning): 预先设计好应对突发危险情况(如前方急刹、鬼探头)的紧急避险策略(紧急制动、紧急变道),并能在极短时间内触发执行
  • 运动控制: 精确、平稳地执行规划出的轨迹,同时具备快速响应能力以执行紧急操作
  • 冗余与容错: 在传感器、计算单元、执行器等关键部件上采用冗余设计,确保单一故障不会导致灾难性后果
  • V2X 通信(Vehicle-to-Everything): 与其他车辆、基础设施通信,提前获取危险警告或意图信息,有助于协同决策,但不能完全依赖

4.3 普通驾驶 vs. 赛车 的区别

  • 目标(Objective):
    • 普通驾驶:安全、舒适、高效(节能、省时)、遵守交通规则是首要目标
    • 赛车:唯一目标是最小化单圈时间。在规则允许范围内,将车辆性能发挥到极限
  • 运行环境(Environment):
    • 普通驾驶:开放道路,环境复杂多变,充满不确定性(其他车辆、行人、信号灯、天气等)。需要遵守统一的交通法规
    • 赛车:封闭赛道,环境相对可控,对手是专业的赛车手(行为更激进但也相对可预测),有特定的比赛规则
  • 车辆极限(Vehicle Limits):
    • 普通驾驶:通常在车辆的远低于极限的范围内运行,追求平稳和舒适
    • 赛车:持续在车辆的物理极限(轮胎抓地力、发动机功率、刹车性能)边缘驾驶
  • 驾驶策略(Strategy):
    • 普通驾驶:保持车道、平稳加减速、保持安全距离
    • 赛车:寻找最优“赛车线”(Racing Line),最大化利用赛道宽度,进行极限刹车、最大加速度出弯,容忍甚至利用轮胎的小幅滑移(Slip Angle)
  • 风险容忍度(Risk Tolerance):
    • 普通驾驶:极低,以避免任何事故为目标
    • 赛车:较高,为了追求速度,可以接受一定的失控风险(如打滑、冲出赛道)
  • 控制算法侧重:
    • 普通驾驶:侧重安全性(碰撞避免)、平顺性、规则遵守、能耗优化
    • 赛车:侧重极限性能下的轨迹跟踪、状态估计(如轮胎滑移率)、最优控制(如最小时间 MPC)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/81181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云短信接入实现示例

1&#xff09;构建Springboot项目 2) 添加依赖 <!--阿里云短信--> <dependency><groupId>com.aliyun</groupId><artifactId>alibabacloud-dysmsapi20170525</artifactId><version>3.0.0</version> </dependency><…

逻辑回归之参数选择:从理论到实践

一、逻辑回归概述 逻辑回归虽然名字中带有“回归”&#xff0c;但它是一种用于处理二分类或多分类问题的算法。其核心思想是通过构建一个线性模型&#xff0c;将输入特征进行线性组合&#xff0c;再利用逻辑函数&#xff08;如Sigmoid函数&#xff09;将线性组合的结果映射到0…

综合案例建模(1)

文章目录 滚花手扭螺丝机箱封盖螺丝螺丝孔锥形垫片 滚花手扭螺丝 前视基准面画草图&#xff0c;旋转生成主体 倒角0.5 顶面&#xff0c;草图转换实体引用&#xff0c;去复制边线 生成螺旋线路径 顶面绘制草图 上一步画的草图沿螺旋线扫描切除 镜像扫描特征 阵列镜像扫描特征 创…

SQL语句练习 自学SQL网 多表查询

目录 Day 6 用JOINs进行多表联合查询 Day 7 外连接 OUTER JOINs Day 8 外连接 特殊关键字 NULLs Day 6 用JOINs进行多表联合查询 SELECT * FROM Boxoffice INNER JOIN movies ON movies.idboxoffice.Movie_id;SELECT * FROM Boxoffice INNER JOIN moviesON movies.idboxoffi…

游戏引擎学习第247天:简化DEBUG_VALUE

欢迎。关于纹理传输的详细情况。 上周我们刚刚完成了纹理下载的相关工作&#xff0c;但实际上并没有完全解决这个问题。问题的核心是&#xff0c;当前关于纹理下载的正确方式仍然存在较大的不确定性。尽管我们在进行纹理下载的工作时已有一定进展&#xff0c;但依旧有不少模糊…

python将字符串转成二进制数组

python将字符串转成二进制数组 功能概述&#xff1a; save_binary_to_json() 函数&#xff1a;将字符串转换为二进制数据&#xff08;字节的整数表示&#xff09;&#xff0c;并保存到JSON文件中。 load_binary_from_json() 函数&#xff1a;从JSON文件中读取二进制数据并还原…

【springboot知识】配置方式实现SpringCloudGateway相关功能

配置方式实现SpringCloudGateway相关功能 Spring Cloud Gateway 核心功能与实战实现指南一、核心功能架构二、六大核心功能实现1. 动态路由配置2. 断言(Predicate)配置3. 过滤器(Filter)配置4. 负载均衡配置5. 熔断降级配置6. 限流配置 三、高级配置技巧1. 跨域配置2. 重试机制…

Windows 10 环境二进制方式安装 MySQL 8.0.41

文章目录 初始化数据库配置文件注册成服务启停服务链接服务器登录之后重置密码卸载 初始化数据库 D:\MySQL\MySQL8.0.41\mysql-8.0.41-winx64\mysql-8.0.41-winx64\bin\mysqld -I --console --basedirD:\MySQL\MySQL8.0.41\mysql-8.0.41-winx64\mysql-8.0.41-winx64 --datadi…

流式通信技术对比:SSE vs WebSocket 应用场景与最佳实践

在构建动态、实时交互的现代 Web 应用时&#xff0c;实时通信能力至关重要。Server-Sent Events&#xff08;SSE&#xff09; 和 WebSocket 是当前最主流的两种技术方案&#xff0c;它们都支持服务器主动向客户端推送数据&#xff0c;但在通信模式、应用场景和实现复杂度上存在…

复杂度和顺序表(双指针方法)

目录 目录 目录 前言&#xff1a; 一、时间复杂度和空间复杂度 1.1概念 1.2规则 二、顺序表 2.1静态顺序表 2.2动态顺序表 三、双指针法 四、总结 前言&#xff1a; 时间复杂度和空间复杂度是用于判断算法好坏的指标&#xff0c;程序性能的核心指标。时间复杂度主要衡…

flutter 专题 六十四 在原生项目中集成Flutter

概述 使用Flutter从零开始开发App是一件轻松惬意的事情&#xff0c;但对于一些成熟的产品来说&#xff0c;完全摒弃原有App的历史沉淀&#xff0c;全面转向Flutter是不现实的。因此使用Flutter去统一Android、iOS技术栈&#xff0c;把它作为已有原生App的扩展能力&#xff0c;…

Java高阶程序员学习计划(详细到天,需有一定Java基础)

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息文章目录 Java高阶程序员学习计划(详细到天,需有一定Java基础)第一阶段(30天)Java基础:Java生态工具链:设计模式与编码规范:第二阶段(15天…

JS自动化获取网站信息开发说明

一、自动获取信息的必要性 1. 提高效率与节省时间 批量处理&#xff1a;自动化可以快速抓取大量数据&#xff0c;比人工手动操作快得多。 24/7 运行&#xff1a;自动化工具可以全天候工作&#xff0c;不受时间限制。 减少重复劳动&#xff1a;避免人工反复执行相同的任务&am…

Android Kotlin 依赖注入全解:Koin appModule 配置与多 ViewModel 数据共享实战指南

一、基础配置与概念 1. 什么是 appModule appModule 是 Koin 依赖注入框架中的核心配置模块&#xff0c;用于集中管理应用中的所有依赖项。它本质上是一个 Koin 模块&#xff08;org.koin.core.module.Module&#xff09;&#xff0c;通过 DSL 方式声明各种组件的创建方式和依…

学习记录:DAY21

我的开发日志&#xff1a;类路径扫描、DI 容器与动态代理 前言 我失忆了&#xff0c;完全不记得自己早上干了什么。 日程 早上 10 点左右开始&#xff0c;学了一早上&#xff0c;主要是类路径扫描相关的调试。 晚上 8 点了&#xff0c;真不能再摸&#x1f41f;了。 学习记录 计…

【Agent】MCP协议 | 用高德MCP Server制作旅游攻略

note MCP (Model Context Protocol) 代表了 AI 与外部工具和数据交互的标准建立。MCP 的本质&#xff1a;它是一个统一的协议标准&#xff0c;使 AI 模型能够以一致的方式连接各种数据源和工具&#xff0c;类似于 AI 世界的"USB-C"接口。 它能够在 LLM/AI Agent 与外…

使用 Spring Data Redis 实现 Redis 数据存储详解

使用 Spring Data Redis 实现 Redis 数据存储详解 Spring Data Redis 是 Spring 生态中操作 Redis 的核心模块&#xff0c;它封装了 Redis 客户端的底层细节&#xff08;如 Jedis 或 Lettuce&#xff09;&#xff0c;提供了统一的 API 来操作 Redis 的数据结构。以下是详细实现…

Qt5与现代OpenGL学习(四)X轴方向旋转60度

把上面两张图像放到D盘1文件夹内&#xff1a; shader.h #ifndef SHADER_H #define SHADER_H#include <QDebug> #include <QOpenGLShader> #include <QOpenGLShaderProgram> #include <QString>class Shader { public:Shader(const QString& verte…

【Machine Learning Q and AI 读书笔记】- 02 自监督学习

Machine Learning Q and AI 中文译名 大模型技术30讲&#xff0c;主要总结了大模型相关的技术要点&#xff0c;结合学术和工程化&#xff0c;对LLM从业者来说&#xff0c;是一份非常好的学习实践技术地图. 本文是Machine Learning Q and AI 读书笔记的第2篇&#xff0c;对应原…

using var connection = connectionFactory.CreateConnection(); using var 是什么意思

在 .NET 中&#xff0c;​​垃圾回收&#xff08;Garbage Collection, GC&#xff09;​​ 确实是自动管理内存的机制&#xff0c;但它 ​​仅适用于托管资源&#xff08;Managed Resources&#xff09;​​&#xff08;如类实例、数组等&#xff09;。然而&#xff0c;对于 ​…