SLAM导航机器人零基础实战系列:(一)Linux基础——2.安装Linux发行版ubuntu系统

摘要

由于机器人SLAM、自动导航、语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码;而ROS又是安装在Linux发行版ubuntu系统之上的,先学一些Linux命令行相关的知识,对后续ROS教程的快速上手会大有帮助。由于后续ROS的开发都是在Linux发行版ubuntu系统上进行,所以本章节就以ubuntu系统为例,对Linux命令行相关的知识进行展开讲解,本章节主要内容:

1.Linux简介

2.安装Linux发行版ubuntu系统

3.Linux命令行基础操作


温馨提示:

本篇文章已经收录在我最新出版的书籍《机器人SLAM导航核心技术与实战》,感兴趣的读者可以购买纸质书籍来进行更加深入和系统性的学习,购买链接如下:

点这里购买:《机器人SLAM导航核心技术与实战》购买链接


2.安装Linux发行版ubuntu系统

如果已经在物理机电脑上安装了ubuntu系统的朋友,可以直接跳过这一节的讲解,直接看下一节关于Linux命令行的讲解。

考虑到大部分朋友平时都使用windows系统进行学习和办公,方便起见,强烈推荐在windows系统中用虚拟机运行ubuntu系统,进行ubuntu的体验和学习。这样做的好处是,在同一个电脑上使用ubuntu系统的同时,又不妨碍使用物理机原来的windows系统,两个系统之间还可以实现文件的共享,不用担心因初学没经验损坏ubuntu系统后难以重装的麻烦。下面就以VMware虚拟机+ubuntu16.04为例,跟大家介绍安装ubuntu的过程。

2.1.安装VMware虚拟机            

首先去VMware的官网VMware 中国 - 交付面向企业的数字化基础 | CN下载安装包,在页面中找到“下载”按钮,如图4,并点击进入。

(图4)VMware的官网

选择Workstation Pro这个版本,如图5。

(图5)Workstation Pro版本

选择一个适合自己系统的安装包,我准备在windows系统上安装VMware,本文写作时对应的最新版本是Workstation 15 Pro for Windows,点击“立即下载”,如图6,等待下载完成。

(图6)Workstation Pro下载 

下载完成后,找到文件名为“VMware-workstation-full-15.0.2-10952284.exe”的安装包,以管理员权限运行此安装包,安装方法和其他软件安装方法类似,首先是一个欢迎界面,如图7,直接点击“下一步”就好了。

(图7)欢迎界面 

接下来是许可证,如图8,勾选“我接受许可协议中的条款”栏,然后点击“下一步”。

(图8)许可协议

接下来是安装路径,使用默认的路径就行了,如图9,直接“下一步”。

(图9)安装路径

接下来,询问用户体验设置,建议都不要勾选,如图10,然后“下一步”。

(图10)用户体验设置

接下来,快捷方式创建,如图11,默认创建就行了,直接“下一步”。

(图11)创建快捷方式

接下来,就可以点击“安装”,开始安装了。

(图12)安装

接下来,进入安装等待界面,如图13,等待安装进度完成后,点击“下一步”。

(图13)安装进度条

接下来,这一步需要特别说明一下,如果只是想临时试用一下VMware的话,直接点击“完成”按钮,就可以完成试用版的安装了;如果是想要长期使用VMware的话,就需要点击“许可证”按钮,进行接下来的注册流程,我这里选择点击“许可证”按钮。

(图14)许可证注册

接下来,输入购买软件时厂商提供的注册秘钥,请支持正版软件,但是由于大部分同学只是作为学习之用途,获取该版本软件的注册秘钥的方式就得自行上网搜索了,你懂的!!!不懂的小伙伴可以通过文章下面的评论联系我^_^

(图15)输入许可证秘钥

到这里,VMware的安装就完成了,点击桌面上的VMware图标便可以使用了。

2.2.在VMware虚拟机中安装ubuntu系统 

在VMware虚拟机中安装操作系统的原理很简单,其实就是VMware虚拟机给你先虚拟一个物理机资源(CPU,内存,硬盘,网卡等)出来,然后你在这个虚拟出来的物理机资源上安装你想运行的操作系统。其实就是两步,第一步创建虚拟机资源,第二步在虚拟机资源上安装自己的操作系统。好了,接下来就来看看怎么具体操作了。

首先要下载好ubuntu系统的安装镜像文件(ubuntu-16.04.4-desktop-amd64.iso),这里推荐去ubuntu的官网下载ubuntu 16.04 Desktop这个版本,因为ubuntu 16.04 Desktop这个版本现在最稳定,下载链接(Alternative downloads | Ubuntu),如图16,推荐迅雷进行下载,下载完成后得到ubuntu-16.04.4-desktop-amd64.iso文件备用。

(图16)ubuntu 16.04 Desktop下载

接下来,点击桌面上的VMware图标,进入后点击“创建新的虚拟机”按钮,如图17。

(图17)创建新的虚拟机

选择典型配置,然后点击“下一步”,如图18。

(图18)典型配置

选择“稍后安装操作系统”,然后点击“下一步”,如图19。

(图19)稍后安装操作系统

选择“Linux”和“Ubuntu 64位”选项,然后点击“下一步”,如图20。

(图20)选择客户机操作系统

这一步是给新建的虚拟机取名称并保存虚拟机,“虚拟机名称”栏填上你取得虚拟机名称,“位置”栏填保存新建虚拟机的路径,然后点击“下一步”,如图21。

(图21)命名虚拟机

这一步是给新建的虚拟机指定磁盘容量,默认分配20GB,将虚拟磁盘拆分成多个文件,然后点击“下一步”,如图22。

(图22)指定磁盘容量

这一步是确认硬件参数设置,点击“自定义硬件”可以查看硬件的详细参数(比如内存:2GB,网络适配器:NAT,显示器:自动检测),这些参数默认参数就行了,退出查看硬件窗口,点击“完成”,如图23。

(图23)硬件参数确认

最后,看到图24,第一步创建虚拟机资源的操作便完成了,接下来就是第二步在虚拟机资源上安装自己的操作系统ubuntu-16.04.4-desktop-amd64.iso。

(图24)创建虚拟机资源完成

在左侧栏中找到刚刚创建的虚拟机“Ubuntu 64位”,右键单击此处后在弹出的选项中选择“设置”,在弹出的选项中选择“CD/DVD(SATA)”,在对应右边栏中选择“使用ISO映像文件”,并点击“浏览”找到之前下载好的文件ubuntu-16.04.4-desktop-amd64.iso,点击“打开”,点击“确定”,这个时候便已经将ubuntu镜像文件插入虚拟机了,如图25。

(图25)将ubuntu镜像文件插入虚拟机

接下来,点击虚拟机的“开机”按钮,ubuntu镜像便开始载入,正式进入ubuntu系统的安装过程了,如图26,接下来安装ubuntu过程的设置和在物理机上安装ubuntu是一样的了。

(图26)虚拟机开机

在ubuntu开机载入完成后,弹出的选项中,选择“中文(简体)”,然后点击“安装Ubuntu”,如图27。

(图27)安装Ubuntu语言选择

这里直接使用默认选项,然后点击“继续”,如图28。

(图28)安装时更新选项

选择“清除整个磁盘并安装Ubuntu”,这里不是真的清除物理机磁盘上的内容,只是清除虚拟机申请的20GB虚拟磁盘空间,所以可以放心清除,然后点击“现在安装”,如图29。

(图29)清除磁盘并安装Ubuntu

这一步是给你展示清除磁盘的具体内容,直接点击“继续”,如图30。

(图30)清除磁盘的具体内容

这一步是选择时区,用鼠标在地图中点击中国区域,会自动锁定到Shanghai时区,然后点击“继续”,如图31。

