サーボモーター(?)、自作します

 夢はケモミミ美少女ロボを愛でること。

 どうも皆さまはじめまして、20のSugiです。
 突然ですが、サーボモーターは「角度やら力やらをフィードバックしてモーターの出力を変化させることができる、ロボの世界になくてはならないものである」ことはここにいらっしゃいます皆さまにとっては周知の事実かと思います。
 では、「既製品のサーボモーターでは大きさがデカすぎて都合が悪い! ワイが作ろうとしているロボに最適な形をしたサーボはこの世の中には存在しないのか!」と悩んだとき、皆さまならどうなさるでしょうか? そう、サーボを自作しますよね?
 ということで、今回はサーボの仕組みを理解つつ、さらに将来小型のサーボを作れるようにと、サーボの自作を行いました。
 仕組みは以下の図の通りです。

 今回は作りやすさ最優先でポテンショメーター(半固定抵抗)を用いたサーボです。
 仕組みはとっても簡単で、
・ まずポテンショメーターb(入力値の設定用。本来ならPWM入力とかが行われる)の抵抗値をマイコン(今回はその辺に転がっていたNucleo-F446REを使用)が読み取り、
・ 続いてポテンショメーターa(出力値を読み取る用。角度と抵抗値が線形に比例してくれている。うれしい)の抵抗値をマイコンが読み取り、
・ その抵抗値の差によって目標角度と現在角度の差を計測し、
・ それを用いてモーターをPID制御
・ 最終的に出力の角度に反映する
 というものです。
 それをそのまま形にしたのが以下の写真。

 ……かなりでかいですが、模型なのでいいでしょう。
 動きは良好。

 青色の線は計測している値(出力値=ポテンショメーターaの値)、オレンジの線は入力している値(入力値=ポテンショメーターbの値)を示しています。
 使っているギアボックスの精度(TAMIYAの工作用)やポテンショメーターそれ自体の精度(有効数字2桁くらい?)を考えたら、この追従性はなかなかなものかと思います。さすがPID制御。
 あとはこれを小型化できれば、自分好みのサーボが作れますね! 死にそうな未来しか見えませんが!

 ということで、サーボモーター自作の基礎を実践してみました。マイコンボード初学者の方などは、面白半分で作ってみてもいいかもしれません。
 ではでは~

MATLABで自作ロボットのモデル予測制御 & Cコード生成/ビルドチュートリアル

皆様こんにちは.18のhiraです.

近年,自動運転やロケットやドローン,戦闘機でも「モデル予測制御(MPC)」なる制御方法が注目されているようです.
なんでもこのMPCを使うと運動モデルさえあれば誰でも簡単に(注 “誰でも”等の範囲は要検討)複雑なロボットを好きな軌道で動かすことができるようです!

この魅力的なMPCは,なんとMATLABの「Model Predictive Control Toolbox」を使うことでほぼGUI上で手軽に作ることができます.しかも作ったコードはC/C++に変換でき,それをビルドすればRaspberry Piといったマイコン上で動かすこともできます.

今回は簡単なバネ台車モデルを使い,MATLAB上でのMPCモデル及び運動軌道の作成,さらにC/C++のコードの生成とビルド方法を紹介します.

ヘンタイ技術のカタマリSpaceXの着陸ロケットもMPCで動くとか.イーロン・マスクも目じゃねえぜ!

“MATLABで自作ロボットのモデル予測制御 & Cコード生成/ビルドチュートリアル” の続きを読む