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
Rover/Boat automatic docking
Boat object avoidance with Luxonis AI camera
Copter/Rover camera gimbal integration improvements
Update ROS integration for Non-GPS navigation and off-board path-planning
Create more ignition vehicle models, and improve physics of existing models in SITL (software-in-the-loop simulator)
Improve custom firmware server including adding branch support and improve dependency handling
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
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++
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 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:
CRUISE_SPEED and CRUISE_THROTTLE (or ATC_SPEED_FF)
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
Rover/Boat automatic docking¶
Skills required: C++
Mentor: Randy Mackay, Peter Barker
Expected Size: 350h
Level of Difficulty: Medium
Expected Outcome: control mode added that autonomously maneuvers a car or boat to stop directly infront of a visual target
This project involves adding a new control mode to the Rover firmware to maneuver a car or boat to within cm of a visual target. In many ways this is similar to Copter’s precision landing feature and it is likely that the AC_PrecLand library can be re-used to estimate where the target is. The expected control outputs will be desired speed and turn rate.
As a minimum we should add support for Ackermann and skid steering vehicles but better performance can probably be achieved using omni vehicles which can move laterally.
Most of the development can be completed using the SITL simulator but funding will also be provided for the required hardware which could include an IR-Lock system or AI camera, companion computer, autopilot and a car or boat frame.
See Issue #20158.
Boat object avoidance with Luxonis AI camera¶
Skills required: C++, mavlink, AI
Mentor: Randy Mackay, Peter Barker
Expected Size: 350h
Level of Difficulty: Medium
Expected Outcome: Autonomous boats is able to avoid other boats, rocks and floating debris using an Luxonis AI camera
This project involves training and integrating a Luxonis AI camera to recognise rocks, floating debris and other boats and then send the estimated position of these obstacles to ArduPilot’s existing object avoidance features (Simple avoidance, Bendy Ruler and Dijkstra’s/A-Star) so that the vehicle can stop and/or path plan around them.
Much of the development can be completed using one of the ArduPilot supported simulators but funding will also be provided for the required hardware which will include a Luxonis AI camera, companion computer, autopilot and a car or boat frame.
Copter/Rover camera gimbal integration improvements¶
Skills required: C++, mavlink
Mentor: Randy Mackay, Peter Barker
Expected Size: 175h or 350h
Level of Difficulty: Medium
Expected Outcome: Improved support of gimbals in pilot controlled and fully autonomous modes (Auto, Guided)
This project involves resolving numerous small issues with ArduPilot’s camera gimbal support. These include:
Auxiliary switch to allow pilot to control whether the gimbal maintains an attitude relative to the vehicle’s heading or stays pointed in the same direction even as the vehicle turns (aka “earth frame”)
Support for new mavlink ROI messages (see issue #7658)
Identify and resolve any issues with pilot controlling gimbal using rate or angle control
Support for pointing gimbal at Circle center
Support for pointing gimbal at another vehicle while in Follow mode
Support for pointing gimbal at specified waypoint
Resolve any specific issues with the Gremsy PixyU gimbal (see issue #14448)
Funding will be provided for the required hardware which will likely include a camera gimbal, transmitter, autopilot and a multicopter or car frame.
Ignition Modelling¶
The new Gazebo Ignition simulation system offers a rich simulation environment where the vehicle can interact with world objects and other vehicles. We would like to expand the number of vehicle models that are available, and improve the physics fidelity of the existing vehicles. You can see the vehicle models we have now here https://github.com/ArduPilot/SITL_Models/tree/master/Ignition
The successful applicatant will need strong C++ skills, as well as an understanding of aerodynamics for the creation of vehicle physics models. Experience with Gazebo or Ignition would be a significant help.
Custom Firmware Server¶
The ArduPilot custom firmware server (see https://custom.ardupilot.org ) was developed during GSoC 2021, and has been extremely useful. We would like to extend the functionalty to multiple branches and add automatic dependency handling, as well as support for enabling Lua scripts and setting default parameters.
The successful student will need strong python and web development skills.
Build System Improvements¶
The build system that ArduPilot uses is based on the python waf system. It works well, but we would like some improvements to reduce the CPU overhead and improve dependency handling.
The successful student will need strong python skills and understanding of build system structures.
MathWorks Simulink¶
MathWorks Simulink is a popular model based control algorithm design program. The purpose of this project would be to allow Simulink to create attitude control algorithm code (in C++) that can then be compiled into ArduPilot and flown in the simulator or on a real vehicle.
Swift Package for Mavlink¶
Swift Packages are Apple’s solution for creating reusable components that can be used in iOS and Mac applications. MAVLink currently has several attempts to create a communications package for iOS, but they are currently not compatible with ArduPilot. The goal for this project would be to either create our own universal MAVLink package or adopt one of the existing ones (MAVSDK Swift, pymavlink Swift Generator)to work with ArduPilot and be easily deployable as a Swift package so that anyone who wants to use it to create their own iOS based app can integrate it.
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:
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