(图31)时区选择

这一步是选择键盘布局,默认设置就行了,点击“继续”,如图32。

(图32)键盘布局

这一步是用户名和登录密码设置,由于是用来做实验用,所以用户名设置为:ubuntu64,密码设置为:123456,选择“自动登录”,然后点击“继续”,如图33。

(图33)用户名和密码设置

最后,如图34,看到这个画面,安装设置就算完成了,接下来就是漫长的安装过程了,安装全程请保证物理机网络连接良好且能上外网,因为安装过程中需要从网络中下载一些更新包,安装进度完成后,重启虚拟机电源,便完成安装了。

(图34)漫长的安装过程

最后,提一提鼠标在物理机与虚拟机之间的切换技巧,鼠标放入虚拟机窗口区域点击后便进入虚拟机操作,Ctrl+Alt+Esc便可以将鼠标从虚拟机切回到物理机操作了。

最后的最后,还需要安装一个非常重要的工具VMware Tools,这个工具帮助虚拟机自动适应屏幕分辨率、实现物理机与虚拟机之间的文件复制与粘贴等重要功能。

左侧栏中找到虚拟机“Ubuntu 64位”,右键单击此处后在弹出的选项中选择“安装VMware Tools”,这时候会弹出安装VMware Tools的详细方法步骤,如图35。

(图35)安装VMware Tools的详细方法步骤

首先,点击左侧栏DVD图标,将DVD中的VMwareTools-10.3.2-9925305.tar.gz拷贝到Home目录中来,拷贝文件的方法和windows系统的一样,如图36。

(图36)VMwareTools安装包拷贝

双击Home目录下的VMwareTools安装包,在弹出来的窗口中点击“提取”,来完成对VMwareTools安装包的解压,如图37。

(图37)对VMwareTools安装包的解压

接下来,ctrl+alt+t组合键打开ubuntu的命令行终端,在终端中用命令行完成VMwareTools的安装。

$ cd vmware-tools-distrib/
$ ls
$ sudo ./vmware-install.pl
$ yes
$ 接下来一路[回车],直到安装完成

VMwareTools的安装完成后,重启虚拟机电源,VMwareTools的屏幕分辨率自适应和物理机与虚拟机之间拷贝文件等功能便生效了。

后记

如果大家对博文的相关类容感兴趣,或有什么技术疑问,欢迎加QQ技术交流群(728661815)

参考文献

[1] 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.

购书链接:https://item.jd.com/13041503.html

下载更多资料:www.xiihoo.com

QQ技术讨论群: 728661815

B站视频教程:https://space.bilibili.com/66815220

Github源码:https://github.com/xiihoo/Books_Robot_SLAM_Navigation

Gitee源码(国内访问速度快):https://gitee.com/xiihoo-robot/Books_Robot_SLAM_Navigation

前言

编程基础篇

第1章 ROS入门必备知识

1.1 ROS简介 2

1.1.1 ROS的性能特色 2

1.1.2 ROS的发行版本 3

1.1.3 ROS的学习方法 3

1.2 ROS开发环境的搭建 3

1.2.1 ROS的安装 4

1.2.2 ROS文件的组织方式 4

1.2.3 ROS网络通信配置 5

1.2.4 集成开发工具 5

1.3 ROS系统架构 5

1.3.1 从计算图视角理解ROS架构 6

1.3.2 从文件系统视角理解ROS架构 7

1.3.3 从开源社区视角理解ROS架构 8

1.4 ROS调试工具 8

1.4.1 命令行工具 9

1.4.2 可视化工具 9

1.5 ROS节点通信 10

1.5.1 话题通信方式 12

1.5.2 服务通信方式 15

1.5.3 动作通信方式 19

1.6 ROS的其他重要概念 25

1.7 ROS 2.0展望 28

1.8 本章小结 28

第2章 C++编程范式

2.1 C++工程的组织结构 29

