Mini Pupper 2をROS 2 Humbleで動かすまで

ROSCon2022でMini Pupperの発表をしたご縁があり、本日(2025年2月3日)Makuakeでキャンペーンが始まったMini Pupper 2を一足先に入手しました。ROS 2 Humbleで動かすまでの流れを中心にROS 2開発者目線でまとめました。

Makuake(マクアケ)
Makuake|ChatGPT搭載!会話もできる四足歩行AIロボット犬『ミニぷぱ2』|Makuake(マクアケ) 初心者もプロも夢中になれる四足歩行ロボット犬が、ChatGPT搭載で帰ってきました! 生成AI搭載で進化した「Mini Pupper2(ミニぷぱツー)」は、あなたの声やジェスチャーに...

【関係性の明示】
今回のこの記事の執筆にあたりMini Pupper 2のハードウェアを提供いただいています。

目次

Mini Pupper 2(ミニぷぱ2)

Mini Pupper 2は、MangDang社のAfreez氏が手がけるプロジェクトで、Raspberry Piを搭載した小型4脚ロボットキットです。2022年にKickstarterで初公開されました。

Kickstarter – Mini Pupper 2: Open-Source, ROS2 Robot Kit for Dreamers

この前身となる初代Mini PupperをKickstarterで支援しており、入手したときには下記の記事を書いていました。4脚ロボットは様々なサイズがありますが、卓上で動く小型ロボットは怪我の心配も少なく、その構造から学ぶことはたくさんありました。また、この記事の最後に余談として記載していますが、ROSCon 2022というイベントでユーザコミュニティの一員として作成したアプリケーションの紹介をする機会をいただいたこともありました。

