# 進度報告(2023/09/25) ## ROS學習 暑假時有先聽從陳昱霖學長的建議學習ROS2,不過由於一開始還不清楚ROS的功用,只知道他是一個用於機器人的作業系統,所以學習得有點慢。後來逐漸了解到ROS的特點是可以供不同的程式之間傳遞訊息、靈活溝通。為此我有去稍微了解一下ROS系統所使用的DDS通訊。對於DDS去中心化、以資料內容為重點的傳輸資料方式有一點基礎概念後,再來學習ROS2,發現比較可以看得懂教學在寫甚麼。**目前的學習進度:** * 依照教學利用ROS2內建的package建立topic & subscriber的節點,傳輸簡單的訊息。 ![](https://hackmd.io/_uploads/B1eOwa6ya.png) ![](https://hackmd.io/_uploads/B1euvaT1T.png) * 依照教學利用ROS2內建的package建立survice & client的節點,做出一些簡單的要求和回覆 ![](https://hackmd.io/_uploads/rkQKwT6ka.png) ![](https://hackmd.io/_uploads/rJXtw6Tkp.png) ## 閱讀文獻 開學時有稍微拜讀研究室各學長姐的畢業論文,不過由於對於研究方向不太清晰,還不是很確定哪些論文值得深入鑽研。不過上上禮拜聽過陳昱霖學長的報告之後,決定先從機器人路徑規劃類的論文開始讀起。 首先讀的是郭冠成學長的**基於混合式Astar演算法解決差速式機器人於具有狹長通道之環境中執行推箱任務之規畫問題**。我把學長的論文看成有一步步的任務: 1. 建立差速式機器人的模型 2. 建立穩定推動的模型 3. 選擇適合的全域規劃方法 4. 寫出參考穩定推動模型的機器人路徑之全域規劃 5. 選擇適合的局部規劃方法 6. 寫出參考穩定推動模型的機器人路徑之局部規劃 從論文的標題就知道,學長的重點應該是放在第4步,不過由於我對於路徑規劃的先輩知識尚不熟悉,所以我還是將學長做的每一步驟都視為重點去看。目前將論文寫的東西大致上都做了一層理解,不過我對於模型是如何用程式建立出來的、怎麼寫出路徑規劃的程式等這方面的知識蠻欠缺的,所以我想去多參考網路上的相關教學。目標應該是看懂學長的coding。 這兩周上台報告的學長們,以及郭冠成學長的論文中,常常都有提到不同的路徑規劃方法,像是全域的Dijkstra、Astar、RRT,局部的DWA、MPC、TEB,所以為了能夠更理解學長們的報告和論文,感覺需要去多找一些關於路徑規劃的論文來看。 有找到一篇解說Dijkstra的文章:**Understanding Dijkstra’s Algorithm**[^1]。Dijkstra算是全部規劃路徑演算法裡最早出現的,透過反覆的比較走到每個節點所花費的成本,可以找出最短的路徑。因為需要一個個節點依序檢查,可以想像Dijkstra在面對龐大的資料量時,計算起來會曠日費時,儘管他可以保證找到最短的路徑。 ## 日後方向 1. 繼續學習ROS2 2. 學習機器人建模的編程 3. 找路徑規劃類的論文 ## Reference [^1]:Javaid, Muhammad Adeel, Understanding Dijkstra's Algorithm (April 10, 2013). Available at SSRN: https://ssrn.com/abstract=2340905 or http://dx.doi.org/10.2139/ssrn.2340905