基于视觉的具身导航

news2024/9/30 17:27:31

基于视觉的具身导航

视觉具身导航

背景

什么是(视觉的?)具身导航

输入机器人观测的当前图像 o t o_t ot和目标图像 o G o_G oG,输出当前时间步的控制动作 u t u_t ut,最终到达指定地点的算法流程。

通用的评价指标

  • 性能指标,目标的到达率,越高越好
  • 安全指标,人工干预(碰撞等)的出现率,越低越好

一些其它指标:

  • 距离加权的成功率(SPL),将成功率除以“实际距离与最短距离之比”

(有篇综述论文专门提到)

具身导航模型的能力

(层次从低到高)

  • 控制,给定当前图像和局部的下一个路径节点的图像,输出控制动作
  • 局部规划,给定当前图像,估计通往(较近的)下一个路径节点的可行性
  • 全局规划,给定当前图像和目标图像,规划出全局的路径

主要的技术路线

  • 基于局部规划的导航,学习一个局部可通过性(traversability)度量,从而根据已有的图像建立一个拓扑图(在可相互到达的图像之间连边),在导航图上执行路径规划(Dijkstra,如果有启发式也可以用A*)算法,在路径点之间执行局部的控制策略
  • 端到端的全局导航,将导航直接建模为一个决策过程,用RL的框架直接学习一个全局的控制策略

公开的机器人平台

【我不太了解这些机器人的控制方式的区别,这部分需要补充】

  • 无人地面车辆(unmanned ground vehicle, UGV),包括Jackal、Warthog等
  • 全地形车(all terrain vehicle, ATV)
  • 机器狗,如Spot等
  • 其它机器人平台,如TurtleBot、LoCoBot等
  • 汽车

公开的数据集

数据集机器人平台规模环境
1GoStanfordTurtleBot214h室内
2RECONJackal25h野外
3SCANDSpot / Jackal9h人行道
4SeattleWarthog1h野外
5TartanDriveATV5h野外
6NeBulaATV10h野外
7HuRoNTurtleBot275h室内
8BDDCar10h公路

另外还有仿真环境:Habitat-Matterport 3D Semantics Dataset,包含了216个室内场景下的3,100个房间及对应物体的标注

研究点1:具有通用性和泛化性的具身导航模型

迁移学习 / 多任务学习 / 泛化性。训练能适用于多种机器人平台和多种环境的导航策略;

ViNG

ViNG: Learning Open-World Navigation with Visual Goals [ICRA 2021]

主要创新点:(不知道是不是开创这个框架的方法),另外使用了从不同的轨迹间构造负样本对的方法,提高了可通过性学习的效率。

局限:1)在新环境下需要微调(few-shot);2)不能用于其它机器人平台。

ExAug

ExAug: Robot-Conditioned Navigation Policies via Geometric Experience Augmentation. [ICRA 2023]

主要创新点:通过构建点云对环境进行3D建模,然后根据新机器人的尺寸和速度作为condition生成图像,在多视角的图像上训练策略。

局限:1)文中只改变了机器人的尺寸和速度,并没有改变底层的控制方式(比如差速驱动和油门刹车驱动的区别);2)没有体现对新环境的泛化能力。

GNM

GNM: A General Navigation Model to Drive Any Robot [ICRA 2023]

主要创新点:建立了统一的state空间、action空间和traversability;用前k帧的图像隐式建模机器人的context,泛化性更强,支持多种环境多种平台(zero-shot),也可以处理机器人部分失能的情形。

局限:1)模型不够大;2)需要事先建立拓扑图

ViNT

ViNT: A Foundation Model for Visual Navigation [Preprint]

主要创新点:1)大;2)将observation和goal提前进行融合,以建模二者的相关性;3)可以根据下游任务进行多模态的微调;4)具有全局规划能力(下面会讲)

研究点2:全局的规划能力

现有的局部规划方法即使是大模型也只能建模局部的,短距离的可通过性。在全新的环境中不一定有机会事先建立拓扑图,这时候局部规划无法发挥作用,需要更高层次的规划能力

ViKiNG

ViKiNG: Vision-Based Kilometer-Scale Navigation with Geographic Hints [RSS 2022]

主要创新点:训练一个生成式模型生成一些虚拟的sub-goal(路径节点),用启发式评估sub-goal的质量,然后引入了A*算法,利用示意图、卫星地图、GPS等信息学习一个启发函数,提高寻路效率

ViNT中的全局规划

基本沿用了ViKiNG的规划框架,使用了diffusion model作为sub-goal的生成模型

PIRLNav

PIRLNav: Pretraining with Imitation and RL Finetuning for ObjectNav [CVPR 2023]

其实就是一个基于模仿学习(逆向强化学习)的端到端方法,针对导航任务本身用了一些比较tricky的方法所以分比较高。

局限:基本在全局的视角下开展研究,缺乏多模态的对齐(约25%的失败案例)和局部可通过性建模(约12%的失败案例),这些可以由上述的导航大模型所解决的

注:这个数据集有自然语言目标的版本,也有图像目标的版本

研究点3:与自然语言的对齐

LM-Nav

LM-Nav: Robotic Navigation with Large Pre-Trained Models of Language, Vision, and Action [CVPR 2023]

  • 首先用ViNG建立导航图
  • 用一个LLM将自然语言转换成landmark,实现了高层次的路径规划
  • 用CLIP实现landmark文本与图像路径点的对齐
  • 用ViNG执行低层次的导航

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

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

相关文章

教师管理小程序的设计

管理员账户功能包括:系统首页,个人中心,教师管理,个人认证管理,课程信息管理,课堂记录管理,课堂统计管理,留言板管理 微信端账号功能包括:系统首页,课程信息…

【C++报错已解决】Invalid Use of ‘void’ Expression

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法2.1 方法一:调整函数返回类型方法二…

如何在 C 语言中实现链表?

🍅关注博主🎗️ 带你畅游技术世界,不错过每一次成长机会! 📙C 语言百万年薪修炼课程 通俗易懂,深入浅出,匠心打磨,死磕细节,6年迭代,看过的人都说好。 文章目…

【安全设备】Web应用防火墙

一、什么是Web应用防火墙 Web应用程序防火墙(Web Application Firewall)的缩写是WAF,用于保护Web应用程序免受各种恶意攻击和漏洞利用。WAF通过监控和过滤进出Web应用程序的HTTP/HTTPS流量来工作。它位于Web应用程序和用户之间,分…

【android 9】【input】【10.发送按键事件4——View的分发流程】

系列文章目录 可跳转到下面链接查看下表所有内容https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501文章浏览阅读2次。系列文章大全https://blog.csdn.net/handsomethefirst/article/details/138226266?spm1001.2014.3001.5501 目录…

LabVIEW平台从离散光子到连续光子的光子计数技术

光子计数技术用于将输入光子数转换为离散脉冲。常见的光子计数器假设光子是离散到达的,记录到来的每一个光子。但是,当两个或多个光子同时到达时,计数器会将其记录为单个脉冲,从而只计数一次。当连续光子到达时,离散光…

基于YOLOv8深度学习的CT扫描图像肾结石智能检测系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

使用八股搭建神经网络

神经网络搭建八股 使用tf.keras 六步法搭建模型 1.import 2.train, test 指定输入特征/标签 3.model tf.keras.model.Sequential 在Squential,搭建神经网络 4.model.compile 配置训练方法,选择哪种优化器、损失函数、评测指标 5.model.fit 执行训练过程&a…

移动互联安全

什么是移动互联 从狭义的角度来说,移动互联网是一个以宽带IP为技术核心,可同时提供语音、传真、图像、多媒体等高品质电信服务的新一代开放的电信基础网络。 从广义的角度来说,移动互联网是指将互联网提供的技术、平台、应用以及商业模式&…

拖动事件 dragEnterEvent、放置事件 dropEvent、resize事件resizeEvent的实现

拖动事件 dragEnterEvent、放置事件 dropEvent、resize事件resizeEvent的实现 拖动事件 dragEnterEvent 放置事件 dropEvent resize事件resizeEvent DragFileExample.h #ifndef DRAGFILEEXAMPLE_H #define DRAGFILEEXAMPLE_H#include <QWidget> #include <QDragEnterE…

