SLAM(Simultaneous localization and mapping),中文通常翻為定位與地圖構建,為我們取得光達和里程計訊息後需要使用的部分。 ROS2中有很多成熟的slam package可以使用,我們不需要自己處理這一個問題。比較常用的有 * gmapping * slam_toolbox * categrapher gmapping屬於相當有名的演算法,大概從ROS1開始就有頻繁的使用,在ROS2中我們可以從github上下載到package,編譯後即可正常使用。 >https://github.com/Project-MANAS/slam_gmapping slam_toolbox為ROS2中推薦使用的SLAM方法。他是基於Karto SLAM核心改進而成的,有相當強大的計算效率。在ROS2中「理論上」有在安裝階段自動安裝,如果沒有則可以使用apt-get安裝 >sudo apt install ros-ROS_DISTRO-slam-toolbox 而來自google的categrapher可以單靠光達訊息建圖(但官方表示,為了精確度不推薦這麼做)。categrapher需要使用apt-get下載安裝,由於本身支援的型態較多因此可能會花一點時間 >sudo apt install ros-ROS_DISTRO-cartographer ros-ROS_DISTRO-cartographer-ros 所有的SLAM都需要LaserScan訊息--也就是前面光達簡介輸出的光達數據,再來是里程計的odom訊息。 地圖會被儲存成一個二維陣列,陣列值一開始都是-1,代表未知。當該地方被光達掃到,並且一段時間都是掃到障礙物的狀態,就會判定不可通行,此時數值會被改為100。反之,當某些地方一直都沒有掃到障礙物,則判定就會是可以通行,數值為0。  {%youtube eMcqe_w-EBA %} 除了訊息本身,正確的TF變換才能讓其正常運作。一般而言我們會使用static_transform_publisher來幫助我們發布靜態變換。 好,現在我們有了個新的問題:什麼是TF?
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up