ROS 簡介
ROS顧名思義,就是機器人操作系統(Robot Operating System)的英文縮寫,是用於編寫機器人軟件程序的一種可自由調配的軟件框架,它提供了操作系統應有的服務,包含底層硬件設備控制、大量的工具軟件、程式代碼和協議等,目的為簡化在於各種機器人平台上創建複雜而強大的機器人行為的任務。
基本上可以理解為
ROS = Pluming(通道) + Tools(工具) + Capabilities (行為能力) + Ecosystem (生態系統)
目前發行版本如下列所示
版本名稱 |
發佈日期 |
版本生命週期 |
操作系統平台 |
ROS Noetic Ninjemys |
2020年5月 |
2025年5月 |
Ubuntu 20.04 |
ROS Melodic Morenia |
2018年5月23日 |
2023年5月 |
Ubuntu 18.04 |
參考網站: http://wiki.ros.org/Distributions
ORB SLAM2簡介
這是用於單目、立體和 RGB-D 相機的 ORB-SLAM2 即時執行SLAM資料庫的 ROS實現,用於計算相機軌跡,它能夠即時檢測環路的軌線,並重新定位後生成場景的稀疏三維地圖重建結果。
基本結構如下.
- 完整的 ROS 兼容性
- 支持大量開箱即用的相機
- 加快 vocab 文件載入速度
- 完整的地圖保存和加載功能
代碼的主要結構如下:
- 跟蹤 (Tracking)
- 建圖 (Local Mapping)
- 閉環檢測 (Loop Closing)
- 完整優化 (Full BA/Bundle Adjustment)
三、硬件規格: 選用恩智浦的 i.MX8M Plus 的參考設計板 (i.MX8MP-EVK)
Quad Cortex®-A53 processors operation up to 1.8 GHz
Cortex®-M7 CPU operating up to 800 MHz
375 Mpixel/s HDR ISP supporting configurations
16/32-bit DRAM interfaces:
- LPDDR4-4000
- DDR4-3200
- DDR3L-1600
Neutral Processing Unit (NPU)
LCDIF Display Controller:
Support up to 1080p60 display per LCDIF if no more than 2 instances used
simultaneously, or 1x 1080p60 + 2x 720p60 if all 3 instances used simultaneously.
- One LCDIF drives MIPI DSI
- One LCDIF drives LVDS Tx
- One LCDIF drives HDMI Tx
四、軟體建置
- 架設編譯環境 Host PC:
安裝 Ubuntu 18.04LTS (基於GCC版本差異,建議使用 Ubuntu 18.04LTS),也可以安裝到 VMware 虛擬環境來執行編譯。
- 下載源代碼並編譯
repo init -u https://source.codeaurora.org/external/imx/imx-manifest -b imx-linux-zeus -m imx-5.4.70-2.3.0.xml
repo sync
- 下載 MX機器人源代碼
git clone https://gitee.com/zxd2021-imx/meta-robot-platform.git
cd meta-robot-platform
git checkout v1.1-L5.4.70-2.3.2
mv meta-robot-platform source/
cp meta-robot-platform/imx/meta-robot/tools/setup-imx-robot.sh .
- 運行腳本並選定所要測試的 ROS 發行版本,以 Melodic Morenia 為例
DISTRO=imx-robot-xwayland MACHINE=imx8mpevk source setup-imx-robot.sh -r melodic -b imx8mp-melodic
- 編譯即將執行於MX8MP-EVK 的 ROS
bitbake imx-robot-agv
- 編譯完成後,開始執行燒錄 Image 到 eMMC,這次演練以透過 UUU 指令為例
sudo ./uuu -b emmc_all imx-boot-imx8mpevk-sd.bin-flash_evk imx-robot-agv-melodic-imx8mpevk.wic
執行到此步驟,已經可以在 恩智浦 i.MX8M Plus 開發板運行 ROS 的環境。
- 建置 SLAM2 庫
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2
chmod a+x build.sh
./build.sh
- 下載 EuRoC Dataset,此次演練是使用 Machine Hall
https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets
- 執行 ORB_SLAM2 資料庫來加載 ROS dataset,並透過 HDMI 輸出的顯示畫面來查看執行結果,需先將 ORB_SLAM2 和 dataset 先透過 USB 來複製到檔案系統內
- source /opt/ros/melodic/setup.sh
- echo $LD_LIBRARY_PATH
- mono_euroc Vocabulary/ORBvoc.txt Examples/Monocular/EuRoC.yaml mav0/cam0/data Examples/Monocular/EuRoC_TimeStamps/MH01.txt
可以由此圖查看到機器人眼中的世界,並透過 ORB SLAM2 執行三維地圖構建
測試訊息如下:
i.MX Robot platform distribution 1.0 imx-robot-melodic ttymxc0
imx-robot-melodic login:
ORB-SLAM2 Copyright (C) 2014-2016 Raul Mur-Artal, University of Zaragoza.
This program comes with ABSOLUTELY NO WARRANTY;
This is free software, and you are welcome to redistribute it
under certain conditions. See LICENSE.txt.
Input sensor was set to: Monocular
Loading ORB Vocabulary. This could take a while...
Vocabulary loaded!
Camera Parameters:
- fx: 458.654
- fy: 457.296
- cx: 367.215
- cy: 248.375
- k1: -0.283408
- k2: 0.0739591
- p1: 0.00019359
- p2: 1.76187e-05
- fps: 20
- color order: RGB (ignored if grayscale)
ORB Extractor Parameters:
- Number of Features: 1000
- Scale Levels: 8
- Scale Factor: 1.2
- Initial Fast Threshold: 20
- Minimum Fast Threshold: 7
-------
Start processing sequence ...
Images in the sequence: 3682
Error: Wayland: Focusing a window requires user interaction
GL_VERSION : OpenGL ES 3.1 V6.4.3.p1.305572
GL_RENDERER : Vivante GC7000UL
New Map created with 86 points
Wrong initialization, reseting...
System Reseting
Reseting Local Mapper... done
Reseting Loop Closing... done
Reseting Database... done
New Map created with 109 points