標籤

2019年1月23日星期三

Tello EDU Swift Playground Code



使用前準備
  1. 安裝 Swift Playground
  2. 安裝TELLO SPACE TRAVEL
  3. 所有TELLO EDU 必須用TELLO App Activate
  4. 如沒有”TELLO SPACE TRAVEL”, 可用DroneBlocks 團隊開發的 (未完成)


Swift Playground BASIC 基本任務
  1. TakeOff and Landing
  2. Ascent and Descent
  3. Forward and BAckward
  4. Fly over the Space Station
  5. Left and Right
  6. Fly Around the Space Station
  7. Changing the Course  (起飛, 左轉90度, 右轉90度, 降落) 
  8. Patrol Around Space Station (根據圖示,運用for loop, 圍繞基地轉一個圈)
  9. Inspecting the Space Station  (根據圖示,運用for loop, 圍繞基地轉一個圈)
  10. Fly at Will (自由發輝)

Swift Playground Advance 進階任務
  1. Height Sensors 取後目前高度 
  2. Adjust Fight Speed 調校飛行速度 - 前進180cm , 轉180度, 以50%速度前進180cm
  3. Observe the Front - 直線飛flyLine(x,y,z) 到 (x:100, y:100, z:0)
  4. Observe the Back - 曲線flyCurve(x,y,z)由(x:100,y:100,z:0)飛到 (x:200, y:0, z:0)
  5. Full Observation - 飛到星球的最高點,以getHeight() 取得高度
    直線飛到(x:13: y:0,z:50), 曲線到點 (x:100, y:0,z:100), 取得高度, 曲線到點(87,0,-50), 直線到點(100,0,-100)
  6. Fill at Will (自由發輝) 


Swift Playground Mission Pad  
  • 用Mission Pad, 每塊相距100cm
  • TELLO可辨識下面[20-100cm]的mission pad 的數字
  • TELLO可辨識平面 60cm x 60cm 的面積
Mission:  (1-3只用一塊), 4用兩塊
  1. Reading the Coordinate
    起飛, 用getPadID() 取得Mission Pad 編號, 用getPadPos() 取得TELLO處於MissionPad的位置
  2. Fly to Given Coordinate
    起飛, 用getPadID() 取得Mission Pad 編號, 直線飛到(x:30, y:0, z:100, pad: padID), Land()
  3. Fly Around the Planets
    取得Mission Pad 編號,
    用flyLine 飛往C1, C2,C3, C4,
    直線返回 (0,0,100),
    降落
  4. Galaxy Jump 把TELLO放於Mission Pad 1
    getPadID() 取得Mission Pad 編號,
    transit (100,0,100, pad1, pad2),
    降落
  5.  Return from the New Galaxy - 來回不同宇宙
    起飛
    transit (100,0,100, pad1, pad2),
    transit (100,0,100, pad2, pad1),
    降落
  6. Explorer the New Galaxy 尋找不同宇宙
    getPadID() 取得Mission Pad 編號,
    使用transit(x,y,z,pad1, pad2) 在不同宇宙間移動
  7. Fill at Will (自由發輝) 

Swarm 群飛
-需要連接到AP (Router)
-swarm.scan(number:Int) 尋找所有已連接的TELLO, 機號由[0], [1], ...
-swarm.tello[0].takeOff() 飛0號機

  1. Connect Tellos to an AP 連接第一部TELLO
    connectAP(ssid: “______", password: “_______")
    連接幾部
  2. Find All Tellos 尋找所有已連接的TELLO
    swarm.scan()
    swarm.tellos.takeOff()
    swarm.tellos.land()
  3. Control the Flow 指令同步,如一部機指令未完,其他機會先等候
    -每部TELLO在獨立的Mission Pad, 每塊Mission Pad 1m 距離
    全部起飛
    一半機飛高50cm, 一半機飛低50cm
    飛高了的飛低100cm, 飛低的飛高100cm
    重覆4次, 最後飛到一樣高,
    降落
  4. Form A Guarding Fence
    使用4塊Mission Pad (按順時針1,2,3,4)







function list:

takeoff and landing 
  • land()
  • takeoff()
  • wait(seconds:UInt)

基本前進, 升降, 轉向
  • flyBackward(cm:Unit)
  • flyDown(cm:UInt)
  • flyForward(cm:UInt)
  • flyLeft(cm:UInt)
  • flyRight(cm:UInt)
  • flyUp(cm:UInt)
  • turnLeft(degree:Int)
  • turnRight(degree:Int)

進階指令 Advanced
  • flyCurve(x1:Int, y1:Int, z1:Int, x2:Int, y2:Int, z2:Int)  曲線由(x1,y1,z1)飛到 (x2, y2, z2)
  • flyLine(x:Int, y:Int, z:Int) - 直線飛到坐標(x, y, z)
  • getHeight()
  • setSpeed(cms:UInt)

Mission Pad
  • getPadID()
  • getPadPos()
  • transit(x:Int, y:Int, z:Int, pad1:Int, pad2:Int)

Swarm 群飛
Connect 連接
  • 需要連接到AP (Router)
  • connectAP(ssid: “______", password: “_______")
  • -開機,再長按Power Button 重設至普通模式
控制
  • swarm.scan(number:Int) 尋找所有已連接的TELLO, 機號由[0], [1], ...
  • swarm.tello[0].takeOff() 飛0號機
  • swarm.tellos.takeOff() 全部起飛
  • swarm.tellos.land() 全部降落
  • swarm.sync(seconds:10)
  • swarm.tellos.transit(x,y,z) 指示 TELLO飛到下一塊Mission Pad內的x,y,z位置

func () {            
    while i {        //無限重覆 
        code
    }
}


for i in 1…3 {        //重覆3次
    code
}






Basic Flow
Connect Tellos to AP
Find all Tellos
Control the Flow
Form A Guarding Fence

沒有留言:

發佈留言