こんにちはshotaです。このシリーズではRaspberry Pi Mouse(ラズパイマウス)でROS2を動かしていきます。
今回はラズパイマウス(厳密に言うと、Raspberry Pi 4 Model BにインストールしたUbuntu 18.04)にROS 2をインストールします。
前回のおさらい
前回はラズパイマウスにデバイスドライバをインストールし、モータやLEDを動かしました。
今回はデバイスドライバを使用しません。その代わりUbuntu 18.04のインストールが必須なので、前々回の記事を忘れずにチェックしてください。
作業に必要なもの
記事の最後でラズパイと作業用PCでROS 2の通信をします。そのため作業用PCにもROS 2をインストールしています。
WindowsやmacOSでもROS 2のインストールは可能ですが、このブログではUbuntu 18.04を使用します。
- Raspberry Pi Mouse V3
- 商品ページはこちら
- Ubuntu 18.04をインストールしたRaspberry Pi Model 4 Bを搭載したラズパイマウスをセットアップしました
- 作業用PC
- Ubuntu 18.04のPCを用意しました。ROS 2 Dashingインストール済みです。
ROS 2 Dashingをインストールする
ROS 2にはいくつかのディストリビューションがあります。
後ほどインストールするラズパイマウスのROS 2パッケージに合わせるため、ここではROS 2 Dashingをインストールします。
公式のインストール手順を確認する
まずは公式のインストール手順を確認しましょう。下記リンクからアクセスできます。
手順に記載されているように、ターミナルでコマンドを入力してROS 2をインストールするという作業になります。
それではやっていきましょう。
インストールの実施
まずはSetup Localeです。ラズパイにインストールしたUbuntuではロケールがすでに設定されていると思いますが、念の為実行します。
$ sudo locale-gen en_US en_US.UTF-8 $ sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 $ export LANG=en_US.UTF-8
次に、Setup Sourcesです。これを実行しないとaptコマンドでROS 2をインストールできません。
# GPGキーの追加 $ sudo apt update && sudo apt install curl gnupg2 lsb-release $ curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - # ソースリストの更新 $ sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
続いてROS 2パッケージをインストールします。ros-dashing-desktopかros-dashing-ros-baseのどちらかをインストールします。
ラズパイにインストールしたUbuntu serverではGUIを使わないのでros-baseでも良いのですが、今回はサンプルパッケージを実行したいのでdesktop版をインストールします。
# aptリポジトリの更新 $ sudo apt update # ROS 2 Dashing デスクトップ版をインストール $ sudo apt install ros-dashing-desktop
これにてインストール完了です。
公式ページには他にもargcompleteというコマンドラインツールや、追加のRMW、ros1-bridgeパッケージ等のインストール方法が書かれています。
必要な方はインストールしてみてください。
サンプルパッケージを実行する
インストール手順のEnvironment setupとTry some examplesに従ってサンプルを実行します。
まずsetup.bashを読み込んでROS 2環境をセットアップします。
$ source /opt/ros/dashing/setup.bash
続けてdemo_nodes_cppパッケージのtalkerノードを実行します。
$ ros2 run demo_nodes_cpp talker # ↓このように出力される [INFO] [talker]: Publishing: 'Hello World: 1' [INFO] [talker]: Publishing: 'Hello World: 2' [INFO] [talker]: Publishing: 'Hello World: 3' [INFO] [talker]: Publishing: 'Hello World: 4' ...
TopicがPublishされたので、次はそのTopicをSubscribeします。
talkerを実行しているターミナルはそのままで、新しくSSHでログインし、ターミナルでコマンドを実行しましょう。
ログインしたらsetup.bashを読み込むことをお忘れなく。
$ source /opt/ros/dashing/setup.bash $ ros2 run demo_nodes_py listener # ↓このように出力される [INFO] [listener]: I heard: [Hello World: 147] [INFO] [listener]: I heard: [Hello World: 148] [INFO] [listener]: I heard: [Hello World: 149] [INFO] [listener]: I heard: [Hello World: 150] ...
TopicをSubscribeできました。
Ctrl+Cを入力して終了します。
おまけ:ラズパイと作業用PCで通信する
さて、せっかくなのでラズパイと作業用PCで通信してみましょう。
作業用PCにもROS 2がインストールしてあることが前提です。Ubuntu 18.04にROS 2 Dashingをインストールするのであれば、同じ手順でインストールできます。
まずはラズパイ側でtalkerノードを実行します。
$ ros2 run demo_nodes_py talker [INFO] [talker]: Publishing: "Hello World: 0" [INFO] [talker]: Publishing: "Hello World: 1" [INFO] [talker]: Publishing: "Hello World: 2" [INFO] [talker]: Publishing: "Hello World: 3" ...
続いて作業用PC側でlistenerノードを実行します。
$ ros2 run demo_nodes_py listener [INFO] [listener]: I heard: [Hello World: 186] [INFO] [listener]: I heard: [Hello World: 187] [INFO] [listener]: I heard: [Hello World: 188] [INFO] [listener]: I heard: [Hello World: 189] ...
作業用PC側でTopicをSubscribeできました。
ROS 2ではROS_DOMAIN_IDという環境変数を設定することで、同じDOMAIN_IDを持つマシンだけで通信するように制限できます。
例えば、ラズパイと作業用PCでそれぞれ同じ名前のノードを起動したいときに設定すると便利です。
詳しくは下記ページを参照してください。
まとめ
今回は、
- ROS 2 Dashingをインストールしました
- サンプルパッケージを実行しました
- ラズパイと作業用PCでサンプルパッケージを実行し、TopicのPub/Subを確認しました
次回はラズパイマウスのROS 2パッケージをインストールします。