机器人导航学习历程(一)简介

机器人导航简介

  导航可以说是机器人最基本的功能之一,简单来说,导航就是机器人基于地图,实现从起始点前进到目标点的过程,这个过程中要求不发生碰撞并满足自身动力学模型(如不超过速度、加速度等限制)。

在这里插入图片描述

  将导航的任务进行细分,首先机器人在未知环境中需要使用激光传感器(或者是深度传感器)进行地图构建,然后根据构建的地图进行定位,有了地图和定位的基础,就可以根据目标点以及感知的障碍物信息进行路径规划了。我们可以将导航的要素归纳如下:

  • 地图
  • 定位
  • 感知
  • 路径规划。

在这里插入图片描述

地图

  下面这张图是ROS中的一个地图,其实也就是一张普通的灰度图像。图像上的黑色像素表示障碍物,白色像素表示可行区域,灰色是未探索的区域。

在这里插入图片描述

  一般来说,地图是通过SLAM(同时定位与建图)来构建的,这里就不展开了。

定位

  定位是对机器人位置和姿态(一般简称位姿)的测量或估计,简单来说,通过定位,机器人可以知道自己在哪儿以及所面朝的方向。

在这里插入图片描述

感知

  机器人是通过传感器来感知周围环境的。下面三个图是机器人常用的传感器,从左至右分别是超声波传感器,激光雷达,深度摄像头(与传统的摄像头区别在于加入了深度信息,可以测量像素点距离摄像头的距离)。

在这里插入图片描述

  通过这些传感器的数据,就可以对墙壁、路障等障碍物进行感知识别。

ROS导航框架

  这是ROS wiki上的一张图,介绍了ROS导航的整体工作框架:

在这里插入图片描述

  白色是已经提供给你的节点,灰色是可选的,蓝色是根据平台的差异而不同的节点。

  首先,navigation框架里面的核心是中间的move_base,这是导航最重要的一个package,它负责运动规划,这里面有global plannerlocal planner,把路径规划问题分解为全局和局部两部分来解决,而这两个planner做出决策,要参考全局和局部的costmap代价地图。然后move_base还包括了一些recovery behaviors,让机器人在某些情况下,比如说碰到障碍物,卡住,会采取一些恢复措施。

  我们先把move_base看成一个整体进行一定程度的简化,如下图所示。可以认为move_base就是一个路径规划的工具,然后分析move_base需要什么输入,然后它能输出给我们什么数据。

在这里插入图片描述

  有这么几个数据是必须给的,一个是TransForms(tf),路径规划当然得知道各个坐标系的变换关系了,尤其是当前机器人在地图的什么位置。那其中必不可少的是map->odom->base之间的tf,还有base到其他各个机器人零部件的tf。

  还有就是Odemetry(odem)的数据,刚才tf只提供了位置和方向信息,但是实际路径规划,还要考虑速度和角速度,所以这里专门有一个odom来提供位置方向、线速度、角速度。这个odom注意,是一个topic,不是tf里的odom frame。类似的还有map,既是tf里的frame,也是一个topic。

  除了odom之外,还有一个Laser,可以是激光雷达,可以是深度摄像头的点云,主要是用来帮助构建costmap,实现避障。

  所以你需要提供的数据,通常来说就是这么几个,/map,/tf, /scan, /odom,以及目标点的信息。

  那navigation 输出什么呢?很简单,输出的就是路径规划算出来的当前速度,/cmd_vel。

Navigation Stack

Navigation Stack是一个ROS的功能包集,里面包含了ROS在路径规划、定位、地图、异常行为恢复等方面的package,如下表所示。这么多package,你可能会觉得很乱,不过不用担心,在使用中其实还是比较简单的。

包名功能
amcl定位
Fake_localization定位
map_server提供地图
move_base路径规划节点
nav_core路径规划接口类
base_local _planner实现了Trajectory Rollout和DWA两种局部规划算法
dwa_local _planner重新实现了DWA局部规划算法
parrot_planner实现了较简单的全局规划算法
navfn实现了Dijkstra和A*全局规划算法
global_planner重新实现了Dijkstra和A*全局规划算法
clear_costmap _recovery实现了清除代价地图的恢复行为
rotate_recovery实现了旋转的恢复行为
move_slow _ and_clear路径规划接口类
costmap_2d二维代价地图
voxel_grid三维小方块
robot_pose _ekf机器人位姿的卡尔曼滤波

参考资料

[1] http://wiki.ros.org/move_base

[2] http://wiki.ros.org/navigation

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

与你如初见

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值