Mini Pupperを動かすまで(ソフトウェア準備編)

前回はMini Pupperを組み立てました。今回は起動してジョイスティック操作するまでをメモします。

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

組み立て方および動かし方は、基本的には以下のRead the Docsに公開されているドキュメントの通りです。MangDang社が公式にメンテナンスしているものです。2022年2月21日の時点では「Software」のページに一通り載っているようです。この記事は一連の流れと気づいたことをメモするのが目的なので、詳細についてはRead the Docsに公開されているドキュメントを参照してください。

目次

準備するもの

組み立て済Mini Pupper以外にいくつか追加で用意したものがあります。

事前準備

実際にMini Pupperを起動してセットアップする前にいくつか準備します。

充電

Mini Pupperの電源を充電しておきます。

充電中の様子 LEDが赤く点灯している
充電完了後の様子

microSDカードの準備

Mini Pupper用のmicroSDカードにOSを書き込みます。Complete KitをbackしてmicroSDカードも一緒に届いた人はこの書き込みのステップは飛ばしても大丈夫かもしれません(要確認)。
書き込むイメージはMangDang社が公開しているものを使います。
冷却用ファンが搭載されているものはMini Pupper V2なのでファイル名にはMiniPupper_V2と記載があるものを用います。
今回は20211220_v2.1.3_MiniPupper_V2_PS4_Ubuntu_20.04.2_Baseline.img.zipを使います。このイメージは16GB以上のmicroSDカードを想定しているようです。

あわせて読みたい

注意事項が2つあります。

  1. MangDang社がメンテナンスしている最新のイメージはUbuntu 21.10がベースになっています。これは一部のRaspberry PiではUbuntu 20.04を使うとBluetooth接続が不安定になり、ゲームパッドが使いにくくなってしまうからだそうです(いろいろフィードバックしている過程でMangDang社の中の人とにっしゃん(@nisshan_)さんから聞きました)。今回はROSも使えるようにするためにUbuntu 20.04を使用しますが、環境によってはゲームパッドの接続が不安定になる可能性があります。私は2台所持していますがどちらも問題は発生していません。
  2. 一部のRaspberry Piはブートローダが新しいものになって出荷されており、MangDang社がカスタムして公開しているUbuntu 20.04のイメージはこの新しいブートローダで起動できないようです。HomeMadeGarbage(@H0meMadeGarbage)さんとのやりとりで発覚しました。

ダウンロードしてきたZIPファイルをbalenaEtcher等で書き込みます。

あわせて読みたい
Raspberry Pi 3(Raspbian)をディスプレイなしでセットアップする方法[Windows][Etcher] Raspberry Pi 3にRaspbianをインストールし、HDMIディスプレイ、キーボード、マウスなしでセットアップする方法を紹介します。PCからSSHでログインできるように設定しま...

イメージの書き込みが終了したらMini PupperのRaspberry PiにmicroSDを差し込んでセットしておきます。

一旦外側のカバーを外してmicroSDへアクセスします

Mini Pupperをセットアップ

microSDカードを準備したりしている間にバッテリーもある程度充電されたと思うので、セットアップを進めていきます。

起動

Raspberry Piにモニタとキーボード(とマウス)も接続しておきます。この状態でMini Pupperの底面にあるバッテリーの電源ボタンを長押しします。

スイッチは以下のような挙動になっているようです。

  • 長押し:電源ON/OFF
  • 押し:残量確認(LEDの色が赤なら少ない、青ならある程度充電されている)
六角ボルトにも見えますが、電源ボタンです。
充電完了後にバッテリーチェックをしている様子
モニタはバッテリ駆動タイプのものを使うと楽です。

Mini Pupper用ソフトウェアの更新

Mini Pupper用のソフトウェア(mangdangroboticsclub/QuadrupedRobot)を更新します。この更新は20211220_v2.1.3_MiniPupper_V2_PS4_Ubuntu_20.04.2_Baseline.img.zip以外を使用している場合(Ubuntu 21.10ベースのものを使用する場合)は不要そうです。というのも、公式には基本的にはゲームパッドを使う場合はUbuntu 21.10を用い、ROSを使う場合はゲームパッドを使わないようにしてUbuntu 20.04を用いるという方針のようです。せっかくなので両方同時に使えるようにしたいと考えたため、公式ではアナウンスされていないことをしています。

