SlideShare a Scribd company logo
1 of 14
さるでも分かりたい9dofで作
るクォータニオン姿勢制御
2015/10/18
丹野嘉信
http://ytanno.herokuapp.com/
tannoyoshinobu@gmail.com
目次
• 9dof?クォータニオン?姿勢制御?
• 初期定義
• 処理の流れ
• プログラムから読む補正と解説
• 参考
• QandA
色々説明
• 9dof ? 3次元 x (加速度 + 角速度 + 方位) = 9つ のデータ
• クォータニオン? Q = (w, x, y, z) からなる座標系
ジンバルロックというエラー回避、計算楽なので使用するといい
• ゴール
9dof のデータから回転後の物体表示を初見でもできるようになる
初期定義
• 初期 Qinit = ( w, x, y, z ) = (q1, q2, q3, q4) = ( 1, 0, 0, 0)
• 初期 回転行列 Mt = 4x4の単位行列
• ジャイロセンサーの出力値 Sg = (gx, gy, gz);
• 加速度の出力値 Sa = (ax, ay, az ) ;
• 方位 Sm = (mx, my, mz);
処理の流れ(一番大事)
1. 回転行列を使って物体表示
2. 9dofのデータ取得
3. 補正(色々ある) → 実はジャイロセンサーだけでも
値は出せるが他のセンサで補正しないと大体使えない
1. クォータニオンの更新
2. 更新したクォータニオンから回転行列に変換
(視点が固定、OpenGLの時は逆向き(共役な4のデータ)を変換
1-5の繰り返し
プログラムから読む補正の解説
• Madgwick AHRS
• 必要な初期パラメータ
samplePeriod(調整必要) , Algorithm gain beta(調整必要), Qinit
• Q更新に必要なデータ Sg Sa Sm
変数設定
• 行列計算で使う計算を事前に用意
加速度、方位からノルム補正
地球の磁場の方向の計算
• 計算根拠は分からない
補正のパラメータ計算
• 確率的勾配降下法周りだと思うけど時間かけて論文読まないとわか
らない
クォータニオンの更新
• 補正値消しても値はでる
(ジャイロセンサーだけでも理論上データはとれる)
最後の処理
• クォータニオンの共役を見つけ、回転行列に変換、物体に反映
参考 2番目に大事
• http://www.x-io.co.uk/ 神サイト C#のオープンソースもある
画像はこのサイトのもの
• http://myenigma.hatenablog.com/entry/20130719/1374304154
クォータニオンの分かりやすい解説
• http://www.ina111.org/archives/770
補正の解説
• http://marupeke296.com/DXG_No58_RotQuaternionTrans.html
クォータニオンから回転行列変換
QandA
• なぜ日本語?
-> 日本語で実用的な解説サイトがないから
• 磁場計算と補正式の具体的な説明がないんですけど?
-> 時間かけないと分からない。生活費ください
• ライブラリ使えばいいだろ。こんな解説に何の意味があるのか!?
->ある程度知らないと困るだろ!
• 他に補正アルゴリズム何あるの?
->MahonyAHRSってのがあった。あと、
->方位センサ抜きの補正方法もあるみたいです。

More Related Content

What's hot

基礎線形代数講座
基礎線形代数講座基礎線形代数講座
基礎線形代数講座SEGADevTech
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxpsMITSUNARI Shigeo
 
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)Yuki Tamura
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門masayoshi takahashi
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)Preferred Networks
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みMasahiro Sakai
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編Fixstars Corporation
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14Ryo Suzuki
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~Takuya Akiba
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
Pull Request & TDD 入門
Pull Request & TDD 入門Pull Request & TDD 入門
Pull Request & TDD 入門ESM SEC
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミングNorishige Fukushima
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~Takuya Akiba
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」Ken'ichi Matsui
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境KiyotomoHiroyasu
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるAtsushi KOMIYA
 

What's hot (20)

基礎線形代数講座
基礎線形代数講座基礎線形代数講座
基礎線形代数講座
 
条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 
C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)C++の話(本当にあった怖い話)
C++の話(本当にあった怖い話)
 
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
 
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
PFNにおける研究開発(2022/10/19 東大大学院「融合情報学特別講義Ⅲ」)
 
SAT/SMTソルバの仕組み
SAT/SMTソルバの仕組みSAT/SMTソルバの仕組み
SAT/SMTソルバの仕組み
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
CPU / GPU高速化セミナー!性能モデルの理論と実践:実践編
 
ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14ゲーム開発者のための C++11/C++14
ゲーム開発者のための C++11/C++14
 
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
Pull Request & TDD 入門
Pull Request & TDD 入門Pull Request & TDD 入門
Pull Request & TDD 入門
 
計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング計算機アーキテクチャを考慮した高能率画像処理プログラミング
計算機アーキテクチャを考慮した高能率画像処理プログラミング
 
TVM の紹介
TVM の紹介TVM の紹介
TVM の紹介
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
数学カフェ 確率・統計・機械学習回 「速習 確率・統計」
 
RustによるGPUプログラミング環境
RustによるGPUプログラミング環境RustによるGPUプログラミング環境
RustによるGPUプログラミング環境
 
AlphaGoのしくみ
AlphaGoのしくみAlphaGoのしくみ
AlphaGoのしくみ
 
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみるDSIRNLP #3 LZ4 の速さの秘密に迫ってみる
DSIRNLP #3 LZ4 の速さの秘密に迫ってみる
 

More from ytanno

