Team consist of SamJiang round round small cat, Yeehuan, Mrs.Wen, JoeZhong
update: 2024/04/12
動力系統改裝方面,我們使用1000w無刷馬達使用專屬控制器,並且輸入pwm訊號來控制馬達轉速。
馬達安裝部分,我們利用電焊將馬達座焊接於車架右後方並且使用鏈條帶動輪子轉動。
為了訓練出適合我校校園環境的影像辨識模型,我們事先在校內錄製了約莫2公里的環境影像數據,而我們大約從這2公里中取出了500幀圖像來進行手工物體標注,為了符合我們對行駛順暢度以及安全性的期望,我們標注了6種類別,分別為:柏油路、人、車、三角錐、機慢車以及人行道。
訓練模型時我們優先使用了之前略有開發經驗的Deeplab V3+語意分割模型,此模型是由Google所提出,並且已經廣泛應用於手機人像景深拍照、視訊會議背景切換等應用場景,在技術上已經發展的相當成熟,網路上資源也非常多所以十分適合深度學習知識不是很足的我們,而在我們的數據集當中對於除了道路外的物體數據量是相對少的,為了解決這個問題我們在訓練時使用Deeplab官方提供的模型進行凍結訓練,有了這個模型為底大幅提升了模型特徵提取的速度以及準確率,也剛好官方模型對於人及車的加權值較高彌補了原先其他物體辨識不佳的問題。
接著在我們實際驗證模型時道路準確率基本上有達90%以上,但在辨識三角錐上準確率欠佳,於是我們後續又增加了600張數據,針對不同天色、路況加強訓練來排除此問題並提高整體準確率,而為了增加安全性此模型數據量也持續增長中。
 
我校道路歸類為私人土地道路,所以在標線、行駛邏輯上與法定道路略有不同,為了因地制宜我們利用了開放街圖(OpenStreetMap)簡稱OSM地圖的線上圖資下載成離線OSM檔案來編輯防止影響線上圖資增加不必要的數據,在這訂製校園地圖中我們首先先將不易駕駛道路(如廢棄教學區等年久失修路面)做標記,防止導航算法可能因行駛距離較短而規劃至危險道路,並且於各路段標記適合行駛方向(靠左靠右等)來遠離籃球場、農田等易有突發狀況區,增加整體行駛穩定及安全性。地圖顯示及導航算法由python函式庫osmnx及networkx製作。
自研演算法 Sliding Box
在算力限制下,我們無法對道路狀態進行精準掃描及計算,並且辨識結果也有不少噪點,種種原因導致我們很難規劃良好的路線。在多種的嘗試後,我們受到了Sliding windoes演算法的啟發,使用多個滑動的掃描箱來進行道路探索,找出車輛可以行駛的路徑。從原來的像素搜索到現在的區域搜索,大幅減少了運算壓力,同時也很好的過濾了分割模型產生的噪點,並搭配導航切換不同的模式,達到自動控制車輛直行及轉向。
靠行模式:ˋ隻
轉向模式:
為了使軟體數據能實際操控車輛,首先我們使用了Arduino開發板來接收由主控電腦發出的序列埠指令來控制以下部件:
- 150kg舵機控制方向盤
- 30kg舵機控制後輪鼓煞
- pwm控制馬達電門
- 方向燈
而整台車最重要的靈魂就是我們的方向盤,為了能轉動方向盤我們團隊前前後後試了許多方法,截至目前可行的方案是利用一顆360度不連續150kg伺服舵機配合2:1齒輪來達成省力費時的轉動方向盤。
int main(){ std::cout<<"Statistical gg" >>; return 0; }
compiler:
4:7: error: '\U0000ff1b' was not declared in this scope
4 | >>;
| ^~