(无人机方向)ros学习之路ROS 机器人系统仿真_导航仿真概述

这篇具有很好参考价值的文章主要介绍了(无人机方向)ros学习之路ROS 机器人系统仿真_导航仿真概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

系列文章目录

一:导航仿真概述

导航是机器人系统中最重要的模块之一,比如现在较为流行的服务型室内机器人,就是依赖于机器人导航来实现室内自主移动的,本章主要就是介绍仿真环境下的导航实现,主要内容有:

导航相关概念

  • 导航实现:机器人建图(SLAM)、地图服务、定位、路径规划…以可视化操作为主。
  • 导航消息:了解地图、里程计、雷达、摄像头等相关消息格式。

预期达成的学习目标:

  • 了解导航模块中的组成部分以及相关概念
  • 能够在仿真环境下独立完成机器人导航


前言

(无人机方向)ros小白学习之路ROS 机器人系统仿真_导航仿真概述
参考视频:视频
参考手册:手册

概述

1.概念

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

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

更通俗的讲: 导航其实就是机器人自主的从 A 点移动到 B 点的过程。

无人机ros,ros,学习记录,无人机,机器人,学习

2.作用

秉着"不重复发明轮子"的原则,ROS 中导航相关的功能包集为机器人导航提供了一套通用的实现,开发者不再需要关注于导航算法、硬件交互…
等偏复杂、偏底层的实现,这些实现都由更专业的研发人员管理、迭代和维护,开发者可以更专注于上层功能,而对于导航功能的调用,只需要根据自身机器人相关参数合理设置各模块的配置文件即可,当然,如果有必要,也可以基于现有的功能包二次开发实现一些定制化需求,这样可以大大提高研发效率,缩短产品落地时间。总而言之,对于一般开发者而言,ROS
的导航功能包集优势如下:

  • 安全: 由专业团队开发和维护
  • 功能: 功能更稳定且全面
  • 高效: 解放开发者,让开发者更专注于上层功能实现

导航模块简介

机器人是如何实现导航的呢?或换言之,机器人是如何从 A 点移动到 B 点呢?ROS 官方为了提供了一张导航功能包集的图示,该图中囊括了 ROS 导航的一些关键技术:
无人机ros,ros,学习记录,无人机,机器人,学习

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

总结下来,涉及的关键技术有如下五点:

  • 全局地图
  • 自身定位
  • 路径规划
  • 运动控制
  • 环境感知
  • 类似,关键技术也是由上述五点组成,只是无人驾驶是基于室外的,而我们当前介绍的机器人导航更多是基于室内的。

1.全局地图

在现实生活中,当我们需要实现导航时,可能会首先参考一张全局性质的地图,然后根据地图来确定自身的位置、目的地位置,并且也会根据地图显示来规划一条大致的路线… 对于机器人导航而言,也是如此,在机器人导航中地图是一个重要的组成元素,当然如果要使用地图,首先需要绘制地图。关于地图建模技术不断涌现,这其中有一门称之为 SLAM 的理论脱颖而出:

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

  2. 在 ROS 中,较为常用的 SLAM 实现也比较多,比如:
    gmapping、hector_slam、cartographer、rgbdslam、ORB_SLAM …

  3. 当然如果要完成 SLAM ,机器人必须要具备感知外界环境的能力,尤其是要具备获取周围环境深度信息的能力。感知的实现需要依赖于传感器,比如:
    激光雷达、摄像头、RGB-D摄像头…

  4. SLAM 可以用于地图生成,而生成的地图还需要被保存以待后续使用,在 ROS 中保存地图的功能包是 map_server

另外注意: SLAM 虽然是机器人导航的重要技术之一,但是 二者并不等价,确切的讲,SLAM 只是实现地图构建和即时定位。

2.自身定位

导航伊始和导航过程中,机器人都需要确定当前自身的位置,如果在室外,那么 GPS 是一个不错的选择,而如果室内、隧道、地下或一些特殊的屏蔽 GPS 信号的区域,由于 GPS 信号弱化甚至完全不可用,那么就必须另辟蹊径了,比如前面的 SLAM 就可以实现自身定位,除此之外,ROS 中还提供了一个用于定位的功能包: amcl

