Contributing

Thank you for your interest in contributing to wavemap!

Questions

If you have any questions, feel free to ask them in the Q&A section of our GitHub Discussions.

Before posting, please check if your question has already been addressed in our installation or usage tutorials. We’re happy to answer any remaining theoretical or code-related questions, and help you optimize wavemap for your specific sensor setup.

Bug reports & Feature requests

We encourage you to submit bug reports and feature requests. You can do so using the relevant GitHub Issue templates:

In addition to requests for new functionality, do not hesitate to open feature requests for:

  • API methods and interfaces

  • Extensions to the documentation and examples

Pull requests

We encourage pull requests, especially for fixes and improvements to the documentation, code, and ROS launch and config files. Also feel free to share launch and config files for new sensor setups and applications.

If you would like to contribute a new feature, please open a corresponding feature request before you start and mention that you are willing to help with its development. This way, we can synchronize and avoid duplicated efforts.

Coding standards

This project follows the Google Style Guide for C++.

To maintain code quality, we use the pre-commit framework to automatically format, lint, and perform basic code checks. You can install pre-commit together with the dependencies required to run all of wavemap’s checks with:

cd <path_to_wavemap_repo>
./tooling/scripts/install_pre_commit.sh

After running the above script, pre-commit will automatically check changed code when it is committed to git. All the checks can also be run manually at any time by calling:

# cd ~/catkin_ws/src/wavemap
pre-commit run --all

In case you really need to commit some changes that are not accepted by pre-commit, you can use git’s --no-verify flag as:

git commit --no-verify -m "Your commit message"

Testing

Wavemap’s codebase includes a broad suite of tests. These are run in our Continuous Integration pipeline for active merge requests, see here. You can also run the tests locally with:

cd <path_to_wavemap_repo>
./tooling/scripts/build_and_test_all.sh

The tests are located in the test subfolders of each package and implemented using the GoogleTest framework.

Documentation

The documentation consists of pages for specific topics, located in the docs/pages directory, and inline Doxygen annotations for the C++ source code.

To read the documentation for a specific wavemap version:

Latest release

Browse to https://ethz-asl.github.io/wavemap.

Specific release

Find the release in question under GitHub Releases. Under Assets, at the bottom of the release’s description, click and download docs.tar. Then unpack the archive into an empty folder and double-click index.html to open it in a browser.

Local version

In a terminal, run:

cd <path_to_wavemap_repo>
./tooling/scripts/preview_docs.sh

This will build a preview of the documentation based on your local wavemap version and changes and open the result in a web browser.