Skip to content
Carlos Agüero edited this page Feb 11, 2022 · 1 revision

Overview

This document describes a list of potential ideas created for the 2021 Google Summer of Code. However, the ideas are open to everyone with interest on collaborating, and OSRF is open to new ideas. Feel free to use our application template below to request your interest in some of the projects. If you would like to suggest new projects please message @HelloWorld at Gazebo Community.

The following list shows a set of ideas that can extend the functionality of some of the open source projects led by OSRF. The ideas are organized into two main projects: Simulation (Gazebo / Ignition), and ROS.

Gazebo is a multi-robot simulator for outdoor environments. It is capable of simulating a population of robots, sensors and objects, but does so in a three-dimensional world. It generates both realistic sensor feedback and interactions between physically plausible objects.

Ignition is a new simulation framework that started as a refactor of Gazebo's source code, breaking it into smaller reusable libraries and making them more powerful and flexible in the process. Like Gazebo, it simulates robots equipped with sensors and controllers, as well as the surrounding environment.

ROS (Robot Operating System) provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more.

The link between all projects is their open source nature and its relationship with robotics. Browse through the list and do not hesitate to contact us if you wish to participate in any of the projects. Share with us your thoughts and ideas on any future improvement or project you may have.

Simulation projects list

For a general introduction on how to start contributing to Gazebo and Ignition, check out the guided tutorials! If you have any technical questions feel free to ask them at Gazebo Answers or message @HelloWorld at Gazebo Community.

Improve Ignition Rendering shader workflow

  • List of prerequisites: Experience with Linux and Version Control
  • Description of programming skills: C++, OpenGL, GL Shader Language
  • List of potential mentors: Michael Carroll
  • Detailed Description: There is currently not a generic or flexible way to experiment with shaders in Ignition Rendering. The goal of this project would be to extend ignition-rendering and implement an ignition-gui plugin to allow users to modify shaders and get immediate visual feedback. The idea would be to create GUI elements to allow users to write GLSL code, and when saved, this shader code would be compiled, checked, and then executed in an ignition rendering context. The idea would be similar to other available tools like https://shaderfrog.com/

Machine Learning Extensions to Ignition Gazebo

  • List of prerequisites: Experience with Linux and Version Control. Familiarity with data-related Machine Learning concepts (training vs validation vs test data, features vs labels, bounding boxes, etc.) is useful, but not required.
  • Description of programming skills: C++, OpenGL
  • List of potential mentors: Ashton Larkin, Michael Carroll
  • Detailed Description: Features and enhancements to improve data generation workflows in Gazebo, specifically for generating large datasets for deep learning algorithms.
    • Add a "labelled scene" sensor: Rather than simulating a camera in a scene, produce an image with all of the pixels labelled based on their corresponding object ID, label, or category
    • Add a "bounding box" sensor: Based on labelled objects in the scene, generate ground truth bounding box annotations that can be used for training.
    • Add APIs for programmatically perturbing scenes to rapidly generate datasets.

Add support for loading more mesh formats in Gazebo

  • List of prerequisites: Linux, mercurial
  • Description of programming skills: C++
  • Difficulty level: Medium
  • List of potential mentors: Ian Chen, Alejandro Hernández
  • Detailed description: Gazebo currently supports loading collada, obj, and stl mesh files. The goal of this project is to extend the mesh loader to support other popular mesh formats like glTF2 and FBX. The scope includes first evaluating alternative open source mesh loading libraries out there (e.g. assimp), and determining the best path forward to adding the new mesh loading capability into Gazebo. The student will write unit and integration tests for the new features added, and create a sample world demonstrating loading of various mesh formats.

Improve maritime support in Gazebo

  • List of prerequisites: Linux, mercurial
  • Description of programming skills: C++
  • Difficulty level: Medium
  • List of potential mentors: Carlos Agüero
  • Detailed description: The goal of this project is to extend the simulation capabilities of Gazebo in the maritime domain. Some examples of potential ideas are: wave rendering, support for domain-specific sensors, reference worlds, etc. See VRX or VORC for examples of maritime projects using Gazebo classic.

RVIZ based on Ignition Rendering Library

  • List of prerequisites: Experience with Linux, rendering, version control and interest in robotics
  • Description of programming skills: C++, Git
  • Difficulty level: Medium
  • List of potential mentors: Alejandro Hernández
  • Detailed description: Ignition is the new generation of the Gazebo simulator. It is a refactor of Gazebo's source code, breaking it into smaller reusable libraries and making them more powerful and flexible in the process. RVIZ is a 3D visualization environment for robots using ROS. An ideal candidate would be willing to continue improving ign-rviz.

