コミュニケーション知能コンポーネント共通インターフェースに関する議論

6 個の投稿 / 0 new
最終投稿
yosuke
オフライン
Last seen: 12年 3ヶ月 前
登録日: 2011-05-23 10:15
コミュニケーション知能コンポーネント共通インターフェースに関する議論

叩き台としての第1版はこちらにあります。 コミュニケーション知能コンポーネント規格(第1版)http://www.openrtm.org/OpenRTM-aist/documents/IRT_PJ/irt-spec-communication-ver1.pdf

拡張・改良について話し合いましょう。

まだ未解決の問題(一部):

・データ型が全てTimedOctetSeqなので、音声信号のフォーマットが違ってもリンクが繋がってしまう。

・構文解析などの言語処理の部分の規格(XMLへの追加アノテーション)をどうする?

・対話マネージャ用スクリプトのフォーマットを揃えることは可能か?

・サービスポートは作らないで良いのでしょうか?

などなど、ご意見お待ちしています。

未定義
yosuke
オフライン
Last seen: 12年 3ヶ月 前
登録日: 2011-05-23 10:15
テスト返信

返信のテストです。

yosuke
オフライン
Last seen: 12年 3ヶ月 前
登録日: 2011-05-23 10:15
返信への返信

返信への返信のテストです。

ysuga
オフライン
Last seen: 1年 7ヶ月 前
登録日: 2011-05-23 10:14
文字列型について

文字列型をTimedStringを使うのはどうでしょう.マルチバイト文字の場合,エンコーディング,エンディアンなどもろもろの問題があって,Stringのみだとすごく使いずらいです.かといってWString型でも非力だと思います.新しいバージョンは確認していませんが,以前のバージョンだと,上記の問題で苦労しました.文字列専用ポートに,エンコーディングやエンディアンの自動変換機能があるべきだと思いますがどうですか?

yosuke
オフライン
Last seen: 12年 3ヶ月 前
登録日: 2011-05-23 10:15
文字列型について

今の規格ではTimedStringを使うということになっています。

文字列については、実は規格の第1版が決まる直前までTimedWString型にしようと議論していたのですが、土壇場でTimedStringに変更したという経緯があります。

[Timed]WStringを使うとCORBAが自動でエンコーディングを変換してくれるのですが、この機能はCORBAの最近の規格に対応していないと使うことができません(omniORBには完全に実装されていますが、CORBAの実装によってまだばらつきがあるようです)。

またエンコーディングの自動変換機能をミドルウェア側に持たせてしまうと、ミドルウェア側が重くなってしまうという問題もあります。コミュニケーション知能としては欲しい機能ではありますが、例えばモータ制御コンポーネントなどを使う人達が使わない機能でメモリフットプリントが大きくなってしまうというのは申し訳ない、、、や、軽量のCORBA実装なども試みられている中でエンコーディングの自動変換も実装してくれ、というのはかなり大変そう、、、という理由で、変換が必要であればコンポーネント側にその機能を持たせようという判断を現状ではしています。

エンコーディングに関する一応のルールとしては、

・国際化文字列は基本はUTF-8を使う

・TimedStringの中にはXMLデータを書いても良い、その場合はencodingタグでエンコーディングを指定しても良い

となっています。

エンディアンの自動変換に関してはミドルウェアレベルで既に実装されていると思っていたのですが、どうでしょうか?

土壇場で上記のような決め方をしたのは良いものの、C++とPythonに関してはString型からWString型へのキャストが容易にできるものの、Javaでは結構難しいという話も聞きます。

それも含めて良い落とし所はないものでしょうか?

yosuke
オフライン
Last seen: 12年 3ヶ月 前
登録日: 2011-05-23 10:15
文字列型について

Javaでキャストする例も作ってみました(SimpleIOを改造しています)。

https://github.com/yosuke/openrtm-java-unicode-example/commit/de34e57fd855c03b9ed94979594718c88ae6628c

汚いですね、、、。 この程度の処理であればミドルウェアの重さには関係ないので、ミドルウェア側に取り込ませて隠蔽してしまっても良さそうですね。

コメントを投稿するにはログインまたはユーザー登録を行ってください

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

Webサイト統計
ユーザ数:2160
プロジェクト統計
RTコンポーネント307
RTミドルウエア35
ツール22
文書・仕様書2

Choreonoid

モーションエディタ/シミュレータ

OpenHRP3

動力学シミュレータ

OpenRTP

統合開発プラットフォーム

産総研RTC集

産総研が提供するRTC集

TORK

東京オープンソースロボティクス協会

DAQ-Middleware

ネットワーク分散環境でデータ収集用ソフトウェアを容易に構築するためのソフトウェア・フレームワーク