RTコンポーネント開発を始めよう
RTコンポーネント開発のフロー
いよいよ今週はRTコンポーネント(RTC)の開発を始めます。RTミドルウエアのインストールとサンプルの実行は前回(http://thinkit.jp/article/948/1/)説明しましたので、それらは完了していることを前提としてお話ししていきます。
RTC開発の大きな流れは、以下のようになっています。
1)コンポーネントの分割度の決定
2)RTCのインターフェースの決定
3)RTC BuilderによるRTCのスケルトンコードの生成
4)イベント・ハンドラの実装
5)RTCのテスト
まずは1)、2)のステップでRTCの分割度とインターフェースの設計を十分に吟味することが重要です。
RTCの分割度とは、RTCにどこまでの機能を実装するか?ということです。RTCに多くの機能を実装することは簡単ですが、RTCになった時点で機能がカプセル化されるため、カスタマイズが難しくなります。
一方で分割を細かくすれば、RTCを適用できる場面が多くなりますが、システムが複雑化しますし、処理を行うCPUの負担にもなります。
RTCの分割度が決定すると、インターフェースを決定します。インターフェースは大きく分けて「サービスポート」と「データポート」があります。ここでは直感的でわかりやすい「データポート」について説明します。
データポートは、まさにデータを入出力するポートのことです。例えば距離センサーから受け取る情報は「距離」ですから、多くは実数型(FloatやDouble)がやり取りされるでしょうし、キーボードのスイッチなどの情報であれば、論理(Bool)として扱われるのが直感的ですね。
データポートで扱うことができるデータ型について、代表的なものを図1にまとめました。「Timed」という接頭辞はタイムスタンプをデータの中に持つことを表しています。また「○○Seq」はシーケンス型(配列)を表しています。
設計が終了したら、3)のステップ、Eclipseのプラグインとして提供されているRTC Builderを使ったスケルトンコードの自動生成を行います。今回はこの部分を説明していきましょう。
番号 | データ型 | 説明 |
---|---|---|
1 | TimedBool | 論理型。TRUEかFALSEの2値のみ。 |
2 | TimedLong | 32ビット整数型。 |
3 | TimedLongSeq | 整数型配列。 |
4 | TimeFloat | 32ビット実数型。 |
5 | TimeFloatSeq | 実数型配列。 |
6 | TimeDouble | 倍精度実数型。 |
7 | TimeDoubleSeq | 倍精度実数型配列。 |
8 | TimeOctet | 8ビット汎用データ型。 |
9 | TimedOctetSeq | 汎用データ型配列。 |
10 | TimedString | 文字列型。 |
図1:データポートで扱うことができるデータ型