UAV Collision Avoidance and Autonomous Navigation

In the last few years an increasing demand in multicopter vehicle applications is taking place. Almost all of them involve autonomous trajectory following and collision avoidance as a security measure. Although commonly used flight controller software foresees sophisticated solutions to those problems, advanced implementations are still rare. In this bachelor project, carried out with Michael Rimondi, we elaborate those issues in a specific use case regarding a coverage flight for agricultural purposes. The currently used technologies are exploited to implement tracking of a general trajectory defined up to the first order derivative as well as a rudimentary collision avoidance approach, applied to the inner multicopter control loops. The higher level control is performed by an on-board companion computer and implemented in Robot Operating System (ROS), which opens up the possibility of modular extensions. The collision avoidance in contrast, is implemented directly in the Flight Control Unit (FCU) firmware to provide fast reactive evasion maneuvers. The achieved performances are evaluated and compared with simulation results.

Fawn in agriculture fields

As the featured image shows, in grassland surrounded by forests, it is a common problem, that wild animals hide in cultivated fields. The work with mowing machines then involuntary leads to thousands of fatalities. The project aims to tackle this issue by scanning agriculture fields with a thermal camera before the harvest. Interesting engineering questions have thereby been addressed, such as coverage path planning (CPP), trajectory following and obstacle avoidance. Michael then presented and elaborated the first, i.e. planning part of the project, while I was focusing on the control part. The joint bachelor presentation is attached below.

thumbnail of FM – Michael – Bambi Presentation – 2018
Bachelor Project Presentation [PDF 4.6MB]

Trajectory generation

In the project the simplest approach of trajectory generation was implement, i.e. a constant velocity method. The geometric trajectory was simply sampled at equidistant points to then obtain a constant velocity trajectory.

Constant Velocity Trajectory

Although a constant velocity trajectory is all but ideal for a quadcopter vehicle, we achieved reasonable tracking results using velocity feed forward control.

Velocity Feed Forward Tracking Improvement

Collision avoidance

A low level rudimentary collision avoidance approach was implemented, directly in Pixhawk’s firmware.

Simulation Screeencapture (unfiltered distance input)

Realizations and Tests

The project has started slowly with a custom build drone, frame design, components acquisition and assembly. In two intensive weeks, the major development took place, including all theoretical aspects, and implementation in C++ and ROS. The picture on the right might convey the spirit.

The most important lesson learned is perhaps to always ensure safety and have a fallback method: PID tuning on a custom build drone can be dangerous, making us GEO-fencing and having options such as Return to Launch (RTL) is crucial.

BAMBI project work (August 2018)

Maiden flight of custom build drone [December 2017]

Documentation and source code

For the complete discussion and results please have a look at the bachelor thesis below.

thumbnail of FM – Implementation of an Autonomous Navigation Algorithm with Collision Avoidance for an UAV (2018)
Bachelor Thesis [PDF 24MB]

The source code is publicly available on Github:

Leave a Reply

Your email address will not be published. Required fields are marked *