ROSCon2022でMini Pupperの発表をしたご縁があり、本日(2025年2月3日)Makuakeでキャンペーンが始まったMini Pupper 2を一足先に入手しました。ROS 2 Humbleで動かすまでの流れを中心にROS 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というイベントでユーザコミュニティの一員として作成したアプリケーションの紹介をする機会をいただいたこともありました。

動かすまでの流れ
動かすまでには下記のようにハードウェアの準備、開発環境の準備が必要です。
- 本体組み立て
- オプション部品取り付け
- ROS 2インストール済みのmicroSDカードを準備&起動
- PCからSSHログイン&PCでROS 2ノード起動
基本的には公式ドキュメントに沿って進めていくことになります。
本体組み立て
キットの内容について
コンプリートキット(組み立てキット)の方で購入すると、画像のように部品セットで届くことになるようです。
これを公式ドキュメントを読みながら組み立てていきます。初代Mini Pupperも組み立てた経験があるので、3時間程度でした。初見だと半日〜1日ほど時間がかかるかもしれません。


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

回路について
Mini Pupperはソフトウェアだけではなくハードウェアまでオープンになっており、回路図はGoogle Driveにて公開されています。URLは今後変わる可能性があるので、その場合は公式ドキュメントから最新のURLをご確認ください。
今回頂いたPCBのバージョンは回路図のPDFに記載された日付と同じ「15 April, 2023」です。MangDang社に確認したところ、回路は15 April, 2023版でFixしているとのことで、それ以降の日付が印字されているものについても特に違いがないようです(おそらくロットの違いだと思われます)。

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


サーボモータのID割り当てについて
組み立てていく過程で、公式ドキュメントに記載のない手順がありました。サーボモータへのIDの割当が必要でした。Mini Pupper 2はシリアルサーボを採用しており、各サーボモータに1〜12までIDを割り当てます。今回受け取った部品だと初期値はすべて工場出荷時のままID=1となっていました。
(Makuakeキャンペーンでのコンプリートキット購入者も同じになるのかMangDang社に確認し、必要であれば公式反映してもらうようにしておきます。)
【手順概要】
- サーボモータを1つだけ接続(その他は一旦配線を外す)
- 右後ろ足付近の「ESP32 Serial」USB Type-CポートにPCを接続
- シリアルポート(例:WindowsならTeraTermなど)を開き、baudrateを115200bpsに設定
- 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より大きな数字をファイル名の先頭につける必要があります。
なお、初期設定では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
を実行すれば良さそうです。
電源をONにした後、Mini Pupper 2のLCDにIPアドレスが表示されていれば無事にWi-Fiに接続できています。もしうまく接続できていない場合はHDMIケーブルとキーボードを接続してデバッグします。Wi-Fi接続まで時間がかかると接続できていてもIPアドレスが表示されないこともありました。
PCの設定
ROS 2 Humbleをインストールするため、Ubuntu 22.04を用意するのが無難です。手前味噌ですが、下記スクリプトを使えばコピペ一発でインストールまで完了します。Open RoboticsがメンテナンスしているROS 2 Documentationとやっていることはほぼ同等なので、詳細を確認したい方は、そちらをご参照ください。
また、Dockerを使えばUbuntu 24.04でもROS 2 Humbleの環境を用意してMini Pupper 2を動かすことができました。
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のページもご確認ください。

余談: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社の中の人が答えてくれるはずです。
コメント