Very good video! Your final piece looked like it was still oscillating a bit so perhaps u should increase the D value. Also increasing the I value increases the overshoot so in the code u should only increment the I value if the error is small (I.e |error| < some threshold)
ブログ記事でプログラムとハードウェア構成を解説しています ichiken-engineering.com/inverted_pendulum1/
動画撮影時には気が付かなかったのですが、 プログラムにミスが有りました。
修正したところ応答も早くなり、 安定して立つようになりました。
一番勉強になったのは、倒立振子のよみが「ふりこ」じゃなくて「しんし」なところ
それな
これ面白いな。続編を期待します
懐かしく楽しい動画でした。
発振してますね。Pが大きすぎかも?
蛇足かもしれませんが、位置のPI制御を入れる、つまりセンサーからのθをそのまま帰還せずにΘ=θ+k∬モータードライバー出力dtdt求めてからΘを帰還すると、定数kに応じた速さで元の位置に戻ってきます。
PIDが温度などを調整するときに使われているのは知ってましたが具体的に何か知らなかったのでどういう仕組み・どう動いているのかが知れてよかったです
私はソフト屋なので、ハード面から攻めていくイチケンさんの改善が興味深くおもしろかったです。PIDは昔ライントレースカーとかで使ってました。現場では温度調整で使ってましたね~。
重心も高い方がいいのではと思いました。
この工作は、要素が沢山あるけど、そこまでは多くなく、結果が見やすいので面白いですね!!
イチケンさんが車体構造で解決しようとする姿を観る元制御工学卒でマイコン屋さんワイの発想「何とかプログラミングの制御で出来んかな」
ってなる。。。(仕事ではハード屋さんの構成を変えるよりもソフトで何とかした方がコストが安いし設計変更の手間等も安いため)
「ソフトで何とかした方が~」なんですが、実は人件費(時間単価)が一番嵩んで後で分析しないから見えてこない隠れた出費という現実。
気持ちはよくわかります(^^;)
言われるソフト屋は結構複雑 (^^;
ソフト屋もハード屋も「そこはそっちでやってよ」って思ってたりしますね (^^)
SWはHWのポテンシャル以上のSPECは出せませんからねぇ…
素人ですが、これもある程度プログラミング制御してるように思うのですが・・・
より複雑な制御をプログラミングしても、ハード側の処理能力がそれに追従できるかどうか・・・
@@PC9801BlackRX その通り
改めて思いました。
思うように二足歩行ができる人間の身体のバランス性能って、とても優秀なんですね。
10:30 ここだんだん制御効かなくなる感じがツボ
倒立振子だけれど自由度はピッチ回転のみの1ですかね。
最初の手の例は自由度は2だと思いますが、制御の大方針を示すことが目的だと思うので自由度は1で十分だと思いました。
ところでこれを見て高専時代の制御の授業で、ラグランジュ法?を用いて制御モデルをつくって、倒立振子を立たせるみたいなのをやったことを思い出しました。(制御方法はPIDだったかは忘れましたが、たぶんPIDだったはず、、)
結構複雑な行列計算をした気がします。
当時はわかったようなわからないようなといった感じでした。
改めて見ると面白いですね😌
イチケンさんでも、倒立振子、難しいっておっしゃるの聞けて、なんだか嬉しいです😂 難しいですよね。
古典以外に現代制御でもアプローチして比較をぜひ行ってみてほしいです
角速度センサでもいい感じに立ってますね。
倒立振子、懐かしいですね😊数十年前のオムロンを思い出します。
機械工学科の学生です。大学の講義で倒立振込のフィードバック制御と振り上げ制御を行いました。面白いですね、
自転車やバイクはメカだけのアナログ制御で実現しています。キャスター角、トレール量、タイヤの特性などが調整要素になります。ゲインが高すぎればシミーやウォブルなどの発振も起きます。電子制御も面白いですが、それを知ることで身近なところにアナログのフィードバック制御があることに気づかされます。
PIDゲインのチューニングが職人すぎて苦行だったので,誰でも現代制御が実装できるようにトラ技の連載を執筆していたことを思い出しました(^。^)
トイストーリーから出てきたみたいな人だ。楽しい制作でした!
せぐうぇいか、お正月の演芸ですね。人間の制御も凄いな。私はアナログ人間なのでOPアンプで作ってみたいですw
あかん何故かウルトラダッシュモーターが出てくるだけで笑ってしまう体になってしまった
レゴのEV3マインドストームで走る競技がありますね。
レゴでも調整すればそこそこまともに静止出来た記憶です。
といっても、倒立制御の心臓部はジャイロボーイで提供されてたような。
2重や3重倒立振子になると、エンコーダが必要になってきそうですね。
お願いします!
DigiKey宣伝時の電解コンデンサーかわいい
セグウェイってどうしてあんな不安定な形状で倒れずに動けるのか?と不思議に思っていましたが、こんな制御を行う事で動いているのかと納得出来ました。
ミニ四駆用のモーターは定格で4A流れたりして意外と駆動が大変です。タイヤを小さくするなどしたほうがトルクは出しやすいかもしれません。
(バックラッシは制御上厄介ではありますが、Dutyにヒスをもたせるなど対策は可能です)
実験や研究では二重倒立振子もありますね。展示会で実物を見たことがありますが、見入ってしまいました。
The higher the center of mass, the easier to control. If you put batteries on the head, it wil become more stable.
PIDパラメータをオートチューニングできるようにしてみてほしい
冬休みの工作にぴったりですねぇ。
そういえば、ラジコンのモーターには、セラミックコンデンサを付けてました(当時は理屈は分かりませんでしたが)。原理的には原始的なブラシ付きモータなので、効果が分かりやすいのでしょうね。
時々興味深く拝見させていただいております。セグウェイの原理ですよね。電子のジャイロセンサーってすごく小さくなっているんですね。びっくりしました。提案ですが、30wくらいですごく温かくなるヒーターができるとありがたいです。大型バケツの中央にタミヤのモーターを回して、外側から空気を取り込んで段々複雑に圧縮していけば中央上部から温風が得られると思うのですが・・まじめに研究しています。
ヒーターに関してですが、投入したエネルギー以上の仕事は得られないように思いますが、いかがお考えでしょうか。ご提示の圧縮機は、断熱圧縮といわれる過程で空気を圧縮するものかと思います。断熱圧縮によって得られる温度上昇は、高々モーターから投入した電力以下の仕事率となります。
同じ電力でも、熱を与える体積を小さくすれば温度は高くなります。例えば携帯カイロやヒーターベストといった製品は、肌のそばでヒーターを加熱することで、熱が逃げにくくして効率よく暖かさを得ています。30W程度でも工夫次第ではすごく暖かくなるでしょう。自作をお考えであれば、まずはこちらを検討されると良いように思います。
また、ヒートポンプエアコンは、外気から熱を奪って室内に取り込むことで、条件次第では投入した電力の数倍ほどの暖かさが得られます。(エアコンも、冷媒を断熱圧縮して熱を得ています)なかでも、飛行機のエアコンは、空気そのものを冷媒として圧縮・膨張させているので、pon heatさまのアイデアと近いものがあるかもしれないですね。
ただ、エアコンは高圧ガスを扱う危険な物なので、自作にチャレンジするハードルは非常に高いです。
こう言う系見てておもろいからもっとやってほしい
倒立振子、説明するのって難しいけど
イチケンさんの説明ってとてもわかりやすいです。
自分も倒立振子ロボ作ってるので、制御技術の説明にこちら紹介させてください。
古典制御のパラメータ調整はオンラインでやるのがよくやる方法かなあ
Very good video! Your final piece looked like it was still oscillating a bit so perhaps u should increase the D value. Also increasing the I value increases the overshoot so in the code u should only increment the I value if the error is small (I.e |error| < some threshold)
これをstate spaceなどに発展させてやるのも面白そうですね
温度制御でPIDやってました。難しいですよね。
センサー位置とパワー位置、対象物の質量や位置で変わる無限大・・・
自分もPID制御というと温度制御がすぐに思い浮かびます。
小さいおもちゃのセグウェイにみえますね。
セグウェイの場合、車軸より低いところにステップがあるので、もしかするとそれが参考になるかもしれません。重心とか荷重とかその位置とか。
大きさも使用機器も違うので、比較になるかわかりませんが。
バックラッシュ(バックラッシ)、自分は機械制御でよく泣かされました。
歯車を使うと どうしても避けられないので。機械なら与圧(プリテンション、プリロード)調整を考慮しますが、模型レベルだとどうにもなりませんよね。
慣性に対して駆動系が出せる角加速度=トルク÷モーメントが高いほど応答性良くできるということですね
ステッピングモーターで倒立振子作ってみたいですね。
位置の計測とフィードバックが無いと、期待するような倒立振子にはならないでしょうね。
爆発などのギミックも内蔵した完全体の商品化を希望しますw
Great educational video!!
PID制御だけでここまで性能が出ているのはよい出来です。
カルマンフィルタの実装にチャレンジしてみてください。
参考文献:トランジスタ技術2019年7月号、「カルマンフィルタの基礎」足立・丸太 東京電機大学出版局、など
正転、逆転の初速と加速係数を一緒にしてますよね?
電源を切った時に倒れた方向のが倒れた時の傾き速度が速そうなのでそちらの方を多めにするとどうですか?
作り替えるならプレートが垂直に立った時にバランスが取れるような重心にするとどちらの速度も均等で良くなるのでは?
最初に作った電池載せた台車も重心が軸の上にしてセンサーをきちんと固定すれば上手くいきそうです。
バックラッシュが最大の課題だと思います。昔、大型サーボモーターを作りましたがバックラッシュに悩まされました。ダイレクトドライブ且つ電子ブレーキが有ればもっと安定すると思います。それかステッピングモーターはどうでしょうか?
ジャイロセンサーを上のほうに取り付けたほうが細かいコントロールができるのでは?と思ったのだけど、どうなんでしょう?傾きと加速度でモータのスピードを調整すればよいかと。
倒立振子、懐かしいです
随分前ですがアナログコンピュータとPC-9801 BASICでの数値微分との比較をやってました
子供の頃、”物理の散歩道”にリーフSWでモータON/0FFでの実験が載っていたので、これを知りました。因みに記載の実験は失敗で終わっていました。
自分も昔挑戦して上手く行かず難しさを感じていたので、イチケンさんでも難しいのかと思い少し驚きました
便利なICがあれば、ドローンか水中ドローンをやって欲しいですw
逆に倒立振子より楽なのかもと思いまして。
自分のD制御のイメージは減速です。
Pで勢い良く戻って行き過ぎる。。。を繰り返す事を防ぐ役目(10:31)
追従性(加速)も大事ですけど。
DHO802を数台買って使っています。12ビットは衝撃的ですね。VESAでアームに取り付けられるところは狭いところで使う時に便利です。革新的ですね。RIGOLには期待してます。
なんか懐かしく見させていただきました
これ・・・動画だからPIDのゲインの調整すぐにできてるように見えるけど、マジでこれ泥沼の戦いなんだよなぁ・・・。
2X年程前フリーソフトで行列計算させて倒立振子のシミュレーションをしたことがあります。
当時、振り子が真下を向いてても強引に振り上げて倒立させる様に驚きました。(線形化の誤差もなんのその)
リアルワールドではハードウェアの制約がありますよね~
加速度センサーのターゲット角度を誤ってる、センサ位置が根元過ぎてピーキーになってる、それによる前後運動の繰り返しにモータドライバIC&モータが付いて来れてない
こんなところでしょうか
30年くらい前、初代ムラタセイサク君を生で見て感動したのを覚えています
キメ顔とバーカウンター風キャッチミスからのスムーズな提供紹介
俺じゃなくても見逃せないね
昔AGVを開発してた時にPID制御をやったな〜 😂
30年前に授業で見た倒立振子はレールにモーターをつけた棒で左右に動かし始め振り上げる二次元のものでした。これは3次元なので難易度上がりますね。フィードバック制御懐かしい。昔から研究されてるんだからもうちょっとエアコン温度制御とか進化して欲しい、、
どうにかして開ループ伝達関数を測れないですかね?
それをもとにPID部分を最適化できたら楽ですよね。
制御がかかってる時に励起信号を入れてその前後を見るのかな?
10年以上前にアナログジャイロセンサーとタミヤギヤボックスとPICで作りました。
半年位フィードバックゲインの計算にかかりピタッと静止するまでになりました。
その後、ラジコンに改造して今も残っています。
今は角度センサーが入手できるのでしょうか。昔のジャイロは角速度センサーで制御周期で積分して
角度を得ていました。
今も角速度センサの積分が主ですが、加速度センサーの値と何らかのフィルターセンサフュージョンして角度を出すことが多いと思います
中華のバイクラジコンでワンキーでウィリーして1輪で倒立するのは凄いと思ったけど、難しさがよく分かりました!
こうしてみると、ドローンの凄さが分かります
ドローンと言うかマルチコプターだよな。
4つのローターだけでロール・ピッチ・ヨーほ全部制御できるのは素晴らしいよ。
わざわざ強化学習でCartPoleなんてやらなくとも、制御理論だけでも実現できたんだ…
文系ワイ「やじろべぇって、なんのシステムもないのに安定するの凄いんやなぁ…(IQ3」
早速ミステリーギフト応募してみました、イチケンさん情報ありがとうございました。
強化学習を用いたパラメータのオートチューニング、面白いですよ
空を飛ぶタイプのドローンにもこういう制御が使われていたりするんでしょうかね?
飛行船のような、のんびりと浮遊する物を制御すると楽しそうですが。
ロボットの位置決めなんかでも普通にやってる
高速追従性とハンチング発生は表裏一体だからなぁ
これ10年以上前から挑戦したいなぁと思って、やれてないんだよなぁ・・・。
出来るだけ置いたところに静止するために角度だけじゃなく最近居た位置に向かうようにエンコーダレスでだいたいの位置を覚えておいてそこへのPID(だいたい向かえばいいので、Dは要らないか?)を入れたり、バックラッシュを考慮した制御とかやりたい・・・
他の制御も見たい…フライトシム·サンドボックスで無双できる
何年か前に倒立振子の実験キットを買って、組み立てないまま仕舞込い込んでたのを思い出しました。
(タンブラーカーっていう名前でした)
今度作るぞ、と思いつつ、今度がなかなか来ません。
PID制御とかカルマン関数とか出てくると「う、数学っ」ってたじろぐのですが、できたら面白いだろうなー、と思います。
DCブラシレスモータでダイレクト駆動できたら少し制御し易くなるかな、等と妄想しています。
カルマン関数じゃなくてカルマンフィルタって書きたかったんだけど…
色々やった結果わかったこと
・ノイズでマイコンやセンサーがバグるのでいくつか対策が必要。特にジャイロセンサーのDLPFは必須
・モーターは可動電圧範囲が有るのでPIDの合計値をPWMに変換する際はmappingしないとダメ。
・PID制御のサンプリング周波数とPWMの周波数を意識しないとダメ。ここはイチケンさんのプログラムに欠けているところ。
・P制御だけでほぼほぼ倒立維持出来るくらい角度のオフセット調整が重要
PID制御は色んなものに使われていますね
モーターの端子にノイズ軽減用のコンデンサを入れるのは普通ですが、金属ボデーにもコンデンサを入れるのは初めて知りました。また自分は1Fくらいの電気二重層コンデンサと積セラでよく作りました。
ノーバックラッシュギアを使うとどうなりますかね?
PIDは音調制御とかでよく利用してました
実際のソースがどんな感じで書かれてるのか気になります
制御方式がPID制御のフィードバック制御ですが、また機会があれば今度はモーションコントロールでおなじみのフィードフォワードでの制御を試して頂けると幸いです(自分もなんか細かいところとか理解していないため)。なぜ高速応答にフィードバックではなくフィードフォワードが優れているのかとか説明して頂けるとうれしいなと思う今日この頃です。
フィードフォワード制御は未知の外乱に弱いので、倒れると思います。
やっぱりホンダの自立するバイクって凄いんですね
스승님 학습이 되었습니다. 고마워요.
絨毯の床で姿勢制御しやすくなる現象はモータの惰走が抑えられたからでしょうか?
人間が手でバランスをとるように上部にバランス制御用のサーボモータを追加したら動きがロボットぽくて可愛くなるのではないでしょうか。
短い棒よりも長い棒の方が立てやすいので、センサーも車軸円周上の上の方に離したほうがよさそうですが?
センサーからの信号は誤差や雑音を含んでいると思うのですが、何らかの対処はされているのでしょうか?例えばカルマンフィルタとか相補フィルターとか?
すくないレイヤ数でニューラルネットワークでさらに安定しないでしょうか。
まったくの素人ですが…
車高の問題ではないかと思いました。倒立振子が縦に長いほうが、車輪が重心から離れるので、車体により大きなトルクを与えることができます。
両面にセンサー付けて並列できんのかな?
2台目ということは、動画で見えない努力をしているんだろうなぁ
制御対象物のパラメーターが明確なので、有限時間整定制御がよいように思います。
改めて考えてみると… 固定する物のない無重力空間の宇宙で宇宙望遠鏡がピンポイントで何億〜、何十億〜光年もの先の天体に正確に向けて照準ピント合わせをする技術はすごいよな
タイヤ制御にブレーキを取り込めないんですかね、ビタっと立ちそう
負帰還 位相補償回路組み込みで回路構成は煩雑になります。
MEMS角度センサー二重化 照査検出組み込みチャレンジします。
他の方もすでに指摘されてますが、せっかくArduino積んでるのでカルマンフィルタの実装が良さそう。
この倒立振子の場合は少し傾いた状態でオフセットさせた方が安定するので0を中心にモーターを逆転させるのではなくオフセットを中心にモーターを逆転させるべきですが100degがそもそも間違っていたとすると安定しないのでは?
倒立振子=とうりつふりこ って読んでました
あと、マブチモーターは安価だけどブラシからノイズが出るから動きに応じてセンサ信号に影響すると思う。
角度センサーをもっと上方につけるとどうでしょうか?
倒立紳士
振動が抑えられないのは制御周期が遅いか、センサ/モタドラ/GPIO等ループのブロックに遅延があるのが原因かなぁ pythonで書いてると前者の問題が出てると思う
Aruduino UNOでかくて邪魔だからNanoとかpro microにすればブレッドボードに組み込めてよいのではないでしょうか