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

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

Raspberry Pi用Xubuntu + ROSのOSイメージを公開しました。

 Raspberry PiでROSを使うときってノートPCなどの他の環境で構築するよりもストレスを感じることがありませんか?

 最大でも15Wの低消費電力のデバイスとはいえ環境構築を行う上では性能不足感があり、何かと面倒です。

 SSDを搭載したりOCをすることで多少は良くなるそうですが、それならOdyssey Blue Mini PC(過去のレビュー)やスティックPCにコストで負けるような気もするのでう〜んとなります。

 Raspberry Pi ImagerのOSのリストにはUbuntu 20.04 Desktopがないということもあり、GUIを使いたければ(慣れていなければ)更に面倒な工程を踏むことになります。

 Raspberry Piって初心者向けのPCなのに結構環境構築に時間がかかるので、ちょっとハードル高い気がします。

 そこでRaspberry Pi用のROS環境を構築済のUbuntuイメージを公開しようと決めました。

どこにアップしよう…

 OSのイメージは下記の記事を参考にしました。

qiita.com

 作成したのはいいものの、OSのイメージサイズは10GBを超えます。圧縮率の高い7zフォーマットで圧縮しても2.6GBとなり、公開先に困りました。

 GitHubにはReleaseであっても1ファイル2GB制限がありそのままでは公開できません。無料の大容量ファイル共有サービスは時間制限があり、使い勝手が悪いです。

 Google DriveDropboxに課金して共有を使うのも手かもしれませんが、もともと契約していないのにわざわざこのために契約するくらいなら公開しないという方を取りそうです。

 そこで、今回はそのイメージファイルをGitHubに公開するためにひと工夫したのでイメージファイルの紹介とともにその方法を解説します。

公開したファイルは何?

 Raspberry PiXubuntuのDesktop環境とROS環境が最初からインストールされているファイルを公開しました。もちろんROS環境のロードは任意なので、普通のXubuntuとしても使えます。

 Xubuntuは軽量Linuxに分類されるOSで、Ubuntu Desktopよりも軽量であるため、性能が控えめなコンピュータによくインストールされます。

https://raw.githubusercontent.com/Ar-Ray-code/rpi_xubuntu_ros/main/images_for_readme/desktop.jpeg

ログイン画面もUbuntuそのものです。ログインパスワードは「ubuntu20」です。

f:id:Ray_ar:20210606233309j:plain

なぜGitHubにアップできたのか?

 GitHubの2GB制限をくぐり抜ける方法はとてもシンプル。「分割」を行いました。

 フロッピーディスクにファイルを分割して転送していたという話は聞いたことがありましたが、まさか実際にファイル分割を行うとは…!

 実際に結合して復元が成功したときは感動しました(なぜ)

 こうして10GBのイメージファイルは2.6GBの7zファイルに圧縮され、分割されることで、1.5GB程度のファイルが2つ生成されました。

 使うときはユーザ側が復元します。これについては後述します。

https://raw.githubusercontent.com/Ar-Ray-code/rpi_xubuntu_ros/main/images_for_readme/how_to_create_img.png

 ファイルは以下のリンクで公開しています。

github.com

結合方法

 ビギナー用に公開したつもりだったのですが、まさかのファイル分割によってめっちゃ面倒なファイルになっていますが、しっかりと手順を踏めば完璧に復元できます。

 ここでは、Ubuntuでの結合方法を示します。Windowsでもファイル結合はできるしWSLもあるので、調べてみてください。

1.依存環境のインストール

  • 7zツールとRaspberry Pi Imagerをインストールします。
$ sudo apt install rpi-imager
$ sudo apt install p7zip-full

2.イメージファイルのダウンロード

 リリースページからクリックすることでもダウンロード可能です。末尾の番号が違うものをセットでダウンロードします。3GB近く通信するので注意。

$ wget https://github.com/Ar-Ray-code/rpi_xubuntu_ros/releases/download/20.04_v1.0/splited_xubuntu_2004_ros1_ros2_7z_00
$ wget https://github.com/Ar-Ray-code/rpi_xubuntu_ros/releases/download/20.04_v1.0/splited_xubuntu_2004_ros1_ros2_7z_01

3.結合と解凍

 ファイルを7zファイルに戻して、その7zファイルを解凍することでimgファイルを入手可能になります。Ubuntuではcatコマンドで結合できます(!)

 catコマンドを文字表示や文字列結合するだけのコマンドだと思い込みがちですが、catコマンドはsplitコマンドで分割されたバイナリファイルも結合できます。

$ cat splited_xubuntu_2004_ros1_ros2_7z_0* >> image.7z
$ 7z x image.7z
$ rpi-imager &

 Raspbrry Pi Imager のGUIが起動するので、後はいつもどおりのイメージ書き込みです。お疲れ様でした。

ちょっと注意

 イメージファイルからUbutnuを起動したら、次の設定を変更することをおすすめします。

  • 設定->電源から、スリープ時間と自動サスペンドの設定を変更します。

 Raspberry Pi は自動でサスペンドすると自力で復帰する手段を持たない(電源ボタンを実装すればその限りではない)ため、GJIで使用する場合は必ず変更してください。

https://raw.githubusercontent.com/Ar-Ray-code/rpi_xubuntu_ros/main/images_for_readme/setting_suspend.png

基本的にRaspberry Pi + ROSの場合はこのイメージファイルから環境構築を行っています。参考までに。

ROSについて

 ROSとはRobot Operating Systemの略称で、ロボット制御に必要なパッケージや環境が揃っているオープンソースプロジェクトです。企業での産業用ロボット開発から個人のホビーロボット開発まで多くの活用例があります。

 ROS関連の書籍も充実しているのでぜひチェックしてみてください。

(画像をクリックすると詳細ページに移動します)