帳號:
密碼:
CTIMES / 文章 /   
無人自動駕駛計程車的縱向控制開發
 

【作者: Alan Mond】   2018年06月14日 星期四

瀏覽人次:【4625】
  

第一位搭乘Voyage Auto的無人自動駕駛計程車的乘客是一位名叫Bev的盲人女士。當Bev被問到對於這趟搭乘經驗的感覺,她回答她覺得很安全,這趟路程比起其他一些由明眼人所駕駛的車輛,感覺平穩多了。在Voyage,我們希望每一位乘客都能感受到同等的安全度與舒適度。


做為一間與許多正在開發自主駕駛技術的大型機構互相競爭的小型新創公司,我們希望能夠盡快進行設計疊代。我們團隊的目標之一,就是縮短從白板上發想概念到真正上路之間的時間。


為了達成這項目標,我們專注在讓我們的第一台無人自駕計程車可以在小社區營運(圖1),並透過多重的設計疊代來精煉設計,我們使用Docker的軟體容器來管理系統的相依關係,並使用機器人作業系統(Robot Operating System,ROS)作為認知、動作規劃及控制的中介軟體,我們也採用MATLAB和Simulink的模型化基礎設計流程來取代手動編寫縱向控制系統的模型預測控制(model predictive control,MPC)演算法。


就這樣,我們在只有三名工程師的團隊下,僅僅花了兩個月的時間就完成了初步的煞車和加速控制系統。



圖1 : 在佛羅里達州Villages社區行駛的Voyage無人自駕計程車。
圖1 : 在佛羅里達州Villages社區行駛的Voyage無人自駕計程車。

界定自動駕駛汽車的複雜性

自動駕駛汽車包含了多個複雜的系統來感測週邊環境、前往目的地的路線規劃、以及方向盤的控制及速度(圖2)。環境中包含了交叉路口、斑馬線、圓環、施工、行人、迴轉、單行道、動物、速限等各種物體和危險因子,更不用說還有其他車輛無法預知的駕駛型態,都為這些系統的設計與實現增添了困難度。



圖2 : Voyage自動駕駛計程車系統概觀。
圖2 : Voyage自動駕駛計程車系統概觀。

為了簡化控制設計的難度,我們決定將我們的第一輛自動駕駛計程車佈署實現在與我們有策略聯盟夥伴關係的銀髮族社區(圖3),這些社區不僅已有妥善繪製的地圖及清楚的輪廓,也有明確的速度限制,通常是時速25哩(約40公里)。



圖3 : The Villages銀髮族社區的空拍圖。
圖3 : The Villages銀髮族社區的空拍圖。

借用適應性巡航控制系統為開發起點

