循跡前進向來是機器人的重點,也是基本的課題之一。聽說掌握了循跡,你就已經得到了一半的天下(誤!)
一般使用光感測器來做循跡的效果還不錯,唯獨在過直角彎道時,有可能會修正不足或過頭而出界。本篇使用 Mindsensors 的產品LineLeader-v2 來進行測試。可以改善直角彎道的問題,並且在直線與小弧度彎道時可以更快更穩。下圖為範例機器人:
上圖可以看到車子的前方裝有二個感測器,在下方的是LineLeader-v2,而上方的則是 SumoEyes-v2。加裝SumoEyes 的原因是讓車子遇到障礙物能避開。如果想要讓機器人有更好的避障效果的話,可以用SumoEyes-v2 搭配超音波感測器 (視野較小)。先用 SumoEyes 判斷哪個方位有障礙物之後,再用超音波感測器取得較精準的距離數值。
接著說明程式:
中間的程式方塊需 至Mindsensors 網站,可點此前往下載。使用 EV3 軟體的 Block Import Wizard 來匯入指令即可。首先,在感測器的校對(Calibrate) 選單中找到Calibrate-PID configuration (校正 PID 設定)
參數說明:
i2c:不作更動,程式預設為2
SP:標準值。測量值減去標準值即為誤差,故標準值為車子走黑線的參考值。
第一個kp:預設值為25,之後可依照測試調整,這裡測試為80。
第二個kp為kp factor:預設值為32,亦可自行調整。
(根據Mindsensor裡的LineLeader-UserGuide說明,Kp value = kp/kp factor,在這裡即為80/32=2.5)
第一個ki:預設值為0,在此設1。
第二個ki為ki factor:預設值為32,在此設64。
第一個kd:預設值為8,在此設0。
第二個kd為kd factor:預設值為32。
基本上可從程式預設值直接不作更動來進行循跡,建議先調整kp覺得ok後,再依照需求來調整 ki、kd。緊接著是躲避障礙物的設定
可愛的青蛙方塊即為SumoEyes 雙紅外線感測器的 EV3 指令。SumoEyes可偵測前方以及左、右方範圍內的障礙物。短距15 cm,長距30 cm,具備測量和比較模式,上圖為比較模式。
參數說明:
v/x:可設定是否開啟遠距模式。
↑:方向,0為前方;1為右方;2為左方。
#:哪一個方向有障礙物。
最後的v/x:是否找到障礙物。
最後主要的概念是讓車子循跡時,遇到障礙物後轉彎,並繞著障礙物行走,直到遇到黑線時再次循跡。以下影片在 9/21 CAVEDU Day 現場展示的循跡避障車。遇到障礙物會固定往右轉,在直角彎道的表現也還算不錯。循跡時車頭有稍微搖晃二、三下,可能kp參數還需要調整
本影片中的EV3循跡避障車程式碼,如有需要可點此下載測試。
有關PID控制的文章,可參考這篇文章,我覺得寫得相當淺顯易懂。或者請出GOOGLE大神,都能搜尋到許多相關的文章,
希望大家的循跡車都能愈來愈進步喔!