Episode 11 Ubuntu 24.04 arm64版でGazeboを動かす

ブログ

皆さんこんにちは、グレキチです。
11月も後半になってきて、ようやく寒くなってきました。私が住んでいる地域では、今年はようやく紅葉が見える時期が来たといった感じで、木々が色づくのが例年よりも遅い気がしました。

さて今回は、ROSでのロボット開発には欠かせないシュミレーションツールである、Gazeboに関して書いてみたいと思います。Ubuntu24.04でGazeboを使えるようにするまでにかなり悪戦苦闘したので、自分への備忘録も兼ねて、皆さんに設定方法を紹介したいと思います。なお、今回の内容は、LinuxコマンドやGitに関する知識を、ある程度お持ちの方を想定しています。

Gazeboの変遷

Gazeboは、名前のパテント絡みで、バージョン変更がちょっと特異な感じになっているので、初めて使う人は間違いなく混乱すると思います。(私は混乱しました😅)
Gazebo → Ignition → Gzという流れで、コマンド名などが変更されており、かつ、コーディングの仕方もちょこちょこ変わっています。なお、”Gz”もGazeboなのですが、実行コマンドに倣ってこのように表記してます。(ちなみに、運用会社の説明に依ると、初期のものを”Gazebo Classic”と呼ぶようにしたようです)
また、ソフトの使い方自体も、公式マニュアルでも新旧3種類バージョンの説明が混在している箇所もあったりして、若干カオスな感じになっているので、最新のGz(Harmonic)でシュミレーションを起動させるのに、かなり苦戦しました😓

導入環境について

私が主に使ってるLinuxはUbuntuですが、M1Macの仮装環境で使っているので、どうしてもarm64版になります。amd64版だとGazeboは正式にサポートを公言しているので、インストールにはあまり手間は掛からない?ような感じを受けますが、今回はarm64版だったからなのか、公式ドキュメント通りに進めても、実行してみるとエラーで起動しなくて、まぁ、一筋縄ではいかない状況でした😩
また、本格的にROS2を使い出したのがまだ最近なので、極力動作が安定していて、かつ、最新に近いバージョンで進めたかった理由もあり、Ubuntuは24.04 LTSで、ROS2はJazzy Jaliscoを選択しました。
なお、ROS2のインストール方法については、前回のブログ記事に書いていますので、よかったらこちらも参考にしてみて下さい。

Gazeboのインストール

Gazeboのインストールについては、ROS2同様に、基本的には公式ドキュメントの説明に沿って進めます。

 Gazebo公式へのリンク: https://gazebosim.org/docs/harmonic/getstarted/

上のリンクから、サイトへ行った最初のページには、各ベースOSへの推奨バージョンについての説明がなされています。この記事を書いている2024年11月下旬時点で、最新版はIonicになっていますが、今回はUbuntu24.04で推奨されているHarmonicを選択しました。
推奨バージョンが確認できたところで、次はページの左に目を向けて下さい。”Install”のプルダウンがあるので、そこをクリックして、Ubuntuの場合は、一番上の”Binary Ubuntu Install” を選びます。ちょっと下に”Ubuntu Source Install” もありますが、玄人向け?なので、Binaryの方が簡単です。
そうしたら、ようやく具体的にインストール手順の記載ページに行くので、上から順番にターミナルでコマンドを叩くだけです。とは言え、一文、一文、コピペして実行した方が早いです☝️

どうですか?ドキュメントに沿って、上手くインストール出来ましたか?
っと、ここまでは簡単だったかと思います。(えっ!難しかった!?😅 そう思った方はゴメンなさい)

今回のコツ

amd64版ならこれで難なく動くのでしょうか?、arm64版はデフォルトのインストールだけではインスールされないパッケージがいくつかあるようで、個別インストールが必要でした・・・。もちろん、こんなこと公式ドキュメントのどこにも書いてませんでした😱
困った時のStack Overflowなどでの検索の嵐で、何とか解決策を見つけた次第です。

それで、追加インストールが必要なパッケージは、以下の2つです。

各々、データリンク先の指示に従って、インストールします。

ここまでインストール出来てから、一度Gazeboを起動してみると、

MESA: error: ZINK: failed to choose pdev

みたいなエラーが出ると思います。
これは、グラフィック関係のMesaドライバーというものが必要だということを示唆しているようでした。従って、Mesaドライバーもインストールします。参考にしたサイトは以下のリンクになります。この中の”mesa-utils”というのをインストールすればOKです。

 Mesaドライバーへの参考リンク: https://idroot.us/install-mesa-drivers-ubuntu-24-04/

そして、これで終わりでは無くて・・・、最後に、Gazebo公式ページに記載のある、トラブルシューティングを2つ対応しないといけなかったです。(これはきちんと記載されてました)
該当ページへのリンクはこちらです。リンク先の内容の内、以下の2項目の対応です。

  • Wayland issues
  • Network Configuration Issue

”Wayland issues”の方は、環境変数に”QT_QPA_PLATFORM=xcb”をechoで追加すればOK。一方、”Network Configuration Issue”の方は、”multicast”の設定の確認ですね。こちらは、結局、私の場合は、通信の確認のみを実施して、リンク先の指示にあるようなファイヤウォールの追加設定は不要でした。

ということで、ここまで長かったですが、これで完了です。日頃の行いが良い方は、以下の通り、問題なくGazeboが起動できると思います(笑)

まとめ

ROS2を使い始めて、やっとロボット製作を本格的に進められるようになって来ましたが、色んなツールを使い出すと、まず最初の関門である使用環境の構築に手こずることが多いんですよね。早くツールを使いたいのに、何でこんなとこで止まってるんだ!って、ついつい憤慨してしまいます😥

同じような思いでツールを使うのを諦めてしまうと、やりたいことが遠回りになってしまったりするので、そんなことを避けられるように、この内容がどなたかの助けになれば嬉しいです。

それでは、また✋