Python + Drones

Python + Drones

Integrating Python & Drones Together

Table of contents

No heading

No headings in the article.

You might have flown a Drone or a toy helicopter, it's super easy, isn't it? Use a controller, move joysticks and done. But as a coder, do you want to integrate this with your python code? Imagine you are making autonomous drones, How exciting, isn't it? Let's learn how can you integrate python and drones.

Pre-requisites

  1. DJI Tello (A mini pocket-friendly drone perfect for beginners)
  2. Prior Experience with Python programming (Basic)
  3. Basics of motion (Newton's laws of motion & Momentum)

You can browse online for these pre-reqs if you want. So let's get started...

Firstly you need to install a library djitellopy and opencv-python that has the support for this type of drones. Use the following syntax

pip install djitellotpy
pip install opencv

NOTE: Every drone has its own library, but coding is more or less the same for every drone.

Let's start by importing the library

from djitellopy import tello
import cv2
import time

Create object of tello and make connection connect

me = tello.Tello()
me.connect()
print(me.get_battery())

The above code will print the battery % of the drone. me is the object of drone

Put stream on using the following code

me.streamon()

Controlling the movement of drone. Function : send_rc_control(left_right_velocity: int, forward_backward_velocity: int, up_down_velocity: int, yaw_velocity: int)

Code Snippet for controlling motion of drone

speed = 30 # this is in cm/s
me.takeoff() #Take off
me.send_rc_control(0,0,0,speed,0) #move 30cm up
me.send_rc_control(0,0,0,-speed,0) #move 30cm down
me.send_rc_control(0,speed,0,0) #move 30cm forward
me.send_rc_control(0,-speed,0,0) #move 30cm backward
me.send_rc_control(speed,0,0,0,0) #move 30cm left
me.send_rc_control(-speed,0,0,0,0) #move 30cm right
me.send_rc_control(0,0,0,0,speed) #rotate 30cm right
me.send_rc_control(0,0,0,0,-speed) #rotate 30cm left
me.land() #land the drone

Visualise the drone camera stream in your PC

while True:
        img = me.get_frame_read().frame #Capture each frame
        img = cv2.resize(img, (360, 240)) #Optional but recommended
        cv2.imshow("Image", img) #Display video
        cv2.waitKey(1)

That's super duper easy, try it out and let me know in the comments...

Any queries, feel free to type in comments or connect me through mail