ubuntu16.04下ROS操作系统学习笔记(八)机器人SLAM与 Gmapping-Hector_slam-Cartographer--ORB_SLAM(上)

简介: ubuntu16.04下ROS操作系统学习笔记(八)机器人SLAM与 Gmapping-Hector_slam-Cartographer--ORB_SLAM

做SLAM的硬件要求(不一定是必须的,看包和库的依赖):

(1):差分轮式机器人,可以使用Twist速度指令控制,需要线速度和角速度。

(2):需要激光雷达、深度摄像头等测距设备,可以获取环境深度信息。

(3):最好使用正方形和圆形的机器人,其他外形的机器人虽然可以正常使用,但是效果可能不佳。

机器人的深度信息里面需要包含什么内容。可以通过以下命令来对其进行查看

rosmsg show sensor_msgs/LaserScan

最上面三行包括序列、时间戳、坐标系。下面的话就是一些关于激光雷达的数据:

angle_min:可检测范围的起始角度。

angle_max:可检测范围的终止角度,与angle_min组成激光雷达的可检测范围。像从-180度到+180度就是360度的范围。

angle_increment:相邻数据帧之间的角度步长。

time_increment:采集到相邻数据帧之间的时间步长,当传感器处于相对运动状态时进行补偿使用。

scan_time:采集一帧数据所需的时间。

range_min:最近可检测深度的阈值。

range_max:最远可检测深度的阈值。

ranges:一帧深度数据的存储数组(深度数据的具体内容)。

最后面的intensities代表的是激光的反光属性,等等的这样一些性质。一般的低成本雷达在强度这一块是用不到的。高端的雷达才会使用它做辅助判断。

除了激光雷达,深度摄像头也是可以采集深度信息的,像kinetic这样的摄像头就可以。在ros里面depthimage_to_laserscan功能包就能把三维点云数据转换成二维的激光雷达数据。但是深度摄像头的精度不高。

机器人里面的里程计信息

你可以通过下面的命令查看一下里程计信息:

rosmsg show nav_msgs/Odometry

里面主要包含两个内容,一个是pose,一个是twist。

pose:机器人当前位置坐标,包括机器人的XYZ三轴位置与方向参数,以及用于校正误差的协防差矩阵。里面有位置信息position和姿态信息orientation。

twist:机器人当前的运动状态,包括XYZ三轴的线速度与角速度,以及用于校正误差的协防差矩阵。

在这里的话,我们主要以仿真环境来演示效果:

代码的包在教学视频的文件里面有,我们打开一个终端运行以下命令:

roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

运行成功之后会打开下面这样的一个界面:

接下来我们看一下一些SLAM的功能包:

Gmapping功能包:

基于激光雷达的功能包,采用Rao-Blackwellized粒子滤波算法创建二维栅格地图。调用gmapping功能包的时候需要给它三个信息的输入:(1):深度信息。(2):IMU信息。(3)里程计信息。gmapping的算法来自于OpenSlam的开源算法。输出是nav_msgs/OccupancyGrid这样的栅格地图。

我们可以通过以下方式对其进行安装:

sudo apt-get install ros-kinetic-gmapping

gmapping里面有一个核心的节点,我们要使用gmapping建图的话我们就需要去启动这个核心的节点。启动的方式是使用.launch文件来启动的。因为这里面有很多参数需要去配置。改变这个参数能够改变我们建图的效果。但是如果我们只是为了能够使用建图功能的话,我们可以去参考turtlebot机器人的建图功能就可以了。我们可以去roswiki上面看一下功能包的使用方法。

输入以下命令:

roslaunch mbot_gazebo mbot_laser_nav_gazebo.launch

roslaunch mbot_navigation gmapping_demo.launch

roslaunch mbot_teleop mbot_teleop.launch

 

建图完成之后效果如下:

我们可以通过下面这个命令来将地图保存:

rosrun map_server map_saver -f cloister_gmappingg

可能会没有安装功能包,所以我们需要安装功能包:

git clone https://github.com/ros-planning/navigation.git

之后回到工作空间目录下面catkin_make。

可能会需要依赖:

sudo apt-get install ros-kinetic-tf2-sensor-msgs

这种安装方式不会使得你出现以下这种错误:

[rosrun] Couldn't find executable named map_save below /opt/ros/kinetic/share/map_server

保存之后会有两个文件:

