Difference between revisions of "ROS"

From ArchWiki
Jump to navigation Jump to search
m (template problem)
 
(74 intermediate revisions by 24 users not shown)
Line 1: Line 1:
[[Category:Mathematics and science]]
+
[[Category:Science]]
{{i18n|Ros}}
+
[[ja:ROS]]
 +
{{Archive|No updates since late 2017. As of September 2018, none of the ROS distributions can be built successfully.}}
 +
[http://www.ros.org 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.
 +
 
 +
Melodic {{AUR|ros-melodic-desktop-full}}
 +
 
 +
Lunar {{AUR|ros-lunar-desktop-full}}
 +
 
 +
== Older Versions (Not fully working) ==
 +
 
 +
=== Kinetic ===
 +
 
 +
Kinetic packages on the AUR are a work in progress. There are [https://github.com/bchretien/arch-ros-stacks/issues/57#issuecomment-228612399 some issues regarding opencv3] that have not been fully resolved yet (installing {{AUR|ros-kinetic-opencv3}} works, but is somewhat inefficient since it rebuilds opencv3). Currently, installing a metapackage such as {{AUR|ros-kinetic-ros-core}} or {{AUR|ros-kinetic-robot}} should bring in all required dependencies (see [https://paste.xinu.at/YXIz/] 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 ==
 +
 
 +
Note that catkin uses python2, and therefore catkin_make may fail unless it explicitly uses python2. To do so, add the following alias to ~/.bashrc:
 +
 
 +
alias catkin_make="catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python2 -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 -DPYTHON_LIBRARY=/usr/lib/libpython2.7.so"
 +
 
 +
Another way is to use {{AUR|python-catkin_tools}} and to configure it by running the following command in your Catkin workspace.
 +
catkin config --cmake-args -DPYTHON_EXECUTABLE=/usr/bin/python
 +
 
 +
=== Using Catkin/ROS with an IDE ===
 +
==== CLion ====
 +
To make {{AUR|CLion}} support ROS packages, you can change the {{ic|Exec}} parameter of its desktop file ({{ic| ~/.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, {{ic|/home/[username]/catkin_ws}} must be exchanged with your Catkin workspace. You can now open a Catkin project without {{Pkg|cmake}} complaining about missing packages, hopefully.
 +
If desired or needed you can use Python 3 by adding {{ic|1=-DPYTHON_EXECUTABLE=/usr/bin/python3}} to the CMake options which can be found in the settings.
 +
 
 +
== catkin build ==
 +
 
 +
For configuring the systems using the {{ic|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 {{ic|catkin build}} as normal. Please remember to reconfigure your catkin whenever you delete the configuration files (i.e. the {{ic|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 {{pkg|pyalpm}} to be installed.)
 +
 
 +
== Ros 2 ==
 +
=== Building from source ===
 +
 
 +
Build instructions are available at https://github.com/ros2/ros2/wiki/Linux-Development-Setup.
 +
 
 +
Install build dependencies: {{Pkg|wget}}, {{Pkg|python}}, {{Pkg|python-yaml}}, {{Pkg|python-setuptools}}, {{Pkg|git}}, {{Pkg|cmake}}, {{Pkg|asio}}, {{Pkg|tinyxml}}, {{Pkg|tinyxml2}}, {{Pkg|eigen}}, {{Pkg|libxaw}}, {{Pkg|glu}}, {{Pkg|qt5-base}}, {{Pkg|opencv}}, {{AUR|python-vcstool}}, {{AUR|python-empy}}.
 +
 
 +
Fetch the sources:
 +
 
 +
$ mkdir -p ~/ros2_ws/src
 +
$ cd ~/ros2_ws
 +
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
 +
$ vcs-import src < ros2.repos
 +
 
 +
Presently some fixes are required:
 +
 
 +
$ cd ~/ros2_ws/src/ros2/rviz/
 +
$ git remote add racko https://github.com/racko/rviz.git
 +
$ git fetch racko added_cmake_project_type fix_fallthrough fix_wrong_yaml_cpp
 +
$ git cherry-pick racko/added_cmake_project_type racko/fix_fallthrough racko/fix_wrong_yaml_cpp
 +
 
 +
Now you can build the workspace:
 +
 
 +
$ cd ~/ros2_ws
 +
$ src/ament/ament_tools/scripts/ament.py 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 {{ic|roscore}}, {{ic|rosnode}}, {{ic|rostopic}}, {{ic|rosmsg}}, {{ic|rospack}}, {{ic|rosrun}} and {{ic|rosservice}} is available via {{ic|ros2}}:
  
[http://www.ros.org 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.
+
$ 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):
  
With the ROS Fuerte release, it is much easier to get ROS running on an Arch system but still takes some effort. Read the notes below and then go to [http://www.ros.org/wiki/fuerte/Installation/Arch the installation page on the ROS website]
+
$ ros2 topic echo /chatter
  
== Setup Notes ==
+
List existing nodes:
  
With fuerte, there ROS is split into two levels. The core libraries are installed into the system folders ({{ic|/opt/ros/fuerte}}) while the higher-level stacks and packages are installed in the user folders.
+
$ ros2 node list
 +
publisher_std_msgs_String
  
The Arch-specific install page lists the packages (official and AUR) that you will need to install for a full setup.
+
List topics:
  
{{AUR|ros-core}}, available in the [[AUR]], is the package for the core libraries.
+
$ ros2 topic list
 +
/chatter
  
To build the higher level packages you will need to do some work:
+
Ros 2's version of rviz is
  
# Install [[AUR]] packages: {{AUR|ros-on-arch}} {{AUR|pcl-ros}} {{AUR|swig-wx}} {{AUR|qhull-ros}}
+
$ rviz2
# Pull the sources with {{ic|rosinstall}}
 
# Patch the sources to compile with GCC 4.7 [https://code.ros.org/trac/ros-pkg/attachment/ticket/5417/ros.patch]
 
# Resolve dependencies with {{ic|rosdep}}
 
# Build with {{ic|rosmake}}
 

Latest revision as of 16:30, 14 February 2019

Gnome-colors-add-files-to-archive.pngThis article is being considered for archiving.Gnome-colors-add-files-to-archive.png

Reason: No updates since late 2017. As of September 2018, none of the ROS distributions can be built successfully. (Discuss in Talk:ROS#)

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.

Melodic ros-melodic-desktop-fullAUR

Lunar ros-lunar-desktop-fullAUR

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

Note that catkin uses python2, and therefore catkin_make may fail unless it explicitly uses python2. To do so, add the following alias to ~/.bashrc:

alias catkin_make="catkin_make -DPYTHON_EXECUTABLE=/usr/bin/python2 -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 -DPYTHON_LIBRARY=/usr/lib/libpython2.7.so"

Another way is to use python-catkin_toolsAUR and to configure it by running the following command in your Catkin workspace.

catkin config --cmake-args -DPYTHON_EXECUTABLE=/usr/bin/python

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://github.com/ros2/ros2/wiki/Linux-Development-Setup.

Install build dependencies: wget, python, python-yaml, python-setuptools, git, cmake, asio, tinyxml, tinyxml2, eigen, libxaw, glu, qt5-base, opencv, python-vcstoolAUR, python-empyAUR.

Fetch the sources:

$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
$ vcs-import src < ros2.repos

Presently some fixes are required:

$ cd ~/ros2_ws/src/ros2/rviz/
$ git remote add racko https://github.com/racko/rviz.git
$ git fetch racko added_cmake_project_type fix_fallthrough fix_wrong_yaml_cpp
$ git cherry-pick racko/added_cmake_project_type racko/fix_fallthrough racko/fix_wrong_yaml_cpp

Now you can build the workspace:

$ cd ~/ros2_ws
$ src/ament/ament_tools/scripts/ament.py 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