多感測器融合定位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 [email protected] 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中看到改資料集的執行效果: