1. 程式人生 > >機器人學之3D歐式變換理論與實踐

機器人學之3D歐式變換理論與實踐

文章目錄

理論基礎

三維空間中的變換主要分為如下幾種:

  • 射影變換
  • 仿射變換
  • 相似變換
  • 歐式變換

其性質如下圖所示:
3d_transform.png

本文主要介紹歐式變換。

歐式變換

T =

[ R t 0
T
1
]
R 4 × 4 \mathbf{T} = \begin{bmatrix} \mathbf{R} & \mathbf{t} \\ \mathbf{0}^T & 1 \end{bmatrix} \in \mathbb{R}^{4 \times 4}

T 1 = [ R T R T t 0 T 1 ] R 4 × 4 \mathbf{T}^{-1} = \begin{bmatrix} \mathbf{R}^T & -\mathbf{R}^T \cdot \mathbf{t} \\ \mathbf{0}^T & 1 \end{bmatrix} \in \mathbb{R}^{4 \times 4}

Translate by C -C (align origins), Rotate to align axes:

P c = T P w = R ( P w C ) = R P w R C = R P w + t \begin{aligned} P_c &= \mathbf{T} \cdot P_w \\ &= \mathbf{R} \cdot (P_w - C) \\ &= \mathbf{R} \cdot P_w - \mathbf{R} \cdot C \\ &= \mathbf{R} \cdot P_w + \mathbf{t} \end{aligned}

旋轉

旋轉矩陣

R = [ r 11 r 12 r 13 r 21 r 22 r 23 r 31 r 32 r 33 ] R 3 × 3 , s . t . R R T = I , d e t ( R ) = 1 \mathbf{R} = \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix} \in \mathbb{R}^{3 \times 3}, \quad s.t. \quad \mathbf{RR}^T = \mathbf{I}, det(\mathbf{R}) = 1

旋轉向量(軸角)

ξ = α a = l o g ( R ) R 3 \boldsymbol{\xi} = \alpha\mathbf{a} = log(\mathbf{R})^{\vee} \in \mathbb{R}^3

  • 旋轉軸:矩陣 R \mathbf{R} 特徵值1對應的特徵向量(單位向量)
    a = ξ ξ R 3 \mathbf{a} = \frac{\boldsymbol{\xi}}{||\boldsymbol{\xi}||} \in \mathbb{R}^3

  • 旋轉角
    α = ξ = a r c c o s ( t r ( R ) 1 2 ) R \alpha = ||\boldsymbol{\xi}|| = arccos(\frac{tr(\mathbf{R})-1}{2}) \in \mathbb{R}

羅德里格斯公式(Rodrigues’ rotation formula):
R = c o s α I + ( 1 c o s α ) a a T + s i n α a \mathbf{R} = cos\alpha \mathbf{I} + (1-cos\alpha) \mathbf{aa}^T + sin\alpha \mathbf{a}^{\wedge}

單位四元數

2D旋轉單位複數 可用來表示2D旋轉。

z = a + b i = r ( c o s θ + s i n θ i ) = e θ i , r = z = 1 z = a + b\vec{i} = r ( cos\theta + sin\theta\vec{i} ) = e^{\theta \vec{i}}, r = ||z||=1

相關推薦

機器人學3D歐式變換理論實踐

文章目錄 理論基礎 歐式變換 旋轉 旋轉矩陣 旋轉向量(軸角) 單位四元數 尤拉角 旋轉轉換 平移 李群和李代數

Java 理論實踐: 閉包

  Java 語言是否應增加閉包以及如何新增? 提起向 Java™ 語言增加新的特性,每個人都有自己的一兩個想法。隨著 Java 平臺的原始碼日漸開放,而使用其他語言(例如 JavaScript 和 Ruby)作為伺服器端應用程式日趨流行,因此關於 Java 語言未來的爭論空前激

OOA&D實踐路——真實案例解析OO理論實踐(一)

一、導言 為什麼要寫這個系列 “OO都是一個已經被討論爛的話題了,還有什麼可寫的!” 不知當你看到文章標題時,是不是有這種疑問,或者鄙夷。不錯,OO從誕生到現在經歷了不短的歲月,與其相關的理論、技術、原則、實踐、模式、語言已經出了一大堆。可是,你真的瞭解OO的本質嗎?真的能

微服務理論實踐(三)-微服務架構的基本能力和優缺點

控制臺 並且 提高 str love 速度 ont 寫入 框架 1.微服務架構模式方案 微服務架構采用Scale Cube方法設計應用架構,將應用服務按功能拆分成一組相互協作的服務。每個服務負責一組特定、相關的功能。每個服務可以有自己獨立的數據庫,從而保證與其他服務解耦。

Visula Basic程序設計理論實踐pdf

實驗 http ria 文字 blog 本科 title 計算機 div 下載地址:網盤下載 visual basic是國內外流行的程序設計語言之一。visual basic程序設計是比較理想的學習程序設計的第一門課程。本書主要涉及visual basic程序設計概述,程

Java線程池的理論實踐

java 架構 前段時間公司裏有個項目需要進行重構,目標是提高吞吐量和可用性,在這個過程中對原有的線程模型和處理邏輯進行了修改,發現有很多基礎的多線程的知識已經模糊不清,如底層線程的運行情況、現有的線程池的策略和邏輯、池中線程的健康狀況的監控等,這次重新回顧了一下,其中涉及大量java.util.co

MySQL優化核心理論實踐

mysql優化實踐理論知數堂背景描述:朋友單位OA系統前不久完成升級大改造,後端用的MySQL存儲數據,上線跑了個把月,抱怨電話開始接二連三打來,不是這裏打不開,就是那裏無響應,有人比喻升級後變成老爺車,越來越慢,問題迫在眉睫,必須馬上想對策呀。由於部署采用了規範文檔,上線前也做了各種測試,於是乎,在線排查,

新一代網絡建設理論實踐讀書筆記-雲計算

雲計算一、雲計算定義: 維基百科:雲計算是一種基於互聯網的新計算方式,通 過互聯網上異構、自治的服務為個人和企業提供按需即取的計算。 1.雲計算描述共同特征:雲是一種服務 按需使用 靈活付費 2.特點:雲計算是一種新的IT服務模式,支持大規模計算資源的虛擬化, 提供按需計

數據庫設計理論實踐·<一>總結

enter 數據庫管理 cti family 分享圖片 TP CA pan png 一、數據庫生命周期 數據庫生命周期流程圖如下: 二、各階段附圖    附圖1.1 數據流圖 附圖1.2 數據字典-方式1 補充說明:數據字典既可以單張表格表示,也可以多種

數據庫設計理論實踐·<三>物理設計

開發 過程 系統開發 soft gin 出版 strong SQ bsp 一、物理設計核心任務與關鍵細節 二、物理設計經驗之談   1.數據類型的設計:建議字段數據類型定義時結合以下幾點(以MYSQL為例)     1)不適用image,而使用varbinary等  

數據庫設計理論實踐·<四>數據庫基本術語及其概念

primary 數據模型 大學生 其中 關系模型 ttr 必須 domain 關系 一、關系模型   關系模型是最重要的一種數據模型。關系數據庫模型系統采用關系模型作為數據的組織方式。   關系模型的數據結構:   關系:一張表   元組:一行記錄。   屬性:一列   碼

理論實踐:如何從Hadoop遷移到MaxCompute

技術分享 直播視頻 插件 oss 使用 雲上 原來 令行 磁盤 摘要: MaxCompute大數據計算服務,能提供快速、完全托管的PB級數據倉庫解決方案,能夠使用戶經濟且高效地分析處理海量數據。而用戶往往之前使用了Hadoop實現大數據計算任務,在選擇了阿裏雲大數據計算服務

10. 微服務理論實踐-服務註冊發現

微服務理論與實踐-服務註冊與發現 微服務理論與實踐-服務註冊與發現 1 背景 2 方案 2.1 客戶端服務發現 2.2 客戶端服務發現的優缺點

9. 微服務理論實踐-微服務架構的基本能力和優缺點

微服務理論與實踐-微服務架構的基本能力和優缺點 微服務理論與實踐-微服務架構的基本能力和優缺點 1 微服務架構模式方案 2 微服務架構的基本能力 2.1 Restful 輕量級通訊的首選方式 2.2 RPC 通訊

從企業架構到智慧油田的理論實踐

1、 第一章:從智慧地球到智慧油田V1.1     https://wenku.baidu.com/view/86eddd90cf2f0066f5335a8102d276a201296069.html?pn=NaN   《從企業架構到智慧油田的理論與實踐

鐳射slam理論實踐

本篇是記錄曾書格老師的課程《鐳射slam理論與實踐》 先貼一下個人總結(有理解的不正確的,麻煩指出來): 第一章:鐳射SLAM簡要介紹 1、輸出Metrical map尺度地圖,slam分為兩種:基於濾波的 filter-based 的SLAM,和Graph-based的SLAM。

SLAM學習小組 : 視覺SLAM十四講 第三講 + 視覺SLAM理論實踐 第二節

一、熟悉Eigen矩陣運算 Wiki Eigen 設線性⽅程 Ax = b,在 A 為⽅陣的前提下,請回答以下問題: 1. 在什麼條件下,x 有解且唯⼀? 線性方程組的矩陣滿秩(非奇異矩陣) 2. 高斯消元法的原理是什麼? 高斯消元法是將方程組中的一方程的未知數用含有另一

【 C 】轉移表(理論實踐)(實現一個簡單的計算器)

首先借用《C 與指標》上對於轉移表的解釋,然後我們自己程式設計序操作下: 轉移表最好用個例子來解釋。下面的程式碼段取自一個程式,它用於實現一個袖珍式計算器。程式的其他部分已經讀入兩個數(op1和op2

推薦系統演算法理論實踐(1)

舉例:電影推薦系統 電影評分表 張三 李四 王五 小明 小時代 1 5 ? 5 精武英雄 ? 3 5 4 摔跤吧,爸爸 1 5 ? 5 死侍 ?

Java執行緒池的理論實踐

前段時間公司裡有個專案需要進行重構,目標是提高吞吐量和可用性,在這個過程中對原有的執行緒模型和處理邏輯進行了修改,發現有很多基礎的多執行緒的知識已經模糊不清,如底層執行緒的執行情況、現有的執行緒池的策略和邏輯、池中執行緒的健康狀況的監控等,這次重新回顧了一下,其中涉及大量ja