ROS
ROS はロボットのための、オープンソースのメタオペレーティングシステムです。ハードウェアの抽象化や低水準なデバイス制御、よく使われる機能の実装、プロセス間でのメッセージ通信、パッケージ管理など、オペレーティングシステムとして思い浮かべられるサービスを提供します。
目次
インストール
Lunar
ROS Lunar は AUR パッケージでインストールすることができ、問題なく動作します。ros-lunar-desktop-fullAUR で全てを動かすことができます。ros-lunar-desktopAUR は rospy, roscpp, publisher, subscriber, サービス, 起動ファイルなど ROS のコア機能が含まれています。
Kinetic
AUR の Kinetic パッケージは作業途中です。opencv3 に関する問題 がまだ完全には解決していません。ros-kinetic-ros-coreAUR や ros-kinetic-robotAUR などのメタパッケージをインストールすると必要な依存パッケージが全てインストールされます (インストールの順番については [1] を参照)。
パッケージは必要に応じて追加されます。パッケージのリクエストは <aur AT seangreenslade DOT com> に送ってください。パッケージの問題についてはそれぞれの AUR のページにあるコメント欄に投稿してください。
ビルドツールの設定
catkin_make
catkin は python2 を使うため、python2 環境を使うように設定しないと catkin_make は失敗します。以下のエイリアスを .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"
catkin build
catkin build
環境を使用するシステムを設定する場合、catkin ワークスペースを設定する必要があります。以下のコマンドを実行してください:
catkin config -DPYTHON_EXECUTABLE=/usr/bin/python2 -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 -DPYTHON_LIBRARY=/usr/lib/libpython2.7.so
その後、通常通りに catkin build
を使ってください。設定ファイル (catkin_ws
ディレクトリ) を削除したときは catkin を再設定するようにしてください。
共有ライブラリがアップデートされたときの再ビルド
ROS が依存するライブラリ (例: Boost) を更新したときは、ライブラリにリンクしている全てのパッケージを再ビルドする必要があります。再ビルドが必要なパッケージを検索できるスクリプトが こちら に存在します。スクリプトを使うには pyalpm のインストールが必要です。
Ros 2
ソースからビルド
ビルドの手順は https://github.com/ros2/ros2/wiki/Linux-Development-Setup に書かれています。
必要なパッケージをインストールしてください: wget, python, python-yaml, python-setuptools, git, cmake, asio, tinyxml, tinyxml2, eigen, libxaw, glu, qt5-base, opencv, python-vcstoolAUR, python-empyAUR。
ソースを取得:
$ mkdir -p ~/ros2_ws/src $ cd ~/ros2_ws $ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos $ vcs-import src < ros2.repos
現在のところ、修正が一部必要です:
$ 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
ワークスペースをビルド:
$ cd ~/ros2_ws $ src/ament/ament_tools/scripts/ament.py build --symlink-install
Ros 1 / Ros 2 の相互運用性については https://github.com/ros2/ros1_bridge/blob/master/README.md#build-the-bridge-from-source を参照。
使用例
まずワークスペースを読み込みます:
$ . ~/ros2_ws/install/local_setup.bash
roscore
, rosnode
, rostopic
, rosmsg
, rospack
, rosrun
, rosservice
に匹敵する機能は 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.
配信者ノードを実行する典型的な "Hello World" サンプル:
$ ros2 topic pub /chatter 'std_msgs/String' "data: 'Hello World'"
他のターミナルで購読者を実行できます (新しいターミナルでは毎回ワークスペースを読み込んでください):
$ ros2 topic echo /chatter
既存のノードを確認:
$ ros2 node list publisher_std_msgs_String
トピックを確認:
$ ros2 topic list /chatter
rviz の Ros 2 版は:
$ rviz2