gobot.io/x/gobot@v1.16.0/examples/tello_keyboard.go (about) 1 // +build example 2 // 3 // Do not build by default. 4 5 /* 6 How to run: 7 Connect to the drone's Wi-Fi network from your computer. It will be named something like "TELLO-XXXXXX". 8 9 Once you are connected you can run the Gobot code on your computer to control the drone. 10 11 go run examples/tello_keyboard.go 12 */ 13 14 package main 15 16 import ( 17 "fmt" 18 19 "gobot.io/x/gobot" 20 "gobot.io/x/gobot/platforms/dji/tello" 21 "gobot.io/x/gobot/platforms/keyboard" 22 ) 23 24 func resetDronePostion(drone *tello.Driver) { 25 drone.Forward(0) 26 drone.Backward(0) 27 drone.Up(0) 28 drone.Down(0) 29 drone.Left(0) 30 drone.Right(0) 31 drone.Clockwise(0) 32 } 33 34 func main() { 35 drone := tello.NewDriver("8888") 36 keys := keyboard.NewDriver() 37 38 keys.On(keyboard.Key, func(data interface{}) { 39 key := data.(keyboard.KeyEvent) 40 switch key.Key { 41 case keyboard.A: 42 fmt.Println(key.Char) 43 drone.Clockwise(-25) 44 case keyboard.D: 45 fmt.Println(key.Char) 46 drone.Clockwise(25) 47 case keyboard.W: 48 fmt.Println(key.Char) 49 drone.Forward(20) 50 case keyboard.S: 51 fmt.Println(key.Char) 52 drone.Backward(20) 53 case keyboard.K: 54 fmt.Println(key.Char) 55 drone.Down(20) 56 case keyboard.J: 57 fmt.Println(key.Char) 58 drone.Up(20) 59 case keyboard.Q: 60 fmt.Println(key.Char) 61 drone.Land() 62 case keyboard.P: 63 fmt.Println(key.Char) 64 drone.TakeOff() 65 case keyboard.ArrowUp: 66 fmt.Println(key.Char) 67 drone.FrontFlip() 68 case keyboard.ArrowDown: 69 fmt.Println(key.Char) 70 drone.BackFlip() 71 case keyboard.ArrowLeft: 72 fmt.Println(key.Char) 73 drone.LeftFlip() 74 case keyboard.ArrowRight: 75 fmt.Println(key.Char) 76 drone.RightFlip() 77 case keyboard.Escape: 78 resetDronePostion(drone) 79 } 80 }) 81 82 var flightData *tello.FlightData 83 work := func() { 84 drone.On(tello.FlightDataEvent, func(data interface{}) { 85 flightData = data.(*tello.FlightData) 86 fmt.Println("Height:", flightData.Height) 87 }) 88 } 89 90 robot := gobot.NewRobot("tello", 91 []gobot.Connection{}, 92 []gobot.Device{keys, drone}, 93 work, 94 ) 95 96 robot.Start() 97 }