n-shinichiのアイコン画像
n-shinichi 2022年05月07日作成 (2023年06月03日更新)
製作品 製作品 閲覧数 2994
n-shinichi 2022年05月07日作成 (2023年06月03日更新) 製作品 製作品 閲覧数 2994

M5stickと連続回転サーボで、ラジコン倒立振子を作ってみた

M5stickと連続回転サーボで、ラジコン倒立振子を作ってみた

AIスタックちゃんに紹介してもらった動画です。         2023/06/03更新
https://twitter.com/shinichi_nin/status/1658315902360879109

組立てから立たせるまでの一連の様子を動画にまとめました。
https://www.youtube.com/watch?v=R70O_qVi7ro

慣れると組立て、キャリブレーション、立たせるまで20秒程度です。
https://twitter.com/shinichi_nin/status/1643733829067378688

M5stickと連続回転サーボで倒立振子のラジコンを作ってみました。
https://www.youtube.com/watch?v=3wMUb-xvcFo

特徴
 ・超簡単構成 ・・・ 基本ハード構成は M5stick、連続回転サーボ のみ。
   他小物:3Dプリンタ製フレーム、サーボホーンにOリング付けたタイヤ等
 ・スナップフィットで簡単組立、分解・・・ネジ、接着剤不使用です
 ・超小型:46g
 ・BLEを使ってラジコン操作
 ・バランス、動作の状態を表情で表現
 ・カルマンフィルタで高精度な角度推定
 ・ギヤバックラッシュ処理
 ・M5stickとサーボを角度をつけて組むことで、いい感じのデザインに♪
 ・エンコーダなしでそこそこの位置制御
キャプションを入力できます

概要
 一般に倒立振子ロボ、駆動系はギヤモータ&モータドライバの組み合わせが
 多いです。。。以前はその構成で作ってました...が、
 ハード構成で少しハードルが上がります。 そこで・・・

できるだけ構成を簡単、低価格でできるようにしてハード製作を
 小学生くらいでも簡単に作れるようなのを目指しました。

□連続回転サーボ ・・・ 秋月などで入手しやすく安いのは
 ★TowerPro製 SG90-HV デジタル制御です。
  このデジタル制御方式、一般的なラジコンで"人の操作”に
  対してサーボ動作は優れていて、低消費電力、保持力も高くていいです。
  しかしながら倒立振子では100Hz程度で応答性が欲しいですが
  そういった動きに対応できるようには作られてないので難しいです。
  これで最初作ってましたが立つには立つけど不安定です。

★FeeTech製 FS90R 旧式のアナログ制御です。
  こちらは高速まで 人の操作以上の高速な制御指令にもある程度
  ついてきます。なのでこちらの方が今回の用途には合ってます。
  ただし、アナログ制御なので消費電力は大きいです。
  (ギヤモータ&ドライバ構成では50分程立ってられますがアナログ
   サーボでは現時点で24分が最高記録)

□姿勢制御
  ボデイーが小さくなれば振子周期が短くなり、高速な応答が必要で
  だんだん難しくなっていきます。
  角度の検出は基本ジャイロのピッチ角速度の積分ですが、ESP32の
  演算性能が高いのでカルマンフィルタを使ってちょっと精度をあげてます。
  運動方程式の演算は50Hくらいでも立ちますが速くした方がいくらか
  安定性が高まって100Hz辺りからはあまり変わり映えなかったので
  100Hzでやってます。
 
  小径タイヤでは路面の状態の影響を受けやすいですがパラメータを
  調整して同じパラメータでカーペット、畳、フローリング、MDF板
  の上で立てるようにしました。

カーペット・・・細く小さなOリングタイヤは若干埋まりぎみに
         なるので引っ掛かった感じに負荷が掛かってきます。
  畳・・・・・・・畳の織りの畝が、小径タイヤでは無視できない
         波路面になるので意外と難しいです。
  フローリング・・ちょっと古めのフローリングだと合わせ板毎に
         微妙なうねり、継ぎ目段差が小径タイヤでは影響あります。
  MDF板・・・・ほぼ平らなので一番運動方程式通りに素直に立ちます...が、
         ほんのわずかな傾きでも玉を置けば転がる方へ移動していきます。
https://www.youtube.com/watch?v=gT2x4kI1YeQ
 
□位置制御
  エンコーダがあればなんてことないのですが
  それも省いて簡略化した分、技術でカバーがやってて面白いとこです。

一般にモータの駆動は電圧に回転速度が比例します。
  PWMで駆動してるとDutyが平均等価電圧になるので、結果、Dutyが
  速度に比例してその積分で距離が計算できます。
  
  しかし・・・
  それは定速で動作してる場合はかなりの精度で計算できるのですが
  およそ倒立振子運動で振動してる場合は加速してる状態が多いので
  Dutyに加速度の要素が混ざってきます。

なので・・・
  その辺の混ざり方はある程度実験しながら演算の調整です。

また・・・
  左右の車輪は同じ指令でも個体差で回転は微妙に違います。
  たいていの場合、何もしないとボディーは回転していきます。
  
  なので・・・
  ジャイロのヨー角速度を積分、して回転しないよう左右の駆動輪に
  フィードバックを掛けて車体方向を安定させるように調整してます。

□らじこん
   BlynkのBLEを使ってます。
 
詳しくはこちらをご覧ください
https://n-shinichi.hatenablog.com/

ボディーはメルカリに
 M5stickくん用ボディーケース という品名で出品してます。 1個 と 2個セット があります。

n-shinichiのアイコン画像
こちらのブログで詳しい説明をしてる場合があります。      https://n-shinichi.hatenablog.com/
  • n-shinichi さんが 2022/05/07 に 編集 をしました。 (メッセージ: 初版)
  • n-shinichi さんが 2022/05/07 に 編集 をしました。
  • n-shinichi さんが 2022/05/25 に 編集 をしました。
  • n-shinichi さんが 2022/06/16 に 編集 をしました。
  • n-shinichi さんが 2022/06/18 に 編集 をしました。
  • Opening
    ishi_678のアイコン画像 ishi_678 2022/06/28

    面白い内容で興味をもちました。学生ですが、自分でも勉強のために試してみたいのですが、試作手順などの公開はしていないのでしょうか?
    他のテーマは、詳しくサンプルコードなどもあるのでいろいろ試すことができています。
    部品リストついては、詳しく乗っているので購入できそうです。
    自作の3Dケースもメリカリで販売されているので、たすかります。

    n-shinichiのアイコン画像 n-shinichi 2022/06/30

    コメント ありがとうございます。
    ブログの方にサンプルコードなども紹介しています。
    よかったら参考にしてください。

    1 件の返信が折りたたまれています
  • n-shinichi さんが 2023/06/03 に 編集 をしました。
ログインしてコメントを投稿する