c言語を再履修した俺でも分かる制御工学シリーズ-1
c言語でわかる制御工学-その1
こんにちは、c言語でわかる制御工学シリーズを始めようと思います。
このシリーズは、制御工学の教科書でよくある「MATLAB」を用いた教科書にMATLABなんてもってないわ!っというツッコミを入れた人向けのシリーズです。また、c言語でPID制御のプログラムってどうやって書くの?っていう人の手助けにもなるかも知れません。
必要なものは、c言語を実行できるPCと、高校卒業レベルの物理とラプラス変換の知識です。
さて、第一回はRC回路の単位ステップ応答のシミュレーションです。
RC回路とは抵抗とコンデンサーからなる電気回路のことです。今回はR=1.0,C=1.0としています。
この回路に入力としてVi=1[V]を入力します。またコンデンサーにおける電位差Vo[V]を出力とします。
まずはプログラムを読んでみてください。物理が得意な方はすぐに理解できるかもしれません。ピンとこない方はこれから下の説明を読んでみてください。ちなみに厳密な説明ではありませんのであしからず。
ではコンデンサーにおける電位差が出力であるので、これを求める方法を考えてみましょう。
まず、キルヒホッフの第二法則から以下のことが成り立ちます。
[入力電圧] = [抵抗における電位差] + [コンデンサーにおける電位差]
それでは、各素子における電流と電位差について考えてみましょう。
[その1]
抵抗における電流は、抵抗における電位差によって定義される。
これはI=V/Rのことです。
[その2]
コンデンサーに溜まった電気量は、流れた電流の総和である。
つまり、Q = [電流i(t)の時間積分]
[その3]
コンデンサーにおける電位差は、溜まった電気量がわかればわかる。
これはV=Q/Cの事です。
つまり、すべての時刻における回路に流れる電流がわかれば、すべての素子における電位差もわかるということがわかりますね。とにかく電流が知りたいわけです。
では初期条件から時刻0.0の時に回路にどのような電流が流れるのかを考えてみます。
時刻0.0において、コンデンサーにおける電荷はdQ=0であるので、当然コンデンサーにおける電位差はdVo=0です。
では抵抗における電位差をVrとします。
Vr = Vi – dVo = Vi – 0 = Vi
ということでt=0.0において回路に流れる電流I(t)は、
I(0.0) = Vr/R = Vi/R = 1/R
さて、時刻t=0.0からt=0.1までの間、電流Iがコンデンサーを流れるのでコンデンサーに溜まった電気量は、
では時刻t=0.1の時、コンデンサーにおける電位差は
dVo = dQ/C
というわけで、抵抗における電位差Vrは
Vr = Vi – dVo
よって抵抗に流れる電流は
I = Vr/R
さて、時刻t=0.1からt=0.2までの間、電流Iがコンデンサーを流れるのでコンデンサーに溜まった電気量は、
…こうして時刻50.0までfor文が回ります。
このプログラム本当に正しいの?という疑問もあると思うの手計算で確認してみましょう。
このへんはどの制御工学の教科書にも書いてある内容なので詳しくは説明しません。
まず、回路の微分方程式は
Vi(t) = RC*dVo/dt(t) + Vo(t)
ラプラス変換して
Vi(s) = (RCs+1)*Vo(s)
伝達関数は
G(s) = 1/(RCs+1)
このシステムに単位ステップ入力Us(t)=1を入力すると、
y(t)=逆ラプラス[y(s)]=1-exp((-1/RC)*t)
これによりy(t)が63.2%の出力になる時の時刻が時定数であるから、時定数T=RC=1.0であることがわかります。では実際の出力結果を見てみましょう。
TIME=1.000000,Vo=0.651322
本当はVo=0.632となってほしいところですが、0.1刻みで近似積分しているのでこんなものでしょう。
第一回目は一次遅れのステップ応答のシミュレーションでした、次回は一次遅れのP制御についてc言語でシミュレーションする方法について紹介します。
お題に沿って
今週のお題「2017年にやりたいこと」
テスト期間の中勉強することを放棄してお買い物をしていました。真っ赤な金魚です。
さて、唐突ですが2017年にやりたいこと。
・ロボット制作
ライントレースや、ちょっとした機械仕掛けのもの。特に意味は無いけれど、ロボコンの簡単verで何か自律して動いて欲しいなぁ、とぼんやり考えてます。
・木工作品制作
日頃の机上の散乱をなんとかしたい。
・ドローン飛行
ドローンに限らず飛行系に興味があります。
・3Dプリンター
今年全く出来なかったので自らのためにも春休みから勉強します。
・プログラミング
勉強して知識をつけて『作りたいもの』の幅を広げたいです。
・手芸
関係ない……と見せかけてどうにか絡めて女の子getだぜ!という作戦です。
以上です。多いです。語るのはタダですよね……?
やりたいことは色々あるのですが何から始めれば良いのかわからないというのが正直現在の状況です。
とりあえず数学と物理とプログラミングと木工と3Dプリンター、と言ってるとキャパオーバーしてしまいますよね。笑
2016年は忙しい忙しいと様々なお話を断っておりとてもどうしようもない後輩であったことを自覚してます。今年こそは……という何処にでもありふれた決意ですが見捨てずにいただければ幸いです。
P.Sエンコーダって一体どんな機械に使われているのか誰か教えていただきたいものです(遠い目)。
雲丹で着ぐるみを包みました(Unity編)
こんばんは。millaboです。
今日中に投稿しときたいので、続きまた書いときます。
前々回、前回の私millaboの投稿をまだ見ていないひとは、そちらの方を先に見てくださいねー
あと少しです。('◇')ゞ
前回blenderで作ったと書きました、みみっきゅをUnityで動かしました。
今回も話すと長くなるので、簡単にしか書きません。
ではスタート!!!
改めまして、とうとう最後の工程の紹介です。
5. 3DゲームエンジンUnity上に、2~4で作成したものを表示。モデルに自作のアクションをさせてみる。
前回のアニメーションと同じで、動画投稿するとかしないとわかりませんね。
繰り返しになりますが、今はしません? 少なくとも、また色々調べてからします
ということで、
Unity上で走りまわるみみっきゅの様子をスクリーンショットでご紹介!!!
1. あるく
みみをくねくねさせて頭を動かして、歩きます!
2. はしる
あるいている時との差は全然わかりませんが、はしってます笑
みみをくねくねさせて頭を動かすスピード(blenderのアニメーションで設定)も、加速度(Unity上でコードによって書きます)も早いです!
3. その他のアニメーション
・例のみみっきゅ特有のアニメーション(敢えて詳しくいわない)
しっぽが地面に埋まってしまってますね( ゚Д゚)あー
気になりますが、今回は良しとしときます。
・きょろきょろ
最大限のリスペクトを込めながら、完全オリジナルアニメーションです。
地面に落ちているなにかを探しているかのように、きょろきょろします!
またまたスクリーンショットでわかりにくいかもしれませんが、ちゃんときょろきょろしてます。
Unity編以上!!!
このようにblender編, Unity編共に、直したい直すべきところはいろいろありますが、一通りのことはできましたー
やったー\(^_^)/
今回、(これよりもさらに長くなりすぎるので)全然詳しいことは説明せず、作ったということだけ書いてみました。詳しくは、期末試験が終わったり落ち着いた上で整理できたら書こうかな。
でも、流れはこんな感じで作ったということがわかってもらえるのではないかと思います。
[感想]
とにかく自己満足自己完結楽しかったです。日数的には3, 4日くらいでできました。
今後は春休みにでも、この続きとして簡単なゲームを作れたらなと(今のところは)思っています
是非皆さんもお気に入りのキャラクターにお気に入りのモーションをつけて、動かしてみましょう。
最後に...
『
機巧堂メンバーのみなさんへ
ブログ書いてねー
楽しみにまってますー笑
』
ではまた。
(。´-д-)ブログトウコウ、ツカレタ
案・モデ・マテテク・アニ(blender編)
こんばんは。millaboです
数分ぶりの投稿です。
前回の私millaboの投稿をまだ見ていないひとは、そちらの方を先に見てくださいねー
では早速、さっきの続きの説明しまーす。
まずは...
1. 何を作りたいか考える(´-`).。oO
単純に、今私が一番作りたいもので、簡単そうなものを考えましたー
迷いなどはなく、ピカチュウ!
ではなく、今注目のキャラクター みみっきゅ!
を自分の思い通りに動かしてみたいなと思いました。
※(注) 完全に自己満足かつ自己完結!
みなさん、みみっきゅ知ってますか? 知らなくても説明はしません( ゚Д゚)
ということで、今回『みみっきゅの冒険』の基盤を作ることにしました
※(注) 改めて完全に自己満足かつ自己完結!(^◇^)ニヤ
リスペクトを込めて作ります!!!
かなり説明省くが、こんな感じ!
続いて...
3. マテリアルテクスチャを自作して貼り付ける!(今回初めて挑戦!)
今までマテリアルは貼りつけたことはあったけど、テクスチャはよくわからなくて、
今までスルーしてました。今回初めての挑戦です
・マテリアル
上の写真でもうでてますねー
・テクスチャ
これまた、最大限のリスペクトを込めて。
またもや、説明は省くがこんな感じ!
我ながら、なかなかの出来っ!!!
これで、みみっきゅのモデリング、マテリアルテクスチャ貼り付けまで
完了しました!!!
続いては...
4. アニメーションを作って、動かす
これは、動画投稿でもしないとわかりませんね笑
いろいろ問題あるかもしれないのでしません? またいろいろ調べた上でするかも。
ということで、アニメーションの一部(スクリーンショット)
今までと同じように、最大限のリスペクトを込めて。
わかる人にはわかりますよね。どんなアニメーションか( ̄ー ̄)ニヤリ
blenderでの作業はここまで!!!
先ほどから簡単に書いているとはいってますが、ものすごく簡単ですね(すみません)
本当は細かいところにかなり苦闘しました。手探りでがんばりました。
(ex.)
・本体と着ぐるみとしっぽの結合がうまくいかなかったり。
・途中、しっぽにまでみみっきゅの顔が貼り付けられてしまったりして、戻らなくなってしまったり。(このときは本当によくわからなくて焦りました。)
こんな感じに、みみっきゅさんが私の手の届かないどこかに行ってしまい、どうしたらいいのかわからなくなったりもしました。(´;o;`)
でもblenderが得意なお友達(〇〇〇○〇くん)に助けてもらいました。ありがとう。
次回、Unityでみみっきゅさんを動かしてみます。
ではまた。ははは