主な目的はゲームパッドからRaspberry Piをシャットダウンする機能を取り込むことです。起動したRaspberry PiでTerminalを開いて以下のコマンドを実行すると更新版に切り替えられます。

cd ~/Robotics/QuadrupedRobot
git remote add dev https://github.com/Tiryoh/MiniPupper-QuadrupedRobot.git
git fetch dev MiniPupper_V2
git checkout dev/MiniPupper_V2
モニタを繋いでTerminalを起動した様子

今回この記事作成にあたり、Mini Pupper用のソフトウェア(20211220_v2.1.3_MiniPupper_V2_PS4_Ubuntu_20.04.2_Baseline.img.zipにインストールされているもの)にシャットダウン機能のパッチをあてたものを作成し公開しています。上記はそれに切り替えるためのコマンドです。

GitHub
GitHub - Tiryoh/MiniPupper-QuadrupedRobot: Open-Source,ROS Robot Dog Kit Open-Source,ROS Robot Dog Kit. Contribute to Tiryoh/MiniPupper-QuadrupedRobot development by creating an account on GitHub.

パッチについて説明します。

2021年12月28日にシャットダウン機能が追加されていますが、残念ながら今回のイメージは作成日が2021年12月20日なのでシャットダウン機能は実装されていません。そこでこのシャットダウン機能追加の部分のみを取り込みます。

GitHub
add shutdown function · mangdangroboticsclub/[email protected] Open-Source,ROS Robot Dog Kit. Contribute to mangdangroboticsclub/QuadrupedRobot development by creating an account on GitHub.

シャットダウン機能追加の部分のみを取り込む理由としては、2021年12月24日以降はUbuntu 21.10を対象とするようになったためか、バッテリ電圧取得用ドライバなど一部のバイナリがUbuntu 20.04では機能しなくなっているためです。
コミットメッセージは入力ミスなのか20.10と書かれていますが……

GitHub
SCM: First Update for ubuntu 20.10 · mangdangroboticsclub/[email protected] Open-Source,ROS Robot Dog Kit. Contribute to mangdangroboticsclub/QuadrupedRobot development by creating an account on GitHub.

ROSについての回(次回)でもう少し触れようと思いますが、その機能しなくなったバッテリ電圧取得用ドライバなどのUbuntu 20.04用バイナリは以下のリポジトリでメンテナンスされているようです。

GitHub
GitHub - mangdangroboticsclub/minipupper_ros_bsp: The MiniPupper ROS project The MiniPupper ROS project. Contribute to mangdangroboticsclub/minipupper_ros_bsp development by creating an account on GitHub.

キャリブレーション

ソフトウェア更新後はサーボモータのオフセットのキャリブレーションを行います。
公式ドキュメントの以下のページに角度や脚先位置の詳細情報が掲載されています。このキャリブレーションを丁寧にやることで、動かすときにバランスを崩しにくくなり、しっかり動いてくれるようになります。

モニタを繋いでキャリブレーションツールを起動した様子

このキャリブレーションの手順は、使うツールのバージョンによって違うようです。簡単な見分け方としてはツールを起動したときの画像です。

旧キャリブレーションツールの画像
https://github.com/mangdangroboticsclub/QuadrupedRobot/blob/ca98240d1f6a88ad39af59db780a745a3eff3f15/StanfordQuadruped/imgs/MiniPupper.gif
現行キャリブレーションツールの画像
https://github.com/mangdangroboticsclub/QuadrupedRobot/blob/b33a450abe2e513df7f2243f15bf6a55942ef324/Doc/imgs/MiniPupper.Calibration.png

旧キャリブレーションツール

旧キャリブレーションツールでは組み立て時のマニュアルに書かれているように脚の角度は45degと-45degになるようにするのが正解のようです。

サーボモータの角度が45deg, -45degになる脚の角度
組み立て時のマニュアル

現行キャリブレーションツール

現行キャリブレーションツールでは脚の角度は0degと-90degになるようにするのが正解のようです。

