[openrtm-users 02997] Re: OpenRTM-aist関連仕様の提案[クオータニオンデータ型]

Shunichi Nozawa nozawa @ jsk.t.u-tokyo.ac.jp
2013年 12月 25日 (水) 23:17:00 JST


東京大学の野沢です。

クォータニオンに関して、大変遅ればせながら返信させていただきたく存じます。


姿勢表現に関しては、末広先生ご指摘の通り
既存のOrientation3D、Pose3Dでは混乱が多く問題だと思います。

一方姿勢表現としてのクォータニオンの導入は、
私が提案者でもありぜひ採用いただけますと助かります。

メリットとしては関谷様ご指摘の

> 1.4要素なので,回転行列(3x3)に比べ,通信量・メモリ使用量が少ない
> 2.オイラー角のように特異点がない
> 3. 回転を積み重ねていった場合の誤差が少ない(正規化が可能)

と同様のことを考えておりました。

一方、議論されているデメリットとしては、
1. 内部で3x3行列を使用している場合、変換が必要
2. 仮にクォータニオン・3x3行列を採用する場合、
   同じ状態を表すのに複数のデータ型をもつことになる
などがあるように思います。

こちらに関して意見を述べさせていただきますと、

> でも,多くの場合,行列に変換してから処理することが多いと
> 想像するのですがいかがでしょうか.

オイラー角・3x3行列・クォータニオンのどれがコード内で
用いられているか、客観的に判断しづらいところがあると考えております。
実際、私が直近でよく目にするコードでは、クォータニオンがかなり使われております。

また、

> この得失を比較して,データは9つになるけど行列の方が
> 汎用性が高いのでデータ交換用には良いのではないかと
> 考えているのですがいかがでしょうか?

オイラー角でなければ、3x3行列同様クォータニオンも
表現上の特異点がない点で汎用性は高いと思います。

データ型の乱立は問題ではありますが、関谷様・ジェフ様ご指摘のとおり
いくつかの基本的な型を用意しておくと、かえって独自型を
個々人が定義することが避けられ、混乱がないと考えております。


以上を考慮した私の意見としては、
(a) 今回の件では3x3行列とクォータニオン(もしかしたらその他もありえますが)で
    どちらも広く使われていると思いますので、複数が採用するのはいかがでしょうか。
(b) また、その際に他の一切のOpenRTM以外のライブラリに依存することなく
    それらの間の変換ができることが重要に思います。
    OpenHRP3を拝見したところ
    https://openrtp.org/svn/hrg/openhrp/3.1/trunk/hrplib/hrpUtil/Eigen3d.cpp
    姿勢表現間での変換関数を用意しているようです。
    演算までする必要なく、変換のみで大丈夫かと思いますが、
    こういったものをOpenRTMの中に取り込んでいくこともご検討いただきたく存じます。
    (いれるとすればcoilなどになりますでしょうか)

となります。
以上、ご検討いただけますと幸いです。

2013年11月22日 16:51 Makoto Sekiya <Makoto_Sekiya @ n.f.rd.honda.co.jp>:
> 末廣先生
>
> 本田技術研究所 関谷です。
>
> クオータニオンデータ型は必要だと思います。
> 弊社では過去,姿勢表現に回転行列を用いていましたが
> 下記の理由から現在ではクオータニオンに統一しています。
>
> 1.4要素なので,回転行列(3x3)に比べ,通信量・メモリ使用量が少ない
> 2.オイラー角のように特異点がない
> 3. 回転を積み重ねていった場合の誤差が少ない(正規化が可能)
>
> また,私どももExtendedDataTypes.idlを参考にクオータニオンデータ型を定義
> しており,それは岡田先生の提案と同様の表現となっております。
>
> 少なくともよく知られたデータ型に関しては,データの要素・並び順などの標準
> があると独自型の乱立を防ぐことができると思います。
>
> よろしくお願いします。
>
> --
> 関谷  眞
> 株式会社 本田技術研究所 基礎技術研究センター
> 第5研究室 第2ブロック
> 351-0188 埼玉県和光市本町8-1
> tel: (048)461-2511 代表
> mail: Makoto_Sekiya @ n.f.rd.honda.co.jp
>
> _______________________________________________
> openrtm-users mailing list
> openrtm-users @ openrtm.org
> http://www.openrtm.org/mailman/listinfo/openrtm-users


More information about the openrtm-users mailing list