月別アーカイブ: 2015年11月

倒立振子ロボットを MonoBrick で作成する(F#編)

つらつらと、はじめての制御工学 を読んで、やっとこさ PID 制御のところを過ぎて講座12のボード線図のところに来たところですが、C#版をF#版に直します。F# なのだから、関数型っぽい式の作り方とか制御工学で使われている変数をそのまま流用するとかしたいところなのですが、そのあたりはまだ理解&コードの読み進めが足りず…ひとまず、C#からF#にコンバートして倒立振子できるところまでいきました。 コード moonmile/MonoBalancer https://github.com/moonmile/MonoBalancer ここの MonoBalancerF が F# のコードです。 Xamarin Studio で F# プロジェクトを作る MonoBrick を使う場合、Xamarin Stduio を使う方法と Visual Studio + WinSCP を使う方法の2種類がありま … 続きを読む

カテゴリー: EV3, F#, MonoBrick | コメントする

倒立振子ロボットを MonoBrick で作成する(C#編)

ここ2週間ほど倒立振子ロボットにハマっていたのがようやく形になって来たので、メモ代わりに残しておきます。初手は ET ロボコンの EV3Way用のサンプルプログラム なのですが、そのままだとうまく動かかなったので(今考えると車輪の径の設定等が必要だった)、もうちょっと簡単に組み立てて動くところから始められるように、BALANC3R にある LabVIEW のコードから C# に移植しています。 moonmile/MonoBalancer https://github.com/moonmile/MonoBalancer 移植先 Robot Square – Tutorial: Building BALANC3R – Robot Square のコードを忠実に C# に移植しているつもりです。「つもり」というのは、コードの意味をいまいち把握していないからですね。いくつか … 続きを読む

カテゴリー: C#, EV3, MonoBrick | 1件のコメント

[C#] ミリ秒単位のタイマーを作成する

MonoBrick を使い倒立振子ロボットを C# に移植したところですが、ジャイロやサーボの回転数のサンプリングレートに問題があります。もともとのコードがだいたい 20 msec 単位(1秒間に50回)ぐらいのサンプリングを行っているものの、途中で C# で Timer クラスを使うと 30 msec ぐらいの精度しかないんですよね。しかも、だんだんと値がずれていきます。 ちょっと考えて、きちんと 20 msec 単位でサンプリングできる TickTimer クラスを作ったので公開しておきます。 TickTimer クラス System.Diagnostics.Stopwatch と Thread を使って正確に msec 単位の割り込みを発生させます。使い方は、Timer クラスと同じようにコールバック関数を指定して使います。 最初は Task で作ったのですが、mono の Task … 続きを読む

カテゴリー: 開発, C# | コメントする

Onion Omega 着弾

Onion Omega: Build Hardware with JavaScript, Python, PHP by Onion — Kickstarterhttps://www.kickstarter.com/projects/onion/onion-omega-invention-platform-for-the-internet-ofRaspberry Piの4分の1でWi-Fi機能。小型ボード「Onion Omega」 | fabcrosshttps://fabcross.jp/news/2015/04/20150403_onion_omega.html 勢いで Kickstater で買った Onion Omaga が届きました。当時の私は Raspberry Pi と Arduino でモーターを動かして喜んでいた頃で、ともかく「1/4 のサイズで」というのに惹かれて買ってみ … 続きを読む

カテゴリー: 開発 | コメントする