<div dir="ltr">産総研のジェフです。<div><br></div><div>問題はデータ型が多いということではないと思います。</div><div><br></div><div>本当の問題はインターフェースレベルでインターフェースを指定していません。インターフェースをデータ型レベル(いわゆるポートを個別に指定していること)で指定すると、細かいことで細かい異なりになると思います。</div><div><br></div><div>
「アームコンポーネントはこの三つのポートで、ポートはこのデータ型を使う」のような指定がもっと互換性ができるでしょうかな。</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-01-27 Kei Okada <span dir="ltr"><<a href="mailto:k-okada@jsk.t.u-tokyo.ac.jp" target="_blank">k-okada@jsk.t.u-tokyo.ac.jp</a>></span><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">岡田です.<br>
<br>
お世話になります.<br>
いまさらですが,僕も感覚的には様々なデータ型を許すと結局データ型間の変換が面倒になる,<br>
あるいは,変換時にバグが生じる等のデメリットがあり,どれかのデータ型に固定するのがいいと<br>
思っているんですが,他の方々の意見にあるように,それぞれ常識として思っているデータ型が違う<br>
ので,難しいという事だと思います.<br>
<br>
とうことで,データ間型の変換を簡単にする,あるいは,バグをなくすために変換の関数を用意するか,<br>
変換するコンポーネントを用意するとか,そういうことがあるといいかなと思ったんですが,いかがでしょうか.<br>
<br>
<br>
<br>
<br>
<br>
2014/1/26 Ando Noriaki <<a href="mailto:n-ando@aist.go.jp">n-ando@aist.go.jp</a>>:<br>
<div class="HOEnZb"><div class="h5">> OpenRTM-users MLの皆様<br>
><br>
> 産総研 安藤です<br>
><br>
> 先日東京大学の野沢さんからご提案があり、RTM国際標準化委員会で承認された<br>
> クオータニオンのデータ型ですが、OpenRTM-aistのExtendedDataTypes.idlに<br>
> 追加したことをお知らせいたします。<br>
> # 現在のところtrunkに追加しております。インターフェースが変更となるので<br>
> #1.1のブランチにはマージしておりません。<br>
><br>
> 前回の委員会で再提案となったロボットアームインターフェース仕様などについても<br>
> 引き続きご議論いただければと思います。<br>
> 次回のRTM標準化委員会は4月10日の予定です。よろしくお願いいたします。<br>
><br>
><br>
><br>
> Index: src/lib/rtm/idl/ExtendedDataTypes.idl<br>
> ===================================================================<br>
> --- src/lib/rtm/idl/ExtendedDataTypes.idl (リビジョン 2400)<br>
> +++ src/lib/rtm/idl/ExtendedDataTypes.idl (リビジョン 2401)<br>
> @@ -694,6 +694,28 @@<br>
>          Time tm;<br>
>          OAP data;<br>
>      };<br>
> +<br>
> +  /*!<br>
> +   * @struct Quaternion<br>
> +   * @brief Data type for Quaternion<br>
> +   */<br>
> +  struct Quaternion<br>
> +  {<br>
> +    double x;<br>
> +    double y;<br>
> +    double z;<br>
> +    double w;<br>
> +  };<br>
> +<br>
> +  /*!<br>
> +   * @struct TimedQuaternion<br>
> +   * @brief Timed version data type for Quaternion<br>
> +   */<br>
> +  struct TimedQuaternion<br>
> +  {<br>
> +    Time tm;<br>
> +    Quaternion data;<br>
> +  };<br>
>  };<br>
><br>
>  #endif // ExtendedDataTypes_idl<br>
><br>
> 2013年12月25日 23:17 Shunichi Nozawa <<a href="mailto:nozawa@jsk.t.u-tokyo.ac.jp">nozawa@jsk.t.u-tokyo.ac.jp</a>>:<br>
>> 東京大学の野沢です。<br>
>><br>
>> クォータニオンに関して、大変遅ればせながら返信させていただきたく存じます。<br>
>><br>
>><br>
>> 姿勢表現に関しては、末広先生ご指摘の通り<br>
>> 既存のOrientation3D、Pose3Dでは混乱が多く問題だと思います。<br>
>><br>
>> 一方姿勢表現としてのクォータニオンの導入は、<br>
>> 私が提案者でもありぜひ採用いただけますと助かります。<br>
>><br>
>> メリットとしては関谷様ご指摘の<br>
>><br>
>>> 1.4要素なので,回転行列(3x3)に比べ,通信量・メモリ使用量が少ない<br>
>>> 2.オイラー角のように特異点がない<br>
>>> 3. 回転を積み重ねていった場合の誤差が少ない(正規化が可能)<br>
>><br>
>> と同様のことを考えておりました。<br>
>><br>
>> 一方、議論されているデメリットとしては、<br>
>> 1. 内部で3x3行列を使用している場合、変換が必要<br>
>> 2. 仮にクォータニオン・3x3行列を採用する場合、<br>
>>    同じ状態を表すのに複数のデータ型をもつことになる<br>
>> などがあるように思います。<br>
>><br>
>> こちらに関して意見を述べさせていただきますと、<br>
>><br>
>>> でも,多くの場合,行列に変換してから処理することが多いと<br>
>>> 想像するのですがいかがでしょうか.<br>
>><br>
>> オイラー角・3x3行列・クォータニオンのどれがコード内で<br>
>> 用いられているか、客観的に判断しづらいところがあると考えております。<br>
>> 実際、私が直近でよく目にするコードでは、クォータニオンがかなり使われております。<br>
>><br>
>> また、<br>
>><br>
>>> この得失を比較して,データは9つになるけど行列の方が<br>
>>> 汎用性が高いのでデータ交換用には良いのではないかと<br>
>>> 考えているのですがいかがでしょうか?<br>
>><br>
>> オイラー角でなければ、3x3行列同様クォータニオンも<br>
>> 表現上の特異点がない点で汎用性は高いと思います。<br>
>><br>
>> データ型の乱立は問題ではありますが、関谷様・ジェフ様ご指摘のとおり<br>
>> いくつかの基本的な型を用意しておくと、かえって独自型を<br>
>> 個々人が定義することが避けられ、混乱がないと考えております。<br>
>><br>
>><br>
>> 以上を考慮した私の意見としては、<br>
>> (a) 今回の件では3x3行列とクォータニオン(もしかしたらその他もありえますが)で<br>
>>     どちらも広く使われていると思いますので、複数が採用するのはいかがでしょうか。<br>
>> (b) また、その際に他の一切のOpenRTM以外のライブラリに依存することなく<br>
>>     それらの間の変換ができることが重要に思います。<br>
>>     OpenHRP3を拝見したところ<br>
>>     <a href="https://openrtp.org/svn/hrg/openhrp/3.1/trunk/hrplib/hrpUtil/Eigen3d.cpp" target="_blank">https://openrtp.org/svn/hrg/openhrp/3.1/trunk/hrplib/hrpUtil/Eigen3d.cpp</a><br>
>>     姿勢表現間での変換関数を用意しているようです。<br>
>>     演算までする必要なく、変換のみで大丈夫かと思いますが、<br>
>>     こういったものをOpenRTMの中に取り込んでいくこともご検討いただきたく存じます。<br>
>>     (いれるとすればcoilなどになりますでしょうか)<br>
>><br>
>> となります。<br>
>> 以上、ご検討いただけますと幸いです。<br>
>><br>
>> 2013年11月22日 16:51 Makoto Sekiya <<a href="mailto:Makoto_Sekiya@n.f.rd.honda.co.jp">Makoto_Sekiya@n.f.rd.honda.co.jp</a>>:<br>
>>> 末廣先生<br>
>>><br>
>>> 本田技術研究所 関谷です。<br>
>>><br>
>>> クオータニオンデータ型は必要だと思います。<br>
>>> 弊社では過去,姿勢表現に回転行列を用いていましたが<br>
>>> 下記の理由から現在ではクオータニオンに統一しています。<br>
>>><br>
>>> 1.4要素なので,回転行列(3x3)に比べ,通信量・メモリ使用量が少ない<br>
>>> 2.オイラー角のように特異点がない<br>
>>> 3. 回転を積み重ねていった場合の誤差が少ない(正規化が可能)<br>
>>><br>
>>> また,私どももExtendedDataTypes.idlを参考にクオータニオンデータ型を定義<br>
>>> しており,それは岡田先生の提案と同様の表現となっております。<br>
>>><br>
>>> 少なくともよく知られたデータ型に関しては,データの要素・並び順などの標準<br>
>>> があると独自型の乱立を防ぐことができると思います。<br>
>>><br>
>>> よろしくお願いします。<br>
>>><br>
>>> --<br>
>>> 関谷  眞<br>
>>> 株式会社 本田技術研究所 基礎技術研究センター<br>
>>> 第5研究室 第2ブロック<br>
>>> 351-0188 埼玉県和光市本町8-1<br>
>>> tel: (048)461-2511 代表<br>
>>> mail: <a href="mailto:Makoto_Sekiya@n.f.rd.honda.co.jp">Makoto_Sekiya@n.f.rd.honda.co.jp</a><br>
>>><br>
>>> _______________________________________________<br>
>>> openrtm-users mailing list<br>
>>> <a href="mailto:openrtm-users@openrtm.org">openrtm-users@openrtm.org</a><br>
>>> <a href="http://www.openrtm.org/mailman/listinfo/openrtm-users" target="_blank">http://www.openrtm.org/mailman/listinfo/openrtm-users</a><br>
>> _______________________________________________<br>
>> openrtm-users mailing list<br>
>> <a href="mailto:openrtm-users@openrtm.org">openrtm-users@openrtm.org</a><br>
>> <a href="http://www.openrtm.org/mailman/listinfo/openrtm-users" target="_blank">http://www.openrtm.org/mailman/listinfo/openrtm-users</a><br>
> _______________________________________________<br>
> openrtm-users mailing list<br>
> <a href="mailto:openrtm-users@openrtm.org">openrtm-users@openrtm.org</a><br>
> <a href="http://www.openrtm.org/mailman/listinfo/openrtm-users" target="_blank">http://www.openrtm.org/mailman/listinfo/openrtm-users</a><br>
_______________________________________________<br>
openrtm-users mailing list<br>
<a href="mailto:openrtm-users@openrtm.org">openrtm-users@openrtm.org</a><br>
<a href="http://www.openrtm.org/mailman/listinfo/openrtm-users" target="_blank">http://www.openrtm.org/mailman/listinfo/openrtm-users</a><br>
</div></div></blockquote></div><br></div>