資料介紹
描述
本文的主題將是 SLAM 和 ROS 映射。我們將使用來(lái)自 Petoi 的敏捷四足機(jī)器人 Bittle,它在上個(gè)月完成了他們的 Kickstarter 活動(dòng)并取得了巨大成功。
首先讓我們從一些理論開始。
2022 年 4 月 4 日更新。我盡我所能定期更新我的文章,并根據(jù)您在 YouTube/Hackster 評(píng)論部分的反饋。如果您想表達(dá)對(duì)這些努力的支持和贊賞,請(qǐng)考慮給我買杯咖啡(或披薩):)。
什么是SLAM?
SLAM 代表 Simultaneous Localization and Mapping - 它是一組算法,允許計(jì)算機(jī)創(chuàng)建 2D 或 3D 空間地圖并確定其在其中的位置。雖然 SLAM 本身并不是導(dǎo)航,但擁有地圖并知道您在地圖上的位置是從 A 點(diǎn)導(dǎo)航到 B 點(diǎn)的先決條件。
我們可以使用各種傳感器來(lái)接收有關(guān)可用于映射的環(huán)境的數(shù)據(jù)
- 激光掃描儀(一維和二維(掃描)激光測(cè)距儀)
- 相機(jī)(單目、立體和 RGB-D)
- 聲納傳感器
- 觸覺傳感器
- 其他
在實(shí)踐中很多時(shí)候使用傳感器的組合,然后應(yīng)用融合算法,例如擴(kuò)展卡爾曼濾波器,以獲得精確的信息。
如果我們回到基礎(chǔ),對(duì)于大多數(shù)應(yīng)用程序,您將處理基于 LIDAR 的 SLAM 或視覺 SLAM。基于激光雷達(dá)的 SLAM 相對(duì)容易設(shè)置并且非常精確——Waymo 在其自動(dòng)駕駛汽車上使用激光雷達(dá)是有原因的。
但當(dāng)然,特斯拉沒有這樣做是有原因的——激光雷達(dá)體積龐大、價(jià)格昂貴,而且它們的旋轉(zhuǎn)部件需要在較長(zhǎng)時(shí)間內(nèi)運(yùn)行時(shí)進(jìn)行維護(hù)。對(duì)于視覺 SLAM,RGB-D 傳感器方法也可以非常強(qiáng)大,而簡(jiǎn)單的立體或單目系統(tǒng)可能很難設(shè)置。以下是描述中的更多鏈接,以詳細(xì)了解 SLAM!
LSD-slam 和 ORB-slam2,基于文獻(xiàn)的解釋
RPLIDAR 和 ROS 編程 - 構(gòu)建機(jī)器人的最佳方式
在本文中,我們將嘗試稱為 ORB-SLAM2 的單目視覺 SLAM 算法和基于激光雷達(dá)的 Hector SLAM。
使用 ORB-SLAM2 的視覺 SLAM
對(duì)于 ORB-SLAM2,我們將使用普通的廉價(jià)網(wǎng)絡(luò)攝像頭——需要對(duì)其進(jìn)行校準(zhǔn)以確定每個(gè)攝像頭型號(hào)所獨(dú)有的內(nèi)在參數(shù)。我建議使用內(nèi)置的 ROS 相機(jī)校準(zhǔn)工具進(jìn)行校準(zhǔn)。要安裝這些(您可以安裝在您的 Ubuntu PC 上):
sudo apt-get install ros-melodic-camera-calibration
以毫米為單位測(cè)量正方形的邊。然后輸入以下命令開始校準(zhǔn):
roslaunch usb_cam usb_cam.launch
rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 image:=/camera/image_raw camera:=/camera
更改 square 參數(shù)以匹配校準(zhǔn)板上的正方形大小。
為了獲得良好的校準(zhǔn),您需要在相機(jī)框架中移動(dòng)棋盤格,以便:
- 相機(jī)視野左、右、上、下的棋盤
- X 條 - 視野中的左/右
- Y 條 - 視野中的頂部/底部
- 尺寸欄 - 朝向/遠(yuǎn)離和傾斜相機(jī)
- 相機(jī)左側(cè)、右側(cè)、頂部和底部的棋盤 X 欄 - 左側(cè)/右側(cè)在視野中 Y 欄 - 頂部/底部在視野中尺寸欄 - 朝向/遠(yuǎn)離和傾斜相機(jī)
- 棋盤格填滿整個(gè)視野
- 棋盤向左、右、上和下傾斜(傾斜)
在每一步,保持棋盤靜止,直到圖像在校準(zhǔn)窗口中突出顯示。
當(dāng)應(yīng)用程序收集到足夠的數(shù)據(jù)時(shí),您將能夠按下校準(zhǔn)按鈕。校準(zhǔn)過(guò)程可能需要幾分鐘,所以請(qǐng)耐心等待。成功的校準(zhǔn)將導(dǎo)致現(xiàn)實(shí)世界中的直邊在校正后的圖像中顯得筆直。校準(zhǔn)失敗通常會(huì)導(dǎo)致空白或無(wú)法識(shí)別的圖像,或不保留直邊的圖像。
之后你需要借助這個(gè)包將相機(jī)參數(shù)轉(zhuǎn)換成.yaml格式,重命名為head_camera.yaml,放到.ros/camera_info/文件夾下。
有一個(gè)將 ORB-SLAM2 集成到 ROS 的包,它還發(fā)布了 2D 占用圖。安裝過(guò)程比較復(fù)雜,我推薦使用 Ubuntu 18.04 的樹莓派鏡像作為起點(diǎn),避免編譯很多(很多很多很多)額外的包。
安裝 ROS 桌面和必要的依賴項(xiàng)
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-melodic-desktop
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt-get install ros-melodic-pcl-ros ros-melodic-image-geometry ros-melodic-octomap-ros ros-melodic-usb-cam
創(chuàng)建 catkin 工作區(qū),安裝catkin構(gòu)建工具并將 ORB_SLAM2_ROS 存儲(chǔ)庫(kù)和 Bittle 驅(qū)動(dòng)存儲(chǔ)庫(kù)克隆到 catkin_ws/src 文件夾
mkdir -p catkin_ws/src && cd catkin_ws/src
git clone https://github.com/rayvburn/ORB-SLAM2_ROS
git clone https://github.com/AIWintermuteAI/bittle_ROS
cd bittle_ROS && git checkout slam
下載詞匯文件并將其放在ORB_SLAM2/orb_slam2_lib/Vocabulary文件夾中
wget https://github.com/raulmur/ORB_SLAM2/raw/master/Vocabulary/ORBvoc.txt.tar.gz
然后從 catkin 工作區(qū)文件夾中,執(zhí)行
cd src/ORB-SLAM2_ROS/ORB_SLAM2
sudo chmod +x build*
./build_catkin.sh
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
如果編譯過(guò)程凍結(jié),請(qǐng)嘗試將交換大小增加到 2 Gb
sudo swapoff -a
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
grep SwapTotal /proc/meminfo
以后如果不需要,可以刪除交換文件。成功安裝后,運(yùn)行一個(gè)示例以確保它按預(yù)期工作:
roslaunch orb_slam2_ros raspicam_mono.launch
需要一個(gè)額外的步驟,因?yàn)槟芸赡茉跓o(wú)頭模式下運(yùn)行 Raspberry Pi(或其他 SBC),沒有屏幕或鍵盤 - 無(wú)論是那個(gè)還是您的機(jī)器人都非常笨重。因此,我們需要配置 ROS 以在多臺(tái)機(jī)器上工作 - 請(qǐng)查看我之前在 BITtle 系列中的文章,其中詳細(xì)描述了此過(guò)程。
由于 Bittle 驅(qū)動(dòng)程序是用 Python 3 編寫的,而 ROS 默認(rèn)仍使用 Python 2.7,因此我們需要為 Python 3 安裝 rospkg 以使它們一起運(yùn)行。
pip3 install rospkg
一旦你有了 ORB-SLAM2 和Bittle(或你的機(jī)器人基地)的軟件包,你就可以運(yùn)行網(wǎng)絡(luò)攝像頭驅(qū)動(dòng)程序了
roslaunch bittle_driver bittle_vslam_robot.launch
它將啟動(dòng)整個(gè)系統(tǒng)——機(jī)器人驅(qū)動(dòng)程序、網(wǎng)絡(luò)攝像頭節(jié)點(diǎn)和 ORB-SLAM2。ORB-SLAM2 需要足夠的環(huán)境信息來(lái)初始化,因此您可以手動(dòng)移動(dòng)機(jī)器人以避免平移或方向的大變化。ORB-SLAM2 初始化后將開始發(fā)布八圖。您可以使用控制來(lái)移動(dòng)您的機(jī)器人。
不幸的是,我發(fā)現(xiàn)由于 Bittle 上的相機(jī)在轉(zhuǎn)動(dòng)過(guò)程中移動(dòng)得太快,它往往會(huì)丟失關(guān)鍵點(diǎn),需要返回到之前的位置。
可以在這里進(jìn)行一些改進(jìn)以使其更穩(wěn)定
- 使用立體相機(jī)
- 使用 ORB-SLAM3 可以集成 IMU 數(shù)據(jù)以實(shí)現(xiàn)更精確的定位
基于激光雷達(dá)的 SLAM 與 Hector SLAM
如果 Visual SLAM 對(duì)我們的機(jī)器人不起作用,那么安裝 LIDAR 并嘗試一種基于激光掃描儀的算法怎么樣?這里的好消息是,對(duì)于 LIDAR,我們不需要那么快的處理速度,因此即使是較舊的 Raspberry Pi 3 也可以。壞消息是,即使是小型激光雷達(dá)也很大,我可以使用的 RPLIDAR A1M8 重 190 克,當(dāng)安裝在這個(gè)有腿機(jī)器人的頂部時(shí),它會(huì)嚴(yán)重干擾其重心并影響行走步態(tài)。
在腹部下方增加了一些額外的重量以平衡事物之后,它可以爬行和行走,盡管我仍然試圖小心并避免突然停止。
Hector SLAM的軟件安裝在 Ubuntu 18.04 上輕而易舉。如果您還沒有安裝 ROS Desktop,請(qǐng)使用以下命令進(jìn)行安裝(與上面關(guān)于 Visual SLAM 的第一部分相同):
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install ros-melodic-desktop
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
sudo apt-get install ros-melodic-hector-slam
創(chuàng)建 catkin 工作區(qū),安裝catkin構(gòu)建工具并將 RPLIDAR 存儲(chǔ)庫(kù)和 Bittle 驅(qū)動(dòng)程序存儲(chǔ)庫(kù)克隆到 catkin_ws/src 文件夾
mkdir -p catkin_ws/src && cd catkin_ws/src
git clone https://github.com/Slamtec/rplidar_ros.git
git clone https://github.com/AIWintermuteAI/bittle_ROS
cd bittle_ROS && git checkout slam
構(gòu)建 Bittle 驅(qū)動(dòng)程序包并獲取你的 catkin 工作空間
catkin build
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc
由于 Bittle 驅(qū)動(dòng)程序是用 Python 3 編寫的,而 ROS 默認(rèn)仍使用 Python 2.7,因此我們需要為 Python 3 安裝 rospkg 以使它們一起運(yùn)行。
pip3 install rospkg
安裝完所有這些后,將 ROS 配置為在多臺(tái)機(jī)器上工作。然后運(yùn)行
roslaunch bittle_driver bittle_lslam_robot.launch
啟動(dòng) LIDAR、機(jī)器人控制和 hector SLAM 節(jié)點(diǎn)。總體映射結(jié)果看起來(lái)比 ORB-SLAM2 好得多,Hector SLAM 甚至可以發(fā)布里程計(jì)和路徑消息,這為使用 ROS 導(dǎo)航堆棧運(yùn)行自主導(dǎo)航開辟了道路。
對(duì)于在 Bittle 上使用 LIDAR 時(shí)的改進(jìn),
- IMU數(shù)據(jù)也可以集成
- 步態(tài)和平衡算法可以調(diào)整以適應(yīng)機(jī)器人頂部的額外重量
- 可以使用更緊湊的激光雷達(dá)
這是關(guān)于來(lái)自 Petoi 的機(jī)器狗 Bittle 的系列文章的最后一篇。Kickstarter 活動(dòng)已經(jīng)結(jié)束,因此,如果您想購(gòu)買 Bittle,請(qǐng)繼續(xù)關(guān)注 Seeed 工作室子公司 TinkerGen 的預(yù)購(gòu)公告,該公司將在其在線商店和亞馬遜上銷售 Bittle。
玩得開心建造機(jī)器人!
- Raspberry Pi 4上帶Respeaker的離線語(yǔ)音識(shí)別
- 使用ROS和Raspberry Pi進(jìn)行Bittle遠(yuǎn)程操作
- Raspberry Pi 4機(jī)械開關(guān)和OLED屏幕護(hù)罩
- 使用Raspberry Pi 4和RFID模塊的考勤系統(tǒng)
- 使用Raspberry Pi4控制直流電機(jī)
- Raspberry Pi 4機(jī)械開關(guān)和OLED屏幕護(hù)罩開源
- 適用于Raspberry Pi 3/4的Jamma街機(jī)板
- 適用于Raspberry Pi 4的Raspberry Pi Pico開發(fā)板
- 可視頻直播的Raspberry Pi網(wǎng)絡(luò)控制機(jī)器人 14次下載
- 樹莓派Raspberry Pi 4 Model B的電路原理圖免費(fèi)下載 409次下載
- 《愛上Raspberry Pi》中譯版-電子書籍.pdf 0次下載
- Instant Raspberry Pi Gaming 6次下載
- Raspberry_Pi詳解 15次下載
- raspberry_pi各版本差別 0次下載
- Getting Started with Raspberry Pi 0次下載
- 基于Raspberry Pi 5的蜂窩物聯(lián)網(wǎng)項(xiàng)目 1027次閱讀
- 使用Raspberry Pi Pico W和MicroPython開發(fā)物聯(lián)網(wǎng)應(yīng)用 1673次閱讀
- 用于測(cè)試項(xiàng)目的4個(gè)最佳樹莓派Raspberry Pi模擬器 5985次閱讀
- 如何通過(guò)Raspberry Pi設(shè)置CE電流監(jiān)視器 2124次閱讀
- 基于樹莓派產(chǎn)品 Raspberry Pi微控制器板的優(yōu)缺點(diǎn) 2710次閱讀
- 基于Raspberry Pi Pico開發(fā)先進(jìn)的家庭自動(dòng)化系統(tǒng) 2850次閱讀
- 基于FONA通過(guò)UART與Raspberry Pi進(jìn)行通訊的方案介紹 2122次閱讀
- 微雪電子ZeroW| Raspberry Pi ZeroW主板簡(jiǎn)介 2429次閱讀
- 微雪電子Raspberry Pi 3 Model主板簡(jiǎn)介 2873次閱讀
- 微雪電子Raspberry Pi 3 Model擴(kuò)展板簡(jiǎn)介 1512次閱讀
- 微雪電子樹莓派4代B|Raspberry Pi主板介紹 6116次閱讀
- 利用Raspberry Pi構(gòu)建存儲(chǔ)和虛擬化時(shí)間序列數(shù)據(jù) 884次閱讀
- 一文了解Raspberry Pi 4各項(xiàng)性能跑分 2.9w次閱讀
- ROS程序是如何控制伺服機(jī)的 所有答案盡在本文 3000次閱讀
- 視覺享受!用Raspberry Pi實(shí)現(xiàn)圣誕樹燈光秀 8127次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多