diff --git a/.github/workflows/rosdoc2.yml b/.github/workflows/rosdoc2.yml
new file mode 100644
index 0000000000..0771248e79
--- /dev/null
+++ b/.github/workflows/rosdoc2.yml
@@ -0,0 +1,14 @@
+name: rosdoc2
+
+on:
+ workflow_dispatch:
+ pull_request:
+ paths:
+ - ros2_controllers/doc/**
+ - ros2_controllers/rosdoc2.yaml
+ - ros2_controllers/package.xml
+
+
+jobs:
+ check:
+ uses: ros-controls/ros2_control_ci/.github/workflows/reusable-rosdoc2.yml@master
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index a34629da31..de19328805 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -26,6 +26,7 @@ repos:
- id: check-symlinks
- id: check-xml
- id: check-yaml
+ args: ["--allow-multiple-documents"]
- id: debug-statements
- id: end-of-file-fixer
- id: mixed-line-ending
@@ -104,6 +105,7 @@ repos:
description: Check if copyright notice is available in all files.
entry: ament_copyright
language: system
+ exclude: .*/conf\.py$
# Docs - RestructuredText hooks
- repo: https://github.com/PyCQA/doc8
diff --git a/ros2_controllers/doc/conf.py b/ros2_controllers/doc/conf.py
new file mode 100644
index 0000000000..b6134e9abd
--- /dev/null
+++ b/ros2_controllers/doc/conf.py
@@ -0,0 +1,5 @@
+# Configuration file for the Sphinx documentation builder.
+# settings will be overridden by rosdoc2, so we add here only custom settings
+
+copyright = "2024, ros2_control development team"
+html_logo = "https://control.ros.org/master/_static/logo_ros-controls.png"
diff --git a/ros2_controllers/doc/index.rst b/ros2_controllers/doc/index.rst
new file mode 100644
index 0000000000..f785112944
--- /dev/null
+++ b/ros2_controllers/doc/index.rst
@@ -0,0 +1,80 @@
+Welcome to the documentation for ros2_controllers
+=================================================
+
+For more information of the ros2_control framework see `control.ros.org `__.
+
+.. list-table::
+ :header-rows: 1
+
+ * - Package Name
+ - Documentation
+ - API
+ - ROS Index
+ * - ackermann_steering_controller
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - admittance_controller
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - bicycle_steering_controller
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - diff_drive_controller
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - effort_controllers
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - force_torque_sensor_broadcaster
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - forward_command_controller
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - imu_sensor_broadcaster
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - joint_state_broadcaster
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - joint_trajectory_controller
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - pid_controller
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - position_controllers
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - range_sensor_broadcaster
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - steering_controllers_library
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - tricycle_controller
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - tricycle_steering_controller
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
+ * - velocity_controllers
+ - `Documentation `__
+ - `API `__
+ - `ROS Index `__
diff --git a/ros2_controllers/package.xml b/ros2_controllers/package.xml
index 304088d5ab..6e8529e7e7 100644
--- a/ros2_controllers/package.xml
+++ b/ros2_controllers/package.xml
@@ -8,6 +8,8 @@
Apache License 2.0
+ https://control.ros.org
+
ament_cmake
ackermann_steering_controller
diff --git a/ros2_controllers/rosdoc2.yaml b/ros2_controllers/rosdoc2.yaml
new file mode 100644
index 0000000000..c5ec1b53a0
--- /dev/null
+++ b/ros2_controllers/rosdoc2.yaml
@@ -0,0 +1,20 @@
+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
+
+builders:
+ # Configure Sphinx with the location of the docs:
+ - sphinx: {
+ name: 'ros2_controllers',
+ sphinx_sourcedir: 'doc',
+ output_dir: ''
+ }