【ROS入门】机器人导航(仿真)——导航模块概述

news2024/11/23 10:30:03

文章结构

  • 导航模块简介
    • 全局地图
    • 自身定位
    • 路径规划
    • 运动控制
    • 环境感知
  • 导航之坐标系
    • 坐标系变换

导航模块简介

在ROS中机器人导航(Navigation)由多个功能包组合实现,ROS 中又称之为导航功能包集,关于导航模块,官方介绍如下:

一个二维导航堆栈,它接收来自里程计、传感器流和目标姿态的信息,并输出发送到移动底盘的安全速度命令。

首先,机器人需要外部数据。而外部数据来源于里程计(里程计是用来测量移动物体移动距离和移动方向的一种装置)、传感器流(通过雷达或者摄像头感知到的障碍物信息)和目标姿态。将这些数据进行运算,输出就是控制机器人运动的速度指令。底盘接收到速度指令之后,就按照指令开始运动。

那么,机器人是如何实现导航的呢?
请添加图片描述

假定我们已经以特定方式配置机器人,导航功能包集将使其可以运动。上图概述了这种配置方式。白色的部分是必须且已实现的组件,灰色的部分是可选且已实现的组件,蓝色的部分是必须为每一个机器人平台创建的组件。

总结下来,涉及的关键技术有如下五点(请配合上图食用):

全局地图

在现实生活中,当我们需要实现导航时,可能会首先参考一张全局性质的地图,然后根据地图来确定自身的位置、目的地位置,并且也会根据地图显示来规划一条大致的路线。对于机器人而言也是如此。

map_server地图服务,为导航提供一张全局性质的地图,同时也可以保存地图。

当然,如果要使用地图,首先需要绘制地图。

SLAM(simultaneous localization and mapping):即时定位与地图构建,或并发建图与定位。机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和地图进行自身定位,同时在自身定位的基础上建造增量式地图,以绘制出外部环境的完全地图。

自身定位

amcl(adaptiveMonteCarloLocalization):自适应的蒙特卡洛定位,是用于2D移动机器人的概率定位系统。它通过传感器感知到的周边环境信息,和地图中的特征点进行匹配,通过一个匹配算法,去估计机器人的大致位置。它实现了自适应(或KLD采样)蒙特卡洛定位方法,该方法使用粒子过滤器根据已知地图跟踪机器人的姿态。

sensor transforms传感器坐标变化,用于将感知到的环境信息进行坐标变换。

odometry source里程计,可以感知机器人的运动距离和运动方向。

路径规划

在导航过程中,机器人需要根据目标位置计算全局运动路线,并且在运动过程中,还需要时时根据出现的一些动态障碍物调整运动路线,该过程称之为路径规划

global_planner全局路径规划,根据给定的目标点和全局地图实现总体的路径规划,使用 Dijkstra 或 A* 算法进行全局路径规划,计算最优路线,作为全局路线。

global_costmap全局代价地图,用于描述环境中的各个位置的可行性或代价程度,以便机器人能够根据这些代价信息做出决策,选择最优的路径。全局路径规划依赖于全局代价地图进行计算。

local_planner本地路径规划,在实际导航过程中,机器人可能无法按照给定的全局最优路线运行,本地规划的作用就是使用一定算法(Dynamic Window Approaches)来实现障碍物的规避,并选取当前最优路径以尽量符合全局最优路径。

local_costmap本地代价地图,实时感知障碍物信息所生成的局部地图。本地路径规划依赖于本地代价地图进行计算。

recovery_behaviors恢复行为,一种脱困策略。例如当遇到障碍物陷入死胡同时,试图恢复选择绕行。

运动控制

base_controller:机器人的底盘

通过话题cmd_vel发布 geometry_msgs/Twist 类型的消息到机器人的底盘,这个消息基于机器人的基座坐标系,它传递的是运动命令。这意味着必须有一个节点订阅cmd_vel话题, 将该话题上的速度命令转换为电机命令并发送。

环境感知

sensor sources传感器如摄像头、激光雷达、编码器等,可以感知周边的环境,可以为本地代价地图以及SLAM、amcl、move_base提供支持。

导航之坐标系

