This repository contains documentation about Gazebo that does not pertain to a specific Gazebo library. An example would be installation instructions for an Gazebo release. The documentation contained in this repository can be view at https://gazebosim.org/docs.
Each Gazebo library maintains
documentation and tutorials that are scoped to the features and
capabilities of the library itself. The documentation for a library can be
found under the API Reference section of https://gazebosim.org/docs.
The documentation is organized by Gazebo release version, with shared files located in a root-level common directory.
common/: Contains markdown files and folders that are shared across all Gazebo releases (e.g., installation overviews, architecture guides, governance documents, etc.).<release_name>/(e.g.,jetty/): Contains markdown files specific to a particular release and its specificindex.yaml.
Navigation menus are defined per-release in the release directory's index.yaml (e.g., jetty/index.yaml). The top-level index.yaml only contains global release metadata and library information, not navigation definitions.
The pages key in the release index.yaml defines the menu hierarchy using the section key to group related items.
Example:
pages:
- section: Get Started
children:
- name: getstarted
title: Get Started
file: common:get_started.md
- name: release_notes
title: Release Notes
file: release_notes.mdTo reference a file from the root-level common directory in a release-specific index.yaml, use the common: prefix in the file attribute.
- name: getstarted
title: Get Started
file: common:get_started.mdFiles without the prefix are assumed to be relative to the release directory.
To avoid duplication across versioned index.yaml files, you can use the !include tag to include shared lists of navigation items from the common/ directory.
Example:
- section: Reference
children:
- !include common/nav_reference.yaml
- name: release_notes
title: Release Notes
file: release_notes.mdThe build script will resolve the !include tag and flatten the list, effectively merging the shared items with any release-specific items listed before or after it.
If an entry in index.yaml has children but no file entry, it is considered an organizational element. The build script will automatically create a placeholder page for Sphinx to group the children under.
The documentation in this repository is built using Sphinx. To build, you need to install the following:
- python virtualenv
Create the virtual env and activate it:
python3 -m venv .venv
source .venv/bin/activateThen install the necessary dependencies:
pip install -r requirements.txtpython3 build_multiversion.pyThis will build all the documentation for all versions of Gazebo.
You can preview the result locally by running an HTTP server on
the output directory .build. For example:
python3 -m http.server 8000 -d .build
This will serve the website on http://localhost:8000
For quicker iteration, you can build the documentation for a subset
of Gazebo versions. To build garden and harmonic:
python3 build_multiversion.py --release garden harmonicInstructions on how to update all of the library docs is contained in the tools/build_docs.sh script.