中區物理教師專業成長研習, 2023, 5, 25

自駕車學習(陳永忠老師)

我們的自駕車影片:

  1. 自駕車在直線軌道的底端迴轉
  2. 自駕車循跡運動與尋找跟隨
  3. 使用鍵盤控制自駕車的運動
  4. 閃避障礙物
  5. 在障礙物前繞道前進
  6. 在雙軌道中行進並且閃避障礙物
  7. 在綠色的單一寬軌道上行進
  8. 在單一寬軌道避開障礙物
  9. 自駕車在綠色的寬軌道上閃避三個障礙
  10. 自駕車追蹤震盪的目標
  11. 自駕車向目標前行時閃避三個障礙物
  12. 自駕車擊倒三個藍色的標的物,並且閃避三個障礙物
  13. 自駕車校正初始點後以8字行駛繞過兩個障礙物
  14. =========機器學習文字辨識與駕車結合=========
  15. 自駕車辨識數字向目標前進
  16. 自駕車辨識英文字母
  17. 自駕車擊倒不是LOVE的字母
  18. 自駕車文字辨識教學1
  19. 自駕車文字辨識教學2
  20. 自駕車文字辨識教學3
  21. 自駕車文字辨識教學4
  22. 自駕車辨識三個字母
  23. 機器學習用在自駕車
  24. Selfdrving with Machine Learning
  25. 自駕車辨識中文字母
  26. =========機械手臂===========
  27. 樹莓派連接LED
  28. 自駕車與機械手臂
  29. 自駕車與機械手臂在軌道上行走
  30. ========紅外線偵測器============
  31. 利用紅外線接收器讓自駕車追蹤黑色軌道
  32. 紅外線偵測器與轉動的攝影鏡頭
  33. 用兩個紅外線偵測器鎖定軌道
  34. 自駕車的捉迷藏
  35. ========超音波偵測器============
  36. 使用兩個超音波偵測器進行自駕
  37. 用障礙物構成超音波自駕車的巷道
  38. 用超音波偵測器在巷道中自駕
  39. 像蝙蝠一樣用耳朵在夜間飛行
  40. ======整合應用============
  41. 火燄偵測
  42. 在走廊的軌道上巡視
  43. 使用超音波和紅外線偵測器沒有攝影鏡頭也可以自走
  44. 轉動的鏡頭可以加速尋找目標,超音波閃避障礙物,影像分析目標的距離。
  45. 有一雙筷子的自駕車
  46. 自駕車帶球走
  47. 自駕車玩球soccer
  48. 兩部自駕車各玩各的
  49. 自駕車PK
  50. Practice before game
  51. 指揮車傳遞不同參數給4個自駕車
  52. Self-driving Team Work
  53. 4 targets for 4 cars
  54. 合力追擊運動的目標
  55. ======自駕車教學影片============
  56. 自駕車教學影片1
  57. 自駕車教學影片2
  58. 自駕車底線識別

課程簡單說明

授課老師將以樹莓派為核心搭配馬達和網絡攝影機組合成自駕車,簡要說明樹莓派的作業系統,在作業系統中我們會用到的介面和基本指令。為了能夠讓樹莓派自駕車能夠無線遙控,我們會介紹如何在筆記電腦中執行VNC軟體進行與樹莓派的連線,並且從筆電的環境中編寫程式與控制。實際操作的過程中我們將執行六個基本程式,程式的內容和名稱以及執行的目的分別如下
  1. cam1.py讓同學們了解樹莓派如何聯通網絡攝影機,以及執行攝影所需要的基本指令。
  2. M2.pymotorm.py在執行樹莓派連接馬達的指令,讓我們的自駕車可以進行四個基本的運動:前進、後退、右轉、左轉。
  3. M3.pykeybd.py介紹樹莓派上執行的一個pynput模組,可以利用鍵盤來控制自駕車的馬達運轉模式,基本上這就是一個遙控電動車的概念。
  4. cam4.py主要功能是結合網路攝影機的影像和馬達的控制,我們的目標是希望自駕車能夠捕捉地面上的紅線,沿著紅線向前行進。為了達到這個目的,我們必須了解如何做影像分析。老師會介紹影像分析所需要的open CV模組。
  5. cam5.pyDIV3.pyFcolor.pyPARAM.py是希望自駕車能夠從環境中尋找我們的目標物目,標物的定義是一定特別色碼的物體。首先我們讓自駕車在環境中原地轉動,尋找符合鎖定目標色碼的物體,一旦尋找到這個物體,就開始想物體前進。並且利用物體的大小,判斷物體的距離。當距離遠的時候我們可以用比較快的速度前進,一旦非常靠近的時候,速度就放慢,當達到我們所定義的最適當距離的時候,自駕車就停留在目標物的附近。如果目標物開始運動,自駕車又會開始跟隨這個目標物的運動。
練習題
利用python語言當中的迴圈(for)和條件判斷(if, elif, else, break),我們可以進行下面幾個程式的練習。
  1. 在不啟用攝影機的情況下,我們可以控制讓自駕車圍繞邊長5公尺的正方形行走一圈。同學們可以根據自己所分配到的自駕車,測量這一個車子直線行進幾秒鐘,可以達到5公尺的距離。然後讓這個車原地轉動若干秒,你的車可以剛好旋轉90度,然後再讓這個車行走5公尺,以此類推就可以完成正方形的運動,回到出發點。這是一個簡單的應用,如果同學們可以完成這個簡單的習題,表示你對車輛的行走控制所用到的參數,有了基本的認識。
  2. 同樣的我們可以設想我們有一個目標物放在直線行進5公尺的地方,但是在直線行進上2.5公尺的地方有一個障礙物。在沒有攝影鏡頭的情況下,你根據你對車子的參數的掌握,在適當的時間點做一個彎曲的行徑,再回到直線上,可以適當地避開你的障礙物,並且達到你的目標物。
  3. 在第3個練習中我們讓同學們練習讓你的自駕車原地打轉,同時讓你的網路攝影機工作,因此就可以同時看到不同方位方向上的攝影機影像。原則上這也是一個單獨迴圈就可完成的工作,現在同學們利用open CV模組進行影像分析,當你的影像中出現特定色馬的時候,利用條件判斷的指令讓轉動停止,也就是攝影機停留在目標物的影像上。如果能夠做到這1點,你可以在擴展你的程式,當目標物運動的時候我們的車子也會跟著運動,跟隨著這個目標物。這就是cam5.py的基本精神。
  4. 接著當然就是向著目標物前進時,前進的路徑上障礙物我們要怎樣迴避。
授課教師
陳永忠 ycchen@thu.edu.tw