あわせて読みたい
Mini Pupperを動かすまで(組み立て編) KickstarterでbackしていたMini Pupper(#minipupper / #ミニぷぱ)が届き始めているようです。私のところにも届いたので組み立てました。その過程をメモします。今回は...

動かすまでの流れ

動かすまでには下記のようにハードウェアの準備、開発環境の準備が必要です。

  1. 本体組み立て
  2. オプション部品取り付け
  3. ROS 2インストール済みのmicroSDカードを準備&起動
  4. PCからSSHログイン&PCでROS 2ノード起動

基本的には公式ドキュメントに沿って進めていくことになります。

本体組み立て

キットの内容について

コンプリートキット(組み立てキット)の方で購入すると、画像のように部品セットで届くことになるようです。

これを公式ドキュメントを読みながら組み立てていきます。初代Mini Pupperも組み立てた経験があるので、3時間程度でした。初見だと半日〜1日ほど時間がかかるかもしれません。

公式ドキュメント以外にも、すでにKickstarterで入手された方が詳しく写真付きで記録されてたりもします。

きょうのかんぱぱ
Mini Pupper 2 を組み立ててみました (1) 組み立て準備編 クラウドファンディングで申し込んでおいた Mini Pupper 2が到着しました。以前からMini Pupperには興味があったのですが、ROS2対応版のMini Pupper 2を待っていたところで...

回路について

Mini Pupperはソフトウェアだけではなくハードウェアまでオープンになっており、回路図はGoogle Driveにて公開されています。URLは今後変わる可能性があるので、その場合は公式ドキュメントから最新のURLをご確認ください。

今回頂いたPCBのバージョンは回路図のPDFに記載された日付と同じ「15 April, 2023」です。MangDang社に確認したところ、回路は15 April, 2023版でFixしているとのことで、それ以降の日付が印字されているものについても特に違いがないようです(おそらくロットの違いだと思われます)。

Raspberry Piについて

使用されているRaspberry PiはCM4で下記の通り日本でそのまま使えるモデルになっているとのことです。このCM4の外箱も同梱されるはずと聞いています。

【参考】総務省の電波利用ポータルの検索結果(工事設計認証番号 020-210202)

サーボモータのID割り当てについて

組み立てていく過程で、公式ドキュメントに記載のない手順がありました。サーボモータへのIDの割当が必要でした。Mini Pupper 2はシリアルサーボを採用しており、各サーボモータに1〜12までIDを割り当てます。今回受け取った部品だと初期値はすべて工場出荷時のままID=1となっていました。
(Makuakeキャンペーンでのコンプリートキット購入者も同じになるのかMangDang社に確認し、必要であれば公式反映してもらうようにしておきます。)

【手順概要】

  1. サーボモータを1つだけ接続(その他は一旦配線を外す)
  2. 右後ろ足付近の「ESP32 Serial」USB Type-CポートにPCを接続
  3. シリアルポート(例:WindowsならTeraTermなど)を開き、baudrateを115200bpsに設定
  4. servo-scan コマンドで接続確認後、servo-setID コマンドで新しいIDに書き換え

以下はコマンド例です。

servo-scan
servo-setID --id 1 --newid 2  # 新しく2番のIDを割り当てる場合
このスクリーンショットは全部のサーボモータを接続したあとに撮ったので、servo-scanで複数のサーボが見えていますが、サーボモータを1つずつ接続すれば1IDだけ表示されていました。

全サーボを同様に1台ずつ接続し、12個分のID設定を行った後、キャリブレーションを実施しました。

オプション部品取り付け

オプション部品はいくつかありますが、生成AI機能で使うカメラと、ROSでSLAMやNavigationを行う際に使うLiDARがあります。この取り付け方も公式ドキュメントに記載されています。

Raspberry Piの設定

Raspberry Piの環境構築は比較的簡単です。microSDにセットアップ済みのイメージを書き込むだけでROS 2のインストールも完了します。公式ドキュメントのROS 2ガイドではbalenaEtcherを使う方法が紹介されています。

UbuntuのPCにSDカードをマウントしてWi-Fi接続先の設定ファイルを最初から変更しておくと便利です。/media/$USER/writable/etc/netplan/50-cloud-init.yamlなどのようにマウントされるので、このSDカード内の設定ファイルをVimやgeditなどのエディタで開いて直接編集するか、/media/$USER/writable/etc/netplan/99-wifi.yamlなどとしてコピーして使用します。netplanの設定ファイルはファイル名順に読み込まれるので、設定ファイルをコピーする場合は50より大きな数字をファイル名の先頭につける必要があります。

Netplan
Netplan tutorial Use this tutorial to learn about basic use of the Netplan utility: how to set up an environment to try it, run it for the first time, check its configuration, a...

なお、初期設定ではSSIDがMangDang となっているアクセスポイントに接続しにいくようになっています。公式ドキュメントでは、スマホなど簡単に設定変更できるデバイスでこのアクセスポイントを作成し、WEB UIからMini Pupper 2の設定変更をするように説明されています(ROSを使わない場合はこの手順で設定することになるので、おそらくUbuntuなどext4フォーマットのSDカードをマウントできるPCがない場合を想定しているのだと思われます)。

最初からイメージを作成したい場合は、Ubuntu 22.04のイメージ書き込んだmicroSDをRaspberry PiにセットしてWi-Fi接続した後、mini_pupper_2_bspの setup.shを実行すれば良さそうです。

GitHub
GitHub - mangdangroboticsclub/mini_pupper_2_bsp: BSP(Board Support Package) for Mini Pupper 2 BSP(Board Support Package) for Mini Pupper 2. Contribute to mangdangroboticsclub/mini_pupper_2_bsp development by creating an account on GitHub.

電源をONにした後、Mini Pupper 2のLCDにIPアドレスが表示されていれば無事にWi-Fiに接続できています。もしうまく接続できていない場合はHDMIケーブルとキーボードを接続してデバッグします。Wi-Fi接続まで時間がかかると接続できていてもIPアドレスが表示されないこともありました。

PCの設定

ROS 2 Humbleをインストールするため、Ubuntu 22.04を用意するのが無難です。手前味噌ですが、下記スクリプトを使えばコピペ一発でインストールまで完了します。Open RoboticsがメンテナンスしているROS 2 Documentationとやっていることはほぼ同等なので、詳細を確認したい方は、そちらをご参照ください。

GitHub
GitHub - Tiryoh/ros2_setup_scripts_ubuntu: 🔧 unofficial ROS 2 install/setup scripts for Ubuntu 🔧 unofficial ROS 2 install/setup scripts for Ubuntu - Tiryoh/ros2_setup_scripts_ubuntu

また、Dockerを使えばUbuntu 24.04でもROS 2 Humbleの環境を用意してMini Pupper 2を動かすことができました。

GitHub
GitHub - Tiryoh/docker-ros2: unofficial ROS 2 Dockerfile unofficial ROS 2 Dockerfile. Contribute to Tiryoh/docker-ros2 development by creating an account on GitHub.

ros2 launch

teleop

Raspberry PiとPCでROS 2 Humbleの環境を設定できたら、PCでTerminalを2つ開き、1つはSSHでMini Pupper 2にログインしておきます。

Terminal①(SSHログイン済み)

SSHでログインしたTerminalでは下記のように操作します。

echo $ROS_DOMAIN_ID  # ROS_DOMAIN_ID(通常は42)を確認
source ~/ros2_ws/install/setup.bash
ros2 launch mini_pupper_bringup bringup.launch.py  # このコマンドを実行するとMini Pupper 2が動きます

bringup.launch.pyを実行すると下記のように複数のROS 2ノードが起動し、Mini Pupper 2は少しかがむように動きます。

Terminal②

もう1つのTerminal(SSHログインしていない方)にて下記のように操作します。

export ROS_DOMAIN_ID=42  # ターミナル①で確認した値を設定
ros2 run teleop_twist_keyboard teleop_twist_keyboard

SLAM

さらにもう1つTerminalを開き、SLAM用のlaunchを起動すると地図作成を開始します。先程のteleop_twist_keyboardを使って部屋を移動し、くまなくマッピングします。

ros2 launch mini_pupper_slam slam.launch.py

地図作成が完了するとNavigationも可能になります。SLAMやNavigationの各手順は公式ドキュメントのROS 2ガイドにステップごとに解説されています。また、ダンスモーションの再生などのサンプルについても紹介されています。

ちなみに、うちの猫は興味津々でなかなか大変でした

まとめ

小型4脚ロボットキットのMini Pupper 2を組み立て後、ROS 2 Humbleで動かし、SLAMで地図作成を行うまでの流れを紹介しました。4脚ロボットは様々なサイズがありますが、卓上で動く小型ロボットは怪我の心配も少なく、その構造から学ぶことが多いのが魅力だと思います。

本日(2025年2月3日)からMakuakeでキャンペーンが始まっていますので、ぜひMakuakeのページもご確認ください。

Makuake(マクアケ)
Makuake|ChatGPT搭載!会話もできる四足歩行AIロボット犬『ミニぷぱ2』|Makuake(マクアケ) 初心者もプロも夢中になれる四足歩行ロボット犬が、ChatGPT搭載で帰ってきました! 生成AI搭載で進化した「Mini Pupper2(ミニぷぱツー)」は、あなたの声やジェスチャーに...

余談:Mini Pupperとのご縁について

2021年にKickstarterで支援したMini Pupperについて色々フィードバックしていくうちに、ROSCon 2022で開催されたワークショップでユーザコミュニティの一員として発表する機会をいただきました。

参加報告として本当は2022年11月に開催されたROS Japan Users Groupのオンラインイベントで発表するはずだったのですが、当日体調不良で発表しそびれてしまった(急に高熱が出て寝込んでしまいました)ときのスライドを、いまさらですが紹介します。

このワークショップでのやりとりがきっかけとなり、Mini Pupper向けのROS 2ソフトウェア開発を2022年夏ごろ〜2023年夏ごろまで少しお手伝いしていました。その後2024年11月ごろからはドキュメントの日本語訳でお手伝いをしています。他の日本語話者のユーザの皆さんと一緒に日本語訳したり、Google Driveのファイル等外部リンクをチェックしたり、ページを開きやすいように画像が多いページは分割したりなど見やすさ向上の提案・修正もしています。

ドキュメントの追加・修正リクエストありましたらGitHubのIssueを起票していただければ、MangDang社と相談します。Issueは日本語でも英語でもOKです。
(筆者はいまは開発に直接関わっているわけではないので、質問は後述するDiscord等でお願いします)

製品へのリクエストや質問等は、MangDang社が用意しているDiscord(https://discord.gg/xJdt3dHBVw)にて質問すると、MangDang社の中の人が答えてくれるはずです。

この記事が気に入ったら
フォローしてね!

よかったらシェアしていただけると励みになります!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Memotekiの管理人です。このブログには学んだことや共有しておきたいことをマイペースにメモしていきます。2020年からは日記も書き始めました。

コメント

コメントする


reCaptcha の認証期間が終了しました。ページを再読み込みしてください。

目次