2.1.1 C++工程的一般组织结构 29

2.1.2 C++工程在机器人中的组织结构 29

2.2 C++代码的编译方法 30

2.2.1 使用g++编译代码 31

2.2.2 使用make编译代码 32

2.2.3 使用CMake编译代码 32

2.3 C++编程风格指南 33

2.4 本章小结 34

第3章 OpenCV图像处理

3.1 认识图像数据 35

3.1.1 获取图像数据 35

3.1.2 访问图像数据 36

3.2 图像滤波 37

3.2.1 线性滤波 37

3.2.2 非线性滤波 38

3.2.3 形态学滤波 39

3.3 图像变换 40

3.3.1 射影变换 40

3.3.2 霍夫变换 42

3.3.3 边缘检测 42

3.3.4 直方图均衡 43

3.4 图像特征点提取 44

3.4.1 SIFT特征点 44

3.4.2 SURF特征点 50

3.4.3 ORB特征点 52

3.5 本章小结 54

硬件基础篇

第4章 机器人传感器

4.1 惯性测量单元 56

4.1.1 工作原理 56

4.1.2 原始数据采集 60

4.1.3 参数标定 65

4.1.4 数据滤波 73

4.1.5 姿态融合 75

4.2 激光雷达 91

4.2.1 工作原理 92

4.2.2 性能参数 94

4.2.3 数据处理 96

4.3 相机 100

4.3.1 单目相机 101

4.3.2 双目相机 107

4.3.3 RGB-D相机 109

4.4 带编码器的减速电机 111

4.4.1 电机 111

4.4.2 电机驱动电路 112

4.4.3 电机控制主板 113

4.4.4 轮式里程计 117

4.5 本章小结 118

第5章 机器人主机

5.1 X86与ARM主机对比 119

5.2 ARM主机树莓派3B+ 120

5.2.1 安装Ubuntu MATE 18.04 120

5.2.2 安装ROS melodic 122

5.2.3 装机软件与系统设置 122

5.3 ARM主机RK3399 127

5.4 ARM主机Jetson-tx2 128

5.5 分布式架构主机 129

5.5.1 ROS网络通信 130

5.5.2 机器人程序的远程开发 130

5.6 本章小结 131

第6章 机器人底盘

6.1 底盘运动学模型 132

6.1.1 两轮差速模型 132

6.1.2 四轮差速模型 136

6.1.3 阿克曼模型 140

6.1.4 全向模型 144

6.1.5 其他模型 148

6.2 底盘性能指标 148

6.2.1 载重能力 148

6.2.2 动力性能 148

6.2.3 控制精度 150

6.2.4 里程计精度 150

6.3 典型机器人底盘搭建 151

6.3.1 底盘运动学模型选择 152

6.3.2 传感器选择 152

6.3.3 主机选择 153

6.4 本章小结 155

SLAM篇

第7章 SLAM中的数学基础

7.1 SLAM发展简史 158

7.1.1 数据关联、收敛和一致性 160

7.1.2 SLAM的基本理论 161

7.2 SLAM中的概率理论 163

7.2.1 状态估计问题 164

7.2.2 概率运动模型 166

7.2.3 概率观测模型 171

7.2.4 概率图模型 173

7.3 估计理论 182

7.3.1 估计量的性质 182

7.3.2 估计量的构建 183

7.3.3 各估计量对比 190

7.4 基于贝叶斯网络的状态估计 193

7.4.1 贝叶斯估计 194

7.4.2 参数化实现 196

7.4.3 非参数化实现 202

7.5 基于因子图的状态估计 206

7.5.1 非线性最小二乘估计 206

7.5.2 直接求解方法 206

7.5.3 优化方法 208

7.5.4 各优化方法对比 218

7.5.5 常用优化工具 219

7.6 典型SLAM算法 221

7.7 本章小结 221

第8章 激光SLAM系统

8.1 Gmapping算法 223

8.1.1 原理分析 223

