ROS is an open-source, meta-operating system for your robot. It provides the services you would expect from an operating system, including hardware abstraction, low-level device control, implementation of commonly-used functionality, message-passing between processes, and package management.
You can install any of the ROS distributions below since they are fully released on AUR.
Noetic is also available through an unofficial user repo:Unofficial user repositories#arch4edu
Melodic is also available through an unofficial user repo:Unofficial user repositories#oscloud
Older Versions (Not fully working)
Kinetic packages on the AUR are a work in progress. There are some issues regarding opencv3 that have not been fully resolved yet (installing AUR works, but is somewhat inefficient since it rebuilds opencv3). Currently, installing a metapackage such as AUR or AUR should bring in all required dependencies (see  for the correct order).
Packages are being added on an as-needed basis. Please post any issues with the current packages in their respective AUR comments section.
catkin_make in Melodic and below
As specified by the ROS wiki, the first catkin_make command in a clean workspace should be:
Subsequent builds should be done with just
Using Catkin/ROS with an IDE
Exec parameter of its desktop file (
~/.local/share/applications/jetbrains-clion.desktop) as follows.
Exec=bash -i -c "source /home/[username]/catkin_ws/devel/setup.sh;/opt/clion/bin/clion.sh" %f
/home/[username]/catkin_ws must be exchanged with your Catkin workspace. You can now open a Catkin project without complaining about missing packages, hopefully.
If desired or needed you can use Python 3 by adding
-DPYTHON_EXECUTABLE=/usr/bin/python3 to the CMake options which can be found in the settings.
catkin build in Melodic and below
For configuring the systems using the
catkin build environment, one have to configure the catkin workspace as usual and issue a
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python
catkin build as normal. Please remember to reconfigure your catkin whenever you delete the configuration files (i.e. the
When you update a library that ROS depends on (e.g. Boost), all packages that link to it must be rebuilt. Most AUR helpers will not detect this situation. The following script will generate a list of all packages that are linked to missing so files:
(Note that the script requiresto be installed.)
Building from source
Build instructions are available at https://index.ros.org/doc/ros2/Installation/.
Install build dependencies.
Dependencies for Eloquent: (official packages in alphabetical order; AUR packages in an order in which you can sequentially install them without dependency errors)
TheAUR package attempts to address this, but will still require you to manually create the symbolic links as desribed below. If you want to install the dependencies yourself, the following packages are required:
AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR AUR
Dependencies for Dashing: (please note that Dashing will not build out of the box, it requires patching)
AUR AUR AUR
Fetch the sources:
$ mkdir -p ~/ros2_ws/src $ cd ~/ros2_ws $ wget https://raw.githubusercontent.com/ros2/ros2/master/ros2.repos $ vcs import src < ros2.repos
Note: Replace "master" with whatever distribution is desired (e.g. "dashing").
qt_gui_cpp package expects to find modules in
/usr/share/sip by default. Arch ships the PyQt5 and sip modules in the Python site-packages directory. Make the the following symlinks to build successfully:
# mkdir -p /usr/share/sip # ln -s /usr/lib/python3.8/site-packages/PyQt5 /usr/share/sip/. # ln -s /usr/lib/python3.8/site-packages/PyQt5/bindings/* /usr/share/sip/PyQt5/.
Now you can build the workspace:
$ cd ~/ros2_ws $ colcon build --symlink-install
Read https://github.com/ros2/ros1_bridge/blob/master/README.md#build-the-bridge-from-source regarding ROS 1 / ROS 2 interoperability.
First source the workspace:
$ . ~/ros2_ws/install/local_setup.bash
Functionality comparable to
rosservice is available via
$ ros2 -h usage: ros2 [-h] Call `ros2 <command> -h` for more detailed usage. ... ros2 is an extensible command-line tool for ROS 2. optional arguments: -h, --help show this help message and exit Commands: daemon Various daemon related sub-commands msg Various msg related sub-commands node Various node related sub-commands pkg Various package related sub-commands run Run a package specific executable security Various security related sub-commands service Various service related sub-commands srv Various srv related sub-commands topic Various topic related sub-commands Call `ros2 <command> -h` for more detailed usage.
A typical "Hello World" example starts with running a publisher node:
$ ros2 topic pub /chatter 'std_msgs/String' "data: 'Hello World'"
Then, in another terminal, you can run a subscriber (Don't forget to source the workspace in every new terminal):
$ ros2 topic echo /chatter
List existing nodes:
$ ros2 node list publisher_std_msgs_String
$ ros2 topic list /chatter
ROS 2's version of rviz is