跳到主要內容

DroneBlocks 用手機寫程式控制空拍機 Tello


前一篇提到我買了一台Tello玩具無人機,除了練習飛控之外,還可以寫程式來控制無人機。手機上最方便的程式介面,就是DroneBlocks這個App了。而且不只Tello哦,DJI消費型的無人機幾乎都可以用DroneBlocks控制。廢話不多說,直接來說這個DroneBlocks該怎麼玩吧!

首先當然是去下載DroneBlocks這個App。無論你是Android或iOS的手機或平板,都有相對應的DroneBlocks可以下載。我的手機是iPhone,所以進到 App Store 去搜尋 DroneBlocks ,下載安裝就可以用了。Android的裝置請進到Play商店去找,很好找的。


打開DroneBlocks Apps會先出現一個空白的工作環境,先別急著用,這個工作環境是給DJI的空拍機使用的。你要做的,是按右方三條線的圖示,點選  Connect to Tello,連結Tello無人機,並切換到Tello專屬的工作環境,再過來就可以開始寫程式控制了。

點選右下 Connect to Tello 切換工作環境

DroneBlocks是積木語言,用堆疊的方式就可以把程式寫好。其中最簡單可行的程式就是「起飛」,然後「降落」。只需要把 Takeoff (起飛)積木拖到畫面中白色區域,再將 Land (降落)積木拖到 Takeoff 積木的下方接起來,就完成了。



再過來,按下右上角問號旁的 Connect to Tello,打開 Tello 的開關,進入 iOS 的設定 >> Wi-Fi ,並選擇 Tello-XXXXXX 的網路。再回到 DroneBlocks ,按下這個藍色的 Connect (連接)按鈕。


我們的經驗表示,最好還是依照這個順序來連接,比較不會有問題。還有,要是課堂上同時有多台 Tello 等著連接,它 WiFi 的 SSID 寫在機器裡面,把電池拔開就看得到了。


如果左上角的 Batt: (電池)有出現百分比的數字,表示 DroneBlocks 已經連上 Tello 了。


要是一切順利,按下右上方三條藍線的按鈕,選擇 Launch Mission (執行任務),連上的 Tello 就會原地起飛降落囉!


Mission: Box Mission 任務:繞圈

現在,我們可以來玩稍微有點難度的任務:讓 Tello 升空,繞著房間飛一圈,然後降落。

在這個任務裡面,除了 Takeoff (起飛)和 Land(降落)之外,我們會用到綠色的 Navigation (導航)積木。

我們先介紹 fly(飛行)這個系列的積木,也就是單純運用 fly 讓飛機繞一圈。
  • 向前飛: fly forward
  • 向後飛: fly backward
  • 向左飛: fly left
  • 向右飛: fly right
  • 向上飛: fly up
  • 向下飛: fly down

很明顯,這個任務不需要用到 fly up 和 fly down,只需要水平移動的四個方向而已,順序就是「起飛」⇢「向前飛100cm」⇢「向右飛100cm」⇢「向後飛100cm」⇢「向左飛100cm」⇢「降落」。要注意的是,向前後左右飛行的時候要指定距離,可以用英尺(in),或者我們比較習慣的公分(cm)去指定。


實際 Launch Mission(執行任務)之前,一定要確定你的飛行場地夠大,要不然 Tello 絕對會撞上某些東西墜機。運氣不好的話,還會有人被螺旋槳打到受傷。

都沒問題的話,就執行任務讓Tello飛一圈吧!


Upgrade Box Mission: Yawing 任務升級:轉向

再過來我們要把任務稍微升級一點點,繞行的時候要讓機頭(有鏡頭的那邊)總是朝向前面飛。也就是說,往右飛之前,得先讓機頭向右轉90度,然後再往前飛。而且飛回來的時候,機頭要朝向原本出發的方向。

這時候我們又要介紹另一組 Yaw(轉向)系列的積木了:

  • 向右轉90度: yaw right 90 degrees
  • 向左轉90度: yaw left 90 degrees

改寫過的任務會變成這個樣子:「起飛」⇢「向前飛100cm」⇢「向右轉90度」⇢「向前飛100cm」⇢「向右轉90度」⇢「向前飛100cm」⇢「向右轉90度」⇢「向前飛100cm」⇢「向右轉90度」⇢「降落」。


沒問題的話,按下 Launch Mission 看看 Tello 是不是照個我們規劃的方式飛行吧!



Rewrite Mission: Loops 改寫任務:迴圈

上一個任務中,你會發現程式不斷在寫 fly forward 和 yaw right,總共重複了4次。所有的程式語言中都有迴圈(loops)的語法,可以用簡單的寫法讓動作重複。簡單的說,fly forward 和 yaw right 只要講一次,告訴程式說這套動作要重複4次就行了。

這個地方就必須用到土黃色的 Loops(迴圈)積木。這個積木裡面有 repeat(重複)多少次的選項,然後在 do(執行)的區塊中塞入要重複的動作。改寫過的程式就像下圖那樣:


改好後按下 Launch Mission,Tello同樣繞了一圈,但是程式碼卻變短了。


這大概就是寫程式樂趣之一,把同樣的動作用更簡潔的方法寫出來。要是你已經買了 Tello,現在就開始你的飛行任務吧!

除了手機的 DroneBlocks 之外,接下來我們會從電腦來下任務,請各位拭目以待吧!

留言

熱門文章

差不多食譜實驗:小烤箱烤長茄子? Oven-roasted Long Aubergine?

發佈了「 差不多食譜:小烤箱烤茄子 Oven-roasted Aubergine 」之後,有位朋友在YouTube上留言問說,這個方法也可以用在市場上比較常看到的那種長茄子嗎?當時我只能回答不知道,因為沒試過。現在我有答案了!結果是一半一半!

差不多食譜:香煎南瓜片 Pan-fried Pumpkin

托爺爺的福,在萬聖節那碗「 南瓜盅飯 」後,我還有個老家的南瓜可以用。但要怎麼好好運用這顆南瓜,卻是個不小問題。差不多食譜曾經試過「 醋漬南瓜 」、「 牛奶南瓜 」,還有「 南瓜濃湯 」幾種運用新鮮南瓜的料理,難度雖然都不高,看起來卻都不像平時會出現在餐桌的家常菜。這次我們不妨搞得家常一點,用廚房裡都會有菜刀和煎鍋 (除非你家不開伙) ,來弄個超級家常的「香煎南瓜片」。

上車睡覺、下車尿尿

台灣人對於旅遊的形容,往往是「上車睡覺、下車尿尿」。這是因為行程被極度壓縮,試圖要在最短的時間裡面看最多的東西,於是每個景點都只是蜻蜓點水般匆匆帶過,停留的時間往往等同於排隊上廁所的時間。 這個紫南宮的行程已在「人山人海的紫南宮」當中提到過,只是當初沒寫到為什麼要去參觀紫南宮。事實上,紫南宮最富盛名的是可以借錢的土地公。然而,這點對我們家人而言一點吸引力都沒有,反倒是那號稱七星級的廁所,才是吸引我們前往參拜的重點。或許你會說:「有沒有搞錯,開一個鐘頭的車去上廁所!」沒錯,行程就是這麼規劃的。 在過年期間要到紫南宮上廁所還不是件容易的事。首先,你必須先開車到紫南宮,這大概是最容易的部份。接著,你就得面臨搶停車位窘境。 過年期間,不論哪個景點都是人山人海,免費停車位更是難找。紫南宮雖然提供一大片停車場,在過年期間卻也不敷使用,每台進入停車場的車都虎視眈眈,只要哪邊出現一個車位,起碼就有四、五台車等著。 好不容易停好車,接下來就得穿越那群要去借錢、還錢、拜拜的人群。在那個地方,怎麼前進的都不知道,反正總會有人把你向前推進。 好不容易到達造價上億的廁所,人山人海的盛況依舊。還好這群並非全部都來上廁所,要不然廁所早就被塞爆了。聽老爸老媽說,上次他們來的時候廁所裡面都沒人,還可以在裡面拍照、欣賞噴水。但這次裡面卻塞了不少人,我也不好意思拿著那麼大的一台相機拍人家上廁所的模樣,只能拍拍外觀。 由於是在盛產竹筍的竹山鎮,廁所的外觀也用竹筍作為造型,每個竹筍下方都是一間造價昂貴的廁所。一個令我覺得很貼心的設計在於,廁所不僅僅只是男廁/女廁,還有一個殘障廁所,方便行動不便的人。 雖然招牌寫著「金筍迎客」,但是看起來那個筍子明明就是不鏽鋼的,除非把它理解成金屬。我還特地爬上廁所的樓頂,想說能不能看到些什麼特別的風景。可是過年期間,看到的除了人群還是人群。 上完廁所後,簡單徒手祭拜了提供廁所的土地公,我們又再次穿越那重重的人群。不過,我還是偷偷跑去滾了一下那個象徵「財源滾滾」的金元寶。最後,又踏上那個停車戰場,從容地離去。 我不奢望有賺大錢的機會,只要生活能過得去,偶爾還能買些奢侈品犒賞自己就夠了。不過這個願望似乎也不簡單!