List of Suggested Projects for GSoC 2023

This is a list of projects suggested by ArduPilot developers for GSoC 2023. These are only suggestions so 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 2023.

  • Rover AutoTune

  • Camera and Gimbal enhancements

  • Multicopter Swarm Avoidance

  • ROS2 support

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

Timeline

The timeline for GSoC 2023 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

Rover AutoTune

  • Skills required: C++, Lua

  • Mentor: Randy Mackay

  • Expected Size: 175h or 350h

  • Level of Difficulty: Hard

  • Expected Outcome: Autotune mode added that automatically calculates the frame limits, speed control gains and steering control gains for Ackermann and skid steering vehicles.

This project involves adding a new AutoTune mode to the Rover firmware to calculate the frame limits, speed control and steering control gains. This is essentially an automated version of the manual tuning process documented in this section of the Rover wiki.

Similar to Copter’s autotune mode and VTOL-quicktune.lua script this new mode should include a state machine that provides various throttle and steering outputs and then monitors the response by checking the AHRS/EKF outputs.

The list of parameters that should be tuned includes:

See Issue #8851

Some of the development can be completed using the SITL simulator but funding will also be provided for the RC car frame and autopilot

Camera and Gimbal enhancements

  • Skills required: C++, mavlink

  • Mentor: Randy Mackay

  • Expected Size: 175h or 350h

  • Level of Difficulty: Medium

  • Expected Outcome: Improved camera and gimbal support in both pilot controlled and autonomous modes (Auto, Guided)

This project involves numberous small and medium sized enhancements and bug fixes to ArduPilot’s camera and gimbal support (see Camera enhancement and Gimbal enhancement lists). These include:

Funding will be provided for the required hardware which will likely include a camera gimbal, transmitter and autopilot.

Multicopter Swarm Avoidance

  • Skills required: C++, python, mavlink

  • Mentor: Peter Barker, Rishabh Singh

  • Expected Size: 175h or 350h

  • Level of Difficulty: Medium

  • Expected Outcome: vehicles in a swarm should avoid each other

This project involves enhanceing ArduPilot’s Copter software so that vehicles flying in a swarm avoid each other. The control logic should run primarily on each drone’s flight controller (e.g. not on the ground station nor a companion computer).

  • AC_Avoidance class should be enhanced to consume the location and speed of other vehicles. The “simple avoidance” feature (see Copter’s object avoidance wiki page) should then cause the vehicle to stop before hitting another vehicle in most modes (Loiter, Auto, Guided, etc). Ideally the vehicle should also backaway from other vehicles if they get too close.

  • SITL should be used to develop and test this feature

  • by centralising remote vehicle knowledge and generalising the follow database. Allow AC_Avoidance to work on this new database

Once complete, it should be possible to run a demonstration in SITL in which three vehicle are visible on the map. Two should be acting as obstacles (flying in Guided mode) while the third is flown by a pilot in Loiter mode. We should be able to move the two “obstacle” vehicles around while the third vehicle will not run into the others regardless of what inputs the pilot provides.

Development should be possible with only an Ubuntu or Windows PC but funding for hardware will also be provided if required.

ROS2 support

  • Skills required: ROS2, C++, python, mavlink

  • Mentor: Andrew Tridgell

  • Expected Size: 175h or 350h

  • Level of Difficulty: Medium

  • Expected Outcome: ArduPilot vehicles can communicate with ROS2

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.

A previous GSoC made good progress on this project (see Dds prototype PR)

Projects Completed in past years

In 2022, students worked on these projects:

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