定位是导航中的重要实现之一。所谓定位,就是参考某个坐标系(比如:以机器人的出发点为原点创建坐标系)在该坐标系中标注机器人。定位原理看似简单,但是这个这个坐标系不是客观存在的,我们也无法以上帝视角确定机器人的位姿,定位实现需要依赖于机器人自身,机器人需要逆向推导参考系原点并计算坐标系相对关系,该过程实现常用方式有两种:

  • 通过里程计定位:时时收集机器人的速度信息计算并发布机器人坐标系与父级参考系的相对关系。
    • 优点:里程计定位信息是连续的,没有离散的跳跃。
    • 缺点:里程计存在累计误差,不利于长距离或长期定位。
  • 通过传感器定位:通过传感器收集外界环境信息通过匹配计算并发布机器人坐标系与父级参考系的相对关系。
    • 优点:比里程计定位更精准;
    • 缺点:传感器定位会出现跳变的情况,且传感器定位在标志物较少的环境下,其定位精度会大打折扣。

坐标系变换

上述两种定位实现中,机器人坐标系一般使用机器人模型中的根坐标系(base_link 或 base_footprint)。里程计定位时,父级坐标系一般称之为 odom,如果通过传感器定位,父级参考系一般称之为 map

当二者结合使用时,map 和 odom 都是机器人模型根坐标系的父级,这是不符合坐标变换中"单继承"的原则的。由于map精度会高一些,所以一般会将转换关系设置为:map -> doom -> base_linkbase_footprint

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

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

相关文章

拥有DOM力量的你究竟可以干什么

如果你希望访问 HTML 页面中的任何元素&#xff0c;那么您总是从访问 document 对象开始&#xff01; 查找HTML元素 document.getElementById(id) 通过元素 id 来查找元素 <!DOCTYPE html> <html> <head><meta charset…

OSPF 的10种网络类型和5种区域类型

10种网络类型&#xff0c;也有称7类的&#xff0c;因为8、9、10类是V3专有的&#xff0c;如下&#xff1a; LSA 类型描述传播范围使用与目的Type 1路由器LSA (Router LSA)区域 (Area)描述路由器连接的直连网络和链路信息&#xff0c;用于建立拓扑图和计算最短路径。Type 2网络…

Nginx性能优化

简介 nginx作为常用的web代理服务器&#xff0c;某些场景下对于性能要求还是蛮高的&#xff0c;所以本片文章会基于操作系统调度以及网络通信两个角度来讨论一下Nginx性能的优化思路。 基于操作系统调度进行Nginx优化 CPU工作方式 对于用户进程&#xff0c;CPU会按照下面的…

10个简单好用的Python装饰器

_装饰器&#xff08;Decorators&#xff09;_是Python中一种强大而灵活的功能&#xff0c;用于修改或增强函数或类的行为。装饰器本质上是一个函数&#xff0c;它接受另一个函数或类作为参数&#xff0c;并返回一个新的函数或类。它们通常用于在不修改原始代码的情况下添加额外…

Linux操作系统概述3——进程相关操作讲解(进程概念、xinetd守护进程、进程管理命令)

目录 进程的概念 程序与进程的关系 进程的分类 守护进程的分类 进程的PID 进程的状态 xinetd 守护进程服务 xinetd基本概念 xinetd工作原理 xinetd相关文件介绍 守护进程的管理命令 chkconfig 命令 service 命令 systemctl命令 查看进程状态相关命令 一般程序处…

CLIP文章精读

核心&#xff1a; loss的设计&#xff1a;分布针对固定image匹配text和固定text匹配image设计了两个交叉熵loss

Spring Boot进阶(89):Spring Boot和Zookeeper搭建分布式系统,提高系统可靠性

&#x1f4e3;前言 在当今信息化时代&#xff0c;互联网公司在面对海量访问请求时往往需要采用分布式系统来提高系统的可扩展性和可靠性。分布式系统具有多节点、相互协作的特性&#xff0c;不仅可以提高系统的吞吐量&#xff0c;而且还能在某个节点出现故障时自动切换到其他节…

APC学习记录

文章目录 APC概念APC插入、执行过程逆向分析插入过程执行过程总结 代码演示参考资料 APC概念 APC全称叫做异步过程调用&#xff0c;英文名是 Asynchronous Procedure Call&#xff0c;在进行系统调用、线程切换、中断、异常时会进行触发执行的一段代码&#xff0c;其中主要分为…

【Bond随你温故Kubernetes之】壹图复盘service与内部通信

