About

Articles

Projects

CV

AutoUAV

Engineering a UAV capable of Autonomous Navigation, Visual Tracking and Precision Landing.

CONTRIBUTORS

Nelson Elijah

SKILLS

Language: C++, Python, Linux

Framework: ROS, OpenCV, Ardupilot (ArduCopter)

Simulation: Gazebo, DroneKit SITL; Ground Control Station: Mission Planner, Q Ground Control (QGC)

Electronics: Soldering, Wiring, Testing, KiCAD

PUBLISHED

31, October 2023

IMPORTANT LINKS

Drone for Dojo

Contents

For my final year project, I wanted to build something that would fit the following criteria:

  • Interdisciplinary Fusion: Integration of electronics and software engineering disciplines to create a synergy between hardware and software components.
  • AI Integration: Implementation of artificial intelligence algorithms for intelligent decision-making capabilities in the project.
  • Real-world Applications: Has practical significance and is sustainable.

After thorough research, the concept of AutoUAV, an unmanned aerial vehicle capable of autonomous navigation, visual tracking, and precision landing, emerged as the ideal solution. Its versatile applications in agriculture, the military, the civil sector, warehouse inventory, and more, convinced me to choose it as my final-year project.

Materials Used

Hardware

  • 1 Pixhawk 2.4.8 Kit
  • 1 Raspberry PI 4
  • 1 Flysky i6 Radio Transmitter and FS-X6B Receiver
  • 4 Brushless Motors (2 CCW, 2CW, 950 kv), 4 Electronic Speed Controllers (ESCs, 40A rated), 4 Propellers (9450, self-tightening)
  • 1 Lipo Battery (4s, >5000Mah)
  • 1 Servo Motor
  • 1 DJI 450 X frame
  • Zip Ties
Hardware peripherals for AutoUAV

Hardware peripherals for AutoUAV

Software

Most of what I learned was from Drone Dojo's course. However, his development environment wasn't compatible with Ubuntu Arm Linux, which is the Ubuntu OS capable of running on Parallels on my M1 Mac. So, I ported the entire system to run and compile on my M1 Mac. Also, I ported the codes from Python 2 to Python 3 and from Ubuntu 18.04 to Ubuntu 20.04.

Here are the software used and the processes required to run them on Ubuntu Linux for Arm Processors:

Softwares used for AutoUAV (On Ubuntu Arm)

Softwares used for AutoUAV (On Ubuntu Arm)

System Design

System Communication Design methodology for AutoUAV

System Communication Design methodology for AutoUAV

A simple explanation is that there's an underlying communication protocol called MAVLINK, which can be used to talk to the flight controller on the UAV.

Other computers or devices can send commands to the drone through this protocol over a network. The Raspberry Pi (companion computer) and the ground station, which can consist of a QGC running on a computer that receives UAV information via telemetry, use this method to interact with the UAV.

However, the most significant portion in designing this project is the use of dronekit which is a Python package for building drone applications. With dronekit, you can deploy high-level algorithms (computer vision and path planning) that can send commands to the drone using the MAVLINK protocol under the hood.

It'll take a considerable amount of detail to explain the technologies and how they interact with each other. I've written a comprehensive report on this project here.

Challenges encountered

Most of the challenges were a result of using an Ubuntu ARM OS and this is how I got by them:

Files

View my project report here.

View my build process here.

Coming soon: the Ubuntu image with all necessary applications installed (for Ubuntu Linux Arm).

Preview (coming soon)...

Acknowledgements

Drone for Dojo

References

  1. Nil

    Nil

© 2023 Nelson Elijah. All rights reserved