前回はMini Pupperを組み立てました。今回は起動してジョイスティック操作するまでをメモします。
組み立て方および動かし方は、基本的には以下のRead the Docsに公開されているドキュメントの通りです。MangDang社が公式にメンテナンスしているものです。2022年2月21日の時点では「Software」のページに一通り載っているようです。この記事は一連の流れと気づいたことをメモするのが目的なので、詳細についてはRead the Docsに公開されているドキュメントを参照してください。
準備するもの
組み立て済Mini Pupper以外にいくつか追加で用意したものがあります。
- Mini Pupper用microSDカード(32GB以上のもの)
- ゲームパッド(DUALSHOCK 4)
- microHDMI to HDMI変換ケーブル(UGREEN Micro HDMI延長ケーブル)
- HDMIケーブル(エレコムのスーパースリムHDMIケーブル)
- HDMI入力可能なモニタ(バッテリー内蔵のモバイルモニタ)
- トラックパッド付きキーボード(MicrosoftのAll-in-One Media Keyboard)
- microUSBケーブル(Mini Pupper充電用)
- USB電源アダプタ(Mini Pupper充電用)
事前準備
実際にMini Pupperを起動してセットアップする前にいくつか準備します。
充電
Mini Pupperの電源を充電しておきます。
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つあります。
- MangDang社がメンテナンスしている最新のイメージはUbuntu 21.10がベースになっています。これは一部のRaspberry PiではUbuntu 20.04を使うとBluetooth接続が不安定になり、ゲームパッドが使いにくくなってしまうからだそうです(いろいろフィードバックしている過程でMangDang社の中の人とにっしゃん(@nisshan_)さんから聞きました)。今回はROSも使えるようにするためにUbuntu 20.04を使用しますが、環境によってはゲームパッドの接続が不安定になる可能性があります。私は2台所持していますがどちらも問題は発生していません。
- 一部のRaspberry Piはブートローダが新しいものになって出荷されており、MangDang社がカスタムして公開しているUbuntu 20.04のイメージはこの新しいブートローダで起動できないようです。HomeMadeGarbage(@H0meMadeGarbage)さんとのやりとりで発覚しました。
基板上の表記は同じですね。bootloaderが新しいのが大きな違いかもしれません。 pic.twitter.com/8Wqfcamkdu
— たいりょーくん (@Tiryoh) February 6, 2022
ダウンロードしてきたZIPファイルをbalenaEtcher等で書き込みます。
イメージの書き込みが終了したらMini PupperのRaspberry Piに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
今回この記事作成にあたり、Mini Pupper用のソフトウェア(20211220_v2.1.3_MiniPupper_V2_PS4_Ubuntu_20.04.2_Baseline.img.zip
にインストールされているもの)にシャットダウン機能のパッチをあてたものを作成し公開しています。上記はそれに切り替えるためのコマンドです。
パッチについて説明します。
2021年12月28日にシャットダウン機能が追加されていますが、残念ながら今回のイメージは作成日が2021年12月20日なのでシャットダウン機能は実装されていません。そこでこのシャットダウン機能追加の部分のみを取り込みます。
シャットダウン機能追加の部分のみを取り込む理由としては、2021年12月24日以降はUbuntu 21.10を対象とするようになったためか、バッテリ電圧取得用ドライバなど一部のバイナリがUbuntu 20.04では機能しなくなっているためです。
コミットメッセージは入力ミスなのか20.10と書かれていますが……
ROSについての回(次回)でもう少し触れようと思いますが、その機能しなくなったバッテリ電圧取得用ドライバなどのUbuntu 20.04用バイナリは以下のリポジトリでメンテナンスされているようです。
キャリブレーション
ソフトウェア更新後はサーボモータのオフセットのキャリブレーションを行います。
公式ドキュメントの以下のページに角度や脚先位置の詳細情報が掲載されています。このキャリブレーションを丁寧にやることで、動かすときにバランスを崩しにくくなり、しっかり動いてくれるようになります。
このキャリブレーションの手順は、使うツールのバージョンによって違うようです。簡単な見分け方としてはツールを起動したときの画像です。
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になるようにするのが正解のようです。
現行キャリブレーションツール
現行キャリブレーションツールでは脚の角度は0degと-90degになるようにするのが正解のようです。
注意事項
キャリブレーションが終了したらキャリブレーションツールを閉じます。キャリブレーション中はゲームパッドがつながってジョイスティックの入力があったとしてもサーボモータを動かさないようにする処理(厳密にはサーボモータを動かすためのスクリプトを停止している)が入っているので、この「キャリブレーションツールを閉じる」というのはかなり重要な操作です。間違ってもそのままモニタを外して次のステップに進まないように注意してください。最初試したときはここでハマりました。
また、2022年2月17日のコミットでキャリブレーション時に使う角度の変数の初期値を変更するようなコミットが入っているようです。もしかしたらキャリブレーションの時の脚の角度が変更になるかもしれません。こちらについては公式からのアナウンスを待ちたいところです。
ゲームパッドを接続して動作確認
キャリブレーションができたらゲームパッドを接続して動作確認をします。ゲームパッドの操作方法については以下のページに記載があります。
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ボタンを押しても歩き出しません
無事に接続ができると以下の動画のように前後左右自由に動かすことができます。楽しいです!
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
パラメータについて詳しくは以下のページを参照してください。
まとめ
Mini Pupperの初期設定からゲームパッドを繋いで動かすまでを紹介しました。初期設定方法ではOSのセットアップとキャリブレーションについて紹介し、さらに公開されているOSのバージョンやキャリブレーションツールのバージョンの違いについても紹介しました。ゲームパッドとRaspberry Piの接続が確立するとジョイスティックで簡単にロボットを操作できます。
次回はROSで動かしてみるまでの手順について書く予定です。2022年2月17日にROSパッケージがGitHubで公開されたり、2月20日にはROS用のOSイメージファイルが更新されたりと、私が以前Zennのスクラップ(https://zenn.dev/tiryoh/scraps/4da80714b84fa9)にまとめたときから色々と変わっているようなので、現状について調べつつまとめたいと考えています。
#MiniPupper のROSパッケージがいつの間にかGitHubで公開されてた👀👀
— たいりょーくん (@Tiryoh) February 17, 2022
(前はGoogle Driveにzipファイルで公開)https://t.co/aF9HaRIqfx
コメント