注目の投稿

技術Note一覧

このブログのメインコンテンツである技術Noteの一覧

2016/11/19

角度の不連続性を上手く扱うライブラリ

自律移動車両の制御において,359degの次が0degだったり,180degの次が-179degだったり,実際には1degしか変わらないのに数値上は大きく変化していて困ることがある.

実際のプログラムでは基本的にif文を使ってうまく回避すると思うけれど,もっと数学的に美しい演算体系が作れないかと着想し,ライブラリ作成に至った.

3つの角度パラメータによる回転を4元数(クォータニオン)を使って記述できる.
それなら,1つの角度パラメータを2元数のような概念(ノートでは角度ベクトルと呼んでいる)を作って,それに対してクォータニオン積のようなオリジナルの演算を定義してやればいいんじゃないかという思いで作った.

実際に作っていくと共役とか出てきたり,結構クォータニオンと似ていた.この考えを発展させていったらうっかりクォータニオンを導出できそうな気がする.
導出まで派手なことはしなくても,角度の平均の章を応用すれば,複数のクォータニオンの平均を取ることができると思う(未確認)

全体としてはそれなりに上手く動くはず.けど若干重い気がする.

できること:
不連続性を考慮した角度の差分計算
不連続性を考慮した角度の平均計算

ソース

ドキュメント
ノート形式

スライド形式