【Python大语言模型系列】Windows环境下部署Chatglm2-6B-int4大语言模型(完整教程)

这是我的第319篇原创文章。 一、引言 电脑配置 &#xff1a; python版本要求&#xff1a;3.8torch版本&#xff1a;2.0.1cuda&#xff1a;11.7windows系统&#xff1a;Windows 10 显卡&#xff1a;6G以上GPU 二、实现过程 2.1 下载chatglm2-6b的项目源码 上chatglm2-6B的官…

[PM]流程与结构设计

流程图 流程就是为了达到特定目标, 进行的一系列有逻辑性的操作步骤, 由两个及已上的步骤, 完成一个完整的行为过程, 即可称为流程, 流程图就是对这个过程的图形化展示 分类 业务流程图 概念: 描述业务流程的一种图, 通过特定符号和连线表示具体某个业务的处理步骤和过程作…

推荐一个比 Jenkins 使用更简单的项目构建和部署工具

最近发现了一个比 Jenkins 使用更简单的项目构建和部署工具&#xff0c;完全可以满足个人以及一些小企业的需求&#xff0c;分享一下。 项目介绍 Jpom 是一款 Java 开发的简单轻量的低侵入式在线构建、自动部署、日常运维、项目监控软件。 日常开发中&#xff0c;Jpom 可以解…

来聊聊Redis持久化AOF管道通信的设计

写在文章开头 最近遇到很多烦心事&#xff0c;希望通过技术来得以放松&#xff0c;今天这篇文章笔者希望会通过源码的方式分析一下AOF如何通过Linux父子进程管道通信的方式保证进行AOF异步重写时还能实时接收用户处理的指令生成的AOF字符串&#xff0c;从而保证尽可能的可靠性…

保密U盘仍然存在数据安全危机?该怎么用才能规避?

保密U盘以前主要用于国家涉密单位或部门&#xff0c;但随着人们对于信息安全的重视越来越高&#xff0c;在民用企事业单位以及个人用户方面也应用得日益广泛。 使用保密U盘在安全性上比普通U盘具有优势&#xff0c;但却仍然存在安全危机&#xff0c;具体为&#xff1a; 病毒和…

万字学习——DCU编程实战

参考资料 2.1 DCU软件栈&#xff08;DCU ToolKit, DTK&#xff09; DCU 开发与使用文档 (hpccube.com) DCU软件栈 DCU的软件栈—DCU Toolkit&#xff08;DTK&#xff09; HIP&#xff08;Heterogeneous-Compute Interface for Portability&#xff09;是AMD公司在2016年提出…

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(五)仿钉钉流程的json数据保存与显示

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、需要做一个界面保存与显示仿钉钉的流程&#xff0c;先建一个表&#xff0c;用online建 2、通过上面生成代码&#xff0c;放入到相应的前后端工程里 3、修改前端仿钉钉流程的设计功能&a…

Java版Flink使用指南——分流导出

大纲 新建工程编码Pom.xml自定义无界流分流 测试工程代码 在之前的案例中&#xff0c;我们一直使用的是单个Sink来做数据的输出。实际上&#xff0c;Flink是支持多个输出流的。本文我们就来讲解如何在Flink数据输出时做分流处理。 我们将基于《Java版Flink使用指南——自定义无…

java如何实现一个死锁 ?

死锁(Deadlock)是指在并发系统中,两个或多个线程(或进程)因争夺资源而互相等待,导致它们都无法继续执行的一种状态。 一、简易代码 public class DeadlockExample {private static final Object lock1 = new Object();private

Python面试宝典第9题:买卖股票

题目 给定一个整型数组&#xff0c;它的第i个元素是一支给定股票第i天的价格。如果最多只允许完成一笔交易&#xff08;即买入和卖出一支股票一次&#xff09;&#xff0c;设计一个算法来计算你所能获取的最大利润。注意&#xff1a;你不能在买入股票前卖出股票。 示例 1&#…