Lv_ZEROです。
昨日になりますが、レスコンへの応募書類が完成しました。今年は、去年までと異なった形になったと思いますが、実現に向け努力していきたいと思います。
しかしながら、来週から期末試験週間が始まりますので、今は試験勉強に励みたいと思います(笑)
2014/01/29
2014/01/21
TPIPのクラス設計案
UMLのクラス図を使って描いてみました。議論の余地が大ありですがこんなこんじ。
機体は主にUIとTPIPとコントローラーと通信をします。
機体の通信とは、他の機体を操作するコンピュータとの通信です。通信によって、他の機体の映像が見られたり、チャットができたり、他の機体の位置情報等を取得してマップに表示できたりします。
UIは画面上のボタン等の配置などで、これはLuaスクリプトを通して外部スクリプトファイルで変更可能とします。こうすることで、機体ごとに独自の画面を簡単に作成可能となります。
TPIPはTPIPと通信するために、UDP通信オブジェクトを持ちます。また、TPIP1/2/3との互換性を持つために、抽象クラスTPIPを用意します。また、これらは音声/画像管理オブジェクトを持ち、リアルタイム画像・音声伝達を担い、処理はサブクラスに任せて実装します。(これは可能なのか?)
この図はastahというソフトを使って描きました。とても便利なソフトで、無料版は制限が多いのですが、サークルで使う分には問題がないと思うので是非使ってみて下さいね。シーケンス図も使いやすいですよ。
機体は主にUIとTPIPとコントローラーと通信をします。
機体の通信とは、他の機体を操作するコンピュータとの通信です。通信によって、他の機体の映像が見られたり、チャットができたり、他の機体の位置情報等を取得してマップに表示できたりします。
UIは画面上のボタン等の配置などで、これはLuaスクリプトを通して外部スクリプトファイルで変更可能とします。こうすることで、機体ごとに独自の画面を簡単に作成可能となります。
TPIPはTPIPと通信するために、UDP通信オブジェクトを持ちます。また、TPIP1/2/3との互換性を持つために、抽象クラスTPIPを用意します。また、これらは音声/画像管理オブジェクトを持ち、リアルタイム画像・音声伝達を担い、処理はサブクラスに任せて実装します。(これは可能なのか?)
この図はastahというソフトを使って描きました。とても便利なソフトで、無料版は制限が多いのですが、サークルで使う分には問題がないと思うので是非使ってみて下さいね。シーケンス図も使いやすいですよ。
0 件のコメント:
ラベル:
C#,
レスキューロボットコンテスト
2014/01/17
2014/01/14
2014/01/13
C#によるMemoryMappedFileを使ったアプリケーション間通信のテスト
Lv_ZEROです。
KONDOのシリアルサーボを複数動作させるプログラムを作るつもりでしたが、シリアルサーボとPC間の通信手順はどのようなプログラムになっても変わらないため、角度の制御プログラムとサーボとの通信プログラムを切り離して作ることにしました。
そこで、制御プログラムと通信プログラムの間を取り持つために共有メモリを用いることにしました。C#ではMemoryMappedFileクラスを用いることで共有メモリを簡単に実装できます。
試しにテストプログラムを作ってみました↓(左がID、右が角度のつもりです)
今回はMemoryMappedFileの説明を載せませんが、余裕のあるときにwikiに載せようかと思います。
KONDOのシリアルサーボを複数動作させるプログラムを作るつもりでしたが、シリアルサーボとPC間の通信手順はどのようなプログラムになっても変わらないため、角度の制御プログラムとサーボとの通信プログラムを切り離して作ることにしました。
試しにテストプログラムを作ってみました↓(左がID、右が角度のつもりです)
今回はMemoryMappedFileの説明を載せませんが、余裕のあるときにwikiに載せようかと思います。
0 件のコメント:
ラベル:
C#,
レスキューロボットコンテスト,
ロボットグランプリ大道芸競技
2014/01/09
C++Tips1 スマポと所有権
Tipsシリーズは言語仕様をある程度は把握した初心者のために入門書には載っていないかもしれない事柄を取り上げて実際の製作に役立つようにまとめたものです。今回はC++のTips1回目です。スマポを取り上げ、所有権の概念を身につけましょう。
スマポは、生ポインタ――通称、生ポ――よりも使う人に優しいポインタの機能を備えたクラスです。要するに、メモリ管理の一部を手伝ってくれる機能です。
プログラマは何らかのデータをメモリに確保するときに、スタックに入れるかヒープに入れるか選択できます。C++では、関数の中で変数を宣言するとスタックに確保され、newするとヒープに確保されます。スタックに確保された変数は関数が終了したときに全て開放されます。ところがnewされたデータはdeleteするまで残り続けます。使わなくなったらdeleteしなければなりません。そうでないと、他のアプリケーションの使えるメモリが減ってしまいます……。(タスクマネージャでメモリ使用量を確認してみて!)
さて、C#だとその辺をうまくやってくれます。つまり、newしてもプログラマがdeleteしないで勝手に裏でdeleteしてくれます。この勝手にやってくれる機能をガベージコレクション(GC)というのですが、C++にはGCがありません。しかし、C++には便利なライブラリ、スマポがあります。
スマポは、生ポインタ――通称、生ポ――よりも使う人に優しいポインタの機能を備えたクラスです。要するに、メモリ管理の一部を手伝ってくれる機能です。
プログラマは何らかのデータをメモリに確保するときに、スタックに入れるかヒープに入れるか選択できます。C++では、関数の中で変数を宣言するとスタックに確保され、newするとヒープに確保されます。スタックに確保された変数は関数が終了したときに全て開放されます。ところがnewされたデータはdeleteするまで残り続けます。使わなくなったらdeleteしなければなりません。そうでないと、他のアプリケーションの使えるメモリが減ってしまいます……。(タスクマネージャでメモリ使用量を確認してみて!)
さて、C#だとその辺をうまくやってくれます。つまり、newしてもプログラマがdeleteしないで勝手に裏でdeleteしてくれます。この勝手にやってくれる機能をガベージコレクション(GC)というのですが、C++にはGCがありません。しかし、C++には便利なライブラリ、スマポがあります。
2014/01/08
KONDO KRSサーボ 動作テスト用プログラムの動作確認
Lv_ZEROです。
先日作ったKONDO KRSサーボ 動作テスト用プログラムを実際に実行し、動作確認を行いました。
エラーもなく、しっかり動作してくれました。まぁ、公式サイトのプログラムをC#に置き換えたようなものなので動いて当然っていえば当然なんですが(笑)
今回のプログラムではサーボモーター1個しか動作させることができませんので、次は複数のサーボモーターを制御できるプログラムを作ろうと思います。
先日作ったKONDO KRSサーボ 動作テスト用プログラムを実際に実行し、動作確認を行いました。
エラーもなく、しっかり動作してくれました。まぁ、公式サイトのプログラムをC#に置き換えたようなものなので動いて当然っていえば当然なんですが(笑)
今回のプログラムではサーボモーター1個しか動作させることができませんので、次は複数のサーボモーターを制御できるプログラムを作ろうと思います。
0 件のコメント:
ラベル:
C#,
レスキューロボットコンテスト,
ロボットグランプリ大道芸競技
2014/01/04
KONDO KRSサーボ 動作テスト用プログラム
Lv_ZEROです。
あけましておめでとうございました。良いお年になって欲しいところです(笑)
ここの所忙しく、プログラミングを行っていなかったため、ウォームアップとしてKONDOのKRSサーボを動かすプログラムを作りました。KONDOのHPを参考にC#で記述していますが、ほぼ同じ動作をするプログラムです。今後の事を考え、サーボとの接続時にはFREEコマンドを送り、現在位置を取得し、トラックバーを現在位置に動かすようにしてます。また、サーボの現在位置を逐一監視するため、一定周期ごとにサーボに位置指令を送るようにしています。
手元にKRSサーボがないため、まだ動作確認してませんが、動作確認の後、複数のサーボを同時に、さらに外部プログラムから動かせるプログラムを作ろうかと思います。
あけましておめでとうございました。良いお年になって欲しいところです(笑)
ここの所忙しく、プログラミングを行っていなかったため、ウォームアップとしてKONDOのKRSサーボを動かすプログラムを作りました。KONDOのHPを参考にC#で記述していますが、ほぼ同じ動作をするプログラムです。今後の事を考え、サーボとの接続時にはFREEコマンドを送り、現在位置を取得し、トラックバーを現在位置に動かすようにしてます。また、サーボの現在位置を逐一監視するため、一定周期ごとにサーボに位置指令を送るようにしています。
手元にKRSサーボがないため、まだ動作確認してませんが、動作確認の後、複数のサーボを同時に、さらに外部プログラムから動かせるプログラムを作ろうかと思います。
0 件のコメント:
ラベル:
C#,
レスキューロボットコンテスト,
ロボットグランプリ大道芸競技
登録:
投稿 (Atom)