先日windows11にros2をインストールしましたが(方法はこちら)、別なPC同士での通信を確かめたいと思い、RaspberryPi 3 にもROS2のインストールを試みました。

このブログはその覚書になります。

使用したもの スペック、型番
ラズパイ Raspberry Pi 3 Model B+
デスクトップPC Windows 11
micro SD カード 32GB

ラズパイ3にUbuntu 20.04 LTS をインストールする

【公式 Raspberry Pi ソフトウェア
【たかけんテックラボ ラズパイ3にUbuntu 20.04LTSをインストール

micro SDカードをPCにセット

ラズパイで使用する用のmicro SDカードです。最終的にこのmicro SDカードをラズパイにセットすることでラズパイをUbuntuにします。

ラズパイの公式ページから、Raspberry Pi Imager をダウンロードし実行

公式 Raspberry Pi OS

「Download for Windows」からDL。

OSは「Ubuntu Server 20.04.5 LTS (64-bit)」を選択。

その他の汎用OS>Ubunntu>Ubuntu Server 20.04.5 LTS (64-bit)

バージョンによっては、Ubuntu Server にするか、Ubuntu Desktop にするかの選択肢があるが、20.04は Ubuntu Server のみ。Serverだと、コンソール画面しか出ないモードになる。

しかし、Server を Desktop にすることもできるとのことです。
【AGIRobots Raspberry PiでUbuntu Desktop 20.04 LTSを使う方法!

SDカードを選択しWRITEボタンを押せばSDカード完成。

wifiの設定

【@__otk3__ [備忘録] Raspberry Pi に ROS2 環境をセットアップ
【ITCブログ [Ubuntu 20.04.3 LTS]ターミナルでwifiを設定する方法 netplan “aliases are not supported”エラーへの対処法

ラズパイにmicro SDをセットして起動

Ubuntu 20.04 がコンソール画面で立ち上がるので、デフォルトとなっているユーザー名ubuntuで入る。パスワードもubuntu。すぐに新しいパスワードを作るように求められるのでそのようにする。

 

タイムゾーンの設定

 

50-cloud-init.yaml の編集

フォルダへ移動しviで設定ファイルを開く。

 
下記を追加。インデントの位置も決まっているので正確に。SSIDとpasswordの表記には、ダブルクォーテーションでくくることが必要。

変更を適用

 
ip address の確認

 
inet 192.168.x.x などの記述が表示されればOK(xには何らかの数字が入ります)。それがラズパイに割り当てられたIPアドレス。

ROS2のインストール

【@__otk3__ [備忘録] Raspberry Pi に ROS2 環境をセットアップ

windows のコマンドプロンプトからラズパイにsshで入る

windows からsshでラズパイに入って操作した方が、コマンドのコピペができるので便利。

 

パスワードを聞かれるので設定したように入れる。

apt のupdate

けっこう時間がかかった。

ROS2 Foxyのインストール

【公式 ROS2のUbuntuへのインストール
【@porizou1 ubuntu20.04LTSへのROS2 Foxyのインストール

APTリポジトリの追加

 
ここからが本命のROS2インストール。1時間以上はかかったと思う(寝てしまった)。

 

ROS2の設定

ros2アクティベーションを.bashrcに登録

 
今後、新しくプロンプトを起動したら、source ~/.bashrc でros2をアクティベートする。

colcon build インストール

 

ROS2の動作確認

ワークスペース作成

ここまで、windows のコマンドプロンプトからsshでubuntuを操作している想定。
引き続き、sshから。

 
talker を起動

 
以下が出力される。ラズパイから’Hello World’がPublishされ続けている状態。

 
windows で新しいコマンドプロントを立ち上げてsshでログインし、listener を起動。

 
以下が表示されれば成功。Publish を受け取れている。

 
これは、同じラズパイ内で通信がうまくいっているということ。

次は、同じLAN内の別なPC、ここではsshを使っているwindows 自身のros2でlistener を起動してみる。

 
これもできました。すごい。IPアドレスの設定とかしていないのに通信できています。ROS2は、ROSのように全体を統括するroscoreのようなものがないのにです。

逆向き(windowsがtalker でラズパイがlistener)でも動くことも確認しました。