えいあーるれいの技術日記

ROS2やM5 Stack、Ubuntuについて書いています

Raspberry Pi4におけるROS2の環境構築 (Ubuntu22.04 + Rolling)

私は高専でROSの講習を昨年から行っています。それぞれ学生はRaspi4とSDカード、あとはカメラなどの講習に必要なものを渡されます。

さすがにコミュニティやバージョンの節目という状況でROS1の講習を継続は無理があると思っているので、今年度はROS2で講習を行う予定です。


昨年度はRaspberry Pi4にUbuntu20.04LTS-Serverを無理やりデスクトップ化させてそこにROS1-Noeticを入れていました。そもそもRaspberryPi-ImagerからDesktop版がインストールできなかったからです。

Ubuntu21.04はデスクトップに対応していたので、なんでーーと思いながら配布用イメージを自作していたのですが、今年リリースの22.04からその状況が改善しそうです。

なんと、Ubuntu-Desktopが対応しています。(ただし64bitでRaspi4のみです)


まだHumbleも出ていないのに今からお試し!は気が早い気もしますが、さらに使いやすくなっているUbuntu22.04の恩恵を受けるためにもRollingインストールを行ってみました。


環境

  • Raspberry Pi4 (4GB)
  • SDカード(TOSHIBAの速い方)
  • OS: Ubuntu22.04LTS
  • ROS2: ROS2-Rolling


環境構築

Raspberry Pi上にUbuntu22のインストール

以前からインストール方法はほとんど変わっていません。Imagerを用いてUbuntu22.04-Desktopを焼き、以下の記事の「パッケージの更新」まで同様の手順で行ってください。

Ubuntu22.04ではデスクトップ画面の何もないところで右クリック→Settingができません(項目自体が消えています)

zenn.dev

Ubuntuはデフォルトでは5分で画面がロックされます。Settings->Power->Screen blackNeverにしておきましょう。


ROS-Rollingのインストール

ROS-Rollingは最新のUbuntu-LTSで動作する常に最新のROSの機能を試せるバージョンです。これからリリースされるHumbleもRollingから枝分かれしているので、Rollingの挙動がHumbleの挙動に直結します。

ROS2-Rolling (Ubuntu22)のインストール手順は以下から

docs.ros.org

sudo apt update && sudo apt install curl gnupg lsb-release -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
sudo apt install ros-rolling-desktop


動作確認

source /opt/ros/rolling/setup.bash
ros2 launch demo_nodes_cpp talker_listener.launch.py


その他画像など

Ubuntu22.04はクラゲがデスクトップ画面になっています。Ubuntu20.04よりもさらに高機能になっています(Ubuntu20.04のときも高機能!と喜んでいたころが懐かしい)

Ubuntu22ではPython3.10が採用されています。最近までPython3.7とかだった気がするけど…?


スクショ機能が大幅アップグレードしており、PrintScreenボタン一つで録画もできるようになっています。Windowsに追いついています。


Rvizは結構重いです。Ubuntu20にlightdm入れていた頃のほうがまだマシかも…


TurtleSim。問題なく動作しました。


YOLOX-ROSについては、そもそもほとんどのPyPIパッケージがPython3.9までの対応のため動きません。そのうちonnxruntimeやtflite-runtimeが対応するようになれば動くと思います。

結論

初学者がUbuntu22.04+ROS2に手を出すには少し早すぎるかも!

Dockerを使わないのであれば、夏頃までは待ったほうが良さそうです。