「スタビライザ」タグアーカイブ

デジタルおかもち2

前回はサーボモータを用いてデジタルおかもちを製作しました。

デジタルおかもち

前回において以下の課題や疑問が生じました

  • サーボの応答が遅いのか
  • 制御が遅いのか
  • そもそも制御の思想自体が誤っているのか
  • 手で持って移動させているのが悪いのか(実際サーボの移動に影響されてリンギングすることもあった)

 

 

ブラシレスモータを試してみた

試しに姿勢制御モジュールSHISEIGYO-1のブラシレスモータでデジタルおかもちを試してみました。

なんと!すごくいい感じに1軸デジタルおかもちが実現できました!!

おかもち台は3Dプリントして姿勢制御モジュールのホイールの代わりに取り付けました。

 

SHISEIGYO-1で使用しているブラシレスモータにはコントローラとエンコーダが内蔵されています。

モータの回転方向やブレーキはデジタル制御でき、回転スピードはPWM信号で制御します。
エンコーダは1周100パルス出力され、ここでは4逓倍して使用しました。

 

ATOM Matrixに内蔵のIMU(MPU6886)の加速度(acc)と角速度(gyro)のセンシング値を用いてカルマンフィルタを通して筐体の傾斜$θ$と角速度$ω$を計測します。

計測値とエンコーダによるモータの回転目標位置$θ_{GOAL}$を用いて
以下のようにモータ回転PWM信号$M$を生成し、PD制御しました。

$$M = {Kp}_X × (θ – θ_{GOAL}) + {Kd}_X × ω  $$

$$   但し、Kp, Kd:係数$$

 

ブラシレスモータによるデジタルおかもち動作は前回のサーボモータに比べ非常に応答性がよく驚きました。
ブラシレスモータでもこのように目標位置にパタッと止める制御ができちゃうんですね!

大変勉強になりました!

 

前述の課題や疑問はブラシレスモータ版のデジタルおかもち体験を経て以下のようにステータスが変化しました

  • サーボの応答が遅いのか
    →おそい!ブラシレスモータ最高!
  • 制御が遅いのか
  • そもそも制御の思想自体が誤っているのか
    →制御思想やセンサは悪くなさそう
  • 手で持って移動させているのが悪いのか
    →モータの応用早いと手の揺れも吸収してくれる

 

エンコーダ未使用版 検討

SHISEIGYO-1の機構を流用して1軸デジタルおかもちを楽しみましたが、筐体の姿勢を検出してモータを制御するためには、モータの回転量を検出するエンコーダが必須になってしまいます。

ここではエンコーダを使わない方法を検証します。

おかもち台にIMUを仕込んで、平行になるようにモータを回転させる機構にすればエンコーダは必要なくなるはずです。

早速試してみました。

問題なくモータのエンコーダを使用せずにおかもち動作を確認できました。

 

おかもち台にはIMUセンサMPU6050をつけて、コントローラにはATOM Liteを用いました。

 

MPU6050で測定した加速度からおかもち台の傾斜を計測し角速度と共にカルマンフィルタを通しておかもち台の角度$θ$と角速度$ω$を計測します。

以下のようにモータ回転PWM信号$M$を生成し、PD制御でおかもち台が常に水平($θ = 0$)になるようにします。

$$M = {Kp}_X × θ + {Kd}_X × ω  $$

$$   但し、Kp, Kd:係数$$

 

おわりに

ここではブラシレスモータによる1軸 デジタルおかもちを検証しました。
ブラシレスモータの回転エンコーダなしでもIMUセンサに基づくブラシレスモータ制御が実現できました。

ブラシレスモータでもサーボモータのように任意角度に回転移動制御できるようになり、その応答性の良さに大変驚きました。

 

2軸のデジタルおかもちもブラシレスモータで実施したいのですが、ここで使用したモータは重すぎるため以下の軽そうなブラシレスモータを購入してみました。

回転させるためのコントローラが必要そうですが届き次第 勉強したいと思います。
エンコーダなしでの制御が確認できていますので2軸のブラシレスモータ デジタルおかもちの実現障壁もそれほど高くないと思っています。

それではまた。

デジタルおかもち

凄い動画がTwitterにありました。

 

リンクの記事によるとマジックペンを載せたロボットアームの先の台を、移動時にうまいこと傾けて倒れたり滑り落ちないようにしているとのこと

この台の制御をリアルタイムに実施しているのか、アームの移動動作に基づいてあらかじめシーケンス組んでいるのかは不明ですがいずれにしても凄いですね。

なんか自分でも試してみたくなったので動く台(デジタルおかもち)を作ってみました。
ロボットアームなど持っていないので自分の手でもって実験します。

 

 

1軸おかもち

サクッと1軸で動く台を作ってみました。
サーボモータRDS3115とATOM Matrixを使用しました。

 

ATOM Matrixは持ち手の下部につけて内蔵のIMUセンサ MPU6886のセンサ値を使用しました。
上の動画ではMPU6886の加速度から傾きを計算して、10回計測した値の平均を用いてサーボを動かしています。

1軸上での重力加速度の傾き分、サーボを動かしますのでゆっくり動かせば天板は常に平行になるように動きます。

素早く動かすと加速度がかかりますので、1軸上の加速度と重力加速度のベクトル和の方向と垂直になるように天板が傾きます。

 

2軸おかもち

サーボモータRDS3115を追加して2軸にしました。
1軸の時と直行する傾き検出を追加して2個目のサーボを制御します。

 

これで常に平行を保とうとする台が完成しましたので、さっそく物を載せてみました。

 

持ち手を傾けても天板は平行に保たれておりますが、加速移動時になんか挙動がおかしいです。

よくよく考えてみると持ち手を傾けた際に天板とセンサは違う方向を向いており、移動時の加速度がかかる方向が違いました。

センサの位置がまずいですね。

 

天板にセンサ移動

ATOM Matrixを持ち手の底面から天板に移動しました。

 

おかもちの座標は以下のとおり。

 

ATOM MatrixのIMUの加速度(acc)と角速度(gyro)のセンシング値を用いて
以下のようにX軸、Y軸のサーボの角度($θ$)を制御して天板水平方向の加速度がゼロになるように制御しています。

$$θ_X = θ_{X-1} + {Kp}_X × {acc_Y} + {Kd}_X × {gyro_X}  $$

$$θ_Y = θ_{Y-1} + {Kp}_Y × {acc_X}  – {Kd}_Y × {gyro_Y}  $$

$$   但し、θ_{X-1}, θ_{Y-1}:直前に算出した角度、 Kp, Kd:係数$$

これによって持ち手が傾いても天板は平行になるようにサーボが動き、移動時には加速度と重力加速度のベクトル和の方向に対して常に垂直になるように天板が傾くという魂胆です。

 

しかし、はやく移動させると積載物は落ちてしまいました。

 

サーボの応答が遅いのか
制御が遅いのか
そもそも制御の思想自体が誤っているのか
手で持って移動させているのが悪いのか(実際サーボの移動に影響されてリンギングすることもあった)
色々原因が考えられますが完ぺきなる おかもち は実現できませんでした。

 

おわりに

ロボットアームによるペンの移動に感化され、デジタルおかもちを製作してみました。

結果的には成功しませんでしたが、いつかロボットアームを手に入れたら先端に本機構のおかもちを取り付けて再検討実施したいです。