最近跟朋友聊到了k8s 我&#xff1a; “环境给了就只管用呗&#xff0c;副本自动管理地妥妥的&#xff0c;有啥可以复盘的&#xff1f;“ 朋友&#xff1a; “容器的通讯与服务暴露还是有点东西的” 我&#xff1a; “嗯&#xff5e;&#xff5e;&#xff08;抿嘴点…

Android S从桌面点击图标启动APP流程 (六)

系列文章 Android S从桌面点击图标启动APP流程 (一)Android S从桌面点击图标启动APP流程 (二) Android S从桌面点击图标启动APP流程 (三) Android S从桌面点击图标启动APP流程 (四) Android S从桌面点击图标启动APP流程 (五) Android 12的源码链接&#xff1a; android 1…

基于Or-Tools的指派问题建模求解(PythonAPI)

基于Or-Tools的指派问题建模求解&#xff08;PythonAPI&#xff09; 指派问题&#xff08;又称为分配问题&#xff0c;assignment problem&#xff09;基于Or-Tools的指派问题建模求解&#xff08;PythonAPI&#xff09;导入pywraplp库数据准备声明MIP求解器初始化决策变量初始…

自然语言处理 (NLP) 简介

自然语言处理 &#xff08;Natural Language Processing NLP&#xff09; 简介 本课程是关于NLP 101的4部分系列中的第1部分&#xff1a; 自然语言处理导论&#xff08;今天的教程&#xff09;BagofWords模型简介Word2Vec&#xff1a;自然语言处理中嵌入的研究BagofWords与Wo…

3年轻量:腾讯云轻量2核2G4M应用服务器366三年!

腾讯云轻量应用服务器三年特价&#xff0c;3年轻量2核2G4M服务器&#xff0c;2023双十一优惠价格366元三年&#xff0c;自带4M公网带宽&#xff0c;下载速度可达512KB/秒&#xff0c;300GB月流量&#xff0c;50GB SSD盘系统盘&#xff0c;阿腾云atengyun.com分享腾讯云轻量2核2…

apk反编译修改教程系列-----修改apk中的图片 任意更换apk桌面图片【三】

往期教程&#xff1a; apk反编译修改教程系列-----修改apk应用名称 任意修改名称 签名【一】 apk反编译修改教程系列-----任意修改apk版本号 版本名 防止自动更新【二】 这次实例演示下如何更换apk安装后的桌面图标图片。其实这个步骤前面我有一个教程贴。这次针对步骤做个补…

C++初阶-类和对象(中)1

类和对象&#xff08;中&#xff09;1 一、类的6个默认成员函数二、构造函数概念特性 三、析构函数概念特性 四、拷贝构造函数概念特征 一、类的6个默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c;任何…

ASP.NET WebApi 极简依赖注入

文章目录 环境服务类启动项注入使用依赖注入的优点 环境 .NET Core 7.0ASP.NET CoreVisual Studio 2022 服务类 public class T_TempService {public T_TempService(){}public void Test(){}}启动项注入 #region 依赖注入 builder.Services.AddTransient<T_TempService&g…

【LeetCode力扣】189 53 轮转数组 | 最大子数组和

目录 1、189. 轮转数组 1.1、题目介绍 1.2、解题思路 2、53. 最大子数组和 2.1、题目介绍 2.2、解题思路 1、189. 轮转数组 1.1、题目介绍 原题链接&#xff1a;189. 轮转数组 - 力扣&#xff08;LeetCode&#xff09; ​ 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3输…

Android数据对象序列化原理与应用

序列化与反序列化 序列化是将对象转换为可以存储或传输的格式的过程。在计算机科学中&#xff0c;对象通常是指内存中的数据结构&#xff0c;如数组、列表、字典等。通过序列化&#xff0c;可以将这些对象转换为字节流或文本格式&#xff0c;以便在不同的系统之间进行传输或存…

ChineseChess4 2023.10.27

中国象棋残局&#xff1a;黑双卒压境&#xff0c;如何破黑中心卒 要么一将黑棋死棋&#xff0c;要么想法子把黑中卒干掉&#xff0c;而且干掉中卒&#xff0c;基本要想用车去抽&#xff0c;也不知道棋局有问题呢&#xff0c;还是怎么回事&#xff0c;没想到。 中国象棋残局模拟…

重要环节不可忽视,CSS性能优化引领用户体验!

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 ⭐ 专栏简介 &#x1f4d8; 文章引言 一、前…