ROS - ArchWiki

# ROS

From ArchWiki
Jump to navigation Jump to search

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.

## Installation Instructions

You can install any of the ROS distributions below since they are fully released on AUR.

Lunar ros-lunar-desktop-fullAUR

Melodic ros-melodic-desktop-fullAUR Melodic is also available through a unofficial Repo:Unofficial user repositories#oscloud

## Older Versions (Not fully working)

### Kinetic

Kinetic packages on the AUR are a work in progress. There are some issues regarding opencv3 that have not been fully resolved yet (installing ros-kinetic-opencv3AUR works, but is somewhat inefficient since it rebuilds opencv3). Currently, installing a metapackage such as ros-kinetic-ros-coreAUR or ros-kinetic-robotAUR should bring in all required dependencies (see [1] 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

As specified by the ROS wiki, the first catkin_make command in a clean workspace should be:

    catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python3 -DPYTHON_INCLUDE_DIR=/usr/include/python3.7m -DPYTHON_LIBRARY=/usr/lib/libpython3.7m.so

Subsequent builds should be done with just

    catkin_make

### Using Catkin/ROS with an IDE

#### CLion

To make CLionAUR support ROS packages, you can change the `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

However, `/home/[username]/catkin_ws` must be exchanged with your Catkin workspace. You can now open a Catkin project without cmake 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

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/python2 -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 -DPYTHON_LIBRARY=/usr/lib/libpython2.7.so

Afterwards, use `catkin build` as normal. Please remember to reconfigure your catkin whenever you delete the configuration files (i.e. the `catkin_ws` directory)

## Rebuild when shared libraries are updated

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:

https://seangreenslade.com/h/snippets/ros-find-outofdate.py

(Note that the script requires pyalpm to be installed.)

## ROS 2

### 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) The ros2-arch-depsAUR package attempts to address this, but is out of date. It might be recommended to modify its PKGBUILD manually for now so that these dependencies can be removed altogether when uninstalling ROS 2. asio cmake eigen glew git glu hdf5 libxaw opencv poco python python-cryptography python-lark-parser python-netifaces python-nose python-numpy python-pyqt5 python-setuptools python-sip python-yaml qt5-base sip tinyxml tinyxml2 vtk wget log4cxx python-empy python-notify2AUR python-pytest-repeat python-vcstoolAUR python-colcon-argcompleteAUR python-colcon-bashAUR python-catkin_pkgAUR python-colcon-cmakeAUR python-colcon-coreAUR python-colcon-defaultsAUR python-colcon-devtoolsAUR python-colcon-library-pathAUR python-colcon-metadataAUR python-colcon-notificationAUR python-colcon-outputAUR python-colcon-package-informationAUR python-colcon-package-selectionAUR python-colcon-pkg-configAUR python-colcon-parallel-executorAUR python-colcon-powershellAUR python-colcon-python-setup-pyAUR python-colcon-recursive-crawlAUR python-colcon-rosAUR python-colcon-test-resultAUR python-colcon-zshAUR python-colcon-common-extensionsAUR python-rospkgAUR python-rosdistroAUR python-rosdepAUR

Dependencies for Dashing: wget, python, python-yaml, python-setuptools, sip, python-sip, python-pyqt5, git, cmake, asio, tinyxml, tinyxml2, eigen, libxaw, glu, qt5-base, opencv, hdf5, vtk, glew, poco, python-nose, python-numpy, python-lark-parser, python-cryptography, python-netifaces, python-vcstoolAUR, python-empy, log4cxx, python-colcon-common-extensionsAUR, python-rosdepAUR.

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").

The `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:

    $ 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/

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.

### Usage Examples

First source the workspace:

    $ . ~/ros2_ws/install/local_setup.bash

Functionality comparable to `roscore`, `rosnode`, `rostopic`, `rosmsg`, `rospack`, `rosrun` and `rosservice` is available via `ros2`:

    $ 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

List topics:

    $ ros2 topic list
    /chatter

ROS 2's version of rviz is

    $ rviz2

Category:

- Science