概要
この記事は、学ロボAdvent Calendar 2023の20日目の記事です!
ROS2を使う上で重要な可視化ツールのgazeboとrviz2について、その基本的な使い方を実際の実装を追いながら説明します。
今回扱うignition gazeboには少々厄介なバージョンの問題がありますが、それについて調べて分かったことなども記事内で説明しています。
自作ロボットのCADファイルを取り込んでgazebo上に表示するところから、slam toolboxとnavigation2を用いてマッピングと自律走行をシミュレーター上で行うところまでを解説します。
分量がかなり多くなってしまったので複数の記事に分割して書き、この記事はそれらの集積場としたいと思います。
また、私のgithubにてステップごとの実装を公開しているので、そちらも併せてご覧ください。
また、記事の内容に誤りや不備等ございましたら、ご指摘いただけると幸いです。
動作環境・バージョン
動作環境
Ubuntu22.04 :デュアルブートした実機PC
VScode :コーディングとターミナルの操作は基本的にVScodeで行った
バージョン
ROS2 : humble :幣チームで一般的に用いられているROS2のバージョン
gazebo : ignition fortless :ROS2公式がhumbleとの連携相手として推奨するバージョン
コンテンツ
自作ロボットのCADファイルを読み込んでgazeboに表示する
自作ロボットのCADファイルを生成し、blenderを用いてdaeファイルを作成します。それらをgazeboで読み込んで、自作ロボットをgazeboに表示しましょう。
また、gazeboの最低限の使い方―特にworldの作り方、も説明します。
自作ロボットのCADファイルを読み込んでgazeboに表示する
gazeboとROS2を連携してロボットを操作する
前回作成した自作ロボットに動力を付けた上で、ROS2から操作できるようにしていきましょう。gazeboとROS2の連携はメッセージのブリッジがやや面倒ですが、比較的効率の良いyamlファイルを用いたやり方を紹介します。
キー入力の検出は既存のパッケージを使うので、それらをプロジェクトで使用する方法も説明します。
さらに、gazeboとROS2を一つのコマンドで起動できるようにするlaunchファイルの書き方も紹介します。
gazeboとROS2を連携してロボットを操作する
Rvizを使用してロボットの状態を可視化する(gazebo)
gazeboと並ぶ可視化ツールのRvizを使ってみましょう。前回使用したロボットにLidarを付けて、取得データをRvizで表示してみます。
さらに、ロボットのtfやodometryといった基本情報をgazeboから送信して、Rvizに表示する方法を説明します。
Rvizを使用してロボットの状態を可視化する(gazebo)
slam toolboxとnavigation2を用いた自律走行を行う(gazebo)
slam toolboxとnavigation2を用いて、gazebo上でSLAM(地図生成と自己位置推定)とナビゲーション(経路生成と経路追従)を行ってみましょう。
slam toolboxとnavigation2をlaunchファイルから起動し、予め用意したパラメータを読み込ませてから起動する方法も説明します。
slam toolboxとnavigation2を用いた自律走行を行う(gazebo)