サーボモータの角度が0deg, -90degになる脚の角度

注意事項

キャリブレーションが終了したらキャリブレーションツールを閉じます。キャリブレーション中はゲームパッドがつながってジョイスティックの入力があったとしてもサーボモータを動かさないようにする処理(厳密にはサーボモータを動かすためのスクリプトを停止している)が入っているので、この「キャリブレーションツールを閉じる」というのはかなり重要な操作です。間違ってもそのままモニタを外して次のステップに進まないように注意してください。最初試したときはここでハマりました。

また、2022年2月17日のコミットでキャリブレーション時に使う角度の変数の初期値を変更するようなコミットが入っているようです。もしかしたらキャリブレーションの時の脚の角度が変更になるかもしれません。こちらについては公式からのアナウンスを待ちたいところです。

GitHub
update calibration tool(45,restore) · mangdangroboticsclub/[email protected] Open-Source,ROS Robot Dog Kit. Contribute to mangdangroboticsclub/QuadrupedRobot development by creating an account on GitHub.

ゲームパッドを接続して動作確認

キャリブレーションができたらゲームパッドを接続して動作確認をします。ゲームパッドの操作方法については以下のページに記載があります。

DUALSHOCK 4を使ったのでDUALSHOCK 4の場合の操作方法のメモです。

  • DUALSHOCK 4の「SHARE」ボタンと中央のPSボタンを同時に3秒以上長押しし、ペアリングモードにします
    • DUALSHOCK 4のLEDが高速で点滅します。同時押しできていない場合はゆっくり点滅します。
    • Mini Pupperは起動時からペアリング待ちなのでDUALSHOCK 4がペアリングモードになるとすぐにペアリングが始まります。ペアリングするにあたりMini Pupperは電源を入れる以外の操作は不要です。
  • DUALSHOCK 4のR1ボタンを押すと歩行モードの開始・停止を切り替えできます
  • DUALSHOCK 4のL1ボタンを押すと操作モードの有効・無効の切り替えをできます
    • 操作モードが無効な場合はR1ボタンを押しても歩き出しません

無事に接続ができると以下の動画のように前後左右自由に動かすことができます。楽しいです!

初めてMini Pupperを操作したときの動画

Raspberry PiのHDMI接続関連の便利設定

Raspberry Piは通常HDMIケーブルとモニタを繋いで起動した場合のみHDMI出力が有効になっています。つまり起動時にモニタがつながっていなければその後モニタを繋いでも起動しません。これでは少々不便なのでホットプラグを有効にする方法をメモしておきます。

/boot/firmware/config.txt内にinclude usercfg.txtが記載されていることを確認しておきます。
/boot/firmware/usercfg.txtに以下の内容を記載することで、HDMIのホットプラグが有効になり、起動時にHDMIモニタを繋がなくてもあとからでもHDMIモニタを認識できるようになります。Raspberry Pi 4 Model Bにて動作確認をしました。

以下は1080pに設定する例です。

hdmi_force_hotplug=1
hdmi_group=0
hdmi_mode=16

パラメータについて詳しくは以下のページを参照してください。

あわせて読みたい
Raspberry Pi Documentation - The config.txt file The official documentation for Raspberry Pi computers and microcontrollers

まとめ

Mini Pupperの初期設定からゲームパッドを繋いで動かすまでを紹介しました。初期設定方法ではOSのセットアップとキャリブレーションについて紹介し、さらに公開されているOSのバージョンやキャリブレーションツールのバージョンの違いについても紹介しました。ゲームパッドとRaspberry Piの接続が確立するとジョイスティックで簡単にロボットを操作できます。

次回はROSで動かしてみるまでの手順について書く予定です。2022年2月17日にROSパッケージがGitHubで公開されたり、2月20日にはROS用のOSイメージファイルが更新されたりと、私が以前Zennのスクラップ(https://zenn.dev/tiryoh/scraps/4da80714b84fa9)にまとめたときから色々と変わっているようなので、現状について調べつつまとめたいと考えています。

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

よかったらシェアしていただけると励みになります!

この記事を書いた人

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

コメント

コメントする

目次
閉じる