ホッパー君まとめ
今更ながら、自作の倒立振子ロボ「ホッパー君」のまとめです。
(といいつつ、Twitterを並べるだけなのですが…)

ホッパー君動画の中でも、一番生き物感が出ているのがこちら。
ホッパー君、ついに!自律移動!やふー!
今回は、自分でも見てて面白いなぁ、と思いました。
(動画後半に、動作の可視化もあるよ)位置を指定すると、その場所にスイーと自動で移動します。
障害物があっても、ちゃんと道を選んで、勝手にすいー。
…ここまで育ってくれて、ぼかぁ感慨深いよ…。 pic.twitter.com/aXEbFzCduN
— わたこ (@WatakoLab) October 7, 2020
そして、追尾・経路計画・坂道倒立振子走行を含めた集大成がこちら。
ついにホッパー君、今までの集大成です。
倒立振子状態での坂道移動、経路探索、色追尾について、全て自律動作にて実現しています。
(動画後半に動作の可視化もあるよ)今回はなかなかに難産で、色々アルゴリズムを工夫しました。何度か心折れそうになりましたが、なんとか形になってよかった…。 pic.twitter.com/aE50SE92am
— わたこ (@WatakoLab) October 29, 2020
以下では、このホッパー君の開発過程のうち、代表的なものをグループ分けして並べてみました。
(2年以上前なので、もはや懐かしい…)
機構設計編
足機構の検討
ジャンプのテスト、無事成功しました。久々の進捗だなぁ…。
動画では、8.3mm程度の付箋を挟み込んでいます。少し余力がありそうなので、1cm程度ジャンプしている感じでしょうか。
積載重量はまだ余裕があるので、これで設計を進めようかな。次は、モータのトルクが足りてるかテストをば…。 pic.twitter.com/tIOXqwetxA— わたこ (@WatakoLab) April 4, 2020
初期ホッパー君デザイン
二輪型倒立振子、デザインが何となく見えてきました。
全然かわいくならなず、試行錯誤した結果、鳥っぽい形状に大きめの顔をつけることにしました。
顔にカメラと測距センサ、首にピッチ・ヨー軸サーボを搭載し、スタビライザと探索首振り機能を持たせようと思っていますが、どうなる事やら…。 pic.twitter.com/nprd1mYCrn— わたこ (@WatakoLab) April 10, 2020
頭のデザイン検討
頭のピッチ・ヨー軸のサーボユニットを作ってみたよ。結構いい感じに動きます。
頭は試しに画用紙製、ローテクなのさ😎https://t.co/0Me4O4cTEy pic.twitter.com/UnTTD3Jqq3— わたこ (@WatakoLab) April 11, 2020
仮組
ホッパー君、実験用に作った足パーツと、完成した頭+首で仮組みしてみました。
まだ背中のランドセル(バッテリー)を背負ってないけど、大分雰囲気でてきたな?
回路を実装しつつ、もうちょい設計を詰めよう…。 pic.twitter.com/L4U4UvpL45
— わたこ (@WatakoLab) April 24, 2020
デバイス構成
全体像
ホッパー君、デバイス構成が大分固まりました。
(変更の可能性もありますが…)ペンタ君での実験を踏まえ、処理速度的に頭脳系(認識やSLAMもどき)と駆動系(倒立振子や車輪オドメトリ)でESP32を別々に割り当てています。
これにM5Atomを含めると、合計3個…。https://t.co/fbipz9mPGE pic.twitter.com/BbLA2chMEB— わたこ (@WatakoLab) April 23, 2020
頭の中身
欲しかったデバイス、頭に全部つめるのかしら、と不安でしたが、無事入れこむ事ができました!3つの測距センサとCNNによる物体検出、首軸のサーボ駆動、音声再生と、一通りの動作確認も含めて結構頑張ったゾ…。
そして、名前は「ホッパー君」とすることにしました。
ジャンプを目指して、頑張るぞ。 pic.twitter.com/uvVvQJzdGN— わたこ (@WatakoLab) April 20, 2020
足回り
ペンタ君、ついに制御基板が完成しました。
ユニバーサル基板での配線は、方眼Excelを使用しています。ちょいとした画像や文字をメモったり、シートを複製したりと意外と便利です。
(プリント基板は、さすがにEAGLE…)なお、回路は雰囲気でやってるど素人なので、あまり突っ込まれると涙がホロリ…。 pic.twitter.com/QS1gO4D3hq
— わたこ (@WatakoLab) April 26, 2020
倒立振子編
初倒立テスト
ホッパー君、倒立振子テスト第一弾です。コントローラで遠隔操作しています。このよちよち感、見てるこっちがハラハラするぜ…。
屈伸動作も入れてみましたが、ピッチ角情報を用いた超適当なPID制御でも、意外とそこそこ動いてくれています。
開発と並行して、現代制御を勉強するゾ…。 pic.twitter.com/otQMLuv4dT
— わたこ (@WatakoLab) May 14, 2020
動き回れるように
ホッパー君、頭を自由に動かしつつ、動きまわることができるようになってきました。
(コントローラで操作しています)倒立制御時に頭を動かした際、全体に対して頭の慣性モーメントが無視できない程度に大きく、また重心が移動するので、その補正処理を入れています。
(地味ダケド、補正タイセツヨ) pic.twitter.com/21H86m9Dg4— わたこ (@WatakoLab) May 24, 2020
初めての起き上がり
ホッパー君、起き上がりからの倒立、できました!やふー!
せーの、ヨイショ! pic.twitter.com/2eDGvBJVDi
— わたこ (@WatakoLab) September 10, 2020
坂道走行
ホッパー君、走行が大分安定してくれました。
ペンタ君と比べて足や頭が可動する構造のため、振動に悩まされました…。
パラメータ検討+安定化アルゴリズム検討により、なんとかここまで…。
足回りはこれで一旦OKとして、次は物体への追従を目指します! pic.twitter.com/MlFwDzevfT
— わたこ (@WatakoLab) September 16, 2020
経路探索編
A*探索アルゴリズムテスト
経路探索として、A*を実装してみました。
動画後半では、サーチするスコアをfScoreからhScoreに変更した比較も載せてみました。
最短経路にはなりませんが、最低限ゴールには辿りつけそうなのと、計算コストが少なそう?
(間違ってたらすみません)工夫した点は以下。 pic.twitter.com/K5D6DXOpRC
— わたこ (@WatakoLab) September 26, 2020
A*探索+PurePursuit追従シミュ
ホッパー君、経路追従のシミュレーションをば。
倒立振子ではなく、単純な差動二輪モデルとして計算しており、PurePursuitアルゴリズムで追従しています。
(経路計画は前回のツイート参照)その場で回転できるので、目標経路から大きく外れることは少なそう?https://t.co/aT1XXqpBKU
(以下詳細) pic.twitter.com/aJ5WWu3sO6
— わたこ (@WatakoLab) October 2, 2020
ToFセンサ+車輪オドメトリによるマップ構築
ホッパー君、前回のToFセンサの壁検知に、車輪オドメトリを追加しました。視点を追従させたら、運転してる感が出たゾ。(3D酔い…)
オドメトリのみなので、移動するにつれ壁がズレていきますが…。SLAMを勉強して、もう少し広範囲でかつ精度を上げられたらなぁ、と思ってます。https://t.co/75zkOBuM63 pic.twitter.com/ki5Z2wl4Ww— わたこ (@WatakoLab) June 3, 2020
リアルタイム経路探索実装
ホッパー君、経路追従に向けたリアルタイム経路計画をば。
3つのToFセンサで障害物を検知し、それを回避する経路(黄色グリッド)をリアルタイムに算出。黄色の旗がゴールで、まだ手動運転です。
演算自体は全てESP32で実行しており、結果をPCに転送、リアルタイムに可視化しています。
(以下詳細) pic.twitter.com/fkRiV1Y5Nr
— わたこ (@WatakoLab) October 1, 2020
障害物緊急回避(いじわる)
ホッパー君、緊急回避シーケンスをば。
障害物が急に現れた時や、よそ見してぶつかりそうになった時、発動します。 pic.twitter.com/LfxEwtsFxk
— わたこ (@WatakoLab) October 11, 2020
物体認識編
色追尾
ホッパー君、特定の色を目線で追う機能をば。
今回は、倒立状態を保ったままで実現しています。今は平面方向のみですが、ToFセンサの奥行き情報と組み合わせて、(なんちゃって)追従制御につなげたいと思っています。 pic.twitter.com/f7xBnA2zDb
— わたこ (@WatakoLab) September 13, 2020
色追尾(with奥行き)
ホッパー君、3次元空間での物体検出をば。
くろ助の背中のボールを、奥行き方向含めて検出しています。
様子が分かるよう、検出結果をリアルタイムに可視化してみました。
(詳細は以下) pic.twitter.com/TZZP5YY7OZ
— わたこ (@WatakoLab) September 20, 2020
⇒ ボール遊びへの応用
ホッパー君、念願のボール遊びができるようになりました。(まだテストレベルですが…。もう少しかわいくしたい…)
頭のカメラで色を検出し、ボールが床に置かれると追いかけ始めます。(以前の実験の様子: https://t.co/hZvQM8pS8r )
ずっと頭にいたホッパー君、だんだん具現化してきて嬉しいゾ。 pic.twitter.com/iRG0RLcJjO
— わたこ (@WatakoLab) October 14, 2020
顔追尾
ホッパー君、MAixM1nで顔検出した結果を用いて、検知方向を頭サーボで追従してみました。
抱っこして色んな向きに傾けても、常にこちらを見てくれる動きが、ちょっと生き物っぽくてお気に入りです。
顔検出込みで、大体11fps程度出ている感じになります。 pic.twitter.com/WKzYAZLFxC— わたこ (@WatakoLab) June 8, 2020
CNN物体認識
今回は、CNNでペンタ君の検出をば。結構いい感じ。
たまに、ペンタ君と配色が一緒のパソコンを誤検出していますが…。
ついに、念願のホッパー君とペンタ君の追いかけっこ、実現なるか!?
よもやよもや…。 pic.twitter.com/nzH9teNsBe
— わたこ (@WatakoLab) November 14, 2020
⇒ペンタ君とわちゃわちゃへの応用
ついに、倒立振子兄弟がわちゃわちゃし始めました!
ペンタ君をコントローラで遠隔操作し、それをホッパー君が完全に自律して追尾しています。
まだシーケンスをつなげたレベルで、誤検知対策やリアクションの追加など、アルゴリズムを検討していく予定です。 pic.twitter.com/2r19297wna
— わたこ (@WatakoLab) November 15, 2020
マーク認識
昨日に続き、ホッパー君マークの認識テスト第二弾をば。
今回は、頭と体を縦に並んで検知した時に限り、ホッパー君マークとして判定する処理を入れました。(黄色枠)
ついでに、3番の子も認識できるようになったよ。 pic.twitter.com/U9yE0aWTNr
— わたこ (@WatakoLab) November 10, 2020
音声認識操作(with Android)
【音注意】ホッパー君、音声認識機能の第一弾をば。
Android端末を活用し、「ホッパー君」というウェイクワードに反応して会話が始まります。
(動画では見えませんが、端末は床に置いてます)今後は、もう少し動きや表情を豊かにして、生き物感を出していこうと思います。
(技術的な話続く) pic.twitter.com/r13HGLvmvC
— わたこ (@WatakoLab) November 21, 2020
ちびちゃんとの連動
まねっこ動作1
ホッパー君、ちびちゃんの動きをまねっこできるようになりましたぞ。(まずは頭から)
Bluetoothの1対1通信で実現しています。 pic.twitter.com/E6vPq4tyP9
— わたこ (@WatakoLab) December 6, 2020
ホッパー君、ちびちゃんの動きをまねっこできるようになりましたぞ。(まずは頭から)
Bluetoothの1対1通信で実現しています。 pic.twitter.com/E6vPq4tyP9
— わたこ (@WatakoLab) December 6, 2020
まねっこ動作2
ホッパー君、ちびちゃんの動作トレース機能をば。
これで、色々なモーションを試せるぞ。 pic.twitter.com/FVMbkVBvVB
— わたこ (@WatakoLab) December 9, 2020
ホッパー君、ちびちゃんの動作トレース機能をば。
これで、色々なモーションを試せるぞ。 pic.twitter.com/FVMbkVBvVB
— わたこ (@WatakoLab) December 9, 2020
おまけ
はぐれちゃったホッパー君
ホッパー君、キュキュッと回る動きを作ってみました。なんだか、みんなとはぐれちゃって必死に探してるみたい…。
…しかし、足や頭が可動する分振動しちゃうので、制御の難易度がペンタ君より高くて、心折れそうなんだぜ…。 pic.twitter.com/J7iJjrKNAq
— わたこ (@WatakoLab) September 7, 2020
ホッパー君、キュキュッと回る動きを作ってみました。なんだか、みんなとはぐれちゃって必死に探してるみたい…。
…しかし、足や頭が可動する分振動しちゃうので、制御の難易度がペンタ君より高くて、心折れそうなんだぜ…。 pic.twitter.com/J7iJjrKNAq
— わたこ (@WatakoLab) September 7, 2020
不快感をあらわにするホッパー君
不快感をあらわにするホッパー君。
(慣性モーメント計測中…) pic.twitter.com/wftFZXSP3L
— わたこ (@WatakoLab) August 21, 2020
不快感をあらわにするホッパー君。
(慣性モーメント計測中…) pic.twitter.com/wftFZXSP3L
— わたこ (@WatakoLab) August 21, 2020
ひょっこりホッパー君
ホッパー君「呼んだ??」
足の屈伸時の安定化処理をば。
屈伸で重心位置が前後に移動するため、補正量をのせて安定させています。
補正量といっても、足位置によってピッチ角に1〜2°のせるという、とても地味な処理なのですが、結構重要なのである。 pic.twitter.com/WI9AKlq2St
— わたこ (@WatakoLab) November 1, 2020
ホッパー君「呼んだ??」
足の屈伸時の安定化処理をば。
屈伸で重心位置が前後に移動するため、補正量をのせて安定させています。
補正量といっても、足位置によってピッチ角に1〜2°のせるという、とても地味な処理なのですが、結構重要なのである。 pic.twitter.com/WI9AKlq2St
— わたこ (@WatakoLab) November 1, 2020
おつかれちゃん
ホッパー君、お休みスタンドを作ってみました。
まだプロトタイプですが、バネで衝撃を吸収するシンプルな機構でいこうと思っています。
今週も、おつかれちゃん。 pic.twitter.com/on9C2RNE88
— わたこ (@WatakoLab) November 6, 2020
ホッパー君、お休みスタンドを作ってみました。
まだプロトタイプですが、バネで衝撃を吸収するシンプルな機構でいこうと思っています。
今週も、おつかれちゃん。 pic.twitter.com/on9C2RNE88
— わたこ (@WatakoLab) November 6, 2020
以上、ホッパー君まとめでした!(雑な終わり方)