Upgrade to Pro — share decks privately, control downloads, hide ads and more …

驢車(Donkey Car),一個基於 Raspberry Pi 與機器學習的開源無人小車專案介紹

驢車(Donkey Car),一個基於 Raspberry Pi 與機器學習的開源無人小車專案介紹

這是我們在 PyCon Taiwan 2019 的分享。

包含了 Donkey Car 的介紹,所需硬體和軟體架構。還有使用機器學習打造自動駕駛系統流程,最後展示如何 Hack Donkey Car,在 Duckiebot 跑 Donkey Car。

購買 Donkey Car 請參考。
https://www.piepie.com.tw/26091/official-donkeycar-edition

台灣樹莓派

September 22, 2019
Tweet

More Decks by 台灣樹莓派

Other Decks in Technology

Transcript

  1. 驢車 (Donkey Car) -
    基於 Raspberry Pi 與機器學習
    的自走車專案介紹
    台灣樹莓派
    2019/09/20 @PyCon2019

    View full-size slide

  2. 姓名標示 — 非商業性 — 相同方式分享
    CC (Creative Commons)
    姓名標示 — 你必須給予 適當表彰、提供指向本授權
    條款的連結,以及 指出(本作品的原始版本)是否已
    被變更。你可以任何合理方式為前述表彰,但不得以
    任何方式暗示授權人為你或你的使用方式背書。
    非商業性 — 你不得將本素材進行商業目的之使
    用。
    相同方式分享 — 若你重混、轉換本素材,或依本
    素材建立新素材,你必須依本素材的授權條款來
    散布你的貢獻物。

    View full-size slide

  3. 3

    Raspberry Pi 官方經銷商

    專注 Raspberry Pi 應用與推廣 , 舉辦社群活動
    關於我們

    View full-size slide

  4. 4

    COSCUP
    , MakerConf, PyCon, HKOSCon 講者

    投影片

    https://speakerdeck.com/piepie_tw

    程式碼

    https://github.com/piepie-tw
    分享 x 教學

    View full-size slide

  5. 6

    什麼是 Donkey Car?

    所需硬體

    軟體架構

    使用機器學習打造自動駕駛系統

    Hack Donkey Car

    學習資源
    本次主題

    View full-size slide

  6. 7
    什麼是 Donkey Car?

    View full-size slide

  7. https://www.meetup.com/DIYRobocars/events/234581265/
    從 DIY Robocars 辦的聚會開始

    View full-size slide

  8. https://www.infoq.com/presentations/donkey-car/

    View full-size slide

  9. ML 接近人類的開車行為
    https://diyrobocars.com/2017/04/06/zero-to-autonomous/

    View full-size slide


  10. 以遙控車 (RC Car) 為載體

    在樹莓派 (Raspberry Pi) 做運算與控制

    使用 Python 開發

    根據神經網路 (Neural Network) 建立自走模型
    Donkey Car - 基於 Raspberry Pi
    與機器學習的開源自走車平台
    https://www.donkeycar.com/

    View full-size slide

  11. 目標
    https://qconsf.com/sf2017/system/files/presentation-slides/q-con_donkeycar_presentation.pdf

    View full-size slide

  12. Donkey Car 所需硬體
    HSP 原廠 RC 搖桿
    HSP 94186 1/16 有刷馬達遙控車
    杜邦線
    螺絲包
    3D 列印車架 + 把手
    魚眼相機
    2.4GHz 搖桿
    Pi 3B+
    馬達驅動板
    電源線
    專用鋰電池
    SD 卡
    轉接頭

    View full-size slide

  13. 1/16 HSP(HiSPeed) RC Car
    https://www.aliexpress.com/item/32380689708.html

    View full-size slide

  14. 動力系統架構
    https://hobbyking.com/en_us/news/brushed-brushless-electronic-speed-controllers-work
    2.4GHz 接收器
    有刷直流馬達
    電子變速器 (ESC)

    View full-size slide


  15. 將控制訊號轉為馬達用電壓 , 以控制馬達轉速
    ESC 用來控制馬達轉速 ( 油門 )
    https://synthiam.com/Community/Questions/How-to-use-Rc-esc-as-motor-controller-7045

    View full-size slide

  16. Raspberry Pi 3B+ 硬體規格與特色
    內建 WiFi 和 BT
    可接相機模組
    GPIO 控制腳位
    http://bit.ly/2IYFuP2

    View full-size slide

  17. 18
    支援超過 40 種 OS
    http://en.wikipedia.org/wiki/Raspberry_Pi

    View full-size slide

  18. 硬體架構
    image
    PWM I2C
    PWM
    ESC
    Servo
    Camera
    PCA9685
    Steering
    Throttle
    Pi 3B+

    View full-size slide

  19. 控制理論
    Take
    picture
    Get user
    input
    Get model
    prediction
    Update
    servo
    Update
    motor Save data
    Perception Planning Control
    Data
    collection

    View full-size slide

  20. 軟體架構
    Take
    picture
    Get user
    input
    Get model
    prediction
    Update
    servo
    Update
    motor
    Save data
    vehicle state
    Camera

    View full-size slide

  21. 軟體架構
    Take
    picture
    Get user
    input
    Get model
    prediction
    Update
    servo
    Update
    motor
    Save data
    vehicle state
    Browser
    Tornado

    View full-size slide

  22. 軟體架構
    Take
    picture
    Get model
    prediction
    Update
    servo
    Update
    motor
    Save data
    Neural Network
    Get user
    input
    vehicle state

    View full-size slide

  23. 軟體架構
    Take
    picture
    Get model
    prediction
    Update
    servo
    Update
    motor
    Save data
    Get user
    input
    vehicle state
    ESC
    Servo
    PWM Value PWM Value
    PWM Signal PWM Signal
    Throttle
    Steering

    View full-size slide

  24. 軟體架構
    Take
    picture
    Get model
    prediction
    Update
    servo
    Update
    motor
    Save data
    Get user
    input
    vehicle state
    {"user/angle": -0.300000004,
    "cam/image_array": "160_cam-image_array_.jpg",
    "milliseconds": 12413,
    "user/throttle": 0.2,
    "user/mode": "user"}
    .json .jpg

    View full-size slide

  25. 26
    使用機器學習打造自動駕駛系統

    View full-size slide

  26. Test Pilot
    Train Pilot
    Collect Data

    View full-size slide

  27. 建立車道

    View full-size slide


  28. 使用瀏覽器或是搖桿控制
    讓你的 Donkey Car 跑起來

    View full-size slide


  29. 左三圈 + 右三圈 , 至少 5000 張照片
    蒐集訓練資料
    http://www.sroboto.com/2017/08/donkeycar-2-install-setup-and-run.html

    View full-size slide

  30. 清理資料

    View full-size slide

  31. 用 Keras/Tensorflow 訓練自動駕駛

    View full-size slide

  32. 神經網路模型

    View full-size slide


  33. Loop: 蒐集資料 , 訓練資料 , 測試驗證步驟
    實際測試驗證

    View full-size slide

  34. 36
    Hack Donkey Car

    View full-size slide

  35. 在 Duckiebot 跑 Donkey Car
    http://duckietown.org/

    View full-size slide

  36. class Adafruit_DCMotor_Hat:
    def __init__(self, metaclass=Singleton):
    self.mh = Adafruit_MotorHAT(addr=0x60)
    self.mhM1 = self.mh.getMotor(1)
    self.mhM2 = self.mh.getMotor(2)
    def run(self, speed):
    self.motor.setSpeed(self.throttle)
    self.throttle = int(dk.utils.map_range(abs(speed), -1, 1, -255, 255))
    def set_pulse(self, pulse):
    self.pulse = pulse
    def set_speed(self, speed):
    if self.pulse > 0:
    self.mhM2.setSpeed(speed)
    elif self.pulse < 0:
    self.mhM1.setSpeed(speed)
    修改 actuator.py

    View full-size slide

  37. Donkey Car vs. Duckietown
    Donkey Car Duckietown
    專案開始 2016 年底 2015 年底
    發源地 DIY Robocars( 美國西岸 ) MIT( 美國東岸 )
    口號 小型車的開源 DIY 自駕平台 學習機器人的有趣方式
    技術核心 基於機器學習 (ML) 基於機器人視覺加控制理論
    特色 文件清楚 / 快速上手 從理論到實做 / 分支多 / 文件多
    使用者 有興趣的玩家 學校
    硬體 Pi/Jetson Nano + RC Car Pi + 雙輪直流馬達小車
    軟體 Raspbian + Python +
    Keras/Tensorflow
    Ubuntu + ROS + Python +
    OpenCV
    造價 USD$250 USD$150
    commit 數 15xx 59xx
    難度 *** *****

    View full-size slide


  38. Donkey Car 官網文件

    https://docs.donkeycar.com/

    Donkey Car 程式碼

    https://github.com/autorope/donkeycar

    Donkey Car Slack

    https://donkeycar.slack.com

    組裝教學與經驗分享

    https://medium.com/ljlstyle/tagged/autonomous-cars
    學習資源

    View full-size slide

  39. Donkey Car 車聚 (@Fablab)

    View full-size slide

  40. Donkey Car 工作坊

    View full-size slide


  41. 1. 因為驢是最早被豢養的動物

    2. 驢對小孩很安全

    3. 牠們偶而不遵循主人的命令

    4. 大家對驢子的期望不會太高
    FAQ: 為什麼取名 Donkey( 驢 )?
    https://www.donkeycar.com/faq

    View full-size slide

  42. Raspberry Pi Rocks the World
    Thanks

    View full-size slide