腿足机器人之十- SLAM地图如何用于运动控制

news2025/4/4 19:45:00

腿足机器人之十- SLAM地图如何用于运动控制

  • 腿足机器人SLAM地图的表示与处理
  • 全局路径规划:地形感知的路径搜索
    • 基于A*的三维路径规划
    • 基于RRT*的可行步态序列生成
  • 局部运动规划:实时步态调整与避障
    • 动态窗口法的腿足适配
    • 模型预测控制(MPC)与步态优化
  • 稳定性控制与SLAM定位的协同
  • Boston Dynamics Atlas机器人的SLAM导航

相比于轮式机器人(如人形轮式机器,可以看成是扫地机器人之上加了一个人形上身,实际的导航还是扫地机器人那一套),腿足式机器人(如人形机器人、四足机器人狗)的运动控制复杂度远高于轮式机器人,需要解决以下核心问题:

  • 复杂地形适应:楼梯、碎石、斜坡、火车铁轨等非结构化环境
  • 动态平衡控制:保持运动中的稳定性(如ZMP判据)
  • 高自由度协调:多关节协同运动(如12~28个自由度),(天工机器人2024.4具有42个自由度,内置多个视觉感知传感器及六维力传感器,配备惯性测量单元(IMU)和3D视觉传感器,拥有每秒550万亿次的算力。)
    在这里插入图片描述

SLAM地图的核心作用:

  • 地形几何建模:提供地面高度、坡度、障碍物尺寸等信息
  • 语义理解:识别可通行区域(如草地、水泥地、台阶)
  • 运动规划基础:结合地形信息生成安全步态和路径

腿足机器人SLAM地图的表示与处理

和到底机器人相比,腿足机器人可以双脚离地(小跑、跳跃),SLAM地图需要包含高度信息,因此使用三维地图,这可以使用点云地图、高程地图以及体素地图。

  • 点云地图:通过RGB-D相机或激光雷达生成稠密3D点云
  • 高程地图(Elevation Map):将点云投影为2.5D网格,每个网格存储高度均值和方差:
    h i , j = 1 N ∑ k = 1 N z k , σ i , j 2 = 1 N ∑ k = 1 N ( z k − h i , j ) 2 h_{i,j}=\frac{1}{N}\sum \limits_{k=1}^Nz_k, \sigma_{i,j}^2=\frac{1}{N}\sum \limits_{k=1}^N(z_k-h_{i,j})^2 hi,j=N1k=1Nzk,σi,j2=N1k=1N(zkhi,j)2
    其中 z k z_k zk为网格内低 k k k个点的高度。
  • 体素地图(Voxel Map):将空间划分为立方体单元,标记占用状态(如OctoMap)。

以高程地图为例,可以通过下式提取关键地形特征(坡度,以便评估机器人是否可以通过该倾斜度):
其坡度计算如下:
s l o p e i , j = arctan ⁡ ( ( ∂ h ∂ x ) 2 + ( ∂ h ∂ y ) 2 ) \mathbf{slope}_{i,j}=\arctan \left({\sqrt{(\frac{\partial h}{\partial x})^2+ (\frac{\partial h}{\partial y})^2} }\right ) slopei,j=arctan((xh)2+(yh)2 )
其中: ∂ h ∂ x ≈ h i + 1 , j − h i − 1 , j 2 △ x \frac{\partial h}{\partial x} \approx \frac{h_{i+1,j }-h_{i-1,j}}{2 \triangle x} xh2△xhi+1,jhi1,j ∂ h ∂ y ≈ h i , j + 1 − h i , j − 1 2 △ y \frac{\partial h}{\partial y} \approx \frac{h_{i,j+1 }-h_{i,j-1}}{2 \triangle y} yh2△yhi,j+1hi,j1
然后结合坡度、粗糙度、障碍物高度判断是否适合踩踏:
T r a v e r s a b i l i t y = ω 1 ⋅ e − k 1 ⋅ s l o p e + ω 2 ⋅ e − k 2 ⋅ r o u g h n e s s \mathbf{Traversability} = \omega_1 \cdot e^{-k_1 \cdot \mathbf{slope}} + \omega_2 \cdot e^{-k_2 \cdot \mathbf{roughness}} Traversability=ω1ek1slope+ω2ek2roughness
其中: ω 1 \omega_1 ω1 ω 2 \omega_2 ω2为权重, k 1 k_1 k1 k 2 k_2 k2为衰减系数。

全局路径规划:地形感知的路径搜索

在有了地图之后,需要找到起点到目标点的最优路径(避开已知障碍物),首先进行全局路径规划(基于静态地图),常用的算法有A*、Dijkstra、RRT*等。然后再使用局部路径规划(避开动态障碍物,实时调整路径),常用的算法有动态窗口法(DWA)、人工势场法。

基于A*的三维路径规划

将高程地图转换为三维栅格,定义移动代价函数:
C o s t ( u → v ) = α ⋅ d i s t a n c e ( u , v ) + β ⋅ s l o p e ( v ) + γ ⋅ r o u g h n e s s ( v ) \mathbf{Cost}(u→v) = \alpha \cdot \mathbf{distance}(u,v) + \beta \cdot \mathbf{slope}(v)+\gamma \cdot \mathbf{roughness} (v) Cost(uv)=αdistance(u,v)+βslope(v)+γroughness(v)

  • α \alpha α β \beta β γ \gamma γ为权重系数,平衡路径长度与安全性。
    改进启发函数:考虑地形起伏的欧氏距离:
    h ( n ) = ( x g o a l − x n ) 2 + ( y g o a l − y n ) 2 + k h ⋅ ( h g o a l − h n ) 2 h(n) = \sqrt{(x_{goal}-x_n)^2 + (y_{goal}-y_n)^2 + k_h \cdot(h_{goal}-h_n)^2} h(n)=(xgoalxn)2+(ygoalyn)2+kh(hgoalhn)2
    其中 h k h_k hk为高度权重因子。

基于RRT*的可行步态序列生成

针对腿足机器人,路径需满足落脚点约束:

  • 采样落脚点:在可通行区域随机选择候选点。
  • 运动学可达性检查:验证机器人腿部能否触及该点(逆运动学求解)。
  • 稳定性评估:计算ZMP(零力矩点)是否在支撑多边形内,见腿足机器人之八-动力学
    优化目标函数:
    J = ∑ k = 1 N ( C o s t t e r r a i n ( p k ) + λ ⋅ ∣ ∣ p k − p k − 1 ∣ ∣ ) J= \sum \limits_{k=1}^N(Cost_{terrain}(p_k) + \lambda \cdot ||p_k - p_{k-1}||) J=k=1N(Costterrain(pk)+λ∣∣pkpk1∣∣)
    其中 p k p_k pk为第k步的落脚点, λ \lambda λ平衡步长与地形代价。

局部运动规划:实时步态调整与避障

动态窗口法的腿足适配