How to be friend with Attiny202 which is small microcontroller
How to be friend with Attiny202 which is small microcontrollerHow to be friend with Attiny202 which is small microcontroller
How to be friend with Attiny202 which is small microcontrollerytanno
 
Process of Interval Photograph System
Process of Interval Photograph SystemProcess of Interval Photograph System
Process of Interval Photograph Systemytanno
 
How to make an effort for good job
How to make an effort for good jobHow to make an effort for good job
How to make an effort for good jobytanno
 
How To Bind Cuda And OpenCV
How To Bind Cuda And OpenCV How To Bind Cuda And OpenCV
How To Bind Cuda And OpenCV ytanno
 
How to autorun graphic application
How to autorun graphic applicationHow to autorun graphic application
How to autorun graphic applicationytanno
 
How to setup 3D printer (Ender 3 pro)
How to setup 3D printer (Ender 3 pro)How to setup 3D printer (Ender 3 pro)
How to setup 3D printer (Ender 3 pro)ytanno
 
How to set https server
How to set https serverHow to set https server
How to set https serverytanno
 
How to write code in Attiny10
How to write code in Attiny10How to write code in Attiny10
How to write code in Attiny10ytanno
 
How to set up two i2cs on Attiny841
How to set up two i2cs on Attiny841How to set up two i2cs on Attiny841
How to set up two i2cs on Attiny841ytanno
 
How to write code on MachXO2
How to write code on MachXO2How to write code on MachXO2
How to write code on MachXO2ytanno
 
K-means and X-means
K-means and X-meansK-means and X-means
K-means and X-meansytanno
 
First Step SVM
First Step SVMFirst Step SVM
First Step SVMytanno
 
Xaml html5
Xaml html5Xaml html5
Xaml html5ytanno
 
C# でブラウザ操作
C# でブラウザ操作C# でブラウザ操作
C# でブラウザ操作ytanno
 
PI制御を作ってみた
PI制御を作ってみたPI制御を作ってみた
PI制御を作ってみたytanno
 
CharpTwitter
CharpTwitterCharpTwitter
CharpTwitterytanno
 
MongoDBCSharp
MongoDBCSharpMongoDBCSharp
MongoDBCSharpytanno
 
VisualStudinoの役に立ちそうな拡張機能をまとめてみた
VisualStudinoの役に立ちそうな拡張機能をまとめてみたVisualStudinoの役に立ちそうな拡張機能をまとめてみた
VisualStudinoの役に立ちそうな拡張機能をまとめてみたytanno
 
2013_kougi6
2013_kougi62013_kougi6
2013_kougi6ytanno
 
兼本研究室プログラム講義4回目
兼本研究室プログラム講義4回目兼本研究室プログラム講義4回目
兼本研究室プログラム講義4回目ytanno
 

More from ytanno (20)

How to be friend with Attiny202 which is small microcontroller
How to be friend with Attiny202 which is small microcontrollerHow to be friend with Attiny202 which is small microcontroller
How to be friend with Attiny202 which is small microcontroller
 
Process of Interval Photograph System
Process of Interval Photograph SystemProcess of Interval Photograph System
Process of Interval Photograph System
 
How to make an effort for good job
How to make an effort for good jobHow to make an effort for good job
How to make an effort for good job
 
How To Bind Cuda And OpenCV
How To Bind Cuda And OpenCV How To Bind Cuda And OpenCV
How To Bind Cuda And OpenCV
 
How to autorun graphic application
How to autorun graphic applicationHow to autorun graphic application
How to autorun graphic application
 
How to setup 3D printer (Ender 3 pro)
How to setup 3D printer (Ender 3 pro)How to setup 3D printer (Ender 3 pro)
How to setup 3D printer (Ender 3 pro)
 
How to set https server
How to set https serverHow to set https server
How to set https server
 
How to write code in Attiny10
How to write code in Attiny10How to write code in Attiny10
How to write code in Attiny10
 
How to set up two i2cs on Attiny841
How to set up two i2cs on Attiny841How to set up two i2cs on Attiny841
How to set up two i2cs on Attiny841
 
How to write code on MachXO2
How to write code on MachXO2How to write code on MachXO2
How to write code on MachXO2
 
K-means and X-means
K-means and X-meansK-means and X-means
K-means and X-means
 
First Step SVM
First Step SVMFirst Step SVM
First Step SVM
 
Xaml html5
Xaml html5Xaml html5
Xaml html5
 
C# でブラウザ操作
C# でブラウザ操作C# でブラウザ操作
C# でブラウザ操作
 
PI制御を作ってみた
PI制御を作ってみたPI制御を作ってみた
PI制御を作ってみた
 
CharpTwitter
CharpTwitterCharpTwitter
CharpTwitter
 
MongoDBCSharp
MongoDBCSharpMongoDBCSharp
MongoDBCSharp
 
VisualStudinoの役に立ちそうな拡張機能をまとめてみた
VisualStudinoの役に立ちそうな拡張機能をまとめてみたVisualStudinoの役に立ちそうな拡張機能をまとめてみた
VisualStudinoの役に立ちそうな拡張機能をまとめてみた
 
2013_kougi6
2013_kougi62013_kougi6
2013_kougi6
 
兼本研究室プログラム講義4回目
兼本研究室プログラム講義4回目兼本研究室プログラム講義4回目
兼本研究室プログラム講義4回目
 

Recently uploaded

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 

Recently uploaded (8)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 

さるでも分かりたい9dofで作るクォータニオン姿勢