Slide 1

Slide 1 text

Duckiedrone - 基於 Raspberry Pi 與 Python 的小型無人機專案介紹 台灣樹莓派 2024/09/21 @PyCon Taiwan 2024

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

3 ● Raspberry Pi 官方經銷商 ● 專注 Raspberry Pi 應用與推廣 , 舉辦社群活動 關於我們

Slide 4

Slide 4 text

● Drone 不是玩具 ● 規格 : 注意電池 ,ESC, 馬達的電壓電流限制 ● 焊接 : 接通電源後切勿觸摸烙鐵的金屬部分 ● 電池 : 切勿在無人看管時對鋰電池 (LiPo) 充電 ● 飛行 : 切勿在限飛區或是人多的地方飛行 安全第一

Slide 5

Slide 5 text

Duckietown Project - From MIT http://duckietown.org/

Slide 6

Slide 6 text

一個開源的電腦視覺自駕車學習專案 http://duckietown.mit.edu/materials.html

Slide 7

Slide 7 text

● 2016 麻省理工大學 > Duckietown class ● 2016 國立交通大學 > Autonomous Vehicle ● 2017 蘇黎世聯邦理工學院 > Autonomous Mobility on Demand History http://bit.ly/2L8P53a

Slide 8

Slide 8 text

● ~250 個大學 , ~150 間公司 , 分佈在 68 個國家 誰在用 Duckietown 專案? https://duckietown.com/

Slide 9

Slide 9 text

● 感測器校正 , 設定與感知 ● 計算機視覺 ● 物體辨識 ● 非線性估計 ● 全域定位 ● 分散式協調 我們可從 Duckietown 中學到

Slide 10

Slide 10 text

● 架設 Duckiebot 平台和 Duckietown 環境 ● 機器人體系 (ROS) 建立 ● 功能模組的實現與擴充 ● 單系統機器人車道跟隨 (lane following) ● 單系統機器人定位 (localization), 規劃 (planning) 和導航 (navigation) ● 多系統機器人交換訊息和協調 ● 系統層級的資源管理 並實際操作

Slide 11

Slide 11 text

Duckietown 教育架構 https://www.youtube.com/watch?v=8LJ06w_1xHo

Slide 12

Slide 12 text

12 Duckietown Sky 計劃

Slide 13

Slide 13 text

Duckiedrone v1 (2019) https://www.youtube.com/watch?v=8LJ06w_1xHo

Slide 14

Slide 14 text

● 以 Pi 3B 為核心的低價飛行器 ($279) ● 所有的運算 (Python + ROS) 都在 Pi 3B 上 ● PID 速度 / 高度 / 位置控制 ● UKF 狀態估計 (State Estimation) ● 定位 (Localization) 和 SLAM 由三方合作 Duckietown 生產製造 Brown 大學 Prof. Tellex 教學 Amazon Robotics 贊助

Slide 15

Slide 15 text

Duckiedrone v2 (2021) https://www.linkedin.com/products/duckietown-duckiedrone/

Slide 16

Slide 16 text

● 機身 (frame), 整體設計 (design), 核心運算主板 ● 軟體架構更適合重複的實驗 ● 更詳細的文件 ● 包含所有需要的材料 ( 但需要焊接 ) ● 升級後的價格 $369 包含 Pi 3B+ ● 尺寸 :30x35cm ● 重量 :800g 改進和升級

Slide 17

Slide 17 text

● 感測器 ● 相機 (Camera) ● 飛時測距 (ToF) ● 飛控板 IMU ● 驅動器 ● 4x 無刷直流馬達 ● 4x 電子變速器 ● 電源 ● PDB + UBEC (5V 3A) ● 1500mAH, 11.1V, 16.65Wh battery Duckiedrone (DD21) 硬體

Slide 18

Slide 18 text

● 飛控板 ● SP Racing F3 – Cleanflight v3 韌體 – Pre-config setting file ● 核心運算板 ● Raspberry Pi 3B+ ● 4x ESC Duckiedrone (DD21) 硬體

Slide 19

Slide 19 text

Drone 硬體架構 https://www.researchgate.net/figure/UAV-hardware-components-Picture-reprinted-from-https-www_fig1_348252556 飛控 Flight Controller

Slide 20

Slide 20 text

● Accelerometer 加速度計測量速度變化 ( 加速度 ) ● Gyroscope 陀螺儀測量角度變化率 ( 角速度 ) ● 以三個旋轉矩陣 (Roll, Yaw, Pitch) 描述姿態 IMU 估計姿態 X 軸 Y 軸 Z 軸

Slide 21

Slide 21 text

● 根據飛行時間 (Time of Flight) 計算距離 ● 使用 VL53L0 dToF 量測和地面的高度差 ToF 測距 https://reurl.cc/7dEpl5

Slide 22

Slide 22 text

● Bang-Bang Control 無法逼近目標 ● 使用 PID 輸出 u(t) 快速收斂 PID 移動策略 https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=9013

