Python_Junior_1A_Flight Events飛行事件
Step 1:
Hello, World 現在是時候編寫您第一個Python程式吧! 這個程式將使用 print () 函數。 您會透過程式把字顯示在屏幕上,而不是用墨水和紙來打印(print)出來。這函數非常適合用於記錄變數值和搜尋程式碼中的錯誤! 請新增一個新的Python檔案,命名為helloworld.py,並輸入以下這行程式碼: print("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銜接起來! import CoDrone_mini 在您匯入資料庫後,您需要建立一個無人機物件。 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!") 現在您可以執行您的程式碼了。 |
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 在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 俯仰(Pitch)是使CoDrone Mini 往前或往後傾斜。 正俯仰將使CoDrone Mini 傾斜並往前移動,負俯仰將使CoDrone Mini 傾斜和往後移動。 drone.set_pitch(power) # power represents power out of 100% # power can be between -100 and 100 偏擺(Yaw)是使CoDrone Mini左右旋轉。 正偏擺將使CoDrone Mini向右轉,負偏擺將使CoDrone Mini向左轉。 drone.set_yaw(power) # power represents power out of 100% # power can be between -100 and 100 油門(Throttle)控制 CoDrone Mini垂直上下移動。 正油門將使CoDrone Mini飛得更高,負油門將使CoDrone Mini飛得更低。 drone.set_throttle(power) # power represents power out of 100% # power can be between -100 and 100 謹慎使用偏擺(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 同時飛行多個方向。 請問你會結合哪兩個指令來執行以下的飛行模式(從鳥瞰圖上看)?
如果您想讓無人機以同樣的方式向前和向側面飛行,請讓橫滾和俯仰使用相同的數值。 以下是解決方案的例子。 請試著只調整一或兩個數字以觀察飛行變化。 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) 以下是每個部分的定義:
以下有一些例子: 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,以避免無人機往對角線飛行 請看看以下的圖表,再想想您的程式碼將是什麼樣子。
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:
折返跑挑戰
請準備兩張桌子或兩張椅子,並放置相隔2英尺(0.61米)。這目的是為了讓無人機從第一站椅子起飛,降落在第二張椅子,再轉身飛回並降落在起始點。 以下是簡單的流程圖:A→B然後B→A 規則如下:
溫馨提示:您可以在程式碼中輸入drone.land()再起飛。 |