2014年7月20日日曜日

PID制御について


saint11


今年も中国教育省に中国国際ICT大会(SICTIC2014)に招待されました。
そのためロボットの調整を行っているのですが、方位制御が安定しました。ここでPID制御(高速、正確な方位制御ができる)について説明します。

 P制御 : 比例制御。目標の方位と現在の方位の差の大きさに応じて回転の速度も速くなる。傾き(定数)が大きすぎるとロボットが尻振り状態(ハンチング)になる。首振りになるかならないかぎりぎりに調整するとよい。
モーターのパワー = 方位の差 *  定数(好きな値、調整は自分で行う) 
 I 制御 :   積分制御(時間積分)。目標方位に一定時間内で到達するため、時間が増加するごとに回転の速度も速くなる。すこしずつ値が大きくなるので正確な制御に向い    ている。単調増加(増加しかしない)な制御であるため値が大きくなりすぎて暴    走する危険性(不安定)がある。何も制限を加えないと無限に値が大きくなるた    め定期的に0に初期化する必要がある。
モーターのパワー = 時間(ループごとにインデクリメント、タイマーでもOK)*定数 (好きな値、調整は自分で行う)
D制御  :   微分制御(時間微分)。微分とは変化の割合(傾き)を求めること。(連続値のグラフなら何でも求められる)。変化の割合を求めて、目標値にたどりつくよう    な変化の割合に変える。尻振りの抑制(目標値を越し続けることによって生じ     る)が可能。I制御の無限に値が大きくなる現象をある程度抑制できる。
モーターのパワー = (1つ前の方位ー現在の方位)* 定数



PID制御: モーターのパワー = Pの式 + Iの式 + Dの式

・簡単なP、I、Dの式の定数の決定法
まずPI制御で調整する。Pによって尻振りするかしないかギリギリの定数に調整する。(Iの定数は何でもよい、Iによって制御が暴走する場合は定数を十分小さくするだけでよい)
そうすると定数はこのように決定する。
P定数 =  調整値 * 0.6
I定数    =  暴走頻度が十分すくない値 * 0.5
D定数 = I定数 *  0.125
I定数 : D定数 =  0.5 : 0.125 = 4 : 1(この関係を満たせばIやDの定数を少し変えてもよい) 




2014年7月14日月曜日

K/VM北陸

K/VM北陸の勉強会に参加、発表しました。

GPUの手軽な修理の話、非ノイマン型コンピュータ、googleコード規約の欠点、kernelの話、OSv(クラウド型OS)、eject、linuxの疑似乱数に関わる暗号化の欠点、プロセッサと最適化・CPU並列処理、ゲーム専用UNIXタイプOSをkernelをいじって多くのデバイスに対応できるようにした、等色々なコンピュータの分野の話が聞けてとてもおもしろかったです。

GPUの手軽な修理の話は、GPUの故障は多くが鉛はんだが外れて動かなくなってしまったのが原因という考察を多くの実験を元に検証し、GPUを電子レンジのオーブンで焼いて修理するという内容です。良い数値のベンチマークがでているそうです。@sushi514

非ノイマン型コンピュータの話は非ノイマン型コンピュータの構造とどのようなコンピュータがあるかの説明です。日本は非ノイマン型コンピュータを多く開発していたそうです。@takeoka

gooleコード規約はAndroidのDalvik仮想マシンのkernelコード(c++)がgoogleコード規約によりstdを使えなかったり(例外処理が禁止されている)global.hというヘッダーにグローバル変数が1000行くらい書かれている(すべてのcppファイルの変数を共有)その冗長さを指摘したものです。特におもしろかったのがgoogleの開発者がその規約をやぶってstdを使っていた場面があったことでした。w @k_mnt

 ejectはUNIXのejectコマンド(CDドライブ取り出し)で作品をつくるというものです。目覚まし、PCの電源を物理的にONしたり、ネックレスがあったりejectで色々できることがわかりました。おもしろかったのがejectの目覚ましはカーテンを開けることにより覚ますという目的で作られたそうですが音で起きてしまうことですw @zitomesuki@ahiru3net@Akkiesoft


linuxの疑似乱数を用いた暗号化の話は暗号化はPCのノイズ等を使ったしくみでできているそうですが暗号の更新にはs1, s2 , s3 , s4 , ・・・・・・,s^nという風に決まっているらしいです。sの変化が解析できたら暗号を解読することができるそうです。なので脆弱性がある、と言った話ですが、未だこの方式を用いた暗号の解読は公表上?されていないそく敷居が高いので安心できるそうです。

色々なOSの話がありました。ゲーム用linuxOS, cloudOS, Dalvik仮想マシン等などです。
自分もOSに興味が湧き、FreeBSD, winserver2008とCentOSを入れてみました.
(メインOSはubuntu12.04 LTS)

自分は今までに開発したロボットの話を行いました。発表時は舞い上がり真っ白になってしまいました。みなさん、あたたかく応援していただいてありがとうございます。今までに11台小型ロボットを開発してきました。twitter上で紹介されていないロボットが気になるという声を聞きました!ここのサイトの右上にい今まで開発した小型ロボット10台があるので(onedrive)気になった人は見ていってください。

セキュリティキャンプのチューターや他の参加者の方々ともここで顔を合わせることができてうれしかったです。セキュリティキャンプの勉強がんばっていきたいです。今はRasppiでネットワーク、バイナリ、アセンブラの勉強をしています。

2014年7月12日土曜日

NT金沢


ejectネックレス by @じとめすきー

OpenCVの画像処理でライントレースするロボット

kindleとキーボードがあればrasppiでPCができる!@kimio_kosaka

スケルトンArduinoがすごい@kimio_kosaka

プラネタリウム
Rasppi飛行機

Rasppiトランスフォーマー?

ライントレースするArduino列車 by 河並先生の研究室


7/12(土),7/13(日)に開かれるNico Tech金沢を見にいきました!MAKER MOVEMENTで話題のArduino, Raspberry pi, Ocrus Lift,  Unityなどを使った展示品がありました。

1日目。まず河並先生のArduino列車を見にいきました。前回見たときより多くのコースに対応、新幹線も動いていました。とても楽しかったです。

Rasppiロボットを見にいきました。飛行機のシャーシは3Dプリンタで製作しているそうです。トランスフォーマの動きがとてもかっこよかったです!自分もあんなロボット作りたい!その他にも色々な展示品を見にいきました。

2日目。K/VM北陸、セキュリティキャンプでお世話になるじとめすきーさんのejectネックレスを見にいきました。自分もrasppiで何か作品を作ってみたいです。

kindleとキーボードだけで構成されているrasppi PCがありました!もうPCが10000円以下で手に入る時代ということをあらためて実感します。rasppiでarduinoプログラムのビルドをしていました。rasppiPCだけでmakersの一員になることも可能ですね。他にはとても芸術的なArduinoが展示されていました。

最後にはプラネタリウムの鑑賞。USJ のアトラクションみたいでした。

NT金沢の存在を一週間前に知り、出展しようと思ったのですがすでに締切られていました。 今度はこのようなMAKERイベントに自分のロボットを出展したいです。