今回のテーマは「Tutorial: Geometric Computing in Computer Graphics using Conformal Geometric Algebra, Dietmar Hildenbrand」です。基礎を終えて応用の範囲へ飛び出していきます。ロボットアームの例と、点群から平面・球面を求める例が出てきます。
勉強会の内容
-
- Application1(ロボットアームの先端の位置を決めて、各関節の角度を求める)とApplication2(点群を与えられて、それにもっとも合致する点・平面・球を求める)の例があげられている。
- 議論1: Application 1 におけるジョイント \(P_0, P_1, P_2\) は同一平面内で回転するか。
- ジョイントの種類が明示されていないが平面内で動作する前提で議論が展開されているようにみえる。可動範囲の指定もない。
- ジョイントがこれ以上増えて自由度が増えた場合はどうするか?
- 何らかの評価関数を置くのでは?実際のロボットアームはもっと自由度が高いものがありそう。
- Step1,2は始点と終点を定める。Step3で途中のジョイントの位置を定めていく。
- 議論2: 点対から点を取り出す(dissectする)方法
- 参考文献8 Geometric Algebra and its Application to Computer Graphics. Tutorial notes of the EUROGRAPHICS conference 2004 in Grenoble. 9.2節 Example: Dissecting a Point Pair (リンク先ページ上部の小さなPDFマークからPDFへリンクあり)
- その場では式を追い切れなかったため内容はスキップ。
- 議論3: Application2 式(56) \(\min (s^TBs)\) の最小化の計算過程がわからない。
- ラグランジュの未定乗数法を使用している。
- 議論4: 現在メンテされているGAのライブラリはないのか?
- CLUCalc リンク切れが多く、2015年辺りで更新が止まっている。
- GAViewer 更新されていない
- sympy (Python) にGAが含まれている
- clifford (Python)
- Mathematica
- Gaalop
- Gaigen
- 後日談:Pythonライブラリについて
動画
次回
次回はPythonを使って実際にプログラミングしてみます。