Skip to content
Geoffrey Biggs edited this page Mar 25, 2024 · 18 revisions

Overview

This document describes a list of potential ideas created for the 2024 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 or post at ROS Discourse.

The following list shows a set of ideas that can extend the functionality of some of the open source projects led by OSRF.

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.

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.

Open-RMF is a free, open source, modular software system that enables robotic system interoperability. Open-RMF coordinates multiple fleets of indoor and outdoor robots with typical robotic use cases and integrates them with elevators/lifts, doors and other infrastructure.

Infrastructure is the computing infrastructure that supports the above projects, such as by providing continuous integration services and building binary packages.

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, check out the guided tutorials and Contributing guide! If you have any technical questions feel free to ask them on Robotics Stack Exchange or message @HelloWorld on Gazebo Community. For good first technical issues to tackle and become familiar with the development workflow, search on GitHub under the "gazebosim" organization for "good first issue" tags. The "help wanted" tag may contain more advanced tickets.

Benchmarking physics engines

  • List of prerequisites: Linux, git, have worked with a robotics simulator (e.g. Gazebo-classic, new Gazebo, O3DE, MuJoCo, Drake, etc.) and familiar with the basic concepts of simulation
  • Description of programming skills: C++
  • Difficulty level: Medium
  • List of potential mentors: Mabel Zhang, Steve Peters, Adam Dąbrowski
  • Expected size: 350h.
  • Expected outcome: Create or adapt a small set of simple simulation worlds with specific characteristics useful for benchmarking physics engines (analytical solution, conserved angular momentum, conserved energy, etc.), represented in SDFormat, along with a well-documented procedure to test those characteristics. The project will build on top of this example repository. The focus will be on creating a solid infrastructure with testing, logging, and analysis code, for developers of other simulators and the broader open source community to easily adopt and expand by writing their own tests in the future. Depending on candidate experience level and possible collaboration, the worlds and tests should be functional in one or two simulators, including at least new Gazebo (required), but can also include another open source simulator such as O3DE, MuJoCo, or Drake.
  • Detailed description: Many open source physics engines and robotics simulators are available, each with advantages and drawbacks. There is no simulator-agnostic benchmark to evaluate or compare the performance of different physics engines (or simulators), which is often desired when developers are choosing the right physics engine (or simulator) for their applications. This project will be part of an effort to create such an open source benchmarking repository, explicitly designed to be portable and extendable to multiple simulators and physics engines, so that new worlds and tests can be created by expert developers of different simulators. It will need to be well-documented.

Physics-based Sonar Simulation for Underwater Robotics

  • List of prerequisites: Linux, git, have worked with a ROS-Gazebo Framework and familiar with the basic concepts of simulation
  • Description of programming skills: C++, CUDA
  • Difficulty level: Medium
  • List of potential mentors: Woen-Sug Choi, Mabel Zhang, Brian Bingham
  • Expected size: 350h.
  • Expected outcome: Migration and improvement of a physics-based sonar simulation plugin, complete with example cases, for underwater robotics. This plugin will be based on the ROS 2 framework and the latest long-term support (LTS) version of new Gazebo, e.g. Gazebo Harmonic. Optionally, it will be upstreamed to new Gazebo. The project builds upon the foundation set by Project DAVE, which stands as a significant advancement in underwater robotics simulation using the ROS-Gazebo framework, particularly noted for its sonar plugin. The aim is to enhance the existing capabilities, with a focus on the sonar simulation aspect that has attracted considerable interest from new users.
  • Detailed description: Migrating and enhancing the physics-based multi-beam sonar simulation found in Project DAVE will not only involve adapting the simulation to work within the new Gazebo and ROS 2 environments (required; including parts of DAVE for integrity of the example case) but also improving its performance and capabilities (depending on candidates experience level). Key improvements may include the implementation of half-precision calculations in CUDA for increased refresh rates (possible journal paper work) and the expansion of the simulation to include additional sonar types, such as side-scan and mechanical scanning sonar. This project is inspired by recent advancements in underwater sonar simulation, which utilized an acoustic scattering model and GPU-accelerated CUDA computations to achieve physically accurate sonar imagery at practical refresh rates for robotics simulation.

Port model of plowing effect of wheels in deformable terrain to gz-sim

  • List of prerequisites: Linux, git, have worked with the Gazebo simulator (either Gazebo-classic or new Gazebo) and the dartsim physics engine, and familiar with physics engines and contact modeling
  • Description of programming skills: C++
  • Difficulty level: Hard
  • List of potential mentors: Steve Peters
  • Expected size: 350h.
  • Expected outcome: As there are many applications of wheeled robots driving on deformable terrain / soft soil, there is a use case for simulating the behavior of wheels in deformable terrain. This is challenging for physics engines that use rigid shapes for collision detection and contact resolution. A model of the plowing effect of wheels moving in deformable terrain was proposed based on changing the contact point position and normal direction based on the wheel's velocity (see gazebosim/gazebo-classic#3085) and implemented for the gazebo-classic fork of ODE in gazebosim/gazebo-classic#3164. This project will port this functionality to the new Gazebo, with required changes in gz-sim, gz-physics, and a physics engine supported by gz-physics (likely dartsim).
  • Detailed description: The existing implementation in gazebo-classic's fork of ODE is implemented in a contact callback function. A similar mechanism should be found for a physics engine supported by gz-physics to modify contact points and normals after narrow-phase collision detection but before contact constraints are created. Once this functionality has been added to a supported physics engine, the feature should be exposed in gz-physics and gz-sim.

