rosdoc2
Documentation for ROS 2 packages can be built with rosdoc2.
When a doc job is configured in the rosdistro, the resulting
documentation is uploaded to docs.ros.org.
The design document for
per package documentation
lays out the directory structure.
Linking to Other Packages
This is a dirty hack, but appears to be the only way to have the table of contents
link to another package's documentation without hard-coding the distro. The trailing
http:// changes how Sphinx processes the link:
An example of this can be seen in the documentation for image_pipeline, where we want to link to the documentation for each of the packages within the metapackage.
Documenting Metapackages
A metapackage is one that contains no code and exists basically to bundle up a set of
dependencies. For instance image_pipeline is a repository containing several packages
for image processing - and the image_pipeline metapackage depends on every package
in the repository to make it easier to install with apt install ros-<distro>-image-pipeline
rather than specifying each package individually. This does lead to an issue with
rosdoc2, which will fail if there is no code to document. If you want to add
tutorials or documentation to a metapackage, you need to use a rosdoc2.yaml file
to properly build your documentation (which we assume is located in the doc
folder:
type: 'rosdoc2 config'
version: 1
---
settings:
# Not generating any documentation of code
generate_package_index: false
always_run_doxygen: false
enable_breathe: false
enable_exhale: false
always_run_sphinx_apidoc: false
# Lie to rosdoc2, claim to be a python package
override_build_type: 'ament_python'
# Lie to rosdoc2 again, say your source is in doc folder
python_source: 'doc'
builders:
# Configure Sphinx with the location of the docs:
- sphinx: {
name: 'image_pipeline',
sphinx_sourcedir: 'doc',
output_dir: ''
}
Don't forget to add your yaml file to the package.xml: