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

Raspberry Pi 4 Model BにUbuntu 20.04 とROS 2 Foxyをインストールする

ROS 2 Foxyでdemoを実行 ラズパイマウスでROS 2を動かしてみた
ROS 2 Foxyでdemoを実行

こんにちはshotaです。このシリーズではRaspberry Pi Mouse(ラズパイマウス)でROS2を動かしていきます。

今回はRaspberry Pi 4 Model BにUbuntu 20.04をインストールします。
また、初回起動時にnetplanによるWi-Fiの設定に失敗したので、再起動で解決したことを紹介します。
その後、Robot Operating System (ROS)のFoxy をインストールして、talker/listenerデモを実行します。

これまでのおさらい

過去の記事で、Raspberry Pi 4 Model BにUbuntu 18.04をインストールする方法を紹介しました。

また、ROS 2 Dashingをインストールする方法も紹介しています。

Ubuntu 20.04とROS 2 Foxyのインストール手順は、これらの記事とほぼ同じです。
そのため、今回の記事では変更点のみを紹介します。

Ubuntu 20.04のインストール

それでは、Ubuntu 20.04をインストールします。

これまでの続きということで、Ubuntu 18.04がインストールされたSDカードにUbuntu 20.04のイメージファイルを書き直すという作業から初めます。

作業用PCとしてUbuntu 20.04を使用します。

イメージファイルのダウンロードと書き込み

Raspberry Pi用のUbuntuイメージファイルは下記URLからダウンロードできます。

Raspberry Pi 4用の、64bit版 Ubuntu Server 20.04をダウンロードします。

Ubuntu Server 20.04.1 LTSをダウンロード

Ubuntu Server 20.04.1 LTSをダウンロード

Ubuntuの「ディスク」アプリケーションを使ってSDカードの中身を操作します。

新品のSDカードを使う場合は、パーティション削除のステップを飛ばして、そのまま「ディスクイメージをリストア」に進んでください。

SDカードにはUbuntu 18.04がインストール済みなので、パーティションを削除します。

作業用PCのパーティションを削除しないように、間違ったディスクを選択していないか再確認してください
パーティションの削除①

パーティションの削除①

もう一つのパーティションも削除します。

パーティションの削除②

パーティションの削除②

「ディスクイメージをリストア」で、ダウンロードしたイメージファイルをSDカードに書き込みます。
以降の手順はUbuntu 18.04インストール時と同じなので、説明を省略します。

イメージファイルの書き込み

イメージファイルの書き込み

netplanを用いてWi-Fiを有効化する

Ubuntu20.04を書き込んだSDカードをラズパイにセットし、起動します。
パスワードを変更した後にWi-Fiを設定します。

Ubuntu 18.04の時と同じくnetplanを使って設定しますが、いくつか手順が変わります。

設定するファイルに変更はありません。下記のコマンドを実行してファイルを編集します。

$ sudo vim /etc/netplan/50-cloud-init.yaml

設定ファイルの一例を紹介します。
SSIDやパスワード、IPアドレス等は適宜変更してください。

network:
    ethernets:
        eth0:
            dhcp4: true
    wifis:
        wlan0:
            optional: true
            access-points:
                ここにSSIDを書く:
                    password: ここにパスワードを書く
            dhcp4: false
            addresses: [192.168.11.89/24]
            gateway4: 192.168.11.1
            nameservers:
                addresses: [8.8.8.8, 192.168.11.1]
    version: 2

ファイル編集後sudo netplayn applyを実行すれば設定が反映されるのですが、エラーが出ました。
ここで、再起動します。

# 通常であればこのコマンドでネットワーク設定が反映される
$ sudo netplan apply

# エラーが出るので再起動する
$ sudo reboot

再起動後もWi-Fiは機能していません。
ここで、再びsudo netplan applyを実行します。

$ sudo netplan apply

Warningが表示されますが、Wi-Fiが機能し、ネットワークに接続されるはずです。

# ネットワークに接続されているか確認する
# 設定したIPアドレスが表示されていればOK
$ ip addr
--- 省略 ---
3: wlan0: ---省略---
    link/ether --- 省略
    inet 192.168.11.89

下記の情報によると、これはnetplanの不具合のようです。

ネットワークに接続できたので、下記コマンドを実行してパッケージを更新しましょう。

$ sudo apt update
$ sudo apt upgrade

ネットワーク接続直後は自動アップデートによりapt update/upgradeが失敗する可能性があります。
その場合は少し時間が立ってからコマンドを実行してみてください。

自動アップデートの進捗は
$ tail -f /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
で確認できます。
参考ページ:https://askubuntu.com/questions/934807/unattended-upgrades-status

upgradeが終わったら再起動します。

$ sudo reboot

ネットワークに接続されていたらOKです。
作業を簡単にするため、以降の作業は外部PCからSSHでログインして実行しています。

ROS 2 Foxy Fitzroyのインストール

基本的には、前回のDashingと同じ手順でインストールできます。

公式のインストール手順はこちらです。

Set Locale

UTF-8がサポートされているため、設定不要です。

$ locale
LANG=C.UTF-8
LANGUAGE=
LC_CTYPE="C.UTF-8"
LC_NUMERIC="C.UTF-8"
--- 省略 ---

Setup Sources

手順通りにコマンドを実行します。

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

Install ROS 2 packages

demoパッケージをすぐに実行したいので、ros-foxy-desktopをインストールします。

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

Environment setup

次のコマンドを実行します。

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

$ sudo apt install -y python3-pip
$ pip3 install -U argcomplete

Try some examples

ターミナルを2つ用意して(SSHで2回ログインして)talker、listenerのサンプルを実行します。

# ターミナル1
$ source /opt/ros/foxy/setup.bash
$ ros2 run demo_nodes_cpp talker
[INFO] [1605763150.815268535] [talker]: Publishing: 'Hello World: 1'
[INFO] [1605763151.815174897] [talker]: Publishing: 'Hello World: 2'
[INFO] [1605763152.815142097] [talker]: Publishing: 'Hello World: 3'
[INFO] [1605763153.815151876] [talker]: Publishing: 'Hello World: 4'
...
# ターミナル2
$ source /opt/ros/foxy/setup.bash
$ ros2 run demo_nodes_py listener
...
[INFO] [1605763191.352868425] [listener]: I heard: [Hello World: 12]
[INFO] [1605763192.284799307] [listener]: I heard: [Hello World: 13]
[INFO] [1605763193.284718355] [listener]: I heard: [Hello World: 14]
[INFO] [1605763194.284705701] [listener]: I heard: [Hello World: 15]
...

listenrノードがトピックをサブスクライブ出来たら成功です。

ROS 2 Foxyでdemoを実行

ROS 2 Foxyでdemoを実行

まとめ

今回の記事のまとめです。

  • Raspberry Pi 4 Model BにUbuntu 20.04をインストールできました
  • 初回起動時はnetplanでネットワークに接続できません。再起動が必要です。
  • ROS 2 Foxyのインストール手順はROS 2 Dashingとほぼ同じです

ラズパイマウスのROS 2パッケージがFoxyに対応できましたら、またブログにて紹介します。

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