[openrtm-users 00283] TimedDoubleSeq型ポートで長さ1のときの不具合

5 個の投稿 / 0 new
最終投稿
root
オフライン
Last seen: 3日 6時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00283] TimedDoubleSeq型ポートで長さ1のときの不具合

産総研の中岡です。

OpenHRPのコントローラブリッジで、センサ値や指令値のやりとりに
TimedDoubleSeq型のポートを使っているのですが、この配列の長さがちょうど1
のときに、ポート間で正しくデータがやりとりされません。(ゴミのような値に
なってしまいます。)

同じプログラムで長さが2以上の場合、正常に動作します。

OpenRTMのバグかもしれないので、症状をご確認いただければ幸いです。
よろしくお願いします。

未定義
root
オフライン
Last seen: 3日 6時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00285] TimedDoubleSeq型ポートで長さ1のときの不具合

産総研 清水です。

SimpleIOのデータ型をTimedDoubleSeqにして、
length(1)のデータの送受信をしてみましたが、
こちらでは問題ありませんでした。

ミドルウェアのバグかどうか切り分けのために、
お手数ですが、SimpleIOを以下のように改造して、
試してみて頂けないでしょうか?
もし、これで同様の症状が出るようであれば、
具体的な使用方法等を御報告ください。

[テストコード]
- ConsoleIn:
RTC::ReturnCode_t ConsoleIn::onExecute(RTC::UniqueId ec_id){
m_out.data.length(1);
m_out.data[0] = ((double)dummy)/1000.0;
m_outOut.write(m_out);
dummy++;
return RTC::RTC_OK;
}

- ConsoleOut:
RTC::ReturnCode_t ConsoleOut::onExecute(RTC::UniqueId ec_id){
m_inIn.read();
if(m_in.data.length() != 1) return RTC::RTC_ERROR;
std::cout << "Received: " << m_in.data[0] << std::endl;
return RTC::RTC_OK;
}

On Wed, 28 Nov 2007 23:31:17 +0900
Shinichiro NAKAOKA wrote:

>
> 産総研の中岡です。
>
> OpenHRPのコントローラブリッジで、センサ値や指令値のやりとりに
> TimedDoubleSeq型のポートを使っているのですが、この配列の長さがちょうど1
> のときに、ポート間で正しくデータがやりとりされません。(ゴミのような値に
> なってしまいます。)
>
> 同じプログラムで長さが2以上の場合、正常に動作します。
>
> OpenRTMのバグかもしれないので、症状をご確認いただければ幸いです。
> よろしくお願いします。
>
>

root
オフライン
Last seen: 3日 6時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00290] TimedDoubleSeq型ポートで長さ1のときの不具合

安藤です

調査ありがとうございます>清水さん

>中岡様

シーケンス型にデータを入れるときに、あらかじめlengthを1にセットしてますか?
受け取ったデータのlength()はいくつになっていますでしょうか?
そのあたりもおしえていただけませんか。

よろしくお願いいたします。

07/11/29 に Masayuki Shimizu さんは書きました:
> 産総研 清水です。
>
> SimpleIOのデータ型をTimedDoubleSeqにして、
> length(1)のデータの送受信をしてみましたが、
> こちらでは問題ありませんでした。
>
> ミドルウェアのバグかどうか切り分けのために、
> お手数ですが、SimpleIOを以下のように改造して、
> 試してみて頂けないでしょうか?
> もし、これで同様の症状が出るようであれば、
> 具体的な使用方法等を御報告ください。
>
> [テストコード]
> - ConsoleIn:
> RTC::ReturnCode_t ConsoleIn::onExecute(RTC::UniqueId ec_id){
> m_out.data.length(1);
> m_out.data[0] = ((double)dummy)/1000.0;
> m_outOut.write(m_out);
> dummy++;
> return RTC::RTC_OK;
> }
>
> - ConsoleOut:
> RTC::ReturnCode_t ConsoleOut::onExecute(RTC::UniqueId ec_id){
> m_inIn.read();
> if(m_in.data.length() != 1) return RTC::RTC_ERROR;
> std::cout << "Received: " << m_in.data[0] << std::endl;
> return RTC::RTC_OK;
> }
>
> On Wed, 28 Nov 2007 23:31:17 +0900
> Shinichiro NAKAOKA wrote:
>
> >
> > 産総研の中岡です。
> >
> > OpenHRPのコントローラブリッジで、センサ値や指令値のやりとりに
> > TimedDoubleSeq型のポートを使っているのですが、この配列の長さがちょうど1
> > のときに、ポート間で正しくデータがやりとりされません。(ゴミのような値に
> > なってしまいます。)
> >
> > 同じプログラムで長さが2以上の場合、正常に動作します。
> >
> > OpenRTMのバグかもしれないので、症状をご確認いただければ幸いです。
> > よろしくお願いします。
> >
> >

