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