ラズパイマウスでROS2動かしてみた 技術情報・開発日誌

Raspberry Pi 4 にROS 2をインストールする

ROS 2 Pub/Sub ラズパイマウスでROS2動かしてみた

こんにちは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にはいくつかのディストリビューションがあります。
後ほどインストールするラズパイマウスの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-desktopros-dashing-ros-baseのどちらかをインストールします。
ラズパイにインストールしたUbuntu serverではGUIを使わないのでros-baseでも良いのですが、今回はサンプルパッケージを実行したいのでdesktop版をインストールします。

# aptリポジトリの更新
$ sudo apt update

# ROS 2 Dashing デスクトップ版をインストール
$ sudo apt install ros-dashing-desktop

これにてインストール完了です。

公式ページには他にもargcompleteというコマンドラインツールや、追加のRMWros1-bridgeパッケージ等のインストール方法が書かれています。
必要な方はインストールしてみてください。

サンプルパッケージを実行する

インストール手順のEnvironment setupTry 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パッケージをインストールします。

タイトルとURLをコピーしました