せしまるです。
ubuntu18.04…ではなくubuntu16.04の記事になります。
備忘録として+日本語ドキュメント少ないと感じたので。
基本的にここと同じ流れで書いていきます。
ROS2リポジトリ追加
使ったっけ?くらい記憶にないですが、公式ドキュメントには書いてあるので一応。
2019年1月22日追記
リポジトリ追加の一文が抜けていました。申し訳ございません。
$ sudo apt update
$ sudo apt install curl gnupg2 lsb-release
$ curl http://repo.ros2.org/repos.key | sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64,arm64] http://packages.ros.org/ros2/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/ros2-latest.list'
ツールのインストール
公式ドキュメントの「Install development tools and ROS tools」の部分です。
横に長いですが、$除いてコピペすれば実行できます。
$ sudo apt update && sudo apt install -y build-essential cmake git python3-colcon-common-extensions python3-pip python-rosdep python3-vcstool wget
$ sudo -H python3 -m pip install -U argcomplete flake8 flake8-blind-except flake8-builtins flake8-class-newline flake8-comprehensions flake8-deprecated flake8-docstrings flake8-import-order flake8-quotes git+https://github.com/lark-parser/lark.git@0.7b pytest-repeat pytest-rerunfailures pytest pytest-cov pytest-runner setuptools
$ sudo apt install --no-install-recommends -y libasio-dev libtinyxml2-dev
それなりに時間かかるのでカップラーメンでも作って待ちましょう
ROS2コードの取得
ツールのインストールが終わったら、ROS2のコードを取得します。
まずはディレクトリを作成し、作成したディレクトリにソースを落としてきます。
私の環境では/home/user下にディレクトリを作っていますが、別の場所でも大丈夫です(場所によっては管理者権限が必要な場合があります)。
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
$ vcs import src < ros2.repos
4行目が結構長いかな?
依存関係のインストール
コードの取得が完了したら次はこれです。
sudo rosdep initでエラー出たら、エラーと一緒にファイルパスが表示されるので、そのファイルを削除してから再度実行してみてください。
$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro bouncy -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 python3-lark-parser rti-connext-dds-5.3.1 urdfdom_headers"
ビルド!
optionalは飛ばして仮面ライダービルドです!
ardent?はたしかament buildでしたが、bouncyはcolcon buildで行います。
こるこんこるこん…
~/ros2_ws$ colcon build --symlink-install --packages-ignore qt_gui_cpp rqt_gui_cpp
これめちゃくちゃ長いです。自環境では30分くらいかかったので、アニメでも見ながら気長に待ちましょう。
動作テストと.bashrc
ビルドが終わったら動作テスト!のまえに.bashrcに下記一行追記します。
source ~/ros2_ws/install/local_setup.bash
保存したらターミナルを立ち上げなおします。ついでにもう一つターミナルを立ち上げておきます。
それぞれT1、T2(ターミナル1、2)とします。
これからやるのは、T1でメッセージを送信(publish)して、T2で受信(Subscribe)するテストです。
うまく受信できればT2のコンソールにメッセージがぽんぽんでます。
まずT1で下記を実行します。
$ ros2 run demo_nodes_cpp talker
次にT2で下記を実行します。
$ ros2 run demo_nodes_py listener
実行結果
[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
[INFO] [talker]: Publishing: 'Hello World: 3'
…
// やめるまで続く
// 実行したタイミングによるけど
[INFO] [listener]: I heard: [Hello World: 1]
[INFO] [listener]: I heard: [Hello World: 2]
[INFO] [listener]: I heard: [Hello World: 3]
…
感想
時間かかりすぎる。ビルド中とか本当に暇になりますw
それでは今回はこの辺で。
よいROS2ライフを?