Skip to content
Merged
Show file tree
Hide file tree
Changes from 6 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added _static/images/ros2_driver.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _static/images/ros2_urscript.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
14 changes: 7 additions & 7 deletions conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

# -- Project information -----------------------------------------------------

project = "Universal Robots ROS 2 Documentation"
project = "Universal Robots ROS 2 Driver Documentation"
copyright = "2024, Universal Robots A/S"
author = "Universal Robots A/S"

Expand Down Expand Up @@ -141,8 +141,8 @@
latex_documents = [
(
master_doc,
"ur_documentation.tex",
"ur\\_documentation Documentation",
"ur_ros2_driver_documentation.tex",
"UR ROS 2 Driver Documentation",
"Universal Robots A/S",
"manual",
),
Expand All @@ -153,7 +153,7 @@

# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [(master_doc, "ur_documentation", "ur_documentation Documentation", [author], 1)]
man_pages = [(master_doc, "ur_ros2_driverdocumentation", "UR ROS 2 Driver Documentation", [author], 1)]


# -- Options for Texinfo output ----------------------------------------------
Expand All @@ -164,7 +164,7 @@
texinfo_documents = [
(
master_doc,
"ur_documentation",
"ur_ros2_driver_documentation",
"ur_documentation Documentation",
author,
"ur_documentation",
Expand Down Expand Up @@ -203,7 +203,7 @@
html_context = {
"display_github": True,
"github_user": "UniversalRobots",
"github_repo": "Universal_Robots_ROS2_Documentation",
"github_repo": "Universal_Robots_ROS_Documentation",
"github_version": repos_file_branch + "/",
"conf_py_path": "/",
"source_suffix": source_suffix,
Expand All @@ -215,4 +215,4 @@
'css/ur_theme.css',
]

github_url = "https://github.com/UniversalRobots/Universal_Robots_ROS2_Documentation"
github_url = "https://github.com/UniversalRobots/Universal_Robots_ROS_Documentation"
65 changes: 65 additions & 0 deletions doc/ros2_controller_vs_driver.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
.. _ros2_controller_vs_driver:

ROS 2 integration paths
=======================

There are different paths to use a Universal Robots arm with ROS 2.

ROS 2 on the robot
------------------

.. image:: /_static/images/ros2_urscript.png
:alt: URScript for a subscruber
:align: right
:width: 400px

1. Starting with PolyScope X v10.7.0 the robots have builtin ROS 2 support that allows some amount
of interaction with the robot without the need of any ROS 2 driver. In particular, the robot
publishes a lot of status information and offers services for example to control the robot's
I/O ports. See the `Topics and Services overview
<https://docs.universal-robots.com/polyscopex-ros2/v10.7/Appendix/Appendix%202.html>`_ for more
information.


2. Starting with PolyScope X v10.7.0 there is basic URScript support for ROS 2. This allows
publishing to and subscribing from ROS 2 topics directly in URScript as well as calling ROS 2
services and actions from URScript. See `Basic Usage in URScript
<https://docs.universal-robots.com/polyscopex-ros2/v10.7/Basic%20Usage%20in%20URScript.html>`_
for details on that.

.. note::

The builtin ROS 2 support will only be compatible with the ROS distribution running on the
robot. For example, PolyScope 10.7.0 is running ROS 2 Humble. It should not be used with
any other distribution.

Control the robot from an external ROS 2 application
----------------------------------------------------

.. image:: ur_tutorials/my_robot_cell/doc/view_workspace.png
:alt: Visualizing a robot workspace using ROS 2
:align: right
:width: 400px

Using the :ref:`ur_robot_driver` which is a ROS 2 driver that offers full `ros2_control
<https://control.ros.org>`_ compatibility. This allows visualizing the robot's state in RViz and
control its motions through ROS 2. It works with CB3, e-Series (PolyScope 5) and PolyScope X robots.

Use the ROS 2 driver to build your own application on the ROS framework leveraging available
drivers for other hardware components, sensor integration and ready-to-use software functionalities
such as collision-aware path-planning.

The ROS 2 driver uses the :ref:`ur_client_library` to communicate with the robot.

Build your own external application using the C++ library
---------------------------------------------------------

With the standalone C++ library ":ref:`ur_client_library`" you can control a UR robot from a remote
application. It offers a lot of the functionality that traditionally the robot's teach pendant
would be used for. This includes

- Controlling the robot's power state
- Controlling the robot's motion
- Controlling the robot's I/O ports
- Access to low-level interfaces such as the Primary Interface, Dashboard Interface and the
Realtime Data Exchange (RTDE).
43 changes: 40 additions & 3 deletions index.rst
Original file line number Diff line number Diff line change
@@ -1,9 +1,45 @@
.. _documentation_home:

Welcome to the Universal Robots ROS 2 documentation!
====================================================
Welcome to the Universal Robots ROS 2 driver documentation!
===========================================================

This repositorycontains documentation and ROS 2 packages for Universal Robots.

.. image:: _static/images/ros2_driver.jpeg
:alt: UR ROS 2 driver
:align: right
:width: 600px


This documentation covers everything around the ROS (Robot Operating System) 2 driver packages for Universal Robots
manipulators and the standalone Universal Robots Client Library (C++).

With those packages it is possible to control a Universal Robots arm from an external application
either directly using a C++ API (see :ref:`ur_client_library`) or using ROS 2 (see :ref:`ur_robot_driver`).

This allows developing robot applications where one or more UR robots are a part of the complete
application. Some key use cases are:

- **External Monitoring and Control**: It allows you to monitor and control UR robots from an
external application. This can be useful for tasks like external vision systems for part
detection or external user interfaces to control robot programs.

- **Ease of Use**: The *ur_client_library* has minimal external dependencies, primarily relying on standard
C++ libraries, making it straightforward to integrate and maintain.

- **Integration with ROS / ROS 2**: The *ur_client_library* serves as the foundation for the ROS 2
driver, making it easier to integrate UR robots into ROS-based systems. ROS supports multiple
programming languages, primarily C++ and Python, making it easier to integrate with other
systems and tools. It also allows for communication between different nodes, enabling complex
robotic systems. The Universal Robots ROS packages offer everything from Visualization, over
simulation up to controlling a real robot bridging the great work of the ROS community with
Universal Robots manipulators.


.. note::
There is also builtin ROS 2 support for PolyScope X robots, see the `PolyScope X ROS 2 documentation <https://docs.universal-robots.com/polyscopex-ros2/v10.7/index.html>`_ and / or :ref:`ros2_controller_vs_driver` for details.

Table of Contents
-----------------

.. toctree::
:titlesonly:
Expand All @@ -18,3 +54,4 @@ This repositorycontains documentation and ROS 2 packages for Universal Robots.
Tutorial examples <doc/ur_tutorials/tutorial_index.rst>
doc/migration_notes.rst
doc/build_status
doc/ros2_controller_vs_driver
Loading