×
[PR]上記の広告は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 コメントを投稿する
この記事のトラックバックURL: << 395 2010 11 06 鬱な話について | ブログトップ | 393 2010 10 05 2010秋の新アニメについて>> | カレンダー
カテゴリー
フリーエリア
最新CM
[06/05 ProrUnioroMut]
[05/07 Axonryunene]
[08/03 にゅん。]
[07/24 にゅん。]
[07/19 にゅん。]
最新記事
(12/24)
(11/27)
(11/12)
(11/06)
(10/25)
(10/24) 最新TB
プロフィール
HN:
ねこう・へば~
性別:
男性
ブログ内検索
最古記事
(06/19)
(06/19)
(06/19)
(06/19)
(06/23)
(06/23) カウンター
アクセス解析
|