Drone Precision Landing | The Key to Truly Autonomous Drones
Drones have already taken many industries by storm, as it turns out there is much more to drones than flying wedding cameras. Most industrial drones are capable of path planning and semi-autonomous flight, but to be truly autonomous they will need to incorporate precision landing.
What is drone precision landing you ask? Almost all drones will come equipped with a GPS which allows the drone to fly basic missions and then land. The problem is a drone with only GPS guided landing is only accurate to around 10 feet. For some drone applications like land surveying, probably won’t hinder the performance of the mission.
However, in many potential drone applications, 10 feet accuracy simply does not get the job done. Enter precision landing, which enables an uav to land on a target with around 10 inch accuracy. Check out the video below for an example of one method of vision based precision landing (discussed later).
Want to get updates on future precision landing projects you can follow? Sign up below.
Drone Applications Requiring Precision Landing
- Package delivery
- Precision agriculture
- Drone in a box
- Warehouse inventory scanners
- Charging stations
- Surveillance
Imagine trying to deliver a package to someone’s backyard with only a 10 ft accuracy. Sounds like broken windows and lawsuits to me. Basically, to be a truly autonomous drone application with no human involvement in the mission, precision landing is a requirement.
Of note, with the knowledge of python drone programming, any one of these drone applications could be scripted.
Precision Landing Methods
Due to the requirement of precision landing in unlocking so many drone applications of the future, various solutions are arising. Almost all methods consist of some drone-side camera or sensor, which is tracking some object on the ground. The position of the drone relative to the landing target is then calculated and communicated to the drone’s firmware. From here, the drone will position itself to minimize the distance from the target.
I. Computer Vision Precision Landing
With this method, all that is physically required is a camera and companion computer on the drone, and an aruco marker on the ground. The size of the aruco marker is pre-determined, so that the distance between the drone and the marker can be calculated based on how large or small the marker appears in the frame.
Using the dronekit and openCV libraries in python, this entire process can be easily accomplished. This method is attractive because the ground side target does not require power, as it is simply a paper image with an array of black and white boxes.
PROS:
- Ground side target does not require power
- Scalable
- Cheap
CONS:
- Requires manual openCV python scripting
- Does not work in fog or darkness
II. IR Lock Precision Landing
An alternative to a computer vision based method is the consumer ready product IR Lock. Here, a modified PixyCam with an IR-lens is attached to the drone, and the groud-side target is an IR-emitting sensor called a markone beacon. With this method, there is no python or openCV scripting required. Simply activate the correct parameters in the firmware, and the drone is precision landing capable.
PROS:
- Consumer ready/do not need special knowledge
- Works in fog or darkness
CONS:
- Relatively more expensive compared to vision based precision landing
- Not as scalable (Every landing target would require a powered markone beacon)
Next Steps
If you are interested in learning how to develop your own vision based precision landing systems for your own applications, I highly recommend checking out our comprehensive Precision Landing and Drone Delivery course here at the Drone Dojo.
After completion, you will not only know how to design your own robust precision landing systems, but also how to first test your design on a simulated camera drone in gazebo. Then in the exciting capstone project, we show how you can use your precision landing knowledge to design your own drone delivery mission. Taco Copters for everyone!
i have error
rosrun gazebo_drone track_aruco.py
Traceback (most recent call last):
File “/home/jinpyo/project/catkin_ws/src/gazebo_drone/scripts/track_aruco.py”, line 22, in
aruco_dict = aruco.getPredefineDictionary(aruco.DICT_ARUCO_ORIGINAL1)
AttributeError: ‘module’ object has no attribute ‘getPredefineDictionary
how to solve?
Thanks for asking. It would be best to post your question in the forum.