1. 程式人生 > >Navigation學習總結------第一階段,完成於2019年1月

Navigation學習總結------第一階段,完成於2019年1月

Navigation----2D學習筆記

2D導航包,從里程計,感測器流和目標姿勢中獲取資訊,併發送安全速度命令到機器人。

 

1、相關網站

(1)基本導航調整指南,雖然不全面,但是適合入門的看看:

http://wiki.ros.org/navigation/Tutorials/Navigation%20Tuning%20Guide

(2)機器人導航堆疊的設定和配置,這才是真正的配置教程

http://wiki.ros.org/navigation/Tutorials/RobotSetup

(3)rviz是個強大的視覺化工具,這個是rviz的配套使用教程,可以看看2D位置,靜態地圖,等等一些重要的資訊

http://wiki.ros.org/navigation/Tutorials/Using%20rviz%20with%20the%20Navigation%20Stack

(4)通過ROS釋出測距資訊,主要是介紹odom和base_link之間的tf轉換

http://wiki.ros.org/navigation/Tutorials/RobotSetup/Odom

(5)在ROS上釋出感測器流,提供了通過ROS 傳送兩種型別的感測器流,sensor_msgs / LaserScan訊息和sensor_msgs / PointCloud訊息的示例

http://wiki.ros.org/navigation/Tutorials/RobotSetup/Sensors

(6)官網首頁,上面有各個包的解釋

http://wiki.ros.org/navigation?distro=lunar

(7)我很推薦在官網上讀各個包,比如這個base_local_planner這個包,上面不僅有包的引數介紹,可以教你怎麼去除錯引數,而且還有原始碼,在原始碼的介面上,還可以直接找到引數的定義,例如,如果你不清楚PoseStamp這是個什麼東西,你直接點選這個名字,網站會自動跳轉到它的定義檔案下。

http://wiki.ros.org/base_local_planner?distro=lunar

(8)msgs檔案大全,要是哪個msgs不記得了,直接在這裡找就行了

http://wiki.ros.org/common_msgs?distro=melodic

2、除了navigation以外的包

(1)鍵盤控制包:簡單,很早就看完了,實現最基本的ROS通訊功能

(2)電機底層包:以差動機器人為基礎,建立數學模型,我看那個建模過程好複雜,把各種機械結構都考慮到,最後的功能就是給一個線速度和角速度,這個包能給機器人cmd_vel這個節點,下達對應的速度指令。簡單來說就是,程式讓機器人前進速度是2m/s,那麼實際的機器人就得是2m/s。因為鍵盤給機器人指令的效果是正常的,所以這個包沒什麼問題,很好用。

(3)Slam_gmapping包:實現建圖的功能,這部分的程式碼我沒看,因為那個專案的建圖效果很好,所以這個暫時不作為研究重點。

這個包的使用方法

http://wiki.ros.org/slam_gmapping/Tutorials/MappingFromLoggedData

這個包的引數

http://wiki.ros.org/gmapping

3、學習經歷

Navigation的包大大小小10幾個,我最開始學的時候從amcl這個包開始看,我把粒子濾波看懂了,還買了概率機器人這本書,過程很艱難啊,網上找視訊,書上跟著看,最後也算是知道蒙特卡洛定位的原理了。為了讓自己的成果儲存下來,我把自己的筆記寫在了csdn的部落格上。

話說回來這個程式碼,開始一行一行的看amcl,雖然有一些C++的底子,但是很多概念都是我之前沒有接觸的,比如執行緒,鎖,斷言等等。我沒有退縮,真的是一行一行的看,期間遇到沒見過的類定義,我就在官網找,結果在costmap_2d,map_server還有其他幾個包之間來回跳,導致我陷入深深的細節中,無法自拔,很混沌,即便如此,我還是每一行都弄明白了。我當時連續看了4天,然後準備休息幾天再看,等我再回過頭來看amcl,大腦一片空白。。。。。。。。都忘了,主要就是忘了這個類是幹嘛的,那個類是幹嘛的,整個navigation這個包給我的感受就是太複雜了,太大了。

怠惰了幾天,覺得自己該修改一下作戰規劃,要不然暫時整明白了所有的檔案,到頭來還是忘。

下一步以瞭解框架為目的。我以官網和慕課上的教程為主,把每個包的引數過了一遍(雖然現在都忘了),把每個包的學習記錄整理在每個包檔案下的Readme.txt檔案下(這個檔案我寫的不規範,恐怕只有我自己能看懂),同時我也把一些好的博主的文章的連結放在了Readme下。在這裡我還是推薦看官網的包介紹,引數講的很詳細,個別引數看不懂可以看網上博主的文章。

現在這階段我已經完成了,每個包都是幹什麼的我已經弄明白了,整體的一個導航框架我也看懂了,怎麼除錯引數我也看了,下一階段就是接著看程式碼吧,力求細緻,跟我當初看amcl一樣,終極目標就是把這個包每個地方都看懂,感覺巨難無比,但是至少心中有個框架了。寒假的時間是不夠的,在開學的時候(大四下)打算一邊做實物,一邊看程式碼。

下學期我乾的事情大概可以想象出來了:除錯導航包的引數,比如全域性規劃,區域性規劃等等,然後看除錯現象,直到把導航的功能弄好為止。

具體的思路:我看了那個專案的實際效果,建圖沒毛病,我會從定位(amcl)的相關引數入手,然後再除錯路徑規劃。

 

 

 

 

 

 

2019年1月