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.
- Randy’s video using ROS for path planning around obstacles
- mavros PR to allow ROS to accept set-position-target-global-int messages from ArduPilot to be fed into ROS’s navigation algorithm
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.
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:
- 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