ROS 导航坐标系及条件说明(二十一)

目录

概述

概念 

作用 

导航模块简介 

概述 

1.全局地图

2.自身定位

3.路径规划

全局路径规划(gloable_planner)

本地时时规划(local_planner)

4.运动控制

5.环境感知

导航坐标系 

1.简介

2.特点

3.坐标系变换

 导航条件说明

1.硬件

2.软件


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

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

预期达成的学习目标:

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

概述

概念 

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

一个二维导航堆栈,它接收来自里程计、传感器流和目标姿态的信息,并输出发送到移动底盘的安全速度命令。
 更通俗的讲: 导航其实就是机器人自主的从 A 点移动到 B 点的过程。

里程计: 机器人相对出发点坐标系的位姿状态(X 坐标 Y 坐标 Z坐标以及朝向)。

作用 

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

  • 安全: 由专业团队开发和维护

  • 功能: 功能更稳定且全面

  • 高效: 解放开发者,让开发者更专注于上层功能实现

导航模块简介 

概述 

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

 

 

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

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

  1. 全局地图

  2. 自身定位

  3. 路径规划

  4. 运动控制

  5. 环境感知

机器人导航实现与无人驾驶类似,关键技术也是由上述五点组成,只是无人驾驶是基于室外的,而我们当前介绍的机器人导航更多是基于室内的。

 

 

 

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* 算法进行全局路径规划,计算最优路线,作为全局路线

  2. 本地时时规划(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 -> odom -> base_link 或 base_footprint。(设置map为父级

 

 导航条件说明

 

1.硬件

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

  1. 它是为差速驱动的轮式机器人设计的。它假设底盘受到理想的运动命令的控制并可实现预期的结果,命令的格式为:x速度分量,y速度分量,角速度(theta)分量。

  2. 它需要在底盘上安装一个单线激光雷达。这个激光雷达用于构建地图和定位。

  3. 导航功能包集是为正方形的机器人开发的,所以方形或圆形的机器人将是性能最好的。 它也可以工作在任意形状和大小的机器人上,但是较大的机器人将很难通过狭窄的空间。

2.软件

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

  1. 毋庸置疑的,必须先要安装 ROS

  2. 当前导航基于仿真环境,先保证上一章的机器人系统仿真可以正常执行

    在仿真环境下,机器人可以正常接收 /cmd_vel 消息,并发布里程计消息,传感器消息发布也正常,也即导航模块中的运动控制和环境感知实现完毕

后续导航实现中,我们主要关注于: 使用 SLAM 绘制地图、地图服务、自身定位与路径规划。

  • 2
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在ROS中,导航点指的是机器人需要移动到的目标位置。我们可以使用ROS Navigation Stack来实现机器人的导航功能。在导航过程中,我们需要将目标位置以一定的格式发布到ROS中,让机器人能够获取到这些目标位置并完成移动任务。 首先,我们需要定义导航点的格式。在ROS中,常用的导航点格式是geometry_msgs/PoseStamped。它包含了位置信息和方向信息,可以描述一个完整的机器人姿态。 然后,我们需要将导航点以ROS的消息形式发布到ROS网络中。我们可以使用rostopic命令或者编写ROS节点代码来实现这一步骤。例如,我们可以通过以下命令发布一个导航点消息: rostopic pub /move_base_simple/goal geometry_msgs/PoseStamped '{header: {stamp: now, frame_id: "map"}, pose: {position: {x: 1.0, y: 2.0, z: 0.0}, orientation: {x: 0.0, y: 0.0, z: 0.0, w: 1.0}}}' 这个命令将在ROS的/topic下发布一个名为/move_base_simple/goal的导航点消息,其中包含了导航点的位置和方向信息。 最后,机器人订阅这个/topic,获取导航点消息,并根据导航点的位置信息执行移动任务。机器人将运动到导航点指示的位置,并调整姿态方向。当机器人到达导航点时,它会反馈一个完成信息,表明已经到达该目标位置。 在ROS中实现导航功能需要整合多个组件,包括地图构建、路径规划、位置估计等。通过发布导航点消息,可以将机器人移动的控制和逻辑分离出来,使机器人实现自主导航功能。 ### 回答2: 在ROS中,导航点被定义为特定的坐标系中的位置。在导航过程中,需要向机器人发送导航点c,使其能够准确移动到该位置。要实现这个目标,需要使用ROS导航堆栈中的一些模块和工具。 首先,可以使用AMCL(自适应蒙特卡洛定位)算法来定位机器人。该算法使用激光扫描和地图数据来确定机器人的位置,并将该位置与导航点c进行比较来计算机器人需要向左或右移动多少。 其次,可以使用ROS导航堆栈中的move_base包来发送导航点c。该软件包是一个ROS节点,它会接收导航目标并计算机器人需要采取的移动指令。move_base包使用全局规划器和局部规划器来计算路径,以便机器人能够到达指定的导航点c。 最后,可以使用rviz等可视化工具来查看机器人的位置和导航点c。这些工具可以将机器人实时位置与地图数据进行比较,并在机器人到达导航点c时发出信号。 总之,在ROS中实现导航点c需要使用多种工具和算法,并将它们集成到系统中以实现自动导航。 ### 回答3: ROS是机器人操作系统中的一个重要框架,可以用于机器人控制任务的开发和操作。下发导航点C是ROS中的一个常见任务之一。 首先,需要使用ROS中提供的导航包(Navigation package)进行导航导航包中包含许多导航算法和工具,可以帮助机器人进行路径规划、轨迹跟踪和障碍物避免等任务。 在导航包中,可以使用导航节点(Navigation node)来下发导航点。导航节点可以接受各种类型的导航点,例如机器人当前位置、地图上的位置、坐标等等。导航节点还可以根据导航点的类型,自动调用适当的路径规划和控制算法,使机器人按照目标导航点运动。 当需要下发导航点C时,可以按照以下步骤进行: 1. 打开ROS运行环境,并激活导航包。 2. 确定导航点C的类型,例如坐标位置或地图位置等。 3. 在导航节点上发布导航点C的数据,可以使用ROS中提供的导航点发布器(Navigation publisher)工具或编写一个ROS节点来完成这个任务。 4. 导航节点会自动接收导航点C的数据,并根据当前环境和机器人状态,选择适当的路径规划和控制算法,并按照导航点C的目标,使机器人运动。 需要注意的是,导航点C应该是经过合理规划和验证的有效导航点。否则,机器人可能无法成功到达目标位置,或者出现异常情况。在实际应用中,需要根据具体的任务需求,进行适当的导航点选择、路径规划、控制调试等工作,以保证机器人的运动效率和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值