Contributing to BenchBot
Thank you for your interest in contributing to BenchBot! We welcome contributions from the community to make this the best ROS 2 benchmarking ecosystem.
This guide will help you get started with contributing code, documentation, or new features.
🛠️ Development Setup
Prerequisites
- OS: Ubuntu 22.04 LTS (Jammy Jellyfish)
- ROS 2: Humble Hawksbill
- Python: 3.10+
- Simulator: Gazebo Classic or O3DE
Installation
-
Fork and Clone the repository:
-
Install Python Dependencies:
-
Install ROS 2 Dependencies:
-
Verify Installation:
🚀 How to Contribute
1. Adding a New SLAM Algorithm
We designed BenchBot to be modular. To add a new SLAM:
-
Create a Config File: Add
configs/slams/my_slam.yaml.- Define the launch command.
- Define the topics (map, scan, odom).
- Set up probes to detect when it's ready.
-
Test It: Create a matrix
configs/matrices/test_my_slam.yamlusing your new SLAM ID. -
Document It: Update
docs/MULTI_SLAM_GUIDE.mdto list your new algorithm.
See Multi-SLAM Guide for details.
2. Adding a New Metric
Metrics are located in evaluation/metrics.py.
- Inherit from
BaseMetric. - Implement the
compute(gt_map, slam_map)method. - Register your metric in the
METRICS_REGISTRY.
3. Improving Documentation
Documentation is built with MkDocs Material.
- Edit files in
docs/. - Preview changes:
- Open
http://127.0.0.1:8000in your browser.
📏 Coding Standards
Python
- We follow PEP 8.
- Use Type Hints for function arguments and return types.
- formatted with
black.
def calculate_trajectory(poses: List[Pose]) -> float:
"""Calculates the total length of a trajectory."""
pass
Git Commit Messages
- Use Conventional Commits:
feat: add Hector SLAM supportfix: resolve crash in GMapping expirydocs: translate FAQ to Englishchore: update requirements.txt
📥 Pull Request Process
- Create a new branch:
git checkout -b feat/my-new-feature. - Commit your changes.
- Push to your fork.
- Open a Pull Request (PR) against the
mainbranch. - Wait for the CI checks to pass and for a maintainer review.
💬 Community
- Issues: Use GitHub Issues for bug reports and feature requests.
- Discussions: Use GitHub Discussions for questions and ideas.
Happy Coding! 🚀