Python + Drones
Integrating Python & Drones Together
2 min read
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.
- DJI Tello (A mini pocket-friendly drone perfect for beginners)
- Prior Experience with Python programming (Basic)
- 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
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
Controlling the movement of drone.
send_rc_control(left_right_velocity: int, forward_backward_velocity: int, up_down_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