忍者ブログ
幅広く、浅く、ゆるく、気まぐれにが目標のブログ的なもの。
[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

394 2010 11 01 RTミドルウェアについて3

 更新回数が格段と減っていますが、
ブログをやめるという選択肢はありません。
うつな内容はしませんが、
専門的な内容をしたいと思います。
自分の脳内の整理のためにも
ということで今回もRTミドルウェアの話を
図もなく、見ずらいですが 
感覚だけでもつかみたい。
内容は参考資料に大分近いです
内容は違いませんが、話の仕方は大分崩れています。

そういえば思いましたが、
このような勉強はのせてもいいですが
研究となるとあまりよろしくはないみたいですね。
情報開示的な意味で
私のことだから、今後くちばしそうで怖いですね。


今回はコンポーネントの内部説明をします。
各コンポーネントがどのように中で処理しているかについてまとめてみます。
この参考にした本ではLEGO MINDSTORMSのシミュレータを使用してますが
ここでは別にその話はしません。
本の内容がそのままでもしかたないので、
このシミュレータはJavaとC++のRTコンポーネントを同時に動かしている感じ
シミュレータでJava3Dを使用するため。
といってもつくるのはコントローラのみ
コンポーネントの設計では具体的には
4つの機能をどのように使用するか検討する
データポート
アクティビティ
サービスポート
コンフィギュレーション
の4つ
一つ一つ考えてみます。

データポート
データの入出力をするポート
InportからOutportにデータが流れる
種類としては
TimedState      RTコンポーネントの状態を表現するデータ型
TimedShort      符号あり2バイト整数型
TimedLong       符号あり4バイト整数型
TimedUShort     符号なし2バイト整数型 
TimedULong      符号なし4バイト整数型
TimedFloat      単精度浮動小数点(2バイト)
TimedDouble    倍精度浮動小数点(4バイト)
TimedChar       符号あり1バイト整数型
TimedBoolean   ブール。論理型。TRUEかFALSEの2値のみ
TimedOctet    符号なし1バイト整数型
TimedShortSeq   符号あり2バイト整数型配列
TimedUShortSeq  符号なし2バイト整数型配列
TimedLongSeq    符号あり4バイト整数型配列
TimedULongSeq   符号なし4バイト整数型配列
TimedFloatSeq   単精度浮動小数点(2バイト)
TimedDoubleSeq  倍精度浮動小数点(4バイト)
TimedCharSeq    符号あり1バイト整数型配列 
TimedBooleanSeq ブール配列
TimedOctetSeq   符号なし1バイト整数型配列 
場合に応じて使い分ければいいはず。 
たとえば、モーターコントロールのコンポーネントがあるとしたら、
Inportが外部からのセンサの値で 
Outportが駆動モータの速度
がでてきたりする。

アクティビティ
ロジック
RTコンポーネントのアクティビティはステートマシンとして動作する
コンポーネントの動作はステートマシンの状態や状態遷移時として動作する
ステートマシンとはある状態における動作を設計図のようにまとめて
その場その場で状態に応じた動作を決定するというロジック
RTコンポーネントのステートマシンは決まっているのでそれを見ればよい。 
図は著作権的にのっけていいのかわからなかったので
産総研の解説ページでみてください。
解説としては
開始を黒丸、終了状態を二重の黒丸、
それ以外の状態を角度のゆるい四角で囲んでます。
図によると、開始状態(黒丸)→Create状態→Alive状態→終了状態(二重黒丸)
Alive状態の内部で変化する
上部分にあるのはStopped(停止中)とRunning(実行中)
停止状態がstartを受け取ると
RTコンポーネントのonStartupを実行して実行状態に
実行状態がstopを受け取ると
RTコンポーネントのonShutdownを実行して停止状態に
遷移する
停止状態の場合は全てのアクションが動作しない。
下部分にあるのはActive(アクティブ)と
Inactive(非アクティブ)とError(エラー)
初期状態だと非アクティブになっており、
アクティブ化するとRTコンポーネントに
onActivateがコールされてアクティブになる
アクティブになるとonExecuteが繰り返し実行され続ける。
ロボットの基本的な動作はこのonExecute内で記述される。
またコンポーネントはエラーがでるか、非アクティブにならない限り
アクティブ状態にたまり続ける
非アクティブ化されるときはonDeactivateがコールされて非アクティブになる。
エラーが出た場合はonAbortingがコールされエラー状態に遷移する。
エラーの場合はリセットがかかるまでエラー状態にたまり続け、
onErrorがコールされ続ける。
外部からリセットするとonResetがコールされ、
それが成功すると非アクティブ状態に遷移する。
再びアクティブ状態にすることも可能ですが、
失敗するとまたエラー表示になります。
アクションのまとめ
onInitialize    初期化処理.コンポーネントの起動時に一度だけ呼ばれる.
onActivated    非アクティブ状態からアクティブ化されるとき1度だけ呼ばれる.
onExecute    アクティブ状態時に周期的に呼ばれる.
onDeactivated    アクティブ状態から非アクティブ化されるとき1度だけ呼ばれる.
onAborting    ERROR状態に入る前に1度だけ呼ばれる.
onReset        エラー状態からリセットされ非アクティブ状態に移行するときに1度だけ呼ばれる.
onError        エラー状態にいる間周期的に呼ばれる.
onFinalize    コンポーネントライフサイクルの終了時に1度だけ呼ばれる.
onStateUpdate    onExecuteの後毎回呼ばれる.
onRateChanged    ExecutionContextのrateが変更されたとき呼ばれる.
onStartup    ExecutionContextが実行を開始するとき1度だけ呼ばれる.
onShutdown    ExecutionContextが実行を停止するとき1度だけ呼ばれる.

サービスポート
何らかの機能(サービス)を提供したり使用したりするための仕組み
データポートに入力ポートと出力ポートに分かれているように
サービスにも出力する側と受け取る側がある
サービスを提供するポート(サービスプロバイダ)と
サービスを使用するポート(サービスコンシューマ)がある。
これらのポートから接続してサービスコンシューマから要求を出すことにより
サービスプロバイダの提供するサービスを使用できる。
任意で複数のサービスインターフェースを使用できる。

コンフィギュレーション
RTコンポーネントのパラメータ管理の仕組み
RTCLinkなどからパラメータを変更したり 
パラメータの初期値の読み込みができたり
コンフィギュレーションをセットで複数もち、
状況に応じたパラメータを使い分けることもできます
パラメータは名前と値の組み合わせで管理
このパラメータは任意の数だけもつことが可能
このパラメータ群のことをコンフィギュレーションセット
といいこれにも名前がつきます。
このコンフィギュレーションセットも任意の数だけもつことが可能
また、使う人は複数のコンフィギュレーションセットの中から
使用したいものを一つだけ選び有効にすることができる。
これをアクティブコンフィギュレーションといい
セット名を変更することにより自由に変更することができる
データポートは動的に動くもの
コンフィギュレーションは静的に動くものに向いている。 

今回はこんな感じで
RTコンポーネントはこの4つを変更することにより、
動作している様子。
この文章に意義があるのかは置いといて
私的にはこのようにまとめてみた方が脳の整理になる
リハーサル?
長期記憶にいれるための脳内整理?

一応関係している用語もまとめてみた。
流石に140文字には納めずらいからね。

IDL(Interface Definition Language)
インターフェース定義言語
ソフトウェアコンポーネント間のインターフェースを記述のときに使用される言語
プログラミング言語に依存しない形式で記述するため
異なる言語でかかれたソフトウェア間の通信を可能にする

CORBA
OMGが定めた分散オブジェクト技術の仕様
異機種分散環境上のオブジェクト(プログラム部品)間で 
メッセージを交換するためソフトウェア(ORB)の仕様を定めている

参考資料
はじめてのコンポーネント指向ロボットアプリケーション開発 RTミドルウェア

つっこみどころがあるようなら是非コメントをよろしくお願いします。
毎回、専門話のまとめにはしたくはないなー。
ではまた次回。

PR
コメントを投稿する

HN
タイトル
メールアドレス
URL
コメント
パスワード
カレンダー

12 2025/01 02
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア

最新CM

[06/05 ProrUnioroMut]
[05/07 Axonryunene]
[08/03 にゅん。]
[07/24 にゅん。]
[07/19 にゅん。]
最新TB

プロフィール

HN:
ねこう・へば~
性別:
男性
バーコード

ブログ内検索

カウンター

アクセス解析

お天気情報