diff --git a/.sphinx_tamer.yaml b/.sphinx_tamer.yaml new file mode 100644 index 00000000000..8d80eac95d9 --- /dev/null +++ b/.sphinx_tamer.yaml @@ -0,0 +1,10 @@ +sentence_scan: + extra_patterns: + - Steven! Ragnar + - ros2.org + - nav2.org + - ros2.repos + - 2.X + - (\s|^)(\.)(idl|msg|srv|action|NET|rviz) + ignorable_prefixes: + - Releases/ diff --git a/Makefile b/Makefile index b5d0ece7c46..6b7869043d3 100644 --- a/Makefile +++ b/Makefile @@ -23,7 +23,7 @@ multiversion: Makefile @$(BUILD) -M $@ "$(SOURCE)" "$(OUT)" $(OPTS) lint: - sphinx-lint source + ./sphinx-lint-with-ros source test: doc8 --ignore D001 --ignore-path build diff --git a/plugins/ros_checkers.py b/plugins/ros_checkers.py new file mode 100644 index 00000000000..610741b6cfc --- /dev/null +++ b/plugins/ros_checkers.py @@ -0,0 +1,16 @@ +#!/usr/bin/python3 +from sphinxlint.checkers import checker +import subprocess +import yaml + + +@checker('.rst', '.md') +def check_sentence_count(file, lines, options=None): + output = subprocess.check_output(['sphinx_sentence_scan_single', '.', file]) + results = yaml.safe_load(output) + for result in results: + sentences = result['sentences'] + for first, second in zip(sentences, sentences[1:]): + words0 = ' '.join(first.split()[-3:]) # last three words + words1 = ' '.join(second.split()[:3]) # first three words + yield result['line_num'], f'Each sentence must start on a new line. Break between "{words0}" and "{words1}"' diff --git a/requirements.txt b/requirements.txt index d75e4c9adbf..8c497e01483 100644 --- a/requirements.txt +++ b/requirements.txt @@ -9,3 +9,4 @@ sphinx-multiversion sphinx-rtd-theme sphinx-tabs sphinxcontrib-mermaid +sphinx-tamer diff --git a/source/Concepts/Intermediate/About-Executors.rst b/source/Concepts/Intermediate/About-Executors.rst index 27c5231b9d7..2a4e909434e 100644 --- a/source/Concepts/Intermediate/About-Executors.rst +++ b/source/Concepts/Intermediate/About-Executors.rst @@ -202,4 +202,4 @@ Further information ROS Industrial Conference. Virtual event. 16 December 2020. -* Daniel Casini, Tobias Blass, Ingo Lütkebohle, and Björn Brandenburg: `"Response-Time Analysis of ROS 2 Processing Chains under Reservation-Based Scheduling" `_, Proc. of 31st ECRTS 2019, Stuttgart, Germany, July 2019. +* Daniel Casini, Tobias Blass, Ingo Lütkebohle, and Björn Brandenburg: `"Response-Time Analysis of ROS 2 Processing Chains under Reservation-Based Scheduling" `_, Proceedings of 31st ECRTS 2019, Stuttgart, Germany, July 2019. diff --git a/source/Contact.rst b/source/Contact.rst index 0423318deb6..9b2eca30d01 100644 --- a/source/Contact.rst +++ b/source/Contact.rst @@ -59,7 +59,7 @@ If following a tutorial or online instructions provide a link to the specific in * Use a descriptive headline or subject line. Bad: "rviz doesn't work". - Good: "Rviz crashing looking for missing .so after latest apt update" + Good: "Rviz crashing looking for missing ``.so`` after latest apt update" * Include information about the exact platform, software, versions, and environment relevant to the problem. This includes how you installed the software (from binaries or from source) and which ROS middleware/DDS vendor you are using (if you know it). * Any warnings or errors. diff --git a/source/How-To-Guides/Documenting-a-ROS-2-Package.rst b/source/How-To-Guides/Documenting-a-ROS-2-Package.rst index 4b012efad24..e6dd3922067 100644 --- a/source/How-To-Guides/Documenting-a-ROS-2-Package.rst +++ b/source/How-To-Guides/Documenting-a-ROS-2-Package.rst @@ -240,6 +240,6 @@ On each job page, you can see when a build was last triggered, as well as the st Further Reading --------------- -* ``rosdoc2`` readme: https://github.com/ros-infrastructure/rosdoc2/blob/main/README.md -* ROS 2 design document on package documentation: https://design.ros2.org/articles/per_package_documentation.html -* The ROS 2 cookbook: https://github.com/mikeferguson/ros2_cookbook/blob/main/pages/rosdoc2.md +* `rosdoc2 readme `_ +* `ROS 2 design document on package documentation `_ +* `The ROS 2 cookbook `_ diff --git a/source/How-To-Guides/Migrating-from-ROS1/Migrating-Launch-Files.rst b/source/How-To-Guides/Migrating-from-ROS1/Migrating-Launch-Files.rst index 6d00fc71147..4fe37123780 100644 --- a/source/How-To-Guides/Migrating-from-ROS1/Migrating-Launch-Files.rst +++ b/source/How-To-Guides/Migrating-from-ROS1/Migrating-Launch-Files.rst @@ -13,7 +13,7 @@ Migrating Launch Files :depth: 1 :local: -While launch files in ROS 1 are always specified using `.xml `__ files, ROS 2 supports Python scripts to enable more flexibility (see `launch package `__) as well as XML and YAML files. +While launch files in ROS 1 are always specified using `xml `__ files, ROS 2 supports Python scripts to enable more flexibility (see `launch package `__) as well as XML and YAML files. This guide describes how to write ROS 2 XML launch files for an easy migration from ROS 1. diff --git a/source/How-To-Guides/Releasing/Release-Track.rst b/source/How-To-Guides/Releasing/Release-Track.rst index 491ca12b6c3..c7a1c71cb4a 100644 --- a/source/How-To-Guides/Releasing/Release-Track.rst +++ b/source/How-To-Guides/Releasing/Release-Track.rst @@ -112,7 +112,8 @@ Most repositories will be using git, but some legacy repositories might be using Version ^^^^^^^ -This is the version of the package you are releasing. (e.g. ``1.0.3``) +This is the version of the package you are releasing. +(e.g. ``1.0.3``) .. code-block:: bash diff --git a/source/How-To-Guides/Releasing/Releasing-a-Package.rst b/source/How-To-Guides/Releasing/Releasing-a-Package.rst index ee459206312..47527471db0 100644 --- a/source/How-To-Guides/Releasing/Releasing-a-Package.rst +++ b/source/How-To-Guides/Releasing/Releasing-a-Package.rst @@ -20,7 +20,7 @@ Releasing a Package **Releasing a package makes your package available on the public ROS 2 buildfarm.** This will: -* Make your package available to be installed via package managers (eg. ``apt`` on Ubuntu) for all supported Linux platforms in a ROS distribution as described in `REP 2000 `_. +* Make your package available to be installed via package managers (e.g. ``apt`` on Ubuntu) for all supported Linux platforms in a ROS distribution as described in `REP 2000 `_. * Allow your package to have API documentation automatically generated. * Make your package part of the `ROS Index `_. * (Optionally) Allow you to have automatic CI run for pull requests in your repository. diff --git a/source/How-To-Guides/Using-Variants.rst b/source/How-To-Guides/Using-Variants.rst index 7bf62a1dc1b..86f338ae16b 100644 --- a/source/How-To-Guides/Using-Variants.rst +++ b/source/How-To-Guides/Using-Variants.rst @@ -1,7 +1,8 @@ Using variants ============== -Metapackages do not provide software directly but depend on a group of other related packages to provide a convenient installation mechanism for the complete group of packages. [#]_ [#]_ +Metapackages do not provide software directly but depend on a group of other related packages to provide a convenient installation mechanism for the complete group of packages. +[#]_ [#]_ Variants are a list of official metapackages for commonly useful groups of ROS packages. .. [#] https://wiki.debian.org/metapackage diff --git a/source/Installation/Alternatives/Fedora-Development-Setup.rst b/source/Installation/Alternatives/Fedora-Development-Setup.rst index 5a6a5cea707..13941681841 100644 --- a/source/Installation/Alternatives/Fedora-Development-Setup.rst +++ b/source/Installation/Alternatives/Fedora-Development-Setup.rst @@ -8,7 +8,8 @@ Fedora (source) How to setup the development environment? ----------------------------------------- -The following system dependencies are required to build ROS 2 on Fedora. They can be installed with ``dnf`` as follows: +The following system dependencies are required to build ROS 2 on Fedora. +They can be installed with ``dnf`` as follows: .. code-block:: bash diff --git a/source/Installation/Alternatives/RHEL-Development-Setup.rst b/source/Installation/Alternatives/RHEL-Development-Setup.rst index 3d92c7a26db..36cc0a11e71 100644 --- a/source/Installation/Alternatives/RHEL-Development-Setup.rst +++ b/source/Installation/Alternatives/RHEL-Development-Setup.rst @@ -39,7 +39,8 @@ They can be enabled by running: sudo dnf install 'dnf-command(config-manager)' epel-release -y sudo dnf config-manager --set-enabled powertools -.. note:: This step may be slightly different depending on the distribution you are using. Check the EPEL documentation: https://docs.fedoraproject.org/en-US/epel/#_quickstart +.. note:: This step may be slightly different depending on the distribution you are using. + `Check the EPEL documentation `_ Install development tools and ROS tools @@ -175,7 +176,8 @@ See the :doc:`guide <../../How-To-Guides/Working-with-multiple-RMW-implementatio Alternate compilers ------------------- -Using a different compiler besides gcc to compile ROS 2 is easy. If you set the environment variables ``CC`` and ``CXX`` to executables for a working C and C++ compiler, respectively, and retrigger CMake configuration (by using ``--force-cmake-config`` or by deleting the packages you want to be affected), CMake will reconfigure and use the different compiler. +Using a different compiler besides gcc to compile ROS 2 is easy. +If you set the environment variables ``CC`` and ``CXX`` to executables for a working C and C++ compiler, respectively, and retrigger CMake configuration (by using ``--force-cmake-config`` or by deleting the packages you want to be affected), CMake will reconfigure and use the different compiler. Clang ^^^^^ diff --git a/source/Installation/Alternatives/RHEL-Install-Binary.rst b/source/Installation/Alternatives/RHEL-Install-Binary.rst index 604ba2bbff8..9d728d2af60 100644 --- a/source/Installation/Alternatives/RHEL-Install-Binary.rst +++ b/source/Installation/Alternatives/RHEL-Install-Binary.rst @@ -31,7 +31,8 @@ They can be enabled by running: sudo dnf install 'dnf-command(config-manager)' epel-release -y sudo dnf config-manager --set-enabled powertools -.. note:: This step may be slightly different depending on the distribution you are using. Check the EPEL documentation: https://docs.fedoraproject.org/en-US/epel/#_quickstart +.. note:: This step may be slightly different depending on the distribution you are using. + `Check the EPEL documentation `_ Installing prerequisites ------------------------ diff --git a/source/Installation/Alternatives/Ubuntu-Development-Setup.rst b/source/Installation/Alternatives/Ubuntu-Development-Setup.rst index ec093fc60e1..bd66561a298 100644 --- a/source/Installation/Alternatives/Ubuntu-Development-Setup.rst +++ b/source/Installation/Alternatives/Ubuntu-Development-Setup.rst @@ -187,7 +187,8 @@ Continue with the :doc:`tutorials and demos <../../Tutorials>` to configure your Using the ROS 1 bridge ---------------------- -The ROS 1 bridge can connect topics from ROS 1 to ROS 2 and vice-versa. See the dedicated `documentation `__ on how to build and use the ROS 1 bridge. +The ROS 1 bridge can connect topics from ROS 1 to ROS 2 and vice-versa. +See the dedicated `documentation `__ on how to build and use the ROS 1 bridge. Additional RMW implementations (optional) ----------------------------------------- diff --git a/source/Installation/Alternatives/Ubuntu-Install-Binary.rst b/source/Installation/Alternatives/Ubuntu-Install-Binary.rst index c601d862e74..4c4a8ec6a8f 100644 --- a/source/Installation/Alternatives/Ubuntu-Install-Binary.rst +++ b/source/Installation/Alternatives/Ubuntu-Install-Binary.rst @@ -126,7 +126,8 @@ Continue with the :doc:`tutorials and demos <../../Tutorials>` to configure your Using the ROS 1 bridge ---------------------- -The ROS 1 bridge can connect topics from ROS 1 to ROS 2 and vice-versa. See the dedicated `documentation `__ on how to build and use the ROS 1 bridge. +The ROS 1 bridge can connect topics from ROS 1 to ROS 2 and vice-versa. +See the dedicated `documentation `__ on how to build and use the ROS 1 bridge. Additional RMW implementations (optional) ----------------------------------------- diff --git a/source/Installation/Alternatives/Windows-Development-Setup.rst b/source/Installation/Alternatives/Windows-Development-Setup.rst index 7afe410e732..1443031ef00 100644 --- a/source/Installation/Alternatives/Windows-Development-Setup.rst +++ b/source/Installation/Alternatives/Windows-Development-Setup.rst @@ -70,7 +70,7 @@ First setup a development folder, for example ``C:\{DISTRO}``: .. note:: It is very important that the chosen path is short, due to the short default Windows path limits (260 characters). - To allow longer paths, see https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry. + To allow longer paths, see `maximum-file-path-limitation `__. .. code-block:: bash @@ -124,7 +124,7 @@ Start a command shell and source the ROS 2 setup file to set up the workspace: This will automatically set up the environment for any DDS vendors that support was built for. -It is normal that the previous command, if nothing else went wrong, outputs "The system cannot find the path specified." exactly once. +It is normal that the previous command, if nothing else went wrong, outputs ``The system cannot find the path specified.`` exactly once. Test and run ------------ @@ -204,7 +204,7 @@ If you want to be able to run all the tests in Debug mode, you'll need to instal * You'll need to quit and restart the command prompt after installing the above. * Get and extract the Python 3.8.3 source from the ``tgz``: - * https://www.python.org/ftp/python/3.8.3/Python-3.8.3.tgz + * `Python-3.8.3 `__ * To keep these instructions concise, please extract it to ``C:\dev\Python-3.8.3`` * Now, build the Python source in debug mode from a Visual Studio command prompt: @@ -256,7 +256,7 @@ If you want to be able to run all the tests in Debug mode, you'll need to instal python -m pip uninstall numpy lxml python -m pip install numpy lxml -* To create executables python scripts(.exe), python_d should be used to invoke colcon +* To create executables python scripts(``.exe``), python_d should be used to invoke colcon .. code-block:: bash diff --git a/source/Installation/Alternatives/macOS-Development-Setup.rst b/source/Installation/Alternatives/macOS-Development-Setup.rst index ea4c2d0c832..9383dc81635 100644 --- a/source/Installation/Alternatives/macOS-Development-Setup.rst +++ b/source/Installation/Alternatives/macOS-Development-Setup.rst @@ -178,7 +178,8 @@ Continue with the `tutorials and demos <../../Tutorials>` to configure your envi Using the ROS 1 bridge ---------------------- -The ROS 1 bridge can connect topics from ROS 1 to ROS 2 and vice-versa. See the dedicated `documentation `__ on how to build and use the ROS 1 bridge. +The ROS 1 bridge can connect topics from ROS 1 to ROS 2 and vice-versa. +See the dedicated `documentation `__ on how to build and use the ROS 1 bridge. Additional RMW implementations (optional) ----------------------------------------- diff --git a/source/Installation/DDS-Implementations.rst b/source/Installation/DDS-Implementations.rst index d412ab7c161..43b1bc06ad2 100644 --- a/source/Installation/DDS-Implementations.rst +++ b/source/Installation/DDS-Implementations.rst @@ -4,7 +4,7 @@ DDS implementations By default, ROS 2 uses DDS as its `middleware `__. It is compatible with multiple DDS or RTPS (the DDS wire protocol) vendors. There is currently support for eProsima's Fast DDS, RTI's Connext DDS, Eclipse Cyclone DDS, and GurumNetworks GurumDDS. -See https://ros.org/reps/rep-2000.html for supported DDS vendors by distribution. +See `REP-2000 `__ for supported DDS vendors by distribution. The default DDS vendor is eProsima's Fast DDS. diff --git a/source/Installation/DDS-Implementations/Install-Connext-Security-Plugins.rst b/source/Installation/DDS-Implementations/Install-Connext-Security-Plugins.rst index ef5196e83d7..651337960e9 100644 --- a/source/Installation/DDS-Implementations/Install-Connext-Security-Plugins.rst +++ b/source/Installation/DDS-Implementations/Install-Connext-Security-Plugins.rst @@ -3,7 +3,8 @@ Connext security plugins The Connext DDS Libraries are included with ROS 2 under a `non-commercial license `__ and do not include the security -plug-in libraries. These libraries are available in the commercial, +plug-in libraries. +These libraries are available in the commercial, university and research license versions of RTI Connext DDS Pro, which is bundled with tools for system debugging, monitoring, record/replay, etc. @@ -13,7 +14,8 @@ The Connext DDS Evaluation Version (6.0.1) includes the security plugins, and ca A video walk-thru of this installation (tools and security plug-ins) is available `here `__ at -the RTI website. The steps are: +the RTI website. +The steps are: **Install Connext DDS Pro (Host)** This is a host-specific installer application (for Windows, Linux, MacOS) to install a 'Host' bundle which includes the Launcher, tools, and other software services. @@ -27,23 +29,26 @@ The Launcher is used to install target libraries, security plugins, and other la Launcher Image -The 'RTI Package Installer' is used to install '.rtipkg' files -- target -libraries, security plug-ins, etc. Open the Package Installer and select -all of the .rtipkg files that were included in the Connext DDS Secure +The 'RTI Package Installer' is used to install ``.rtipkg`` files -- target +libraries, security plug-ins, etc. +Open the Package Installer and select +all of the ``.rtipkg`` files that were included in the Connext DDS Secure bundle for installation: - * Target Libraries - such as: rti\_connext\_dds-[version]-pro-target-[toolchain].rtipkg - * Security Plugin Host - such as: rti\_security\_plugins-[version]-host-[toolchain].rtipkg - * Security Plugin Target - such as: rti\_security\_plugins-[version]-target-[toolchain].rtipkg - * OpenSSL Host - such as: openssl-1.0.2x-[version]-host-[toolchain].rtipkg + * Target Libraries - such as: ``rti_connext_dds-[version]-pro-target-[toolchain].rtipkg`` + * Security Plugin Host - such as: ``rti_security_plugins-[version]-host-[toolchain].rtipkg`` + * Security Plugin Target - such as: ``rti_security_plugins-[version]-target-[toolchain].rtipkg`` + * OpenSSL Host - such as: ``openssl-1.0.2x-[version]-host-[toolchain].rtipkg`` **Extract and Install OpenSSL** -This is included as an archive (.zip or +This is included as an archive (``.zip`` or otherwise) and can be simply extracted and copied to a convenient -location on your host computer. As a suggestion, this could also be -installed into the 'rti\_connext\_dds-[version]' directory in your home +location on your host computer. +As a suggestion, this could also be +installed into the ``rti_connext_dds-[version]`` directory in your home directory space (this was created during installation of the RTI host -tools). Note: this directory location may need to be placed in your PATH +tools). +Note: this directory location may need to be placed in your PATH environment variable. See the `RTI Security Plugins Getting Started Guide `__ for more information. diff --git a/source/Installation/DDS-Implementations/Install-Connext-University-Eval.rst b/source/Installation/DDS-Implementations/Install-Connext-University-Eval.rst index 68f6b7d72fb..3ab0be84efe 100644 --- a/source/Installation/DDS-Implementations/Install-Connext-University-Eval.rst +++ b/source/Installation/DDS-Implementations/Install-Connext-University-Eval.rst @@ -6,7 +6,8 @@ RTI Connext DDS :local: A full-suite installation of RTI Connext DDS is available for many additional platforms, for universities, evaluation, or purchase. -This installation includes diagnostic tools, layered services, and security. See below for installation details. +This installation includes diagnostic tools, layered services, and security. +See below for installation details. RTI University Program ---------------------- @@ -23,8 +24,10 @@ To install RTI Connext DDS **version 6.0.1** Evaluation: * Visit the `RTI Free Trial (6.0.1) site `__. * Download the version(s) to match your environment. * Contact license@rti.com for an evaluation license. - * Install RTI Connext 6.0.1 by running the installation program. When finished, it will run the RTI Launcher. - * Use the RTI Launcher to install the license file (rti_license.dat) if needed. The launcher may also be used to launch the diagnostic tools and services. + * Install RTI Connext 6.0.1 by running the installation program. + When finished, it will run the RTI Launcher. + * Use the RTI Launcher to install the license file (rti_license.dat) if needed. + The launcher may also be used to launch the diagnostic tools and services. Detailed instructions for each platform are provided below. diff --git a/source/Installation/DDS-Implementations/Working-with-GurumNetworks-GurumDDS.rst b/source/Installation/DDS-Implementations/Working-with-GurumNetworks-GurumDDS.rst index eadf5ebf66d..97a5472b7cf 100644 --- a/source/Installation/DDS-Implementations/Working-with-GurumNetworks-GurumDDS.rst +++ b/source/Installation/DDS-Implementations/Working-with-GurumNetworks-GurumDDS.rst @@ -4,7 +4,8 @@ GurumNetworks GurumDDS ====================== -``rmw_gurumdds`` is an implementation of the ROS middleware interface using GurumNetworks GurumDDS. For more information about GurumDDS, visit the `GurumNetworks website `_. +``rmw_gurumdds`` is an implementation of the ROS middleware interface using GurumNetworks GurumDDS. +For more information about GurumDDS, visit the `GurumNetworks website `_. Prerequisites @@ -16,9 +17,9 @@ Version Requirements (`see the README for details = 3.2.0 -jazzy >= 3.2.0 -humble 3.1.x +rolling ``>= 3.2.0`` +jazzy ``>= 3.2.0`` +humble ``3.1.x`` ================ ================ Deb packages of GurumDDS are provided in the ROS 2 apt repositories on Ubuntu. diff --git a/source/Installation/RHEL-Install-RPMs.rst b/source/Installation/RHEL-Install-RPMs.rst index f07af0687d8..ab7e86c5d28 100644 --- a/source/Installation/RHEL-Install-RPMs.rst +++ b/source/Installation/RHEL-Install-RPMs.rst @@ -35,9 +35,10 @@ You will need to enable the EPEL repositories and the PowerTools repository: sudo dnf install 'dnf-command(config-manager)' epel-release -y sudo dnf config-manager --set-enabled powertools -.. note:: This step may be slightly different depending on the distribution you are using. Check the EPEL documentation: https://docs.fedoraproject.org/en-US/epel/#_quickstart +.. note:: This step may be slightly different depending on the distribution you are using. + `Check the EPEL documentation `_ -Next, download the ROS 2 .repo file: +Next, download the ROS 2 ``.repo`` file: .. code-block:: bash diff --git a/source/Installation/Ubuntu-Install-Debs.rst b/source/Installation/Ubuntu-Install-Debs.rst index ef374474a4f..24269e81a51 100644 --- a/source/Installation/Ubuntu-Install-Debs.rst +++ b/source/Installation/Ubuntu-Install-Debs.rst @@ -120,7 +120,8 @@ Continue with the :doc:`tutorials and demos <../../Tutorials>` to configure your Using the ROS 1 bridge ---------------------- -The ROS 1 bridge can connect topics from ROS 1 to ROS 2 and vice-versa. See the dedicated `documentation `__ on how to build and use the ROS 1 bridge. +The ROS 1 bridge can connect topics from ROS 1 to ROS 2 and vice-versa. +See the dedicated `documentation `__ on how to build and use the ROS 1 bridge. Additional RMW implementations (optional) ----------------------------------------- diff --git a/source/Installation/Windows-Install-Binary.rst b/source/Installation/Windows-Install-Binary.rst index ab7b0bacad9..edeff01270a 100644 --- a/source/Installation/Windows-Install-Binary.rst +++ b/source/Installation/Windows-Install-Binary.rst @@ -53,7 +53,7 @@ Start a command shell and source the ROS 2 setup file to set up the workspace: call C:\dev\ros2_{DISTRO}\local_setup.bat -It is normal that the previous command, if nothing else went wrong, outputs "The system cannot find the path specified." exactly once. +It is normal that the previous command, if nothing else went wrong, outputs ``The system cannot find the path specified.`` exactly once. Try some examples ----------------- diff --git a/source/Installation/_RHEL-Set-Locale.rst b/source/Installation/_RHEL-Set-Locale.rst index 576a1bc4cbe..3e931d53dc0 100644 --- a/source/Installation/_RHEL-Set-Locale.rst +++ b/source/Installation/_RHEL-Set-Locale.rst @@ -1,6 +1,7 @@ Make sure you have a locale which supports ``UTF-8``. If you are in a minimal environment (such as a docker container), the locale may be something minimal like ``C``. -We test with the following settings. However, it should be fine if you're using a different UTF-8 supported locale. +We test with the following settings. +However, it should be fine if you're using a different UTF-8 supported locale. .. code-block:: bash diff --git a/source/Installation/_Ubuntu-Set-Locale.rst b/source/Installation/_Ubuntu-Set-Locale.rst index f8d97322ba8..f4da19f4877 100644 --- a/source/Installation/_Ubuntu-Set-Locale.rst +++ b/source/Installation/_Ubuntu-Set-Locale.rst @@ -1,6 +1,7 @@ Make sure you have a locale which supports ``UTF-8``. If you are in a minimal environment (such as a docker container), the locale may be something minimal like ``POSIX``. -We test with the following settings. However, it should be fine if you're using a different UTF-8 supported locale. +We test with the following settings. +However, it should be fine if you're using a different UTF-8 supported locale. .. code-block:: bash diff --git a/source/Installation/_Windows-Install-Prerequisites.rst b/source/Installation/_Windows-Install-Prerequisites.rst index d73c33f8856..c30032684ba 100644 --- a/source/Installation/_Windows-Install-Prerequisites.rst +++ b/source/Installation/_Windows-Install-Prerequisites.rst @@ -77,7 +77,7 @@ Install OpenCV Some of the examples require OpenCV to be installed. -You can download a precompiled version of OpenCV 3.4.6 from https://github.com/ros2/ros2/releases/download/opencv-archives/opencv-3.4.6-vc16.VS2019.zip . +You can download a precompiled version of OpenCV ``3.4.6`` from `here `__. Assuming you unpacked it to ``C:\opencv``, type the following on a Command Prompt (requires Admin privileges): @@ -104,12 +104,12 @@ You will need to append the CMake bin folder ``C:\Program Files\CMake\bin`` to y Please download these packages from `this `__ GitHub repository. -* asio.1.12.1.nupkg -* bullet.3.17.nupkg -* cunit.2.1.3.nupkg -* eigen.3.3.4.nupkg -* tinyxml-usestl.2.6.2.nupkg -* tinyxml2.6.0.0.nupkg +* ``asio.1.12.1.nupkg`` +* ``bullet.3.17.nupkg`` +* ``cunit.2.1.3.nupkg`` +* ``eigen.3.3.4.nupkg`` +* ``tinyxml-usestl.2.6.2.nupkg`` +* ``tinyxml2.6.0.0.nupkg`` Once these packages are downloaded, open an administrative shell and execute the following command: diff --git a/source/Installation/_rosdep_Linux_Mint.rst b/source/Installation/_rosdep_Linux_Mint.rst index 153177af6c3..bf46b53d3af 100644 --- a/source/Installation/_rosdep_Linux_Mint.rst +++ b/source/Installation/_rosdep_Linux_Mint.rst @@ -1 +1,2 @@ -**Note**: If you're using a distribution that is based on Ubuntu (like Linux Mint) but does not identify itself as such, you'll get an error message like ``Unsupported OS [mint]``. In this case append ``--os=ubuntu:jammy`` to the above command. +**Note**: If you're using a distribution that is based on Ubuntu (like Linux Mint) but does not identify itself as such, you'll get an error message like ``Unsupported OS [mint]``. +In this case append ``--os=ubuntu:jammy`` to the above command. diff --git a/source/Related-Projects/Nvidia-ROS2-Projects.rst b/source/Related-Projects/Nvidia-ROS2-Projects.rst index 7a6b6dc6fca..47982b544ba 100644 --- a/source/Related-Projects/Nvidia-ROS2-Projects.rst +++ b/source/Related-Projects/Nvidia-ROS2-Projects.rst @@ -7,13 +7,15 @@ ISAAC ROS Projects ------------------ * `Pre-built ROS 2 Humble support `__: Pre-built Debian packages for ROS 2 Humble on Ubuntu 20.04 for Jetson and other aarch64 platforms from the NVIDIA build farm. * `CUDA with NITROS `__: This helps users develop their own CUDA enabled nodes that work with NITROS, the Isaac ROS implementation of type adaptation & type negotiation which enables accelerated computing in ROS 2. -* `Isaac ROS NITROS Bridge `__: NITROS bridge for optimized integration of Isaac ROS packages with existing ROS 1 applications. Use this to bridge your ROS applications to ROS 2 for accelerated computing with >2x speed up compared to using a traditional ROS bridge. +* `Isaac ROS NITROS Bridge `__: NITROS bridge for optimized integration of Isaac ROS packages with existing ROS 1 applications. + Use this to bridge your ROS applications to ROS 2 for accelerated computing with >2x speed up compared to using a traditional ROS bridge. * `Nova Carter `__: A reference AMR for robotics development and research, powered by Isaac ROS and Nav2, and tuned with Open Navigation for teleoperation, mapping, and navigation. * `Isaac ROS Nova `__: This repository provides a set of optimized packages to interface with the Isaac Nova Orin sensor suite. * `Isaac ROS Pose Estimation `__: This repository contains ROS 2 packages to predict the pose of an object. * `ROS2_Benchmark `__: ros2_benchmark provides the tools for measuring the throughput, latency, and compute utilization of these complex graphs without altering the code under test. * `Isaac ROS Benchmark `__: This package builds upon the ros2_benchmark to provide configurations to benchmark Isaac ROS graphs. -* `Isaac ROS Map Localization `__: This module contains ROS 2 packages for lidar processing to estimate poses relative to a map. The Occupancy Grid Localizer processes a planar range scan to estimate pose in an occupancy grid map; this occurs in less than 1 second for most maps. +* `Isaac ROS Map Localization `__: This module contains ROS 2 packages for lidar processing to estimate poses relative to a map. + The occupancy grid localizer processes a planar range scan to estimate pose in an occupancy grid map; this occurs in less than 1 second for most maps. * `Isaac ROS Nitros `__: Isaac Transport for ROS package for hardware-acceleration friendly movement of messages. * `Isaac ROS Compression `__: Hardware accelerated NITROS packages to compress camera data capture and playback for development of AI models and perception functions, compressing 4x 1080p cameras at 30fps (>120fps total) reducing data footprint by ~10x. * `Isaac ROS DNN Stereo Depth `__: DNN Stereo Disparity includes packages for predicting disparity of stereo input. diff --git a/source/The-ROS2-Project/Contributing/Build-Farms.rst b/source/The-ROS2-Project/Contributing/Build-Farms.rst index 558b6c53703..c292125d8aa 100644 --- a/source/The-ROS2-Project/Contributing/Build-Farms.rst +++ b/source/The-ROS2-Project/Contributing/Build-Farms.rst @@ -96,10 +96,11 @@ Frequency Asked Questions (FAQ) and Troubleshooting #. **I seem to be missing a dependency, how do I find out which one?** - You basically have two options, a. is easier but may take several iterations, b. is more - elaborate and gives you the full insight as well as local debugging. + You basically have two options: + Option a is easier but may take several iterations; + Option b is more elaborate and gives you the full insight as well as local debugging. - a) Inspect the release job that raised the issue (see 1.) and localize the cmake dependency issue. + a) Inspect the release job that raised the issue (see above question) and localize the cmake dependency issue. To do so, browse to the cmake section, e.g., navigate to the *build binarydeb* section through the menu on the left in case of a Ubuntu/Debian build job. The *CMake Error* will typically hint at a dependency required by the cmake configuration but missing in the `package manifest`_. diff --git a/source/The-ROS2-Project/Contributing/Code-Style-Language-Versions.rst b/source/The-ROS2-Project/Contributing/Code-Style-Language-Versions.rst index 9df86824617..590a8a81155 100644 --- a/source/The-ROS2-Project/Contributing/Code-Style-Language-Versions.rst +++ b/source/The-ROS2-Project/Contributing/Code-Style-Language-Versions.rst @@ -376,16 +376,36 @@ Since there is not an existing CMake style guide we will define our own: Markdown / reStructured Text / docblocks ---------------------------------------- -Style -^^^^^ - The following rules to format text is intended to increase readability as well as versioning. -* *[.md, .rst only]* Each section title should be preceded by one empty line and succeeded by one empty line. +Any Doc Type +^^^^^^^^^^^^ + +* Each sentence must start on a new line. + + * Rationale: For longer paragraphs a single change in the beginning makes the diff unreadable since it carries forward through the whole paragraph. + +* Each sentence can optionally be wrapped to keep each line short. +* The lines should not have any trailing white spaces. + +Markdown or RST +^^^^^^^^^^^^^^^ + +* Each section title should be preceded by one empty line and succeeded by one empty line. * Rationale: It expedites to get an overview about the structure when screening the document. -* *[.rst only]* In reStructured Text the headings should follow the hierarchy described in the `Sphinx style guide `__: +* A code block must be preceded and succeeded by an empty line. + + * Rationale: Whitespace is significant only directly before and directly after fenced code blocks. + Following these instructions will ensure that highlighting works properly and consistently. + +* A code block should specify a syntax (e.g. ``bash``). + +RST only +^^^^^^^^ + +* In reStructured Text the headings should follow the hierarchy described in the `Sphinx style guide `__: * ``#`` with overline (only once, used for the document title) * ``*`` with overline @@ -395,22 +415,12 @@ The following rules to format text is intended to increase readability as well a * ``"`` * Rationale: A consistent hierarchy expedites getting an idea about the nesting level when screening the document. -* *[.md only]* In Markdown the headings should follow the ATX-style described in the `Markdown syntax documentation `__ +Markdown Only +^^^^^^^^^^^^^ + +* In Markdown the headings should follow the ATX-style described in the `Markdown syntax documentation `__ * ATX-style headers use 1-6 hash characters (``#``) at the start of the line to denote header levels 1-6. * A space between the hashes and the header title should be used (such as ``# Heading 1``) to make it easier to visually separate them. * Justification for the ATX-style preference comes from the `Google Markdown style guide `__ * Rationale: ATX-style headers are easier to search and maintain, and make the first two header levels consistent with the other levels. - -* *[any]* Each sentence must start on a new line. - - * Rationale: For longer paragraphs a single change in the beginning makes the diff unreadable since it carries forward through the whole paragraph. - -* *[any]* Each sentence can optionally be wrapped to keep each line short. -* *[any]* The lines should not have any trailing white spaces. -* *[.md, .rst only]* A code block must be preceded and succeeded by an empty line. - - * Rationale: Whitespace is significant only directly before and directly after fenced code blocks. - Following these instructions will ensure that highlighting works properly and consistently. - -* *[.md, .rst only]* A code block should specify a syntax (e.g. ``bash``). diff --git a/source/The-ROS2-Project/Contributing/Quality-Guide.rst b/source/The-ROS2-Project/Contributing/Quality-Guide.rst index 0c8a3ff570f..34fce9e783f 100644 --- a/source/The-ROS2-Project/Contributing/Quality-Guide.rst +++ b/source/The-ROS2-Project/Contributing/Quality-Guide.rst @@ -189,9 +189,9 @@ However, this step-by-step is a great place to start! * Step 4 - (Optional) Enable Negative Capability Analysis - https://clang.llvm.org/docs/ThreadSafetyAnalysis.html#negative-capabilities - - Negative Capability Analysis lets you specify "this lock must not be held when calling this function". It can reveal potential deadlock cases that other annotations cannot. + `Negative Capability Analysis `_ + lets you specify "this lock must not be held when calling this function". + It can reveal potential deadlock cases that other annotations cannot. * Where you specified ``-Wthread-safety``, add the additional flag ``-Wthread-safety-negative`` * On any function that acquires a lock, use the ``RCPPUTILS_TSA_REQUIRES(!mutex)`` pattern diff --git a/source/The-ROS2-Project/ROSCon-Content.rst b/source/The-ROS2-Project/ROSCon-Content.rst index d7dc328e1c8..b365e146219 100644 --- a/source/The-ROS2-Project/ROSCon-Content.rst +++ b/source/The-ROS2-Project/ROSCon-Content.rst @@ -88,7 +88,8 @@ The following `ROSCon `__ talks have been given on ROS 2 - `video `__ * - ⚡ Lightning Talks ⚡ - `video `__ - * - How is my robot? - On the state of ROS Diagnostics + * - How is my robot? + - On the state of ROS Diagnostics - `video `__ * - Accelerating the CI/CD-to-robot cycle by 10x for 1/10th the cost - `video `__ @@ -232,7 +233,8 @@ The following `ROSCon `__ talks have been given on ROS 2 - `video `__ * - SpatialVision: Bringing Popping-Out RViz to Life with AirPods - `video `__ - * - What is Robotics Observability? Scaling ROS from Prototype to Production + * - What is Robotics Observability? + Scaling ROS from Prototype to Production - `video `__ * - Surviving the Flood (of Rosbags) - `video `__ diff --git a/source/Tutorials/Advanced/Allocator-Template-Tutorial.rst b/source/Tutorials/Advanced/Allocator-Template-Tutorial.rst index 93d9d26570a..e6dcc0282de 100644 --- a/source/Tutorials/Advanced/Allocator-Template-Tutorial.rst +++ b/source/Tutorials/Advanced/Allocator-Template-Tutorial.rst @@ -24,16 +24,22 @@ Background Suppose you want to write real-time safe code, and you've heard about the many dangers of calling "new" during the real-time critical section, because the default heap allocator on most platforms is nondeterministic. -By default, many C++ standard library structures will implicitly allocate memory as they grow, such as ``std::vector``. However, these data structures also accept an "Allocator" template argument. If you specify a custom allocator to one of these data structures, it will use that allocator for you instead of the system allocator to grow or shrink the data structure. Your custom allocator could have a pool of memory preallocated on the stack, which might be better suited to real-time applications. +By default, many C++ standard library structures will implicitly allocate memory as they grow, such as ``std::vector``. +However, these data structures also accept an "Allocator" template argument. +If you specify a custom allocator to one of these data structures, it will use that allocator for you instead of the system allocator to grow or shrink the data structure. +Your custom allocator could have a pool of memory preallocated on the stack, which might be better suited to real-time applications. -In the ROS 2 C++ client library (rclcpp), we are following a similar philosophy to the C++ standard library. Publishers, subscribers, and the Executor accept an Allocator template parameter that controls allocations made by that entity during execution. +In the ROS 2 C++ client library (rclcpp), we are following a similar philosophy to the C++ standard library. +Publishers, subscribers, and the executor accept an allocator template parameter that controls allocations made by that entity during execution. Writing an allocator -------------------- To write an allocator compatible with ROS 2's allocator interface, your allocator must be compatible with the C++ standard library allocator interface. -The C++11 library provides something called ``allocator_traits``. The C++11 standard specifies that a custom allocator only needs to fulfil a minimal set of requirements to be used to allocate and deallocate memory in a standard way. ``allocator_traits`` is a generic structure that fills out other qualities of an allocator based on an allocator written with the minimal requirements. +The C++11 library provides something called ``allocator_traits``. +The C++11 standard specifies that a custom allocator only needs to fulfil a minimal set of requirements to be used to allocate and deallocate memory in a standard way. +``allocator_traits`` is a generic structure that fills out other qualities of an allocator based on an allocator written with the minimal requirements. For example, the following declaration for a custom allocator would satisfy ``allocator_traits`` (of course, you would still need to implement the declared functions in this struct): @@ -58,7 +64,8 @@ You could then access other functions and members of the allocator filled in by To learn about the full capabilities of ``allocator_traits``, see https://en.cppreference.com/w/cpp/memory/allocator_traits . -However, some compilers that only have partial C++11 support, such as GCC 4.8, still require allocators to implement a lot of boilerplate code to work with standard library structures such as vectors and strings, because these structures do not use ``allocator_traits`` internally. Therefore, if you're using a compiler with partial C++11 support, your allocator will need to look more like this: +However, some compilers that only have partial C++11 support, such as GCC 4.8, still require allocators to implement a lot of boilerplate code to work with standard library structures such as vectors and strings, because these structures do not use ``allocator_traits`` internally. +Therefore, if you're using a compiler with partial C++11 support, your allocator will need to look more like this: .. code-block:: c++ @@ -158,7 +165,8 @@ Passing an allocator to the intra-process pipeline Even though we instantiated a publisher and subscriber in the same process, we aren't using the intra-process pipeline yet. -The IntraProcessManager is a class that is usually hidden from the user, but in order to pass a custom allocator to it we need to expose it by getting it from the rclcpp Context. The IntraProcessManager makes use of several standard library structures, so without a custom allocator it will call the default new. +The IntraProcessManager is a class that is usually hidden from the user, but in order to pass a custom allocator to it we need to expose it by getting it from the rclcpp Context. +The IntraProcessManager makes use of several standard library structures, so without a custom allocator it will call the default new. .. code-block:: c++ @@ -219,7 +227,8 @@ You can also override the global new and delete operators: where the variables we are incrementing are just global static integers, and ``is_running`` is a global static boolean that gets toggled right before the call to ``spin``. -The `example executable `__ prints the value of the variables. To run the example executable, use: +The `example executable `__ prints the value of the variables. +To run the example executable, use: .. code-block:: bash diff --git a/source/Tutorials/Advanced/Security/Introducing-ros2-security.rst b/source/Tutorials/Advanced/Security/Introducing-ros2-security.rst index cce97f136f7..b5a0036c91a 100644 --- a/source/Tutorials/Advanced/Security/Introducing-ros2-security.rst +++ b/source/Tutorials/Advanced/Security/Introducing-ros2-security.rst @@ -89,7 +89,7 @@ Note that secure communication between vendors is not supported. Run the demo ------------ -1\. Create a folder for the security files +1) Create a folder for the security files ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Begin by creating folder to store all the files necessary for this demo: @@ -113,7 +113,7 @@ Run the demo md C:\dev\ros2\sros2_demo -2\. Generate a keystore +2) Generate a keystore ^^^^^^^^^^^^^^^^^^^^^^^ Use the ``sros2`` utilities to create the keystore. @@ -142,7 +142,7 @@ Files in the keystore will be used to enable security for all the participants i cd sros2_demo ros2 security create_keystore demo_keystore -3\. Generate keys and certificates +3) Generate keys and certificates ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Once the keystore is created, create keys and certificates for each node with security enabled. @@ -182,7 +182,7 @@ This command uses the ``create_enclave`` feature which is covered in more detail Then re-run the commands above. -4\. Configure environment variables +4) Configure environment variables ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Three environment variables allow the middleware to locate encryption materials and enable (and possibly enforce) security. @@ -218,7 +218,7 @@ These variables need to be defined in each terminal used for the demo. For convenience you can add them to your boot environment. -5\. Run the ``talker/listener`` demo +5) Run the ``talker/listener`` demo ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Begin the demo by launching the talker node. @@ -244,7 +244,7 @@ These nodes are able to communicate because we have created the appropriate keys Leave both nodes running as you use ``ros2cli`` and answer the questions below. -6\. Use ``ros2cli`` with security +6) Use ``ros2cli`` with security ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ To use ``ros2cli`` to iterate with ROS 2 secured network, you need to provide it with override enclave by ``ROS_SECURITY_ENCLAVE_OVERRIDE`` environmental variable. diff --git a/source/Tutorials/Advanced/Simulators/Gazebo/Gazebo.rst b/source/Tutorials/Advanced/Simulators/Gazebo/Gazebo.rst index 6914b842325..ae846141067 100644 --- a/source/Tutorials/Advanced/Simulators/Gazebo/Gazebo.rst +++ b/source/Tutorials/Advanced/Simulators/Gazebo/Gazebo.rst @@ -23,7 +23,8 @@ Prerequisites First of all you should install ROS 2 and Gazebo. You have two options: - - Install from deb packages. To check which versions are available from deb packages please check this `table `__. + - Install from deb packages. + To check which versions are available from deb packages please check this `table `__. - Compile from sources: - :doc:`ROS 2 install instructions <../../../../Installation>` @@ -140,7 +141,9 @@ There are two options: ros2 topic pub /model/vehicle_blue/cmd_vel geometry_msgs/Twist "linear: { x: 0.1 }" -* ``teleop_twist_keyboard`` package. This node takes keypresses from the keyboard and publishes them as Twist messages. You can install it typing: +* ``teleop_twist_keyboard`` package. + This node takes keypresses from the keyboard and publishes them as Twist messages. + You can install it typing: .. tabs:: diff --git a/source/Tutorials/Advanced/Simulators/Webots/Setting-Up-Simulation-Webots-Basic.rst b/source/Tutorials/Advanced/Simulators/Webots/Setting-Up-Simulation-Webots-Basic.rst index 8c375749ed6..3fc5c1afe34 100644 --- a/source/Tutorials/Advanced/Simulators/Webots/Setting-Up-Simulation-Webots-Basic.rst +++ b/source/Tutorials/Advanced/Simulators/Webots/Setting-Up-Simulation-Webots-Basic.rst @@ -385,7 +385,7 @@ After that, the two nodes are set to be launched in the ``LaunchDescription`` co :dedent: 4 :lines: 24-26 -Finally, an optional part is added in order to shutdown all the nodes once Webots terminates (e.g., when it gets closed from the graphical user interface). +Finally, an optional part is added in order to shutdown all the nodes once Webots terminates (e.g. when it gets closed from the graphical user interface). .. literalinclude:: Code/robot_launch.py :language: python diff --git a/source/Tutorials/Demos/Real-Time-Programming.rst b/source/Tutorials/Demos/Real-Time-Programming.rst index 8380950d272..92b5f732f0e 100644 --- a/source/Tutorials/Demos/Real-Time-Programming.rst +++ b/source/Tutorials/Demos/Real-Time-Programming.rst @@ -203,13 +203,13 @@ Because the code has been instrumented with `rttest `_. If you want to go further, you can implement a third test that publishes a twist message, asking the turtle to move, and subsequently checks that it moved by asserting that the pose message changed. -This effectively automates part of the `Turtlesim introduction tutorial <../../Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim>`. +This effectively automates part of the `Turtlesim introduction tutorial <../../Beginner-CLI-Tools/Introducing-Turtlesim/Introducing-Turtlesim>`_. 1.4 Post-shutdown tests ~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/source/Tutorials/Intermediate/URDF/Using-URDF-with-Robot-State-Publisher-cpp.rst b/source/Tutorials/Intermediate/URDF/Using-URDF-with-Robot-State-Publisher-cpp.rst index 01c375bfac1..b48d4fa2e03 100644 --- a/source/Tutorials/Intermediate/URDF/Using-URDF-with-Robot-State-Publisher-cpp.rst +++ b/source/Tutorials/Intermediate/URDF/Using-URDF-with-Robot-State-Publisher-cpp.rst @@ -304,7 +304,7 @@ Edit the ``CMakeLists.txt`` file as follows: ament_package() -we use ``install`` command to put the r2d2.rviz into ``install`` dir +we use ``install`` command to put the ``r2d2.rviz`` into ``install`` dir 6 Install the package ^^^^^^^^^^^^^^^^^^^^^ @@ -355,7 +355,7 @@ To visualize your results you will need to open a new terminal and run Rviz usin See the `User Guide `__ for details on how to use Rviz. -``install/urdf_tutorial_cpp/share/urdf_tutorial_cpp/urdf/r2d2.rviz`` is the dir where the r2d2.rviz stored. +``install/urdf_tutorial_cpp/share/urdf_tutorial_cpp/urdf/r2d2.rviz`` is the dir where the ``r2d2.rviz`` stored. Summary ------- diff --git a/source/Tutorials/Intermediate/URDF/Using-a-URDF-in-Gazebo.rst b/source/Tutorials/Intermediate/URDF/Using-a-URDF-in-Gazebo.rst index 88d6ea9c150..5e0d69d457f 100644 --- a/source/Tutorials/Intermediate/URDF/Using-a-URDF-in-Gazebo.rst +++ b/source/Tutorials/Intermediate/URDF/Using-a-URDF-in-Gazebo.rst @@ -174,7 +174,7 @@ This will run the controller and in fact publish on the ``/joint_states`` topic, velocity: [] effort: [] -What else do you want Gazebo!? +What else do you want Gazebo‽ Well, it wants to know more information about the joints. ROS 2 Control Joint Definitions @@ -318,7 +318,7 @@ For that, we're going to need `a lot more ROS parameters `_ for the latest stable version, at the time of writing this is "Latest Stable Version 5.4-rt". If we click on the `link `_, we get the exact version. -Currently it is patch-5.4.78-rt44.patch.gz. +Currently it is ``patch-5.4.78-rt44.patch.gz``. .. image:: images/realtime-kernel-patch-version.png @@ -128,7 +128,8 @@ and set the following (X) performance Save and exit menuconfig. -Now we're going to build the kernel which will take quite some time. (10-30min on a modern cpu) +Now we're going to build the kernel which will take quite some time. +(10-30min on a modern cpu) .. code-block:: bash diff --git a/source/index.rst b/source/index.rst index dffd2955ae3..b429fbbf03e 100644 --- a/source/index.rst +++ b/source/index.rst @@ -51,7 +51,8 @@ Getting started * :doc:`How-To-Guides` - - Quick answers to your "How do I...?" questions without working through the :doc:`Tutorials ` + - Quick answers to your "How do I...?" + questions without working through the :doc:`Tutorials ` * :doc:`Concepts ` @@ -188,7 +189,8 @@ Deprecated ---------- * `ROS Answers `__ (ROS 1, ROS 2) - - ROS Answers was the ROS community Q&A website, until August, 2023. ROS Answers is currently available as a read-only resource. + - ROS Answers was the ROS community Q&A website, until August, 2023. + - ROS Answers is currently available as a read-only resource. * `ROS 2 Docs `_ diff --git a/sphinx-lint-with-ros b/sphinx-lint-with-ros new file mode 100755 index 00000000000..1e051d08b8e --- /dev/null +++ b/sphinx-lint-with-ros @@ -0,0 +1,7 @@ +#!/usr/bin/python3 + +import plugins.ros_checkers +import sys +from sphinxlint.cli import main + +sys.exit(main(sys.argv))