華碩Tinker Edge-T在Donkey Car的應用—下篇( Tinker Edge-T Donkey Car的神經網路自駕車訓練與測試)

中篇主要的內容主要是著重在Tinker Edge-T Donkey Car操作環境的設定(文章連結,請點我),在操作環境建置完成之後,便可以進行相關Donkey Car的自駕訓練流程。

Tinker Edge-T Donkey Car操作環境建置完成之後,接下來便是進入實際操作的階段,本篇將針對Donkey Car的操控調整、控車與影像資料蒐集、神經網路訓練、自駕車神經網路模型推論與車輛運作進行說明,在執行本篇所有介紹的過程有個前提,就是必須先將Asus Tinker Edge-T在Donkey Car所有的作業系統建置與相關程式套件安裝都完成,相關的安裝與設定流程請參考上篇與中篇的相關介紹。

作者/攝影曾俊霖
時間約6小時
難度

★★★☆☆

材料表

一、Edge-T Donkey Car操控調整

Donkey Car基本上必須透過實際的操控,進行車輛動作特性參數(如:驅動輪油門速度、方向舵機轉動角度)的調整,這些特性參數若沒有適當設定,將會造成Donkey Car在進行後續的影像資料蒐集過程與實際自駕時車輛運動特性的不穩定問題,所以請大家都務必確實在這個階段妥善設定各種特性參數。

方向舵機轉動角度調整

  1. 執行 donkey calibrate –channel 1 –bus=2
  2. 輸入方向舵機PWM數值,數值範圍約在400到300之間,方向舵機的中間值約略在360左右,請小心仔細調整PWM數值變化量約為+/- 10,增加數值或減少數值會對方向舵機產生轉動。
  3. 請將PWM數值調整使方向舵機轉動到左轉最大臨界值(即STEERING_LEFT_PWM)與右轉最大臨界值(即STEERING_RIGHT_PWM),請用紙筆記下這些數值。
  4. 以nano編輯myconfig.py檔案中找到STEERING_RIGHT_PWM與STEERING_LEFT_PWM項目,並且將步驟(3)所記錄的數值輸入至對應的項目。

 

驅動輪油門調整

  1. 執行 donkey calibrate –channel 0 –bus=2
  2. 油門PWM數值中間值(Stop)約在370,若在輸入PWM值時聽到ESC嗶嗶聲,表示已校準到正確的中間值,此時驅動輪馬達應該是停止的,請微調數值直到找到使馬達停止的PWM數值,並將該數值記錄下來(即THROTTLE_STOPPED_PWM)。
  3. 請輸入大於停止PWM數值的參數大小,大家應該可以觀察到車輪開始前進轉動,請找到合理的驅動輪最大前進轉動速度,並記住該前進PWM數值(即THROTTLE_FORWARD_PWM)。
  4. 請輸入小於停止PWM數值的參數大小,大家應該可以觀察到車輪開始後退轉動,請找到合理的驅動輪後退轉動速度,並記住該前進PWM數值(即THROTTLE_REVERSE_PWM)。
  5. 以nano編輯myconfig.py檔案中找到THROTTLE_STOPPED_PWM、THROTTLE_FORWARD_PWM與THROTTLE_REVERSE_PWM項目,並將步驟(2)至步驟(4)所記錄到PWM數值對應輸入至對應的項目中。

二、控車與蒐集影像資料

Edge-T Donkey Car完成上述的調校過程之後,就可以進行控車,基本上Edge-T Donkey Car的神經網路訓練所需要的跑道影像資料,也可以在控車階段進行資料的蒐集,但也由於在這個階段Edge-T Donkey Car已經是實際進行運動,因此在這個階段的操作就必須透過SSH的方式進行遙控,SSH的遙控方式請參考「上篇」的內容有關MobaXterm的操作流程操作即可,此外在此階段Edge-T Donkey Car會透過Web的方式開啟操作介面,因此在電腦端也必須要有Web瀏覽器。

1、SSH輸入以下命令,執行Edge-T Donkey Car控車程式:

cd ~/mycar
python manage.py drive

2、開啟Web瀏覽器,並在網址列輸入:<Edge-T Donkey Car的IP位址>:8887

3、進入操作畫面如下:

鍵盤快捷鍵

    • Space(空白鍵) :停止汽車並停止記錄
    • r鍵:切換錄音
    • i鍵:增加油門
    • k鍵:降低油門
    • j鍵:轉左
    • l鍵:右轉

4.由於在Edge-T Donkey Car尚無法使用實體搖桿操作,所以強烈建議使用手機進行Web畫面的操作,透過觸控螢幕的按壓滑可以較易操作車輛的動作,因此建議手機和Edge-T Donkey Car基本上都必須使用Wi-Fi並且都處在同一個網段上,這樣才能夠正確操作Edge-T Donkey Car。

5.在操作的過程中,只要按壓「Start Recording」,Edge-T Donkey Car便會開始記錄操作者的操作油門與方向舵機的操作參數並且連同影像資料一併存入在Edge-T Donkey Car的SD卡中。

6.收集數據所應該要注意的事項:

      • 務必在跑道上多練習幾次駕駛控車,一般至少要跑10圈以上。
      • 如果發生撞車或跑出賽道,請立即按壓「Stop Car」以停止記錄。
      • 在收集10-20圈好的數據(5000~20​​000張圖像)後,在SSH按下Ctrl-C將Edge-T Donkey Car停下來。
      • 收集的油門、方向舵機與影像數據程式將存於最新的tub文件夾中的data文件夾中。

7.將tub文件夾中的data文件夾所有資料壓縮並傳至個人電腦。

8.打開個人電腦虛擬環境(利用Anaconda prompt),由於個人電腦上的虛擬環境需要安裝Donkey Car相關套件程式,並且透過Python進行訓練程式的運作,個人電腦的Anaconda程式的安裝與設定,請參考以下網址進行安裝設定(http://docs.donkeycar.com/guide/host_pc/setup_windows/),並在安裝相關套件程式後,再請輸入以下指令進入Donkey Car電腦虛擬環境:conda activate donkey

9.在(donkey)虛擬環境下完成以下流程,進行神經網路的訓練:

cd mycar
python manage.py train --tub <解壓縮後的資料夾位置與名稱> --model <自行定義的模型名稱> --type coral_tflite_linear
(例如:python manage.py train --tub tub_23_19-08-16 --model model_0816.tflite --type coral_tflite_linear )

10.訓練完成之後,會產生(例:model_0816.tflite)模型檔,將這個檔案進行Edge-TPU的編譯,沒有編譯成Edge-TPU的tflite是無法在Edge-T上執行推論的,而Edge-TPU的編譯程式的安裝,則是需以Google Coral網站上的內容進行安裝,請自行參考至以下網址進行設定與安裝(https://coral.ai/docs/edgetpu/compiler/#usage),本次編譯步驟如下:

edgetpu_compiler <tflite檔案>
(例如:edgetpu_compiler model_0816.tflite)
編譯完成後會產生(例:model_0816_edgetpu.tflite),請將這個edgetpu.tflite檔案複製到Edge-T Donkey Car的mycar資料夾中即可。

三、Edge-T Donkey Car的自駕運作

經過以上這些編譯流程的操作之後,基本上在以SSH進行Edge-T Donkey Car的遙控操作,在這個部分的操作,基本上如同之前drive的動作一樣,只是要把訓練好的神經網路模型檔案匯入至程式當中運作,步驟如下:

  1. SSH輸入以下命令,執行Edge-T Donkey Car控車程式:
cd ~/mycar

python manage.py drive --model <Edge-TPU格式的tflite檔案> --type coral_tflite_linear

(例如:python manage.py drive –model model_0816_edgetpu.tflite –type coral_tflite_linear)

  1. 開啟Web瀏覽器,並在網址列輸入:<Edge-T Donkey Car的IP位址>:8887
  2. 進入操作畫面如下:

  1. 在Local Pilot全自駕模式下,操作者無法操作Edge-T Donkey Car,Edge-T Donkey Car會按照神經網路訓練後的結果進行油門與轉向的動作,但在操作畫面上若操作者選擇User模式,則使用者可完全自行控車,也可以選用Local Angle模式,使用者僅能操作油門,轉向交由神經網路模型進行推論自動運作,即所謂的半自動駕駛的概念。

 

  1. 在自駕的模式下,過程中只要按壓「Start Recording」,Edge-T Donkey Car便會開始記錄操作者的操作油門與方向舵機的操作參數並且連同影像資料一併存入在Edge-T Donkey Car的SD卡中,透過這樣的方式亦可讓Edge-T Donkey Car一邊跑車一邊蒐集影像資料,以利後續的神經網路訓練效能的提升。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *