[openrtm-users 00866] RTM1.0RC1のバッファ換装について

4 posts / 0 new
Last post
root
Offline
Last seen: 3 days 13 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00866] RTM1.0RC1のバッファ換装について

NECシステムテクノロジーの石田です。
お世話になります。

RTM1.0RC1のポートで利用するバッファに関する件です。

現在、RTM0.4.2において、バッファを自前のバッファに換装して
利用しております。
RTM1.0RC1ではバッファがRingBuffer固定となっており、
正式リリースまでに換装可能に修正されるように聞いておりますが、
その方法について確認させていただきたく投稿致します。

現状のRTM1.0RC1では出力ポートにおいてはConnectorでバッファが
作成され、例えばOutPortPushConnector::createBuffer(Profile&)
にてProfileからbuffer_typeの名前を問い合わせ、Factoryに
登録された当該buffer_typeのObjectを作成するようになっています。
一方の入力ポートにおいてはInPortBase::init()でバッファが
作成され"ring_buffer"固定の名前でFactoryに作成を依頼しています。

さて、入力ポート側の処理が出力ポートと同様にProfile.propertyから
buffer_typeを参照するように変更されるとの前提で以下は正しいでしょうか。

1)Factoryに独自バッファの登録をFactoryに対して行う必要がありますが
  タイミングは独自バッファを利用するPortのregisterを行う前までに
  行えばよいと考えていますが正しいでしょうか。

2)プロパティに"buffer_type"として自前のバッファ名を記載する
  必要がありますが、どのタイミングで記載すればよいでしょうか。
  なお、ポートの接続作業はCベースのプログラムで行ったり
  RTSystemEditorで行ったりします。
  ポート作成直後にaddProperty()を呼び出す対応を検討して
  おりますが正しいでしょうか。
  もしくはポートのコンストラクタにconst char* buffer_type
  が追加されるなどの変更を予定されていますでしょうか。

Undefined
root
Offline
Last seen: 3 days 13 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00867] RTM1.0RC1のバッファ換装について

NECシステムテクノロジーの石田様

産総研 安藤です

> RTM1.0RC1のポートで利用するバッファに関する件です。
> 現在、RTM0.4.2において、バッファを自前のバッファに換装して
> 利用しております。
> RTM1.0RC1ではバッファがRingBuffer固定となっており、
> 正式リリースまでに換装可能に修正されるように聞いておりますが、
> その方法について確認させていただきたく投稿致します。

やはり自前のバッファを実装されている方がいらっしゃいましたか。
0.4までは、コンパイル時にバッファのタイプが決まってしまうので、
1.0では接続時に動的に変更可能にしたいと思い、構造がだいぶ
変わってしまっております。申し訳ございません。

> 現状のRTM1.0RC1では出力ポートにおいてはConnectorでバッファが
> 作成され、例えばOutPortPushConnector::createBuffer(Profile&)
> にてProfileからbuffer_typeの名前を問い合わせ、Factoryに
> 登録された当該buffer_typeのObjectを作成するようになっています。
> 一方の入力ポートにおいてはInPortBase::init()でバッファが
> 作成され"ring_buffer"固定の名前でFactoryに作成を依頼しています。
>
> さて、入力ポート側の処理が出力ポートと同様にProfile.propertyから
> buffer_typeを参照するように変更されるとの前提で以下は正しいでしょうか。
>
> 1)Factoryに独自バッファの登録をFactoryに対して行う必要がありますが
>   タイミングは独自バッファを利用するPortのregisterを行う前までに
>   行えばよいと考えていますが正しいでしょうか。

はい、そのとおりで結構です。
基本的には、バッファをsoまたはDLLとして作成しておいて、
rtc.confのmodules.preloadで指定してロードさせる方法を取りたいと思います。

> 2)プロパティに"buffer_type"として自前のバッファ名を記載する
>   必要がありますが、どのタイミングで記載すればよいでしょうか。
>   なお、ポートの接続作業はCベースのプログラムで行ったり
>   RTSystemEditorで行ったりします。
>   ポート作成直後にaddProperty()を呼び出す対応を検討して
>   おりますが正しいでしょうか。
>   もしくはポートのコンストラクタにconst char* buffer_type
>   が追加されるなどの変更を予定されていますでしょうか。

この部分がまだつながっておらず、バッファの動的切り替えが実現できていません。
buffer_typeを与えるタイミングとしては、

1. confファイルに記述して、起動時に与える。
2.接続時にConnectorProfileを通して与える。

の2通りを考えております。
今のところ、コンストラクタにバッファタイプを渡すように変更する予定はないのですが、
コードに直接書きたい場合は、1.の応用として、.cppファイルの先頭にある、
_spec[] の配列として定義してあるconfiguration情報内に埋め込むことは可能です。

この他にも、何かご意見・ご要望等ございましたらお知らせください。

root
Offline
Last seen: 3 days 13 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00868] RTM1.0RC1のバッファ換装について

安藤様

NECシステムテクノロジーの石田です。回答ありがとうございます。

1)のバッファの登録については了解いたしました。

2)のプロパティへのバッファの指定方法についてですが、
confファイルや_spec[] の配列への記載はコンポーネントの
プロファイルの定義であり、ポートのプロファイルでは無いので
やりにくいと考えております。コンポーネントが持つ
全てのポートが同じ型のバッファを使うとは限らないので、
コンポーネントプロファイルに記載する場合、ポート名と
バッファ名のペアで記載したいところですが、RTM1.0RC1では
それを解釈できる実装にはなっておりません。
コンストラクタにバッファ名が渡せない場合には、ポートの
プロパティに直接指示をするためにポート生成直後に
addProperty()でセットしたいのですが、protectedメソッドの
ため、外部からセット出来ません。このため、ポートクラスを
派生して自前のポートクラスを作り、派生クラス側でセットする
ことを考えております。RTSystemEditorで無指定で接続しても
良いようにデフォルトをプログラム上でセットしておきたい
からです。

上記のような事情ですが、より適切な実装があれば次の
RTMリリースに反映いただければその方針に合わせたい
と思います。どうぞよろしくお願いいたします。

root
Offline
Last seen: 3 days 13 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 00871] RTM1.0RC1のバッファ換装について

石田様

安藤です

> NECシステムテクノロジーの石田です。回答ありがとうございます。
>
> 1)のバッファの登録については了解いたしました。
>
> 2)のプロパティへのバッファの指定方法についてですが、
> confファイルや_spec[] の配列への記載はコンポーネントの
> プロファイルの定義であり、ポートのプロファイルでは無いので
> やりにくいと考えております。コンポーネントが持つ
> 全てのポートが同じ型のバッファを使うとは限らないので、
> コンポーネントプロファイルに記載する場合、ポート名と
> バッファ名のペアで記載したいところですが、RTM1.0RC1では
> それを解釈できる実装にはなっておりません。

次バージョンからはRTCBuilderが生成するコードでは、
register(In|Out)Port関数をonInitialize()に移動させる予定です。
これにより、confファイルや_spec[] で指定したPropertiesをPortに
渡すことができます。

> コンストラクタにバッファ名が渡せない場合には、ポートの
> プロパティに直接指示をするためにポート生成直後に
> addProperty()でセットしたいのですが、protectedメソッドの
> ため、外部からセット出来ません。このため、ポートクラスを
> 派生して自前のポートクラスを作り、派生クラス側でセットする
> ことを考えております。RTSystemEditorで無指定で接続しても
> 良いようにデフォルトをプログラム上でセットしておきたい
> からです。
>
> 上記のような事情ですが、より適切な実装があれば次の
> RTMリリースに反映いただければその方針に合わせたい
> と思います。どうぞよろしくお願いいたします。

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK