Paragraphs are comprised of sentences, but not random sentences. A paragraph is a group of sentences organized around a central topic.

codrone mini_Python_Junior part1(飛行事件、飛行指南)

Python_Junior_1A_Flight Events飛行事件

Step 1:

Hello, World
現在是時候編寫您第一個Python程式吧! 這個程式將使用 print () 函數。
您會透過程式把字顯示在屏幕上,而不是用墨水和紙來打印(print)出來。這函數非常適合用於記錄變數值和搜尋程式碼中的錯誤!

請新增一個新的Python檔案,命名為helloworld.py,並輸入以下這行程式碼:

print("Hello, world!")


任何被輸出的程式碼都會出現在控制台視窗中。這個視窗畫面將顯示在螢幕的底部。

Pycharm console window
自 1970 年代以來,“Hello World”程式一直用於向初學者介紹新編程語言。

 歡迎使用 Python!

 

Step 2:

註解

當電腦忽略您想為自己或他人留的備忘錄及評論時,註解是一個好功能,可以用於補充說明。若要在程式碼旁加註一些筆記(單行註解),方法是以井字號(#)其始,或是您想寫較長的註釋(多行註解),請把程式碼用兩組連續三個雙引號(”””)或兩組連續三撇號來(’’’)括在其中。
請嘗試以下程式碼吧!

# print("The computer is ignoring this")
print("The computer is printing this!")

'''
This is a longer comment that the computer will not read:
Robots 
Play
Yellow
Trombones
'''

 

Step 3:

Pairing and printing

配對及字樣輸出

現在,您將要把print statements 和 CoDrone Mini銜接起來!
請開啟新檔案takeoff.py
首先,您將需要持續匯入CoDrone_mini 資料庫。
您可以把資料庫想像成一本食譜,您的程式需要它來編程您的無人機!
在資料庫中,您將會使用各種各樣的函數,或者說是 “配方”。
您之後將會學習更多函數。

import CoDrone_mini

在您匯入資料庫後,您需要建立一個無人機物件。
你將在Python進階課程中學習物件和類別的課程。

drone = CoDrone_mini.CoDrone()

現在,您需要將您的無人機與以下的指令配對。

drone.pair()

配對函數會自動找到您的遙控器。

如果您在設定CDM與Blocky時,配對清單中的端口到配對函數中遇到難題

以下是Mac埠的例子:

drone.pair("/dev/tty.usbserial-14530")

最後,請在您的程式碼中插入一些獨特的print statement來練習吧!

import CoDrone_mini
print("Creating drone object")
drone = CoDrone_mini.CoDrone()
print("Getting ready to pair")
drone.pair()
print("Paired!")

現在您可以執行您的程式碼了。
當您配對後,您的遙控器的LED燈會閃爍紅色,而您的CoDrone Mini的LED燈會恆亮紅色。

 

Step 4:

起飛

對於此程式碼,請確保您的CoDrone Mini遠離地板上的障礙物。

請插入以下指令以確保您的無人機起飛和懸停。可選擇包含print敘述式!

drone.takeoff()
print("taking off")

接著,請對你的無人機進行編程,使其在空中盤旋更長時間。您還記得在寫print敘述式時,您把一個短語放在圓括號嗎?圓括號之間的值被稱為參數(parameter),它提供了一個函數運行時可能需要的任何數據。print()函數接受一個字串(string)為參數。drone.hover()函數參數是以時間單位秒來使CoDrone Mini在空中盤旋。雖然我們已把時間設定為三秒,但是您還是可更改設定並使用小數值。

drone.hover(3)
print("Hovering")

Step 5:

降落
無人機的降落方式有兩種。
方法一是使用drone.land()指令,這指令會使您的CoDrone Mini輕輕地降落在地面上。

drone.land()

方法二是使用drone.emergency_stop()指令。這指令將立即關閉所有電機,並使您的CoDrone Mini墜落到地面。在理想狀況下,我們建議第二種方法只用於緊急狀況下,您可設定鍵盤空格鍵為被擊中時充當緊急停止功能。

您可以試試以下的程式碼來看看它會是怎麼運作的。

drone.emergency_stop()

請擇一選擇降落在地面或是緊急停止。最後,請插入降落及print函式。 

print("landing")

 

Step 6:

最後的程式碼

您的最終程式結果會如下所示:

import CoDrone_mini
print("Creating drone object")
drone = CoDrone_mini.CoDrone()
print("Getting ready to pair")
drone.pair()
print("Paired!")
drone.takeoff()
print("taking off")
drone.hover(3)
print("Hovering")
drone.land()
print("landing")

 

Step 7:

配平(Trim)

在有氣流、電池電量不足或無人機墜落次數過多的情況下,無人機並不會是一直飛行在一條完美的直線上。如果您注意到無人機在漂移,您可以使用程式開端功能(在配對下面)來固定它的滾動,即它的側向移動或俯仰,或則是往前和往後移動。例如,當您的無人機往右漂移時,您可以將滾動,或其側向移動,設置為一個負數。以下為該設定後將呈現的樣子:

set_trim(-5, 0)

即使在關機後,配平(Trim)將仍將保持儲存,直到您在程式中更改配平(Trim)或用遙控器重置。

注意:如果您在起飛前設置配平(Trim),一定要在takeoff()前加一個time.sleep()。否則,起飛功能可能會被省略。

這將會是您程式在使用配平函數後的樣子:

import CoDrone_mini

drone = CoDrone_mini.CoDrone()
drone.pair()

drone.set_trim(-1, 0). # example: drone is drifting right, so trim to roll left a little bit

time.sleep(1)       # Add a time.sleep(1) before takeoff if you're planning to set the trim before takeoff
drone.takeoff()
drone.hover(3)
drone.land()
drone.close()

 

Step 8:

挑戰

挑戰:CoDrone 俯仰

請試著輸入一組程式碼,讓您的 CoDrone Mini 起飛及降落連續5次!
目前,您的 CoDrone Mini 可以用您的程式碼做一組鏡頭俯仰(pushups)。

規則如下:

  1. CoDrone Mini 起飛時必須完全遠離地面。
  2. CoDrone Mini 降落時必須完全著路。
  3. 無要求CoDrone Mini的飛行高度。

看看誰能讓CoDrone Mini 在10內完成最多的鏡頭俯仰(pushups)!

 

Python_Junior_1B_Flight Directions飛行指南

Step 1:

橫滾(Roll)、俯仰(Pitch)、偏擺(Yaw)、油門(Throttle)

飛行器的移動方式與陸地車輛的移動方式有些不同。陸地車輛可以往前、往後,有時還可以往左右傾斜,同樣地飛行器不僅有以上這些動作,也可以往上、往下移動。

為了掌握CoDrone Mini 在三維空間移動,您可以使用以下術語:

橫滾(Roll)控制 CoDrone Mini 的橫軸平衡、左右傾斜或測滾。

滾將使 CoDrone Mini 往右傾斜,負滾將使無人機往左傾斜。

drone.set_roll(power) # power represents power out of 100% # power can be between -100 and 100

CoDrone Mini roll diagram

俯仰(Pitch)是使CoDrone Mini 往前或往後傾斜。

正俯仰將使CoDrone Mini 傾斜並往前移動,負俯仰將使CoDrone Mini 傾斜和往後移動。

drone.set_pitch(power) # power represents power out of 100%                          

                       # power can be between -100 and 100
CoDrone Mini pitch diagram

偏擺(Yaw)是使CoDrone Mini左右旋轉。

正偏擺將使CoDrone Mini向右轉,負偏擺將使CoDrone Mini向左轉。

drone.set_yaw(power) # power represents power out of 100%                        

                     # power can be between -100 and 100
CoDrone Mini yaw diagram

油門(Throttle)控制 CoDrone Mini垂直上下移動。

正油門將使CoDrone Mini飛得更高,負油門將使CoDrone Mini飛得更低。

drone.set_throttle(power) # power represents power out of 100%                             

                          # power can be between -100 and 100
CoDrone Mini throttle diagram

謹慎使用偏擺(Yaw)和橫滾(Roll)。偏擺(Yaw)將使CoDrone Mini左轉或右轉,而橫滾(Roll)將使CoDrone Mini左傾斜或右傾斜。

 

Step 2:

盲人無人機

學習新單詞的最好方法之一就是做中學習,因此你不只得記住所有的飛行動作,你也要舉辦一場障礙賽!請邀請一位朋友坐在椅子上,然後蒙上他的眼睛(或者只是讓他閉上眼睛)。接著,請您嘗試僅使用飛行動作的單詞指引他繞過障礙物,並讓他在終點坐在椅子上。請確保無任何危險物品在其身旁!

 

 

  • 正油門:站立
  • 負油門:坐下
  • 正俯仰:往前
  • 負俯仰:往後
  • 正偏擺:右轉
  • 負偏擺:左轉
  • 滾:往右
  • 滾:往左

舉例來說,如果您想讓您的朋友往前行,您可以說:“正俯仰 兩步。” 這樣您的朋友將知道您是希望他往前邁進兩步。一旦您的朋友完成通過障礙賽,請交換角色並讓他為你指引方向。

 

Step 3:

使用飛行指令

挑戰一:讓CoDrone Mini 起飛,往前,之後左轉,再降落。首先,請匯入CoDrone Mini資料庫和配對無人機:

import CoDrone_mini

drone = CoDrone_mini.CoDrone()

drone.pair()

下一個步驟,請插入起飛和俯仰!

drone.takeoff()       # takeoff for 2 seconds

drone.set_pitch(30)    # Set positive pitch to 30% power

drone.move(2)         # forward for 2 seconds

想知道為什麼一個飛行動作需要兩行程式碼嗎?drone.set_pitch() 將設定CoDrone Mini 往某個方向和速度移動,而drone.move()將設定CoDrone Mini 在空中移動的時間,括弧內的數字顯示為秒數。您的程式碼將不會在move()指令下運作。

 

Step 4:

重置飛行指令

下一個步驟,請插入偏擺和降落:

drone.set_pitch(0)    # Resets pitch to 0 before yaw
drone.set_yaw(-50)    # Set negative yaw to 30% power 
drone.move(2)         # turn left for 2 seconds 
drone.land()          # lands the CoDrone
drone.close()         # disconnects CoDrone

想知道為什麼俯仰(Pitch)會重置為0嗎?

一旦您設置了飛行動作,它就會持續性使用已設定的值用於程式中,除非您把它重新設置為0。如果不是這樣的話,無人機會同時往前移動和往左轉。由於挑戰一是要讓CoDrone Mini 往前後左轉, 所以重置俯仰為0有助於讓無人機分別完成兩個飛行動作。

 

Step 5:

同時使用多個飛行指令

最後的步驟為單獨執行每個飛行路線。您或許看到CoDrone Mini直線上升,往前飛,再向左轉後降落。然而,您也可以讓CoDrone Mini  同時飛行多個方向。

請問你會結合哪兩個指令來執行以下的飛行模式(從鳥瞰圖上看)?

diagonal drone flight
如果您猜到正俯仰和負滾,那是正確的!

如果您想讓無人機以同樣的方式向前和向側面飛行,請讓橫滾和俯仰使用相同的數值。

以下是解決方案的例子。

請試著只調整一或兩個數字以觀察飛行變化。

import CoDrone_mini
drone = CoDrone_mini.CoDrone()
drone.pair()
 
drone.takeoff()       # takeoff for 2 seconds
drone.set_pitch(30)    # Set positive pitch to 30% power
drone.set_roll(-30)    # Set negative roll to 30% power   
drone.move(2)         # forward and left for 2 seconds
drone.land()          # lands the CoDrone

 

Step 6:

drone.go()

如果您覺很難記住所有的飛行方向,請嘗試使用drone.go()代替。

以下是該程式將呈現的樣子:

drone.go(direction, duration, power)

以下是每個部分的定義:

  • 方向:無人機飛行方向。您可以FORWARD(往前)、BACKWARD(往後)、LEFT(往左)、RIGHT(往右)、UP(往上)和DOWN(往下),但請確保您以英文大寫字母輸入。 此外,請記得輸入“Direction”此單字在飛行方向前。
  • 持續期間:運作多長時間,以秒為單位。
    您可以將其留空白,0或任何數字。
    如果持續期間設為0,它將持續性運作。
    如果持續期間沒填寫任何數字,則會自動設置為1。
    如果您輸入任何正數,持續期間則會等於該值。
  • 功率:無人機的速度。它可以是0-199之間的任何數字,0為無動力,100為全動力。如果功率沒填寫任何數字,則默認為50。

以下有一些例子:

drone.go(Direction.UP, 3, 75) # go up for 3 seconds at 75% power

drone.go(Direction.FORWARD)   # go forward for 1 second at 50% power

drone.go(Direction.LEFT, 6)   # go left for 6 seconds at 50% power

如果您想在程式中使用drone.go(),請在上方列入這個程式,並在右下方import CoDrone_mini:

from CoDrone_mini import Direction

在這之後,您以完成了!請嘗試使用drone.go()以不同形式飛行。

 

Step 7:

編程一個正方形的飛行路線

請使用您近期學習的CoDrone Mini 飛行指南,使CoDrone Mini呈正方形飛行 。您可以使用drone.set()和drone.move()或drone.go().

溫馨提醒,如果您是使用俯仰和滾的設置,請記得吧數值重置為0,以避免無人機往對角線飛行

請看看以下的圖表,再想想您的程式碼將是什麼樣子。

flying square pattern cdm
例子一:

import CoDrone_mini

drone = CoDrone_mini.CoDrone()

drone.pair()


drone.takeoff()           # takeoff for 2 seconds
drone.hover(3)            # hover for 3 seconds


drone.set_pitch(30)       # set positive pitch at 30% power
drone.move(2)             # forward for 2 seconds


drone.set_pitch(0)        # reset pitch
drone.set_roll(-30)       # set negative roll at 30% power
drone.move(2)             # left for 2 seconds


drone.set_roll(0)         # reset roll
drone.set_pitch(-30)      # set negative pitch at 30% power
drone.move(2)             # backward for 2 seconds


drone.set_pitch(0)        # reset pitch
drone.set_roll(30)        # set positive roll at 30% power
drone.move(2)             # right for 2 seconds

drone.land()              # lands the CoDrone

例子二:

import CoDrone_mini

from CoDrone_mini import Direction

drone = CoDrone_mini.CoDrone()

drone.pair()


drone.takeoff()                   # takeoff for 2 seconds
drone.hover(3)                    # hover for 3 seconds 


drone.go(Direction.FORWARD, 2, 30)          # moves the drone forward for 2 seconds at 30% power
drone.go(Direction.LEFT, 2, -30)            # moves the drone left for 2 seconds at 30% power
drone.go(Direction.BACKWARD, 2, -30)        # moves the drone backward for 2 seconds at 30% power
drone.go(Direction.RIGHT, 2, 30)            # moves the drone right for 2 seconds at 30% power

drone.land()                      # lands the CoDrone

 

Step 8:

折返跑挑戰

cdm over puddle

請準備兩張桌子或兩張椅子,並放置相隔2英尺(0.61米)。這目的是為了讓無人機從第一站椅子起飛,降落在第二張椅子,再轉身飛回並降落在起始點。

以下是簡單的流程圖:A→B然後B→A

規則如下:

  • CoDrone Mini 必須在椅子之間往前飛行。
  • 如果您成果完成上述挑戰,請將桌子或椅子往外再相隔另外2英尺,換句話說是相隔4英尺(1.22米)。請在每成功一次後繼續增加2英尺,直到您達到房間的末端。

溫馨提示:您可以在程式碼中輸入drone.land()再起飛。