amcl(adaptiveMonteCarloLocalization)自适应的蒙特卡洛定位,是用于2D移动机器人的概率定位系统。它实现了自适应(或KLD采样)蒙特卡洛定位方法,该方法使用粒子过滤器根据已知地图跟踪机器人的姿态。

3.路径规划

导航就是机器人从A点运动至B点的过程,在这一过程中,机器人需要根据目标位置计算全局运动路线,并且在运动过程中,还需要时时根据出现的一些动态障碍物调整运动路线,直至到达目标点,该过程就称之为路径规划。在 ROS 中提供了 move_base 包来实现路径规则,该功能包主要由两大规划器组成:

  1. 全局路径规划(gloable_planner)

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

  1. 本地实时规划(local_planner)

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

全局路径规划与本地路径规划是相对的,全局路径规划侧重于全局、宏观实现,而本地路径规划侧重与当前、微观实现。

4.运动控制

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

5.环境感知

感知周围环境信息,比如: 摄像头、激光雷达、编码器…,摄像头、激光雷达可以用于感知外界环境的深度信息,编码器可以感知电机的转速信息,进而可以获取速度信息并生成里程计信息。

在导航功能包集中,环境感知也是一重要模块实现,它为其他模块提供了支持。其他模块诸如: SLAM、amcl、move_base 都需要依赖于环境感知。

导航之坐标系

1.简介

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

  • 通过里程计定位:时时收集机器人的速度信息计算并发布机器人坐标系与父级参考系的相对关系。
  • 通过传感器定位:通过传感器收集外界环境信息通过匹配计算并发布机器人坐标系与父级参考系的相对关系。

两种方式在导航中都会经常使用。

2.特点

两种定位方式都有各自的优缺点。
里程计定位:

  • 优点:里程计定位信息是连续的,没有离散的跳跃。
  • 缺点:里程计存在累计误差,不利于长距离或长期定位。
    传感器定位:
  • 优点:比里程计定位更精准;
  • 缺点:传感器定位会出现跳变的情况,且传感器定位在标志物较少的环境下,其定位精度会大打折扣。

两种定位方式优缺点互补,应用时一般二者结合使用。

3.坐标系变换

上述两种定位实现中,机器人坐标系一般使用机器人模型中的根坐标系(base_link 或 base_footprint),里程计定位时,父级坐标系一般称之为 odom,如果通过传感器定位,父级参考系一般称之为 map。当二者结合使用时,map 和 odom 都是机器人模型根坐标系的父级,这是不符合坐标变换中"单继承"的原则的,所以,一般会将转换关系设置为: map -> doom -> base_link 或 base_footprint。

导航条件说明

导航实现,在硬件和软件方面是由一定要求的,需要提前准备。

1.硬件

虽然导航功能包集被设计成尽可能的通用,在使用时仍然有三个主要的硬件限制:

  • 它是为差速驱动的轮式机器人设计的。它假设底盘受到理想的运动命令的控制并可实现预期的结果,命令的格式为:x速度分量,y速度分量,角速度(theta)分量。
  • 它需要在底盘上安装一个单线激光雷达。这个激光雷达用于构建地图和定位。
  • 导航功能包集是为正方形的机器人开发的,所以方形或圆形的机器人将是性能最好的。
    它也可以工作在任意形状和大小的机器人上,但是较大的机器人将很难通过狭窄的空间。

2.软件

导航功能实现之前,需要搭建一些软件环境:

  • 毋庸置疑的,必须先要安装 ROS
  • 当前导航基于仿真环境,先保证上一章的机器人系统仿真可以正常执行
  • 在仿真环境下,机器人可以正常接收 /cmd_vel
    消息,并发布里程计消息,传感器消息发布也正常,也即导航模块中的运动控制和环境感知实现完毕

后续导航实现中,我们主要关注于: 使用 SLAM 绘制地图、地图服务、自身定位与路径规划文章来源地址https://www.toymoban.com/news/detail-786910.html

