多传感器融合定位1-环境搭建
正在学习深蓝学院的《多传感器融合定位》第三期课程,留下相关学习记录。
主要内容:
1.多传感器融合行业发展现状介绍
2.本课程的学习要求
3.本课程的环境搭建要求
4.具体实验步骤
----------------------------------------------------------------------------------------------------------------------------------------------
1.多传感器融合行业发展现状介绍
(1)自动驾驶
(2)高精地图
高精地图本属于自动驾驶的一部分,但由于成本、复杂度以及技术积累等问题,给图商带来了很好的发展前景。
(3)机器人
机器人已经有成熟的商业模式且盈利,目前多数处在探索新方案的阶段。
多传感器融合定位的作用
2.本课程的学习要求
希望通过本课程的学习,大家可以掌握融合定位与组合导航的框架以及知识。课程属于进阶课程,在课程制作过程中,团队尽量用通俗易懂的案例以及语言降低难度,但部分章节公式仍然比较多。希望您在学习过程中,遇到不懂的问题,及时在群里交流,保持耐心。衷心希望您享受这段学习之旅。
3. 本课程的环境搭建要求
为了减少调试的时间成本,课程提供docker环境,并搭配使用说明。 (不强制使用,不想用docker的也可以自己搭环境,前提是需要对ubuntu和ROS要熟)。 为了理解作业代码思路,请尽量在一周内阅读完以下文章:(由于课程代码与文章中已经有差异, 只需要理解思路即可,不需要把里面的代码跑完)
从零开始做自动驾驶定位(文章汇总): https://zhuanlan.zhihu.com/p/113616755
请搭好代码环境,下载数据集(在作业的附件里提供了下载地址及说明),并播放数据集,在rviz 上显示点云。
数据集:
微云文件分享:kitti_lidar_only_2011_10_03_drive_0027_synced.zip
下载地址:https://share.weiyun.com/QacEDADm
文件大小:4.8G
评价标准: 截图证明rviz显示正常即给优秀。
4.具体实验步骤
(1)ubuntu安装
可以选择双系统或者虚拟机安装,作者选择的是虚拟机安装。
安装过程中遇到了两个问题:一是版本兼容问题,考虑到要在系统中运行Docker,所以要安装ubuntu18以上的版本,作者选择了ubuntu-18.04.5-desktop-amd64.iso这个版本,与之配套的虚拟机版本使用了VMware15.5.1。之前尝试安装VMware12或者VMware14,都在安装过程中或者安装完后运行过程中出现蓝屏现象。二是虚拟机的配置,作者的配置如下:
考虑到后续运行的数据集很大,建议在条件允许情况下,加大硬盘容量到200GB。
(2)Docker配置
a)基本概念
引擎:创建和管理容器的工具,通过读取镜像来生成容器,并负责从仓库拉取镜像或提交镜像到仓库中;
镜像:类似于虚拟机镜像,一般由一个基本操作系统环境和多个应用程序打包而成,是创建容器的模板;
容器:可看作一个简易版的Linxu系统环境(包括root用户权限、进程空间、用户空间和网络空间等) 以及运行在其中的应用程序打包而成的盒子;
仓库:集中存放镜像文件的场所,分为公共仓库和私有仓库,目前最大的公共仓库是官方提供的 Docker Hub,此外国内的阿里云、腾讯云等也提供了公共仓库;
宿主机:运行引擎的操作系统所在服务器。
b) Docker引擎
Docker引擎是用来运行和管理容器的核心软件。通常人们会简单地将其代指为Docker或 Docker平台。 参考官方安装引导,网址: https://docs.docker.com/engine/install/ubuntu/ 运行sudo docker run hello-world测试是否安装成功。
注意:安装完成后将当前用户加入Docker Group以免在执行docker命令时加sudo,命令如下: sudo usermod -aG docker $USER 然后最好重启生效。
c)Docker镜像
Docker镜像(Image)是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、 配置等文件外,还包含了一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。 Docker镜像是用于创建 Docker容器的模板。
镜像制作方法有两种:1、通过正在运行的容器生成新镜像;2、通过Dockerfile文件来生 成新镜像。 Dockerfile是一个定义了镜像创建步骤的文件,Docker引擎通过build命令读取Dockerfile, 按定义的步骤来一步步构造镜像。在研发和实施环境中,通过Dockerfile创建容器是主流做法。
本实验所使用镜像由课程提供,登录仓库拉取镜像。
登录仓库:docker login --username=937570601@qq.com registry.cn-shanghai.aliyuncs.com
拉取镜像:docker pull registry.cn-shanghai.aliyuncs.com/shenlanxueyuan/sensor-fusionworkspace:bionic-cpu-vnc
运行docker images可检查是否下载成功。
d)Docker容器
Docker容器(Container)是独立运行的一个或一组应用。镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。
运行docker ps -a可查看容器列表。
新建/启动容器
方法一:命令行 以下命令使用ubuntu镜像启动一个容器,-v表示文件夹挂载,/bin/bash表示以命令行模式进入:
docker run -it -v /path/content:/var/lib/content ubuntu /bin/bash
方法二:docker-compose 如果同时操作多个容器,或者希望使用配置文件记录容器启动命令参数,推荐使用docker-compose。
e)Docker-Compose
Docker-Compose是用于定义和运行多容器Docker应用程序的工具,使用YML文件即可配置应用程序需要的所有服务。 使用步骤: 1、使用Dockerfile定义应用程序的环境。 2、使用docker-compose.yml定义构成应用程序的服务。 3、执行docker-compose up命令来启动并运行整个应用程序。 参考官方安装引导,网址: https://docs.docker.com/compose/install/
将课程中提到的环境代码01-introduction.zip 下载并解压缩至ubuntu系统中,文件夹中包含如下内容:
进入docker-compose.yml文件所在目录,运行 docker-compose down && docker-compose up
在浏览器中, 输入地址http://localhost:40080/,默认登录密码为sensorfusion,即可通过VNC方式进行访问。
登录成功如下图所示:
f)作业程序编译与运行
在上述界面中启动Terminator,将路径设置为 /workspace/assignments/01-introduction,如下图所示:
输入catkin build命令进行编译,如下图所示:
运行
在当前路径下输入source devel/setup.bash,如下图所示:
再输入roslaunch lidar_localization hello_kitti.launch,会打开rviz环境界面:
在ubuntu环境中下载kitti数据集到/workspace/data
在VNC环境下再启动一个Terminator,将路径设置为 /workspace/data/kitti,如下图所示:
输入命令rosbag play kitti_lidar_only_2011_10_03_drive_0027_synced.bag,在rviz中看到改数据集的运行效果: