List of Suggested Projects for GSoC 2020

This is a list of projects suggested by ArduPilot developers for GSoC 2020. These are only suggestions, and if you have your own ideas then please discuss them on the ArduPilot GSOC gitter channel 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 2020.

  • Non-GPS navigation improvements using Intel RealSense cameras
  • Object avoidance improvements for Multicopters and/or Rovers
  • Lane following or automatic docking for cars and boats using JeVois camera (or similar)
  • Rover Autotune
  • Walking robot support
  • 3D aerobatic support for fixed wing aircraft
  • Improve Morse simulator integration including setup to move 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
  • MathWorks SimuLink interface to ArduPilot SITL
  • 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.
  • Improve helicopter throttle handling for internal combustion engines for autonomous operations.
  • Swift Package for MAVLink communications.
  • Unified performance counter on ArduPilot

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

Timeline

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

Non-GPS navigation improvements using Intel RealSense cameras

Intel Realsense cameras can already be used with ArduPilot but there is still room for improvement including:

  • Allow vehicles to move seamlessly between GPS environments and non-GPS environments. This will likely require enhancements to ArduPilot’s EKF.
  • Provide obstacle data from an Intel Realsense camera to ardupilot using the MAVLink OBSTACLE_DISTANCE message
  • Prepare APSync images to ease user setup

Object Avoidance improvements for Multicopters and/or Rovers

ArduPilot supports three methods for object avoidance, Bendy Ruler, Dijkstra’s and Simple avoidance but there is room for improvement in each of them:

  • BendyRuler should work in 3D (issue)
  • BendyRuler can be hesitant about which direction to choose (issue)
  • Rover’s using BendyRuler may impact the fence after clearing obstacles (issue)
  • Dijkstra’s should work with Spline waypoints (issue)
  • Simple avoidance should backaway from objects (issue)

Lane following or automatic docking for cars and boats

This project involves using machine vision to add lane following or automatic docking to to ArduPilot’s Rover firmware

  • Either a low-cost JeVois camera or a high powered companion computer could be used
  • Recognise the road or docking target using machine vision or learning (for docking an AprilTag could be used)
  • Either create a new control mode to control the vehicle or send velocity commands (probably using the SET_GLOBAL_POSITION_INT or SET_POSITION_TARGET_GLOBAL_INT message) to move the vehicle in the correct direction
  • If a companion computer is used, add the solution to APSync
  • Document the implementation

Rover Autotune

This project would involve adding an autotune feature for rover and boat like for copter. The autotune should be able to learn and set most of the rover parameters for autonomous behavior. This will need a good understanding of control theory.

Walking robot support

This project would involve adding basic support for four legged walking robots and could involve:

  • Identifying a reasonably priced four legged robot frame
  • Control system improvements to allow the frame to stand and walk
  • Documentation of the setup

Expenses for purchasing the frame and autopilot will be covered by ArduPilot.

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 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 accross our HAL. Currently, Linux board get the most performant performance counter, but we should be able to some on Chibios and SITL to allow better profiling of the code.

Improve helicopter throttle handling for internal combustion engines for autonomous operations

The helicopter code manages the throttle for all propulsion types through the rotor speed controller. This controller provides very basic throttle control for internal combustion engines through rotor run-up and shutdown sequence. It ramps the throttle from the idle setting to the bottom of the throttle curve. It does not provide any warm up or cool down period for autonomous operations. The goal of this project would be to incorporate an automated rotor startup sequence after engine start and rotor shutdown, engine cooldown and engine cut to support fully autonomous operations. Similar work has been conducted in this area with an off-shoot of ardupilot but it relies on pilot interaction although it incorporates a torque limited rotor spool up which would be a great to incorporate in arducopter RSC. Details of the rotor speed controller can be found in the traditional helicopter RSC setup wiki. A heli with an internal combustion engine is not necessarily required to complete this project but would be helpful. The RealFlight simulation linked with ardupilot SITL is required to do initial testing and proof of concept. This setup is described in the Using SITL with Realflight wiki.

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 student successfully completed these projects:

  • Smart Return-To-Launch which involves storing 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