首先,我們的團隊以最短的時間研究了各種安全實現縱向控制(即速率控制)的方法,後來我們決定使用MATLAB,以其提供的適應性巡航控制(adaptive cruise control,ACC)系統範例(https://goo.gl/1zcWWs)開始,這個範例包含一個Simulink模型,其中使用MPC來實現ACC系統,能夠維持設定速度或者與前方車輛之間距離(圖4)。



圖4 : 適應性巡航控制系統的Simulink模型。
圖4 : 適應性巡航控制系統的Simulink模型。

下載了模型並在Simulink執行一些基本的模擬之後,我利用機器人系統工具箱與Simulink-C轉碼器從模型產生C++程式碼,做為一個獨立的ROS節點。我們自動駕駛計程車上的所有軟體都是模組化的;每一個子系統,包含認知、路線規劃和縱向控制等其他,都當作一個ROS節點來執行。在三天之內,我們就已經開始執行自駕車ACC設計的程式碼。


從頭開始自建模型預測控制器

即使ACC Simulink模型相當具有潛力,它還是無法完全符合我們所有的設計需求。舉例來說,車輛在起動及停車時過度顛簸,而且我們發現乘客對於這類的動作格外敏感(計程車乘客不見得會感受到偵測或認知演算法表現如何,但他們可以立即感受到縱向控制運作得好不好)。


我們回到繪圖板並從頭開始設計一個系統,在白板上按部就班依據第一原理建立一個描述了計程車動作的運動模型。我們在Simulink實現這個運動模型,並把該模型作為控制器設計的基礎,接著我們調整MPC模型參數以符合設計需求,並整合額外的邏輯來掌管原本MPC模型較不擅長處理的特殊狀況和情境,像是停車→起動→再開車。


在這些早期開發階段,我們透過機器人系統工具箱(Robotics System Toolbox)從rosbag log檔匯入幾十億位元組(gigabytes)的資料到MATLAB環境中,並過濾掉所有與縱向控制器無關的ROS議題。當資料匯入完成,我們可以像是其他MATLAB變量一般地取得這些資料,讓分析與處理變得更容易。


之後我們在Simulink模擬控制模型,確保其輸出、油門踏板位置、煞車踏板位置看起來都合理,以及模型運作是否符合我們對於輸入目標設置的期待。


進行實車測試

在我們對上述模擬具備足夠的信心之後,我們團隊自己成為在真正車輛中的第一組乘客,來測試控制器的設計。我們把為了ROS節點重新設計的控制模型,去產生C++程式碼,並且在Docker軟體容器內把節點轉檔佈署實現到車輛上。Docker讓我們可以建立一個具備所有必需的相依關係的生產環境影像,接著持續地在整個開發與測試過程中維持並複製該影像。


在這個初步的車內測試中,我們很快就發現到控制器在加速與煞車太過凶猛,雖然在模擬階段繪製的圖表上,速度變化看起來還算平穩,但實際搭乘的經驗卻完全不然。這項事實讓我們體認到,模型化基礎設計能讓設計概念快速實現到最後道路測試的重要性,在實驗室裡面不能完全正確地判斷設計品質夠不夠好,我們還需要像是真正的乘客在車中的真實體驗。


我們完成了幾個設計疊代,調整許多參數與限制,包含加速與顛簸的限制,以及時間常數與從MPC更新輸出值的頻率。我們在Simulink模型設置了ROS參數,即使是之前從來沒有使用Simulink經驗的同事,也能夠很快地直接透過ROS更新參數值、校正參數。


建立虛擬車輛來測試煞車情境

要實際測試像是另外一輛車突然轉向我們的車道,這樣的駕駛情境是很不安全的,因此我們建立一個新型的ROS節點來模擬一個幽靈屏障—也就是虛擬車輛,用來估測計程車與它們之間的各種距離。我們在Simulink建立虛擬汽車並進行參數化,藉此,我們可以讓虛擬車輛進行從零速度開始逐漸加速的動作。我們透過Simulink Coder產生ROS節點的程式碼,接著利用節點來測試以及調整控制器的煞車性能;透過這樣的方式,這些節點只需要幾個小時就能開發出來,我們可以產生計程車前方的虛擬障礙物來看看計程車會如何反應,接下來再進行性能的調整直到它可以安全、平穩地停下來。


實際上路

透過模型化基礎設計所開發出來的縱向控制器,現在已經實際運作在Voyage服務的銀髮族社區的無人自駕計程車之中。我們看到搭乘的需求不斷增加,使用量也每週成長了10%。現在我們的工程團隊正在學習這些從實際路駕收集到的資料,整合所學,持續地改善控制器的表現。


(本文由鈦思科技提供,作者Alan Mond任職於Voyage Auto公司)


相關文章
如何透過Simulink進行ISO 26262專案
高精度地圖、感測器提供汽車完整視角
自駕車主要業者發展分析
透過離散事件模擬優化汽車生產流程
飛機之電力電子即時模擬與測試
comments powered by Disqus
相關討論
  相關新聞
» 台達於紐倫堡國際電氣自動化展 揭示智能製造藍圖
» 台達於2017工博會展智能製造示範線
» 放棄本位主義 智慧家庭才能成功
» 丹麥風電辦公室成立 將培養台灣在地人才
» 2017自動化工業大展: 施耐德電機全系列產品展現卓越戰力
  相關產品
» 宸曜推出工業等級ARM架構的物聯網IoT閘道器
» 達明機器人於漢諾威工業展展示內建視覺辨識技術方案
» 艾訊新款3.5吋嵌入式單板電腦輕鬆建構高階嵌入式系統
» 艾訊推出新款DIN-rail工業物聯網閘道器ICO100-839
» 泓格推出新款1對2埠的EtherCAT節點從站模組

AD


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2018 遠播資訊股份有限公司版權所有 Powered by O3
地址:台北市中山北路三段29號11樓 / 電話 (02)2585-5526 / E-Mail: webmaster@ctimes.com.tw