第一个是一张图片,第二个是一些说明文件:

第一个是图片的名称,第二个是图片的分辨率,0.05米,origin代表的是机器人的位置,下一次导航的时候可以把机器人放到这个位置。

Hector_slam功能包:

基于激光雷达建图,采用高斯牛顿方法,是二维栅格地图,不需要里程计数据,输出地图话题。可以通过以下命令对其进行安装:

sudo apt-get install ros-kinetic-hector-slam

相关实践学习
使用ROS创建VPC和VSwitch
本场景主要介绍如何利用阿里云资源编排服务,定义资源编排模板,实现自动化创建阿里云专有网络和交换机。
ROS入门实践
本课程将基于基础设施即代码 IaC 的理念,介绍阿里云自动化编排服务ROS的概念、功能和使用方式,并通过实际应用场景介绍如何借助ROS实现云资源的自动化部署,使得云上资源部署和运维工作更为高效。
相关文章
|
11月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(五):18.04安装多版本CUDA
这篇博客文章介绍了在Ubuntu 18.04系统上如何安装和切换不同版本的CUDA,以及如何安装不同版本的cuDNN。
511 2
|
4月前
|
Ubuntu 机器人 Shell
在Jetson TX2的Ubuntu18.04系统中安装ROS的教程
所有这些步骤并不复杂,但确实需要仔细一点。如果遇到问题,不要灰心,问题是解决问题的开始。保持耐心,细心阅读错误信息,通常情况下,问题的答案就藏在其中。祝ROS旅程顺利!
132 18
|
11月前
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
3429 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
11月前
|
Ubuntu Shell Python
Ubuntu学习笔记(一):pycharm设置快捷启动图标详解
这篇博客详细讲解了如何在Ubuntu 20.04系统中为PyCharm设置快捷启动图标,包括创建.desktop文件、编辑文件内容以及添加到收藏夹的步骤。
815 0
Ubuntu学习笔记(一):pycharm设置快捷启动图标详解
|
7月前
|
传感器 算法 机器人
机器人SLAM建图与自主导航:从基础到实践
通过Gazebo平台和gmapping算法成功生成并保存了一张二维仿真环境地图,为后续的机器人自主导航实验奠定了基础。完整代码及更多细节可参考[GitHub仓库](https://github.com/Jieshoudaxue/ros_senior/tree/main/mbot_navigation/config/move_base)。
834 23
|
9月前
|
传感器 算法 机器人
机器人SLAM建图与自主导航
前言 这篇文章我开始和大家一起探讨机器人SLAM建图与自主导航 ,在前面的内容中,我们介绍了差速轮式机器人的概念及应用,谈到了使用Gazebo平台搭建仿真环境的教程,主要是利用gmapping slam算法,生成一张二维的仿真环境地图 。我们也会在这篇文章中继续介绍并使用这片二维的仿真环境地图,用于我们的演示。 教程 SLAM算法的引入 (1)SLAM:Simultaneous Localization and Mapping,中文是即时定位与地图构建,所谓的SLAM算法准确说是能实现SLAM功能的算法,而不是某一个具体算法。 (2)现在各种机器人研发和商用化非常火 ,所有的自主机器
402 9
|
10月前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
前言 最近开始接触到基于DDS的这个系统,是在稚晖君的机器人项目中了解和认识到。于是便开始自己买书学习起来,感觉挺有意思的,但是只是单纯的看书籍,总会显得枯燥无味,于是自己又开始在网上找了一些视频教程结合书籍一起来看,便让我对ROS系统有了更深的认识和理解。 ROS的发展历程 ROS诞生于2007年的斯坦福大学,这是早期PR2机器人的原型,这个项目很快被一家商业公司Willow Garage看中,类似现在的风险投资一样,他们投了一大笔钱给这群年轻人,PR2机器人在资本的助推下成功诞生。 2010年,随着PR2机器人的发布,其中的软件正式确定了名称,就叫做机器人操作系统,Robot Op
355 14
|
10月前
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
【11月更文挑战第4天】ROS2的学习过程和应用,介绍DDS系统的框架和知识。
550 1
|
11月前
|
并行计算 Ubuntu Linux
Ubuntu学习笔记(三):Linux下操作指令大全
Ubuntu学习笔记,介绍了Linux操作系统中常用的命令和操作,如文件管理、系统信息查看、软件安装等。
157 3
|
11月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
464 1