Slide 23

Slide 23 text

23 這麼多複雜的運算 , 該如何處理?

Slide 24

Slide 24 text

一個機器人需要多少感測器? http://site.robotclub.com.my/main/3150/index.asp?pageid=71406

Slide 25

Slide 25 text

測距、加 ( 角 ) 速度、電子羅盤、陀螺儀等 http://site.robotclub.com.my/main/3150/index.asp?pageid=71406

Slide 26

Slide 26 text

26 Robot Operating System (ROS)

Slide 27

Slide 27 text

● 專為機器人軟體開發所設計的框架 ● 訊息管道 + 組態工具 + 機器人功能 + 生態系統 ● 支援 Python, C++, Lisp ROS 是什麼? https://answers.ros.org/question/12230/what-is-ros-exactly-middleware-framework-operating-system/

Slide 28

Slide 28 text

ROS 架構 https://zhuanlan.zhihu.com/p/31982243

Slide 29

Slide 29 text

TCP/IP 通訊 https://answers.ros.org/question/12230/what-is-ros-exactly-middleware-framework-operating-system/

Slide 30

Slide 30 text

模擬和視覺化工具 https://wiki.cpr-robots.com/index.php/CPR_Wiki

Slide 31

Slide 31 text

● 提供基礎資料型別和各類矩陣運算函式 ● 多種科學計算模組 , 例如線性代數 , 微積分 , 濾波等 ● 豐富的電腦視覺函式庫 ● 互動式的編輯環境 ● 深度學習套件 支援 Python

Slide 32

Slide 32 text

● 信用卡大小般的電腦 Raspberry Pi 是什麼 ? http://www.flickr.com/photos/fotero/7697063016/

Slide 33

Slide 33 text

David Braben Eben Upton Robert Mullins Alan Mycroft Pete Lomas Jack Lang Liz

Slide 34

Slide 34 text

● Raspberrypi.org 基金會所設計開發 ● 公開的 datasheet & 線路圖 & 原始碼 ● 以低價硬體 & 自由軟體刺激電腦科學教育 ● 最初由 Element14/RS Components 製造銷售 Raspberry Pi 是

Slide 35

Slide 35 text

Raspberry Pi Family https://infosec.exchange/@slh/102368284825610438 最早量產 最穩定 供貨量最充足

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

Duckiedrone 系統堆疊 3

Slide 38

Slide 38 text

經過幾小時的焊接和組裝

Slide 39

Slide 39 text

先水平校正 /ESC 校正 / 設定 PID

Slide 40

Slide 40 text

Duckiedrone 準備起飛

Slide 41

Slide 41 text

三大難題

Slide 42

Slide 42 text

● 狀態估計演算法 , 常用在感測器融合 Kalman Filtering 估計狀態

Slide 43

Slide 43 text

● 根據預先給的地圖使用 ORB 特檢測器找出影像中 的特徵點用於同步定位與地圖構建 (SLAM) Localization 進行定位 https://www.kudan.io/blog/lidar-simultaneous-localization-mapping-an-introduction/

Slide 44

Slide 44 text

Duckiedrone 軟體控制架構 https://arxiv.org/pdf/1910.03516

Slide 45

Slide 45 text

Duckiedrone 十個會用到的範例

Slide 46

Slide 46 text

儀表板提供資訊和控制

Slide 47

Slide 47 text

Code Editor 線上開發 (VSCode)

Slide 48

Slide 48 text

完整的組裝和操作文件

Slide 49

Slide 49 text

49 DEMO

Slide 50

Slide 50 text

注意安全

Slide 51

Slide 51 text

● DuckieDrone 計畫簡介 ● https://hubs.ly/Q027dmD_0 ● Duckiedrone 操作手冊 ● https://reurl.cc/myrLj9 ● Duckiedrone 課程 ● https://reurl.cc/pvrgjZ ● Duckiesky Documentation ● https://ethidsc.atlassian.net/wiki/spaces/ DTSKY/overview 教學資源

Slide 52

Slide 52 text

52 最新消息

Slide 53

Slide 53 text

Duckiedrone v3(DD24) https://www.linkedin.com/products/duckietown-duckiedrone/

Slide 54

Slide 54 text

● 飛控升級 SpeedyBee F405, 用 Betaflight 韌體 ● 使用 Pi4/4GB, 搭配 ROS2 有更高的擴充性 ● 5 個 ToF 和 1 個 IMU, 可更精準定位 ● 電池升級到 4S, 有更好的續航力 ● 機身設計可在室內使用 ● 升級後的價格 $429 ● 尺寸 :31x28cm DD24 改進和升級 31cm 28cm

Slide 55

Slide 55 text

55 Raspberry Pi Rocks the World Thanks

Slide 56

Slide 56 text

ROS1 和 ROS2 比較 https://reurl.cc/myk3dj