8.1.2 源码解读 228

8.1.3 安装与运行 233

8.2 Cartographer算法 240

8.2.1 原理分析 240

8.2.2 源码解读 247

8.2.3 安装与运行 258

8.3 LOAM算法 266

8.3.1 原理分析 266

8.3.2 源码解读 267

8.3.3 安装与运行 270

8.4 本章小结 270

第9章 视觉SLAM系统

9.1 ORB-SLAM2算法 274

9.1.1 原理分析 274

9.1.2 源码解读 310

9.1.3 安装与运行 319

9.1.4 拓展 327

9.2 LSD-SLAM算法 329

9.2.1 原理分析 329

9.2.2 源码解读 334

9.2.3 安装与运行 337

9.3 SVO算法 338

9.3.1 原理分析 338

9.3.2 源码解读 341

9.4 本章小结 341

第10章 其他SLAM系统

10.1 RTABMAP算法 344

10.1.1 原理分析 344

10.1.2 源码解读 351

10.1.3 安装与运行 357

10.2 VINS算法 362

10.2.1 原理分析 364

10.2.2 源码解读 373

10.2.3 安装与运行 376

10.3 机器学习与SLAM 379

10.3.1 机器学习 379

10.3.2 CNN-SLAM算法 411

10.3.3 DeepVO算法 413

10.4 本章小结 414

自主导航篇

第11章 自主导航中的数学基础

11.1 自主导航 418

11.2 环境感知 420

11.2.1 实时定位 420

11.2.2 环境建模 421

11.2.3 语义理解 422

11.3 路径规划 422

11.3.1 常见的路径规划算法 423

11.3.2 带约束的路径规划算法 430

11.3.3 覆盖的路径规划算法 434

11.4 运动控制 435

11.4.1 基于PID的运动控制 437

11.4.2 基于MPC的运动控制 438

11.4.3 基于强化学习的运动控制 441

11.5 强化学习与自主导航 442

11.5.1 强化学习 443

11.5.2 基于强化学习的自主导航 465

11.6 本章小结 467

第12章 典型自主导航系统

12.1 ros-navigation导航系统 470

12.1.1 原理分析 470

12.1.2 源码解读 475

12.1.3 安装与运行 479

12.1.4 路径规划改进 492

12.1.5 环境探索 496

12.2 riskrrt导航系统 498

12.3 autoware导航系统 499

12.4 导航系统面临的一些挑战 500

12.5 本章小结 500

第13章 机器人SLAM导航综合实战

13.1 运行机器人上的传感器 502

13.1.1 运行底盘的ROS驱动 503

13.1.2 运行激光雷达的ROS驱动 503

13.1.3 运行IMU的ROS驱动 504

13.1.4 运行相机的ROS驱动 504

13.1.5 运行底盘的urdf模型 505

13.1.6 传感器一键启动 506

13.2 运行SLAM建图功能 506

13.2.1 运行激光SLAM建图功能 507

13.2.2 运行视觉SLAM建图功能 508

13.2.3 运行激光与视觉联合建图功能 508

13.3 运行自主导航 509

13.4 基于自主导航的应用 510

13.5 本章小结 511

附录A Linux与SLAM性能优化的探讨

附录B 习题