root
オフライン
Last seen: 3日 6時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00305] TimedDoubleSeq型ポートで長さ1のときの不具合

産総研の中岡です。

先週私が質問した件ですが、その後の返答が遅くなってしまいすみません。

佐々木さんより omniORB 4.0.6 の不具合の件が投稿されていましたが、私も
UbuntuでomniORB 4.0.6 でしたので、omniORBを 4.0.7 にあげたところ、不具合
が直りました。

というわけで今回の私が遭遇した不具合をまとめますと、
omniORB 4.0.6 で OpenRTM の TimedDoubleSeq ポートを使うと、シーケンスの
長さが 1 のときは値がおかしくなるが、2以上の時は大丈夫(実際には長さ2と
29で確認)、omniORB 4.0.7 では長さ1でも大丈夫、ということになります。

清水さん、安藤さん、ご対応ありがとうございました。
また、佐々木さんの情報で原因が分かりました。
ありがとうございました。

"Ando Noriaki" wrote:
> 安藤です
>
> 調査ありがとうございます>清水さん
>
> >中岡様
>
> シーケンス型にデータを入れるときに、あらかじめlengthを1にセットしてま
すか?
> 受け取ったデータのlength()はいくつになっていますでしょうか?
> そのあたりもおしえていただけませんか。
>
> よろしくお願いいたします。
>
>
> 07/11/29 に Masayuki Shimizu さんは書きま
した:
> > 産総研 清水です。
> >
> > SimpleIOのデータ型をTimedDoubleSeqにして、
> > length(1)のデータの送受信をしてみましたが、
> > こちらでは問題ありませんでした。
> >
> > ミドルウェアのバグかどうか切り分けのために、
> > お手数ですが、SimpleIOを以下のように改造して、
> > 試してみて頂けないでしょうか?
> > もし、これで同様の症状が出るようであれば、
> > 具体的な使用方法等を御報告ください。
> >
> > [テストコード]
> > - ConsoleIn:
> > RTC::ReturnCode_t ConsoleIn::onExecute(RTC::UniqueId ec_id){
> > m_out.data.length(1);
> > m_out.data[0] = ((double)dummy)/1000.0;
> > m_outOut.write(m_out);
> > dummy++;
> > return RTC::RTC_OK;
> > }
> >
> > - ConsoleOut:
> > RTC::ReturnCode_t ConsoleOut::onExecute(RTC::UniqueId ec_id){
> > m_inIn.read();
> > if(m_in.data.length() != 1) return RTC::RTC_ERROR;
> > std::cout << "Received: " << m_in.data[0] << std::endl;
> > return RTC::RTC_OK;
> > }
> >
> > On Wed, 28 Nov 2007 23:31:17 +0900
> > Shinichiro NAKAOKA wrote:
> >
> > >
> > > 産総研の中岡です。
> > >
> > > OpenHRPのコントローラブリッジで、センサ値や指令値のやりとりに
> > > TimedDoubleSeq型のポートを使っているのですが、この配列の長さがちょ
うど1
> > > のときに、ポート間で正しくデータがやりとりされません。(ゴミのよう
な値に
> > > なってしまいます。)
> > >
> > > 同じプログラムで長さが2以上の場合、正常に動作します。
> > >
> > > OpenRTMのバグかもしれないので、症状をご確認いただければ幸いです。
> > > よろしくお願いします。
> > >
> > >
> > > --
> > > 中岡 慎一郎
> > > 産業技術総合研究所 知能システム研究部門
> > > ヒューマノイド研究グループ
> > > Phone: 029-861-5161 Fax: 029-861-5444
> > >
> > >
> >
> >
> > --------------------
> > Masayuki Shimizu
> >
> > Postdoctoral Fellow
> > Task Intelligence Research Group
> > Intelligent Systems Research Institute
> > National Institute of
> > Advanced Industrial Science and Technology (AIST)
> > Central 2, 1-1-1, Umezono, Tsukuba, Ibaraki 305-8568, JAPAN
> > Tel: +81-29-861-5952
> > Fax: +81-29-861-5971
> > Email: masayuki.shimizu@aist.go.jp
> > chaser@ieee.org
> > URL: http://unit.aist.go.jp/is/taskint/
> >
> >
>
>