ROS 2 projects list

For a general introduction on how to start contributing to ROS 2, check out the Contributing page! If you have any technical questions feel free to ask them on Robotics Stack Exchange. For high-level conceptual discussions, post on ROS Discourse.

Open-RMF projects list

RMF Site Workcells support

  • List of prerequisites: Linux, git, URDF, knowledge of Rust and Bevy framework are a plus.
  • Description of programming skills: Rust
  • Difficulty level: Medium
  • List of potential mentors: Luca Della Vedova
  • Expected size: 350h.
  • Expected outcome: Introduction of support for basic kinematics in RMF Site editor workcell mode, including creation, editing and visualization and UI for joints with limits and inertias.
  • Detailed description: RMF Site Editor is a new tool that is being developed to allow designing complex sites and speed up deployment and testing by offering an integrated tool. The workcell editor mode has been created to allow users to create and configure workcells (i.e. robotic arms) and currently offers URDF import / export, as well as basic editing capabilities. The purpose of the project will be to improve it by creating joint visualization, editing, as well as kinematic accuracy. A stretch goal would be to integrate the workcells in sites and create a demo that includes a building and one or more workcells.

RMF Site Dashboard mode

  • List of prerequisites: Linux, git, ROS 2, knowledge of Rust, Bevy and Open-RMF framework are a plus.
  • Description of programming skills: Rust
  • Difficulty level: Medium
  • List of potential mentors: Luca Della Vedova
  • Expected size: 350h.
  • Expected outcome: Creating an application, based on the RMF site editor, that turns the Site into a 3D dashboard by subscribing to the state of the facility (i.e. robot positions, their plans, doors and lift states) and updating the 3D visualization accordingly.
  • Detailed description: RMF Site Editor is a new tool that is being developed to allow designing complex sites and speed up deployment and testing by offering an integrated tool. It currently only implements a project editing mode where site projects can be created and exported into the pre-existing Open-RMF pipeline. This project will focus on giving real time visualization capabilities to the tool to turn it into a 3D real time dashboard that system integrators can use to visualize the state of their system and troubleshoot potential issues.

RMF Obstacle Detection Pipeline

  • List of prerequisites: Linux, git, ROS 2, and basic familiarity with Open-RMF framework. Bonus: Knowledge on training and deploying AI/ML models for object detection and pose estimation.
  • Description of programming skills: C++
  • Difficulty level: Medium
  • List of potential mentors: Yadunund Vijay
  • Expected size: 350h.
  • Expected outcome: Initial work was implemented via rmf_obstacle_detectors to track and forward poses of undesired obstacles in the path of mobile robots to an obstacle supervisor node that can re-route robots accordingly. However these features have not landed in main and there are a couple PRs open that need to be iterated on. Apart from this, there is a big chunk of work remaining in implementing a "obstacle server" that will be the single source of truth of all obstacles in the map. Presently obstacles are described using bounding boxes representing occupied volumes. We would also like to support octomap representations of obstacles which can be directly relied upon by our new freespace motion planner

Infrastructure project list

Gazebo Effortless Installations

  • List of prerequisites: good knowledge of docker/containers, github, github actions. Extra points but not mandatory: having some experience with Gazebo, GUI tools running on containers/github actions and/or devcontainers.
  • Description of programming skills: Python. Be able to program or learn Typescript.
  • Difficulty level: Medium
  • List of potential mentors: Jose Luis Rivero
  • Expected size: 350h.
  • Expected outcome: implemented a variety of new mechanisms to use a pre-installed Gazebo which help users and developers to enjoy a simple experience of running the simulator without the need of having to deal with the dependency chain or the requirements of the different versions of Gazebo with respect to the ROS version, the platform version or other aspects related to the deployment of the Gazebo desired combination.
  • Detailed description: the project will cover different ideas for implementing new Gazebo deployments. Some, but not all, of the initial ideas are:
    • Create a GitHub action that installs a provided version of Gazebo in a given platform. Inspired by ros-tooling/setup-ros.
    • Create a GitHub action that creates pre-built Docker images that can be hosted in the GitHub container registry. Inspired by ros-tooling/setup-ros-docker.
    • Develop a devcontainer environment that can be used to launch the Gazebo simulator. Probably reusing work from Nav2 devcontainers
    • Resurrect the official Docker images of Gazebo. See docker_images/issues/354 for more information.

Relevant resources

Gazebo

Gazebo web page

Gazebo tutorials

Gazebo Q&A

Gazebo mailing list

GitHub (code and issue tracker)

ROS

ROS web page

ROS tutorials

ROS 2 tutorials

ROS Q&A

List of code repositories

Open-RMF

RMF root repository

RMF Site Editor

Open-RMF Workshop at ROSCon 2022)

Application template for students

  • If you would like to suggest new projects please message @HelloWorld at Gazebo Community or post at ROS Discourse.
  • If you have specific questions to discuss about a project, send an email to gsoc@osrfoundation.org .
  • If you meet the general requirements and are interested in working on one of the OSRF projects during Google Summer of Code, you can apply by submitting 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.