雖然 Tello 原廠已經提供了一個功能完整的 App,但是身為玩家以及堅守學習教育的理念,當然也不能放過使用 App Inventor 2 (後簡稱 AI2) 來跟 Tello 做些親密接觸。在這篇文章中,我將展示如何在 AI2 裡控制 Tello。為了便於說明,我會省略掉有關 AI2 的操作介紹。如果您沒有使用過 AI2,請先了解一些基本相關操作再往下閱讀。此外,在這個範例中我使用按鈕來進行控制。有興趣的讀者,可以試著發揮想像,改用手勢、甚至是語音來進行控制,一定會比這個範例更加有趣。

安裝 App Inventor 2 的 UDP 功能

利用 Micro:bit 控制 Tello 空拍機 這篇文章中,我們利用了 Python 的 tello 控制物件來對 Tello 空拍機進行控制。但是在手機的環境下要運行 Python,可就不是那麼容易了。幸好 Python 程式的好處就是可以直接看到原始碼,所以我們可以發現其實 tello 控制物件就是利用 UDP 的方式將文字形式的指令送給 Tello。換句話說,我們的程式只要能夠直接送出包含正確指令的 UDP 封包,就可以擺脫這個 tello 控制物件。

雖然 AI2 功能眾多,但是並沒有內建 UDP 功能,所以我們必須透過以下的方式才能在我們的 AI2 專案中使用 UDP 的功能。

  1. 前往這裡下載 UDP Client 功能延伸外掛。當中有兩個下載檔案,請記得選擇大小為 9,4K 的那個檔案,而且必須先註冊才能下載檔案。

    Download AI2 UDP Client Extension

    Download AI2 UDP Client Extension

  2. 開啟新的 AI2 專案。
  3. 點開左方選單最下方的 Extension 選項。

    AI2 延伸功能選項

    AI2 延伸功能選項

  4. 點選 “Import extension” 連結。

    AI2 延伸功能匯入連結

    AI2 延伸功能匯入連結

  5. 點選 “選擇檔案”,找到我們剛剛所下載的延伸外掛檔。

    AI2 選擇匯入外掛檔案

    AI2 選擇匯入外掛檔案

  6. 選取正確檔案後,可以看到檔名出現在畫面中間,此時按下 “Import” 即可進行匯入。

    AI2 外掛檔案選取完畢

    AI2 外掛檔案選取完畢

  7. 跟所有元件一樣,我們必須先把 ClientUDP 這個元件拉到中間的 “畫面編排區” 才可以使用相關功能。

    AI2 延伸功能匯入完畢

    AI2 延伸功能匯入完畢

  8. 加入後,我們可以考慮替這個元件取一個像樣點的名字,像是 TelloUDP。
  9. 切換到 “程式設計區” 後,就可以看到這個元件的功能積木,包含傳送 (Send) 與收到訊息 (received) 兩個積木。

    AI2 UDP Client 功能積木

    AI2 UDP Client 功能積木

範例程式

接下來,我們就用一個實際的範例 (此範例檔案可在此下載) 來看看如何利用剛剛匯入的 UDP 功能來控制 Tello 空拍機。

程式第一部分 變數宣告

程式一開始我宣告了四個變數,其中 tello_port、tello_ip 跟 udp_timeout 都是用來連結 Tello 的參數。而 command_status 則用來儲存控制命令的回傳結果。

AI2 Tello 控制程式 - 第一部分

AI2 Tello 控制程式 – 第一部分

程式第二部分 定義自定程序

程式中定義了 send_command 程序,功能很簡單,只是把指令透過 UDP 的方式傳遞給 Tello,並將命令顯示在畫面上。另外定義了一段指令,是當接受到 Tello 的回傳結果時將內容顯示在畫面上。

AI2 Tello 控制程式 - 第二部分

AI2 Tello 控制程式 – 第二部分

程式第三部分 輸入按鈕與功能對應

最後,我們將畫面上每個按鈕所代表的功能轉成 Tello 所需的文字命令,並透過 send_command 這個自訂程序加以傳送。舉例來說,當我們按下 “右轉” 時程式就必須送出 “cw 30” 這個指令給 Tello,表示順時鐘旋轉 30 度。

AI2 Tello 控制程式 - 第三部分

AI2 Tello 控制程式 – 第三部分

程式完成後,我們就可以利用掃描 QR Code 或直接下載的方式來安裝這個範例 App。

連結 Tello

  1. 開啟 Tello。
  2. 將手機的 WiFi 連線連結至 Tello。你看到的 WiFi 名稱應與畫面上有所不同,因此只要找尋 TELLO 開頭的 WiFi 名稱即可。

    手機連結 Tello WiFi

    手機連結 Tello WiFi

  3. 開啟安裝的範例程式。在我們實際對 Tello 開始進行控制前,必須先按下 “連線” 這個按鈕。此時會送出 “command” 這個指令,而當 Tello 回覆 OK 後,程式接下來才可以利用其他指令來控制 Tello 的動作。
    AI2 Tello 控制器畫面

    AI2 Tello 控制器畫面

    透過這個簡單的範例程式,我們看到了如何利用 AI2 的 UDP Client 延伸功能來進行對 Tello 的控制。因為跟之前 python 控制物件使用同樣的方式與 Tello 進行互動,所以一樣沒有辦法看到鏡頭的畫面,不過倒是可以取得電池電量 (使用文字命令 “battery?”) 等資訊。此範例僅著重在介紹 AI2 如何與 Tello 互動,至於其他功能,就先留待給各位慢慢想像與發揮了。

Facebook 留言
Print Friendly, PDF & Email
Summary
使用 App Inventor 2 控制 Tello 之 POC 範例
Article Name
使用 App Inventor 2 控制 Tello 之 POC 範例
Description
在這篇文章中,我將展示如何在 App Inventor 2 裡控制 Tello。為了便於說明,我會省略掉有關 App Inventor 2 的操作介紹。如果您沒有使用過 App Inventor 2,請先了解一些基本相關操作再往下閱讀。此外,在這個範例中我使用按鈕來進行控制。有興趣的讀者,可以試著發揮想像,改用手勢、甚至是語音來進行控制,一定會比這個範例更加有趣。
Author
Publisher Name
Everlearn Studio
Publisher Logo