root
オフライン
Last seen: 3日 6時間 前
登録日: 2009-06-23 14:31
[openrtm-users 00306] TimedDoubleSeq型ポートで長さ1のときの不具合

中岡様

安藤です

> 先週私が質問した件ですが、その後の返答が遅くなってしまいすみません。
>
> 佐々木さんより omniORB 4.0.6 の不具合の件が投稿されていましたが、私も
> UbuntuでomniORB 4.0.6 でしたので、omniORBを 4.0.7 にあげたところ、不具合
> が直りました。
>
> というわけで今回の私が遭遇した不具合をまとめますと、
> omniORB 4.0.6 で OpenRTM の TimedDoubleSeq ポートを使うと、シーケンスの
> 長さが 1 のときは値がおかしくなるが、2以上の時は大丈夫(実際には長さ2と
> 29で確認)、omniORB 4.0.7 では長さ1でも大丈夫、ということになります。
>
> 清水さん、安藤さん、ご対応ありがとうございました。
> また、佐々木さんの情報で原因が分かりました。
> ありがとうございました。

Webページの「ダウンロード」ページにその旨追記しました。

情報ありがとうございました。>佐々木さん、中岡さん

>
>
> "Ando Noriaki" wrote:
> > 安藤です
> >
> > 調査ありがとうございます>清水さん
> >
> > >中岡様
> >
> > シーケンス型にデータを入れるときに、あらかじめlengthを1にセットしてま
> すか?
> > 受け取ったデータのlength()はいくつになっていますでしょうか?
> > そのあたりもおしえていただけませんか。
> >
> > よろしくお願いいたします。
> >
> >
> > 07/11/29 に Masayuki Shimizu さんは書きま
> した:
> > > 産総研 清水です。
> > >
> > > SimpleIOのデータ型をTimedDoubleSeqにして、
> > > length(1)のデータの送受信をしてみましたが、
> > > こちらでは問題ありませんでした。
> > >
> > > ミドルウェアのバグかどうか切り分けのために、
> > > お手数ですが、SimpleIOを以下のように改造して、
> > > 試してみて頂けないでしょうか?
> > > もし、これで同様の症状が出るようであれば、
> > > 具体的な使用方法等を御報告ください。
> > >
> > > [テストコード]
> > > - ConsoleIn:
> > > RTC::ReturnCode_t ConsoleIn::onExecute(RTC::UniqueId ec_id){
> > > m_out.data.length(1);
> > > m_out.data[0] = ((double)dummy)/1000.0;
> > > m_outOut.write(m_out);
> > > dummy++;
> > > return RTC::RTC_OK;
> > > }
> > >
> > > - ConsoleOut:
> > > RTC::ReturnCode_t ConsoleOut::onExecute(RTC::UniqueId ec_id){
> > > m_inIn.read();
> > > if(m_in.data.length() != 1) return RTC::RTC_ERROR;
> > > std::cout << "Received: " << m_in.data[0] << std::endl;
> > > return RTC::RTC_OK;
> > > }
> > >
> > > On Wed, 28 Nov 2007 23:31:17 +0900
> > > Shinichiro NAKAOKA wrote:
> > >
> > > >
> > > > 産総研の中岡です。
> > > >
> > > > OpenHRPのコントローラブリッジで、センサ値や指令値のやりとりに
> > > > TimedDoubleSeq型のポートを使っているのですが、この配列の長さがちょ
> うど1
> > > > のときに、ポート間で正しくデータがやりとりされません。(ゴミのよう
> な値に
> > > > なってしまいます。)
> > > >
> > > > 同じプログラムで長さが2以上の場合、正常に動作します。
> > > >
> > > > OpenRTMのバグかもしれないので、症状をご確認いただければ幸いです。
> > > > よろしくお願いします。
> > > >
> > > >

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

ダウンロード

最新バージョン : 2.0.1-RELESE

統計

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

Choreonoid

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

OpenHRP3

動力学シミュレータ

OpenRTP

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

産総研RTC集

産総研が提供するRTC集

TORK

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

DAQ-Middleware

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