はじめに

Raspberry Pi 4 Model Bで、ROS2(Robot Operation System) を触ってみたかったので、

やり方をまとめました。

ROS2は、バージョンによって名前が変わります。

 https://docs.ros.org/en/foxy/Releases.html#releases

 

 ROS2のバージョン毎に、サポートするOSのバージョンが決まっていて、

各バージョンのページのSupported Platformasという項目に記載されているので、確認が必要です。

今回は、Foxy FitzroyというROS2のバージョンを利用します。

Foxy FitzroyがサポートするUbuntuのバージョンは、

20.04なので、今回は20.04を使っていきます。

Foxy FitzroyのSupported Platformasは、下記となります。

https://docs.ros.org/en/foxy/Releases/Release-Foxy-Fitzroy.html#supported-platforms

 

環境

・Raspberry Pi 4 Model B 4GB

・Ubuntu Server 20.04.2 LTS 64bit版

・Raspberry Pi Imager v1.4

手順

1. Raspberry Pi 4にUbuntu Server 20.04.2をインストール

まずは、Raspberry Piに、Ubuntuをインストールします。

インストールには、Raspberry Pi Imagerを利用します。

やり方は、こちらの記事で紹介しています。

OSを選択する際に、下記の画像のように、

Ubuntu Server 20.04.2 LTS 64bit版を選択します。

Ubuntuを書き込んだmicroSDをRaspberry Piに挿して、

電源をいれると、インストールが始まります。

Ubuntu Serverには、デスクトップがないため、ずっと文字が表示されます。

インストールが完了すると、ログインが可能になるため、

最初は、下記の情報でログインを行います。

・ユーザ名 : ubuntu

・パスワード: ubuntu

 

パスワードの変更を求められた場合は、画面の指示に従います。

ログインが済んだら、下記のコマンドで更新を行います。

aptというのは、Debian系のディストリビューションで使われる

パッケージ管理用のコマンドです。

$ sudo apt update #パッケージのリストを更新
$ sudo apt upgrade #インストール済みのパッケージを更新

最初は、少し時間がかかります。

完了したら、CUIのみだと慣れていないと使いにくいので、

デスクトップをインストールします。

下記のコマンドを実行してください。

$ sudo apt install ubuntu-desktop

インストール後、再起動し、ログインを行うと

下記の画像のように、デスクトップが表示されます。

ここまでで、Ubuntuの用意は完了です。

2. ROS2をインストール

用意したUbuntuに、ROS2をインストールしますが、

やり方は、下記の公式の手順通りに行えば大丈夫でした。

下記のページのSet localeの項目から、順番にやっていきます。

https://docs.ros.org/en/foxy/Installation/Linux-Install-Debians.html

 

まずは、ロケールについて、

ロケールとは、言語と地域の設定のことです。

UTF-8をサポートするロケールであることが必要だそうで、

自分のロケールを確認して、サポートしてなければ、設定します。

公式は、下記のロケール設定でテストしているそうなので、

下記のコマンドを順に実行して、それに従ったほうが無難かと思います。

$ locale #まず自分のロケールを確認
$ sudo apt update && sudo apt install locales
$ 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
$ locale #反映されたことを確認

次は、ROS2をaptでインストールするために、

aptがパッケージ認証に使用するキーの一覧に、

GPG(GNU Privacy Guard)キーを、下記のコマンドで追加します。

$ 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 -

また、下記のコマンドで、

/etc/apt/sources.list.d配下に、ros2-latest.listを追加することで、

apt updateを行った際に、ROS2パッケージが管理されているサーバに探しに行けるようになります。

$ 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'

上記の準備で、aptコマンドでROS2をインストールできる準備が整ったので、

ここからインストールを行っていきます。

2つインストールコマンドを実行していますが、

それぞれ、サイトの説明を見たところ、下記のような内容だそうです。

ros-foxy-desktop :ROS、RViz、デモ、チュートリアル
ros-foxy-ros-base:通信ライブラリ、メッセージパッケージ、コマンドラインツール。GUIツールなし

   $ sudo apt update
   $ sudo apt install ros-foxy-desktop
   $ sudo apt install ros-foxy-ros-base

ROS2のインストールは、完了ですが、

環境のセットアップがもう少し続きます。

下記のコマンドで、環境セットアップ

   $ source /opt/ros/foxy/setup.bash

次の作業は、オプショナルだそうで、やりたい人だけでよさそうです。

ROS 2のコマンドラインツールでは、オートコンプリートができるようになります。

ただ、pip3コマンドは入っていないと思うので、

下記の1行目のコマンドで追加してください。

$ sudo apt install -y python3-pip #pip3コマンドが打てなかったので追加
$ pip3 install -U argcomplete

ここまでで準備完了です。

サンプル実行

上記のインストール作業が完了したら、

そのまま、その下のTry some examples項目を行っていきます。

ターミナルを、1つ起動し、下記のコマンドを実行します。

$ source /opt/ros/foxy/setup.bash
$ ros2 run demo_nodes_cpp talker

そうしたら、もう1つターミナルを起動し、下記のコマンドを実行します。

$ source /opt/ros/foxy/setup.bash
$ ros2 run demo_nodes_py listener

実行が成功すると、

下記のように、1つ目のターミナルで「Publishing」、2つ目のターミナルで「I heard」が表示されます。

Publishing側から送られたメッセージが、I heard側で受け取れていることがわかります。

サンプルとしてできあがっているとはいえ、簡単に非同期通信が行えて、おもしろいと思いました。

このメッセージのやりとりが、ROSの基本になるそうです。

もっと色々と触っていこうと思います。