2014/01/29

レスコン応募書類の完成

Lv_ZEROです。

昨日になりますが、レスコンへの応募書類が完成しました。今年は、去年までと異なった形になったと思いますが、実現に向け努力していきたいと思います。
しかしながら、来週から期末試験週間が始まりますので、今は試験勉強に励みたいと思います(笑)

2014/01/21

TPIPのクラス設計案

UMLのクラス図を使って描いてみました。議論の余地が大ありですがこんなこんじ。

 機体は主にUIとTPIPとコントローラーと通信をします。

機体の通信とは、他の機体を操作するコンピュータとの通信です。通信によって、他の機体の映像が見られたり、チャットができたり、他の機体の位置情報等を取得してマップに表示できたりします。

UIは画面上のボタン等の配置などで、これはLuaスクリプトを通して外部スクリプトファイルで変更可能とします。こうすることで、機体ごとに独自の画面を簡単に作成可能となります。

 TPIPはTPIPと通信するために、UDP通信オブジェクトを持ちます。また、TPIP1/2/3との互換性を持つために、抽象クラスTPIPを用意します。また、これらは音声/画像管理オブジェクトを持ち、リアルタイム画像・音声伝達を担い、処理はサブクラスに任せて実装します。(これは可能なのか?)

この図はastahというソフトを使って描きました。とても便利なソフトで、無料版は制限が多いのですが、サークルで使う分には問題がないと思うので是非使ってみて下さいね。シーケンス図も使いやすいですよ。

2014/01/17

C++Tips2 例外でエラーハンドリング

こんばんはKです。今日はC++の例外について触れたいと思います。

例外は、その状況下で処理を継続できない、あるいは継続しても意味がない状態のことをいいます。C++では例外を処理するための機構が用意されています。これはtry-catch文と呼ばれています。

2014/01/14

ガレキ除去アーム

suzutoです。

ガレキ除去機のアームの全体像が完成しました。



とりあえず形にはしました。これからは部品の強度、干渉チェックを行うと共に、本体の設計も進めていこうと思います。

2014/01/13

C#によるMemoryMappedFileを使ったアプリケーション間通信のテスト

Lv_ZEROです。

KONDOのシリアルサーボを複数動作させるプログラムを作るつもりでしたが、シリアルサーボとPC間の通信手順はどのようなプログラムになっても変わらないため、角度の制御プログラムとサーボとの通信プログラムを切り離して作ることにしました。
そこで、制御プログラムと通信プログラムの間を取り持つために共有メモリを用いることにしました。C#ではMemoryMappedFileクラスを用いることで共有メモリを簡単に実装できます。
試しにテストプログラムを作ってみました↓(左がID、右が角度のつもりです)
今回はMemoryMappedFileの説明を載せませんが、余裕のあるときにwikiに載せようかと思います。

2014/01/09

定例会1/9

Lv_ZEROです。

本日の定例会では、冬休み中に行った活動の報告とレスキューロボットコンテストについての今後の活動について話し合いました。
また、レスキューロボットコンテストに参加するための応募書類を誰がどの部分を担当するかなどを話し合って決めました。応募書類は1月31日が期日となっており、その頃は大学の方もテスト週間となってしまいますので再来週までには推敲を重ね完成させたいと思います。

C++Tips1 スマポと所有権

Tipsシリーズは言語仕様をある程度は把握した初心者のために入門書には載っていないかもしれない事柄を取り上げて実際の製作に役立つようにまとめたものです。今回はC++のTips1回目です。スマポを取り上げ、所有権の概念を身につけましょう。

スマポは、生ポインタ――通称、生ポ――よりも使う人に優しいポインタの機能を備えたクラスです。要するに、メモリ管理の一部を手伝ってくれる機能です。

プログラマは何らかのデータをメモリに確保するときに、スタックに入れるかヒープに入れるか選択できます。C++では、関数の中で変数を宣言するとスタックに確保され、newするとヒープに確保されます。スタックに確保された変数は関数が終了したときに全て開放されます。ところがnewされたデータはdeleteするまで残り続けます。使わなくなったらdeleteしなければなりません。そうでないと、他のアプリケーションの使えるメモリが減ってしまいます……。(タスクマネージャでメモリ使用量を確認してみて!)

さて、C#だとその辺をうまくやってくれます。つまり、newしてもプログラマがdeleteしないで勝手に裏でdeleteしてくれます。この勝手にやってくれる機能をガベージコレクション(GC)というのですが、C++にはGCがありません。しかし、C++には便利なライブラリ、スマポがあります。

2014/01/08

部品製作

今日は工作センターでグランプリのロボットの部品を作りしました。
明日組み立てる予定です。

KONDO KRSサーボ 動作テスト用プログラムの動作確認

Lv_ZEROです。

先日作ったKONDO KRSサーボ 動作テスト用プログラムを実際に実行し、動作確認を行いました。
エラーもなく、しっかり動作してくれました。まぁ、公式サイトのプログラムをC#に置き換えたようなものなので動いて当然っていえば当然なんですが(笑)
今回のプログラムではサーボモーター1個しか動作させることができませんので、次は複数のサーボモーターを制御できるプログラムを作ろうと思います。

2014/01/04

KONDO KRSサーボ 動作テスト用プログラム

Lv_ZEROです。

あけましておめでとうございました。良いお年になって欲しいところです(笑)

ここの所忙しく、プログラミングを行っていなかったため、ウォームアップとしてKONDOのKRSサーボを動かすプログラムを作りました。KONDOのHPを参考にC#で記述していますが、ほぼ同じ動作をするプログラムです。今後の事を考え、サーボとの接続時にはFREEコマンドを送り、現在位置を取得し、トラックバーを現在位置に動かすようにしてます。また、サーボの現在位置を逐一監視するため、一定周期ごとにサーボに位置指令を送るようにしています。

手元にKRSサーボがないため、まだ動作確認してませんが、動作確認の後、複数のサーボを同時に、さらに外部プログラムから動かせるプログラムを作ろうかと思います。