哈希技術部落格


Slider

使用python模組控制Tello無人機

在前面的文章中,我們分享了可以使用Scratch控制Tello無人機。但如果想要更多進階功能(例如拍照、錄影…等等),還是需要透過python控制。

今天,我們會介紹如何使用python控制Tello無人機,以及四軸飛行器運作的原理哦!

認識Python控制Tello的指令

Tello原廠有開放python控制的SDK,也可以在GitHub上找到使用範例

Tello透過WIFI與電腦連結,因此傳送指令是透過UDP socket,對於初學Python的孩子來說過於複雜,容易照著老師的程式再寫一遍而已,無法了解程式的含義。
但Python的特性之一便是擁有許多第三方的模組可以使用,因此我們推薦使用模組控制Tello無人機

使用Python模組-easytello

Python有許多控制Tello的模組,而其中語法最容易的,就是easytello。詳細內容可以參考pypi easytello

因為是第三方模組,因此在使用前,需要在終端機透過pip安裝easytello模組
程式碼:
pip install easytello

接下來透過電腦裡的WIF,選擇I連接Tello無人機,連接之後使用以下程式,讓Tello往前飛並旋轉吧!
程式碼:
from easytello import tello

myTello = tello.Tello()
myTello.takeoff() #起飛
myTello.forward(10) #前進
myTello.cw(90) #旋轉
myTello.land() #降落

指令名稱與原廠SKD相符,透過easytello模組,小朋友不需要編寫繁瑣的UDP socket連結指令,也可以體驗到透過python控制Tello的樂趣哦。

除了飛行以外,也可以透過python控制Tello上的相機哦。
要控制Tello上的相機,需要安裝Python常見的影像處理模組opencv。
程式碼:
pip install opencv-python

接下來,就可以開啟影像串流囉
程式碼:

from easytello import tello

myTello = tello.Tello()
myTello.takeoff() #起飛
myTello.streamon() #開啟影像串流
myTello.land() #降落
myTello.streamoff() #關閉影像串流

延伸學習

除了控制Tello無人機以外,也可以與孩子介紹飛行器如何透過四組螺旋槳運作。

圖片來源:kitsprout部落格

如上圖,我們可以發現,螺旋槳兩兩一組,對角的轉向剛好相反。
這樣的安排可以彼此抵銷旋轉上產生的力矩,達成原地懸浮的效果。
因此當同時增加、減少四個螺旋槳的推力,即可產生上升、下降的效果。

接下來,就是如何讓飛行器前後左右移動以及旋轉。
同時增加、減少相鄰的兩個螺旋槳的推力,即可產生前後左右飛行的效果。
若同時增加或減少對角旋翼的推力時,則可以做出順逆時針旋轉的效果。
而任何的飛行效果皆由上升、下降、前後左右、順逆時針旋轉的基本動作搭配組合而成的哦。

發佈留言

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