到了这里,关于(无人机方向)ros学习之路ROS 机器人系统仿真_导航仿真概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ROS+gazebo】无人机开发一:安装ros+gazebo+创建并初始化ros工作空间

    Hello,大家好!最近由于课题需要开始摸索ros+gazebo内容,主要做多无人机的协同仿真,准备写成一个系列,想要学习的朋友可以订阅我的频道。 我的电脑配置:ubuntu20.04 目标安装:ROS noetic版本+gazebo11 好的,下面让我们一起开始吧! 先用几句话介绍一下,首先,gazebo 是仿真

    2024年02月13日
    浏览(32)
  • 超维空间S2无人机使用说明书——61、ROS无人机4G远程控制

    一、4G通信方案 我们的4G通信主要通过两种方式实现,一种是使用终端模拟器,比如Xshell、putty,另一种是使用远程软件,如nomachine。具体使用教程如下:机载电脑的相关环境已经配置完成,直接使用即可。 二、检查指示灯是否正常 出现两个蓝色灯,一个慢闪,表明当前网络

    2024年01月21日
    浏览(58)
  • 超维空间M1无人机使用说明书——61、ROS无人机物体识别与精准投放

    一、视频演示: 二、源代码下载链接 三、使用说明 1、启动二维码识别与降落程序 未出现红色报错,表明程序运行正常 2、launch文件详解 launch文件启动了四个节点,节点作用如下

    2024年02月01日
    浏览(45)
  • 【ROS&GAZEBO】多旋翼无人机仿真(一)——搭建仿真环境

    【ROSGAZEBO】多旋翼无人机仿真(一)——搭建仿真环境 【ROSGAZEBO】多旋翼无人机仿真(二)——基于rotors的仿真 【ROSGAZEBO】多旋翼无人机仿真(三)——自定义无人机模型 【ROSGAZEBO】多旋翼无人机仿真(四)——探索控制器原理 【ROSGAZEBO】多旋翼无人机仿真(五)——位置

    2023年04月17日
    浏览(47)
  • 超维空间M1无人机使用说明书——41、ROS无人机使用yolo进行物体识别

    一、启动darknet_ros物体识别 当终端无报错出现以上界面,表示物体识别正常运行 1、bringup_darknet.launch文件分别启动了USB摄像头和darknet_ros节点,其中摄像头节点主要是发布图像话题,提供给darknet_ros节点订阅,相反,darknet_ros订阅图像话题,根据订阅到的图像数据进行识别处理

    2024年01月22日
    浏览(40)
  • ROS环境下大疆tello无人机源码安装&驱动代码解读

            大疆tello无人机是一款微小型无人机,可以支持多种开发模式。这里用的是ROS1的kinetic版本进行开发。参考文档来自http://wiki.ros.org/tello_driver         打开终端,键入以下命令进行二进制文件安装:         然后进入到ros工作空间,下载tello驱动源码         返回

    2024年02月13日
    浏览(56)
  • 搭建DJI 无人机Onboard SDK ROS开发环境及测试

    ROS功能包名称 :dji_sdk 功能包功能 :用于DJI 板载SDK的ROS版本 OSDK 是一个用于开发无人机应用程序的开发工具包,基于OSDK 开发的应用程序能够运行在机载计算机上(如Manifold 2),开发者通过调用OSDK 中指定的接口能够获取无人机上的各类数据,经开发者设计的软件逻辑和算法

    2024年02月13日
    浏览(38)
  • 超维空间S2无人机使用说明书——11、使用3维激光雷达实现ROS无人机的精准定位

    一、视频演示 视频演示: 3D雷达定位效果展示 二、源码连接 后续补充 三、启动雷达节点,确保雷达发布数据 未出现红色报错,表明程序运行正常 launch文件详解

    2024年01月23日
    浏览(42)
  • 超维空间M1无人机使用说明书——53、ROS无人机二维码识别与降落——V2升级版本

    一、启动二维码识别与降落程序 未出现红色报错,表明程序运行正常 launch文件详解 launch文件启动了四个节点,节点作用如下 二、视频演示 视频演示: 二维码降落

    2024年02月03日
    浏览(42)
  • ROS-基于PX4的无人机SLAM建图(Cartographer)仿真

    首先在电脑上安装好Ubuntu系统和ROS系统,我安装的是Ubuntu18.04和ROS Melodic,不同的Ubuntu版本对应不同的ROS版本 ROS发布日期 ROS版本 停止支持日期 对应Ubuntu版本 2018年5月23日 ROS Melodic Morenia 2023年5月 Ubuntu 18.04 2016年5月23日 ROS Kinetic Kame 2021年4月 Ubuntu 16.04 (Xenial) Ubuntu 15.10 (Wily) 201

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包