List of Suggested Projects for GSoC 2021

This is a list of projects suggested by ArduPilot developers for GSoC 2021. GSoC has changed the format of its 2021 edition to reduce the number of hours per project from 350hr down to 174hrs, the list below contains project suggestions that should meet these criteria depending also on the skill level of the participant. These are only suggestions, and if you have your own ideas then please discuss them on the ArduPilot Discord Chat or on the discuss server here. We have a lot of talented developers in the ArduPilot dev team who would love to mentor good students for GSoC 2021.

  • Optical flow calibration improvements
  • Object avoidance support for MYNT EYE depth camera
  • Integrate with ROS for off-board path-planning
  • Rover AutoTune
  • 3D aerobatic support for fixed wing aircraft
  • Improve Morse simulator integration including setup to move the camera with vehicles
  • Create new vehicle models for the Morse simulator, including boats, planes and copters
  • Improve Gazebo simulator integration including JSON protocol, Gazebo9, and new sensors set
  • Build system improvements, specifically fixing dependency handling and speeding up the waf build
  • Improvements to the MAVProxy GCS. Better multivehicle support, performance improvement. Requires strong python skills.
  • Swift Package for MAVLink communications.
  • Unified performance counter on ArduPilot
  • ROS2 MAVROS support for Ardupilot.

See lower down on this page for more details for some of the projects listed above

Timeline

The timeline for GSoC 2021 is here

How to improve your chances of being accepted

When making the difficult decision about which students to accept, we look for:

  • Clear and detailed application explaining how you think the project could be done
  • Relevant prior experience
  • Experience contributing to ArduPilot or other open source projects
  • Understanding of Git and/or GitHub

Optical Flow Calibration Improvements

Optical Flow can provide accurate non-GPS position estimation if the user correctly calibrates the sensor but this calibration procedure is difficult to get right.

This project involves adding an in-flight calibration procedure in which the user enables both GPS and optical flow. The EKF should then be able to estimate the expected flow measurements, compare them with the actual flow measurements and then calculate the best scaling values.

See Issue #16631.

Object Avoidance support for the MYNT EYE depth camera

ArduPilot already supports object avoidance using the Intel RealSense 435 and 455 depth cameras. We should extend support to the MYNT EYE depth cameras.

This project involves:

  • Writing a python script (similar to this script for the Intel T435) to pull the data from the depth camera and package them into OBSTACLE_DISTANCE and/or OBSTACLE_DISTANCE_3D mavlink messages which will then be consumed by ArduPilot’s AP_Proximity library
  • Creating an APSync image for at least one companion computer (RPI4?) that can run the above script

See Issue #16632.

Integrate with ROS for off-board path-planning

ArduPilot can be integrated with ROS in several ways including for Non-GPS position estimation and object avoidance. This project aims to allow ROS’s path planning routines to be used by ArduPilot while still leaving the mission input in ArduPilot.

Rover Autotune

This project involves adding an AutoTune mode to the Rover firmware similar to Copter’s AutoTune mode but simpler. The focus should be on finding the best turn rate and speed controller parameters. The likely solution will be to provide turn rate or speed targets to the controllers for a short period, measure the response of the vehicle, adjust the gains and repeat until acceptable gains are found.

This project probably requires a good understanding of PID objects and control.

Improve fixed-wing 3D aerobatics support in ArduPilot

With the addition of prop-hang in ArduPilot (see here) we now have the beginnings of a nice 3D aerobatics for fixed wing. This project involves taking that to the next level to add support for “trick” mode. In trick mode, the user will have access to a variety of common 3D maneuvers, including knife-edge, loops, harrier and rolling loops. Implementing this will involve some careful use of quaternion controllers, but a good UI design so the stick inputs to control these tricks are easy to learn. Testing can be done in the FlightAxis simulator (as in the above video), allowing for development without risking real aircraft.

Improve Morse simulator integration including supporting boats / ROVs

Improve ArduPilot’s integration with Morse simulator software including

  • Adding support for boats and ROVs with simulated waves to test ArduPilot controls
  • Default camera view to follow the vehicle

Unified performance counter on ArduPilot

This project would involve adding unified support for performance across our HAL. Currently, the Linux board gets the most performant performance counter, but we should be able to some on Chibios and SITL to allow better profiling of the code.

ROS2 MAVROS support for Ardupilot

Currently, there is no MAVROS equivalent for ROS2, with OSRF quickly moving to make ROS2 the standard version of ROS, supporting it has become a growing interest in our community. An initial port of the basic features of MAVROS would be a big step towards integrating Ardupilot and ROS2.

Projects Completed in past years

In 2019, students successfully completed these projects:

  • AirSim Simulator Support for Ardupilot SITL
  • Development of Autonomous Autorotations for Traditional Helicopters
  • Further Development of Rover Sailboat Support
  • Integration of ArduPilot and VIO tracking camera for GPS-less localization and navigation
  • MAVProxy GUI and module development

In 2018, students successfully completed these projects:

  • BalanceBot
  • RedTail integration with ArduPilot
  • Live video improvements for APSync

In 2017, 3 students successfully completed these projects:

  • Smart Return-To-Launch which involves storing the vehicle’s current location and maintaining the shortest possible safe path back home
  • Rework ArduRover architecture to allow more configurations and rover type (see details here)
  • Add “sensor head” operation of ArduPilot, split between two CPUs
You can find their proposals and works on the Google GSoC 2017 archive page