New GUI widgets in Ignition Gazebo

  • List of prerequisites: Experience with Linux, rendering, version control and interest in robotics
  • Description of programming skills: C++, Git
  • Difficulty level: Medium
  • List of potential mentors: Alejandro Hernández
  • Detailed description: The works involves porting a list of widgets features from Gazebo classic to Ignition Gazebo. Including new widgets that allow the users to debug their simulations and models. For example: visualize joints, wireframe, CoM, inertia, etc.

Support a new rendering engine

  • List of prerequisites: Experience with Linux, rendering, version control and interest in robotics
  • Description of programming skills: C++, Git
  • Difficulty level: Hard
  • List of potential mentors: Alejandro Hernández
  • Detailed description: The rendering component of Gazebo has been moved to its own library, Ignition Rendering, and is now part of the Ignition Robotics project. Ignition Rendering implements three different render engines: OGRE, OGRE 2 and Optix. The works involves to create a prototype with a different render engines, for example with godot.

ROS 2 projects list

For a general introduction on how to start contributing to ROS 2, check out the documentation! If you have any technical questions feel free to ask them at ROS Answers.

Improve launch front-end support

  • List of prerequisites: Experience with Linux and version control
  • Description of programming skills: Python
  • Difficulty level: Medium
  • List of potential mentors: Jacob Perron
  • Detailed description: The launch system is heavily used by the community for configuring and executing ROS 2 systems. It allows users to describe how to execute the many nodes and executables of their system with Python or markup languages like XML or YAML. You can find more information about launch by checking out this tutorial, this architecture document, or this design document, depending on what level of detail you're looking for. The core implementation of launch is written in Python, and it provides a rich set of features that users can leverage (e.g. events, substitutions, testing extensions). However, each feature must be independently exposed to the front-end interface so that people can use them in the markup language of their choice. A base set of features that currently have front-end support can be found here, but there are many that still need support. This project is about adding front-end support for missing launch features. These features include: events, composable nodes, lifecycle nodes, and features related to the launch_testing framework. The number of features that are in scope for this project will depend on the skill level of the student.

RMF projects list

Improve security coverage on RMF

  • List of prerequisites: Experience with ROS2 and Linux
  • Description of programming skills: Bash, C++ and Python
  • Difficulty level: Medium
  • List of potential mentors: Marco A. Gutierrez
  • Detailed description: The Robotics Middleware Framework (RMF) is an open source software that provides a means to manage different sets or fleets of robots from different vendors withing a certain infrastructure. Specifically the rmf_core packages provide the centralized functions of the Robotics Middleware Framework (RMF). These include task queuing, conflict-free resource scheduling, utilities to help create robot fleet adapters, and so on. Security plays an important role when orchestrating robots on these scenarios. Currently there is only one of the RMF Demos with the ROS security enabled (the office). The scope of this task goes through updating and expanding the coverage of this security not only on the demos but also by providing means to automatically deploy secured instances of the RMF environment. For more information regarding the security features of ROS you can check the ROS 2 DDS-Security Integration page.

Relevant resources

Gazebo / Ignition

Ignition web page

Gazebo web page

Gazebo tutorials

Gazebo Q&A

Gazebo mailing list

GitHub Ignition (code and issue tracker)

GitHub Gazebo (code and issue tracker)

ROS

ROS web page

ROS tutorials

ROS 2 tutorials

ROS Q&A

List of code repositories

RMF

RMF Core

RMF Presentation at ROSCon 2019)

SOSS Github code and issues

Application template for students

If you meet the general requirements and are interested in working on one of the OSRF projects during the Google Summer of Code, you can apply by:

  • Sending an email to: gsoc@osrfoundation.org , with the subject line: GSoC Application, and
  • Submit your application through the Google GSoC web site Your application should include the following information:

Contact information

  • Your name
  • A phone number
  • An email address where we can reach you for daily communication

Coursework

Please list relevant technical courses you have taken. In particular, we are interested in your background in:

  • Robotics
  • Software engineering
  • Computer graphics
  • Physics simulation

Experience

Please list any experience you’ve had in software development, including relevant class projects, internships, undergraduate or graduate research, and/or contributions to open source projects. For each example, please include a brief description of the overall project along with the specific contributions you made and when you made them.

In addition to the above information, we are interested in concrete examples of your work, which may include:

  • Sample code: please send an example of code you have written that you are proud of; be prepared to answer questions about it.
  • Publications: if you have participated in undergraduate or graduate research, please include a copy of any relevant publications.
  • Specialized skills: if you have experience/skills in particular areas that you believe would be useful to one of our projects, please let us know.
  • Personal website: if you have a website that discusses your research or other projects, please include a link.
  • References: names and contact information for people you have worked with who can recommend you.

Statement of intent

In a paragraph or two, describe your interests and background. Please tell us which of the project ideas you are interested in and why you’d like to work on it. If you have a proposal for a project not included on our list, please describe the idea clearly and provide a motivation for the work and a timeline for how you plan to accomplish it.