SLAM导航机器人零基础实战系列:(一)Linux基础——2.安装Linux发行版ubuntu系统相关推荐

  1. SLAM导航机器人零基础实战系列:(三)感知与大脑——5.机器人大脑嵌入式主板性能对比...

    SLAM导航机器人零基础实战系列:(三)感知与大脑--5.机器人大脑嵌入式主板性能对比 摘要 在我的想象中机器人首先应该能自由的走来走去,然后应该能流利的与主人对话.朝着这个理想,我准备设计一个能自由 ...

  2. SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图...

    SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航--2.google-cartographer机器人SLAM建图 摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在 ...

  3. SLAM导航机器人零基础实战系列:(五)树莓派3开发环境搭建——2.安装ros-kinetic

    SLAM导航机器人零基础实战系列:(五)树莓派3开发环境搭建--2.安装ros-kinetic 摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整体的认识.接下来就正式 ...

  4. SLAM导航机器人零基础实战系列:(四)差分底盘设计——2.stm32主控软件设计

    SLAM导航机器人零基础实战系列:(四)差分底盘设计--2.stm32主控软件设计 摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买 ...

  5. SLAM导航机器人零基础实战系列:(四)差分底盘设计——5.底盘PID控制参数整定

    SLAM导航机器人零基础实战系列:(四)差分底盘设计--5.底盘PID控制参数整定 摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买 ...

  6. SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航——1.在机器人上使用传感器...

    SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航--1.在机器人上使用传感器 摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在前面的学习铺垫后,终于迎来了最大乐趣 ...

  7. SLAM导航机器人零基础实战系列:(五)树莓派3开发环境搭建——1.安装系统ubuntu_mate_16.04...

    SLAM导航机器人零基础实战系列:(五)树莓派3开发环境搭建--1.安装系统ubuntu_mate_16.04 摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整体的认 ...

  8. SLAM导航机器人零基础实战系列:(五)树莓派3开发环境搭建——5.Android手机端与robot端ROS网络通信...

    SLAM导航机器人零基础实战系列:(五)树莓派3开发环境搭建--5.Android手机端与robot端ROS网络通信 摘要 通过前面一系列的铺垫,相信大家对整个miiboo机器人的DIY有了一个清晰整 ...

  9. SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航——4.多目标点导航及任务调度...

    SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航--4.多目标点导航及任务调度 摘要 通过前面的基础学习,本章进入最为激动的机器人自主导航的学习.在前面的学习铺垫后,终于迎来了最大乐 ...

最新文章

  1. Form表单提交前进行JS验证的3种方式
  2. 联机分析处理系统与联机事务处理系统的区别和联系_混合事务分析处理“HTAP”的技术要点分析...
  3. java课程设计总结与思考,你掌握了多少?
  4. Android监听程序自身被卸载
  5. FixedSizeList的使用
  6. 坎蒂雷赋权法 matlab,干货 | 利用MATLAB实现FMCW雷达中的常用角度估计方法
  7. 【java8新特性】——lambda表达式与函数式接口详解(一)
  8. swing学习一(swing介绍、swing样例、布局管理器)
  9. aes 加密_PHP使用AES加密和解密
  10. Centos6.3搭建cactinagios
  11. 26. Element nodeName 属性
  12. nodejs+socket.io用nginx反向代理提示400 Bad Request及ws://…无法连接的解决方法
  13. 【数字信号去噪】基于matlab同心兰姆波模式分解【含Matlab源码 679期】
  14. 网上阅卷系统php源码,又开源了,网上阅卷系统自动识别功能代码 | 学步园
  15. 思岚科技A1,A2雷达驱动安装
  16. zabbix三种常用报警方式:邮件、微信和短信报警
  17. 在Mac上阻止相机和麦克风的方法
  18. 【财经期刊FM-Radio|2021年03月01日】
  19. 安卓模拟器配置了摄像头还是显示黑白棋盘
  20. background-color覆盖范围

热门文章

  1. 花12个月做成功网站
  2. 阿里云服务器ECS如何临时升级带宽?
  3. 4款实用电脑软件,让你找不到拒绝的理由,且用且珍惜
  4. 测试开发工程师mac电脑常用软件推荐
  5. 大家说说房价还会不会涨?
  6. wx python 基本控件
  7. 删除计算机用户时拒绝访问权限,win10打开管理员账户拒绝访问怎么办
  8. java kdj_基于java语言开发的个性化股票分析技术:随机指数(kdj).doc
  9. 1086:角谷猜想(C C++)
  10. 【开发工具】【Valgrind】内存问题检测工具(valgrind)的使用