将速度空间扩展为 落脚点时序空间:

  • 决策变量:下一步落脚点位置 x f , y f , z f x_f, y_f, z_f xf,yf,zf和接触地时间 t f t_f tf
  • 约束条件:
    • 运动学极限: ∣ ∣ p f − p c u r r e n t ∣ ∣ ≤ l m a x ||p_f - p_{current}|| \le l_{max} ∣∣pfpcurrent∣∣lmax ,表示退长限制;
    • 动态平衡:ZMP轨迹在支撑多边形内。
    • 避障:落脚点不与障碍物区域重叠。
  • 评价函数:
    KaTeX parse error: Undefined control sequence: \codt at position 19: …re(p_f)=\alpha \̲c̲o̲d̲t̲ ̲dist_to_goal(p_…

模型预测控制(MPC)与步态优化

MPC框架步骤:
1.预测模型:建立腿足机器人动力学模型(如单刚体模型):
{ m r ¨ = Σ i = 1 N l e g s f i − m g I ω ˙ + ω × I ω = Σ i = 1 N l e g s ( r i × f i ) \left\{ \begin{aligned} m \ddot r & = & \Sigma_{i=1}^{N_{legs}}f_i -mg \\ I \dot \omega + \omega \times I \omega & = & \Sigma_{i=1}^{N_{legs}(r_i \times f_i)} \end{aligned} \right. mr¨Iω˙+ω×Iω==Σi=1NlegsfimgΣi=1Nlegs(ri×fi)
其中 f i f_i fi是第 i i i条腿的地面反作用力, r i r_i ri为力作用点位置。
2.滚动优化:在时间窗口 [ t , t + T ] [t, t+T] [t,t+T]内求解最优落脚点和关节轨迹:
min ⁡ u : 0 : N − 1 ∑ k = 0 N − 1 ( ∣ ∣ x k − x r e f ∣ ∣ Q 2 + ∣ ∣ u k ∣ ∣ R 2 ) + ∣ ∣ x N − x r e f ∣ ∣ P 2 \min_{u:0:N-1} \sum \limits_{k=0}^{N-1}(||x_k - x_{ref}||_Q^2 + ||u_k||_R^2) + ||x_N - x_{ref}||_P^2 u:0:N1mink=0N1(∣∣xkxrefQ2+∣∣ukR2)+∣∣xNxrefP2

  • 状态 x k x_k xk包括质心位置、速度、关节角度。
  • 输入控制 u k u_k uk包括关节力矩或落脚点位置。
  1. 实时调整:根据SLAM更新的障碍物信息修正优化约束。

稳定性控制与SLAM定位的协同

零力矩点(ZMP)稳定性判据
ZMP定义为地面反作用力的合力作用点,需落在支撑多边形内:
x Z M P = Σ i = 1 N ( m i x i ( g + z ¨ i ) − m i z i x ¨ i Σ i = 1 N m i ( g + z ¨ i x_{ZMP} = \frac{\Sigma_{i=1}^N(m_i x_i(g + \ddot z_i) - m_i z_i \ddot x_i}{\Sigma_{i=1}^N m_i(g+\ddot z_i} xZMP=Σi=1Nmi(g+z¨iΣi=1N(mixi(g+z¨i)mizix¨i
简化模型下(质心高度恒定):
x Z M P = x C o M − x ¨ C o M ⋅ z C o M g x_{ZMP} = x_{CoM}-\frac{\ddot x_{CoM} \cdot z_{CoM}}{g} xZMP=xCoMgx¨CoMzCoM
稳定性约束:
x Z M P ∈ S u p p o r t P o l y g o n x_{ZMP} \in \mathbf{Support Polygon} xZMPSupportPolygon

Boston Dynamics Atlas机器人的SLAM导航

  1. 硬件与传感器配置
  • 激光雷达:Velodyne VLP-16,生成3D点云。
  • IMU:测量本体角速度与加速度。
  • 关节编码器:提供腿部运动学信息。

2.SLAM与运动控制流程
地图构建:

  • 使用Google Cartographer融合激光雷达与IMU数据,构建3D栅格地图。
  • 提取高程图与可通行区域(坡度<30°, 粗糙度<0.1m)。
  1. 全局路径规划:
  • 在可通行区域上运行改进A*算法,避开陡坡与障碍物。
  • 路径平滑化处理,确保步态序列的连贯性。
  1. 局部步态调整:
  • 检测到动态障碍物(如移动箱子)时,MPC重新规划未来3步落脚点。
  • 计算新落脚点的ZMP轨迹,调整质心运动以保持平衡。
  1. 控制执行:
  • 逆运动学求解关节角度,PD控制器跟踪轨迹:
    τ = K p ( q d e s − q ) + K d ( q ˙ d e s − q ˙ ) \tau = K_p(q_{des}-q) + K_d(\dot q_{des}-\dot q) τ=Kp(qdesq)+Kd(q˙desq˙)
  • 触地阶段力控:根据地面反作用力调整关节力矩。

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

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

相关文章

毕业项目推荐:基于yolov8/yolov5/yolo11的果蔬检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

pyside6学习专栏(二):程序图像资源的加载方式

pyside6中的QLabel控件可以加载图像和gif动画&#xff0c;可以直接从外部文件加载&#xff0c;也可以从QRC类型的文件(实际是一脚本文件)经编绎生成对应的资源.PY模块文件(就是将qrc文本中指定的资源文件的16制内容写入.py文件)来使用&#xff0c;本文对两种方式作了一简单的示…

如何在 VS Code 中快速使用 Copilot 来辅助开发

在日常开发中&#xff0c;编写代码往往是最耗时的环节之一。而 GitHub Copilot&#xff0c;作为一款 AI 编码助手&#xff0c;可以帮助开发者 自动补全代码、生成代码片段&#xff0c;甚至直接编写完整的函数&#xff0c;大幅提升编码效率。那么&#xff0c;如何在 VS Code 中快…

DeepSeek-R1论文阅读及本地调用

前言 DeepSeek已经火了一段时间了&#xff0c;对于这项“国运级”的技术成果&#xff0c;即便研究的不是这个方向&#xff0c;也不免好奇前来看看。本文将先解析一下DeepSeek-R1这篇论文&#xff0c;再对DeepSeek的本地部署使用进行研究配置。 论文标题&#xff1a;DeepSeek-…

自然语言处理:第九十二章 chatBI 经验(转载)

本人项目地址大全&#xff1a;Victor94-king/NLP__ManVictor: CSDN of ManVictor 原文连接: 一文分享 ChatBI 实践经验 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#xff0c;笔芯!!! 写在前面: 笔者更新不易&#xff0c;希望走过路过点个关注和赞&#x…

体验用ai做了个python小游戏

体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见&#xff0c;欢迎页面和结束页面背景是视频&#xff0c;游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…

懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)

1.合集懒人精灵本地离线卡密验证系统教程(不联网、安全稳定、省钱、永久免费、无任何限制)&#xff1a;https://www.bilibili.com/video/BV1M6rdYEEog/ 备注&#xff1a; 1.本地离线卡密采用最安全的非对称加解密技术&#xff0c;设备id采用最安全多重混合加密不可逆技术生成&…

前后端项目部署服务器(传统部署和Docker部署)

内外网 开发环境连外网&#xff08;8.140.26.187&#xff09;&#xff0c;测试/生产环境连内网&#xff08;172.20.59.17&#xff09; 内外网地址不同&#xff0c;但指定的库是同一个 内网IP地址范围包括&#xff1a; 10.0.0.0 到 10.255.255.255172.16.0.0 到 172.31.2551…

python-leetcode 39.二叉树的直径

题目&#xff1a; 给定一棵二叉树的根节点&#xff0c;返回该树的直径。 二叉树的直径是指中间任意两个节点之间最长路径的长度。这条路径可能经过也可能不经过根节点root 两节点之间路径的长度由他们之间的边数表示 方法一&#xff1a;深度优先搜索 一条路径的长度为该路…

【分布式理论11】分布式协同之分布式事务(一个应用操作多个资源):从刚性事务到柔性事务的演进

文章目录 一. 什么是分布式事务&#xff1f;二. 分布式事务的挑战三. 事务的ACID特性四. CAP理论与BASE理论1. CAP理论1.1. 三大特性1.2. 三者不能兼得 2. BASE理论 五. 分布式事务解决方案1. 两阶段提交&#xff08;2PC&#xff09;2. TCC&#xff08;Try-Confirm-Cancel&…

配置Api自动生成

我的飞书:https://rvg7rs2jk1g.feishu.cn/docx/TVlJdMgYLoDJrsxAwMgcCE14nxt 使用Springfox Swagger生成API&#xff0c;并导入Postman&#xff0c;完成API单元测试 Swagger: 是一套API定义的规范&#xff0c;按照这套规范的要求去定义接口及接口相关信息&#xff0c;再通过可…

适用于复杂背景的YOLOv8改进:基于DCN的特征提取能力提升研究

文章目录 1. YOLOv8的性能瓶颈与改进需求1.1 YOLOv8的优势与局限性1.2 可变形卷积&#xff08;DCN&#xff09;的优势 2. DCN在YOLOv8中的应用2.1 DCN的演变与YOLOv8的结合2.2 将DCN嵌入YOLOv8的结构中2.2.1 DCNv1在YOLOv8中的应用2.2.2 DCNv2与DCNv3的优化 2.3 实验与性能对比…

Redis_基础

Redis 命令启动、配置密码 Redis是绿色软件&#xff0c;所以直接解压就能使用 配置文件为&#xff1a;redis.windows.conf 启动redis 服务&#xff1a; redis-server.exe redis.windows.conf启动客户端&#xff1a; redis-cli.exe默认没有给Redis配置密码&#xff0c;所以在…

Linux阿里云服务器安装RocketMQ教程

本文为个人云服务器上搭建RocketMQ教程&#xff0c;用于帮助大家降低安装学习成本&#xff0c;提高学习效率。本人在服务器上&#xff08;我用的是阿里云服务器&#xff09;安装MQ时遇到了大大小小的问题&#xff0c;因此在最终完成部署后&#xff0c;希望能总结一个教程&#…

【JavaEE进阶】MyBatis入门

目录 &#x1f334;前言 &#x1f332;什么是MyBatis? &#x1f333;准备工作 &#x1f6a9;创建工程 &#x1f6a9;配置数据库连接字符串 &#x1f6a9;数据准备 &#x1f6a9;编写持久层代码 &#x1f343;单元测试 &#x1f334;前言 在应⽤分层学习时,我们了解到…

Docker 镜像加速器配置指南

Docker 镜像加速器配置指南 2025-02-17 23:00 Linux : Aliyun ECS 服务器 背景问题 在国内&#xff0c;由于网络环境的不稳定&#xff0c;直接从 Docker Hub 拉取镜像的速度可能会很慢&#xff0c;有时甚至会失败。即使配置了官方的阿里云镜像加速器&#xff0c;也可能因为…

前端VUE+后端uwsgi 环境搭建

1整体架构 请求流程the web clinet--the web server->the socket->uwsgi--django 第一级的nginx并不是必须的&#xff0c;uwsgi完全可以完成整个的和浏览器交互的流程&#xff1b;在nginx上加上安全性或其他的限制&#xff0c;可以达到保护程序的作用&#xff1b;uWSGI本…

【Bert】自然语言(Language Model)入门之---Bert

every blog every motto: Although the world is full of suffering&#xff0c; it is full also of the overcoming of it 0. 前言 对bert进行梳理 论文&#xff1a; BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 时间&#xff1a;…

.NET版PDF处理控件Aspose.PDF教程:在 C# 中将 TIFF 文件转换为 PDF

将TIFF文件转换为PDF文档在各个行业中都是必不可少的。许多企业需要将文档转换为存档、共享或打印。TIFF 文件通常用于图像&#xff0c;而 PDF 是文档共享的标准。将 TIFF 文件转换为 PDF 可确保跨不同平台的兼容性和易用性。在这篇博文中&#xff0c;我们将探讨如何使用 Aspos…

解决华硕主板的Boot界面无法设置M.2的系统启动盘问题

一、问题描述 当我们的华硕主板电脑开机后&#xff0c;发现电脑无法正常进入Windows系统界面&#xff0c;直接显示PXE网络网络信息&#xff1b;且知道我们进入到BIOS界面也无法找到选择系统盘&#xff0c;界面只显示【UEFI:PXE IP4 Intel(R) Ethernet】、【UEFI:PXE IP6 Intel(…