視覺SLAM十四講實踐之Sophus下的位姿表示和更新優化

2021-02-15 小秋SLAM筆記

旋轉矩陣是三維空間剛體運動的描述方式之一

李群SO(3)旋轉矩陣
李代so(3) 三維向量實際上是旋轉向量組成的空間

李群SE(3)變換矩陣
李代se(3) 六維向量 平移在前 旋轉在後

旋轉矩陣的導數由旋轉向量指定,指導著如何在旋轉矩陣中進行微積分運算。


每個李群都有與之對應的李代數,李代數描述了李群的局部性質。

Sophus(李群、李代數庫)
Eigen庫是一個開源的C++線性代數庫,它提供了快速的有關矩陣的線性代數運算,還包括解方程等功能。Eigen庫提供了集合模塊,但沒有提供李代數的支持。

Sophus庫是基於Eigen基礎上開發的,繼承了Eigen庫中的定義的各個類。因此在使用Eigen庫中的類時,既可以使用Eigen命名空間,也可以使用Sophus命名空間,Sophus庫很好的支持了李群SO3 李代so3 李群SE3 李代se3。

高博視覺SLAM十四講的這張圖總結的很好

用沿Z軸轉90度的Eigen旋轉向量構造Eigen的旋轉矩陣
/*******************************************     原型            李代數* SO3 (3*3)=="R"          --> so3 (3*3)* SE3 (4*4)=="T"          --> se3 (6*1)********************************************/// 旋轉向量: 第一個參數為旋轉角度,第二個參數哪個為1就繞哪軸旋轉Eigen::Matrix3d rotation_matrix = Eigen::AngleAxisd(M_PI / 4, Eigen::Vector3d(0, 0, 1)).toRotationMatrix();cout << "用沿Z軸轉90度的Eigen旋轉向量構造Eigen的旋轉矩陣:\n" << rotation_matrix << endl;/* * 用沿Z軸轉90度的Eigen旋轉向量構造Eigen的旋轉矩陣: * 0.707107 -0.707107         0 * 0.707107  0.707107         0 * 0         0         1 */

用Eigen的旋轉矩陣構造Sophus李群旋轉矩陣SO3
Sophus::SO3d SO3_rotation_matrix(rotation_matrix);cout << "用Eigen的旋轉矩陣構造Sophus李群旋轉矩陣SO3:\n" << SO3_rotation_matrix.matrix() << endl;

對數映射求李群SO3的李代數so3
Eigen::Vector3d so3 = SO3_rotation_matrix.log();cout << "對數映射求李群SO3的李代數so3 = " << so3.transpose() << endl;

指數映射求李代數so3的李群SO3
Sophus::SO3d SO3_rotation_matrix1 = Sophus::SO3d::exp(so3);cout << "指數映射求李代數so3的李群SO3 = \n" << SO3_rotation_matrix1.matrix() << endl;

so3 hat 求向量到反對稱矩陣
cout << "hat 求向量到反對稱矩陣 =\n" << Sophus::SO3d::hat(so3) << endl;

so3 hat vee 求反對稱矩陣到向量
cout << "vee 求反對稱矩陣到向量 = " << Sophus::SO3d::vee(Sophus::SO3d::hat(so3)).transpose() << endl;

更新李群的旋轉矩陣SO3
Eigen::Vector3d update_so3(1e-4, 0, 0);Sophus::SO3d SO3_updated = Sophus::SO3d::exp(update_so3) * SO3_rotation_matrix;cout << "更新李群SO3的旋轉矩陣 = \n" << SO3_updated.matrix() << endl;

用旋轉矩陣R,平移向量t構造Sophus表示的李群變換矩陣SE3
Eigen::Vector3d t(1, 0, 0);Sophus::SE3d SE3_rotation_translation(rotation_matrix, t);cout << "用旋轉矩陣R,平移向量t構造Sophus表示的李群變換矩陣SE3= \n" << SE3_rotation_translation.matrix() << endl;

李代數se3 是一個六維向量 李群SE3的對數映射求李代數se3
typedef Eigen::Matrix<double, 6, 1> Vector6d;Vector6d se3 = SE3_rotation_translation.log();cout << "李代數se3 是一個六維向量 李群SE3的對數映射求李代數se3 \n" << se3.transpose() << endl;

指數映射求李代數se3的李群SE3
Sophus::SE3d SO3_rotation_matrix2 = Sophus::SE3d::exp(se3);cout << "指數映射求李代數se3的李群SE3 = \n" << SO3_rotation_matrix2.matrix() << endl;

se3 hat 求向量到反對稱矩陣
cout << "se3 hat = \n" << Sophus::SE3d::hat(se3) << endl;

se3 hat 求向量到反對稱矩陣
cout << "se3 hat = \n" << Sophus::SE3d::hat(se3) << endl;

更新李群的變換矩陣SE3
Vector6d update_se3;update_se3.setZero();update_se3(0, 0) = 1e-4;Sophus::SE3d SE3_updated = Sophus::SE3d::exp(update_se3) * SE3_rotation_translation;cout << "SE3 updated = " << endl << SE3_updated.matrix() << endl;

交流答疑微信群

視覺SLAM十四講實踐筆記

視覺SLAM十四講實踐筆記(一)

視覺SLAM十四講實踐筆記之Eigen下的四種位姿表示

視覺SLAM十四講實踐之坐標系之間的歐式變換

視覺SLAM十四講實踐之軌跡可視化

相關焦點

  • 重用地圖的單目視覺慣導SLAM系統
    公式解釋:IMU的測量全部都在B系下,公式1IMU的角度測量減去偏置得到角速度真值,再和時間相乘得到時間間隔(K到K+1幀的)內的角度變化量,再加一個Exp相當於變換到了李群的空間,和上一幀的位姿相乘得到當前幀在W系下的位姿。公式2利用當前加速度的測量量減去當前幀的偏置和時間相乘得到速度變換量再轉換到世界坐標系下,再加上重力加速度引起的變化和上一幀的速度相加得到當前幀的速度。
  • ORB-SLAM3 單目地圖初始化(終結篇)
    用三角測量初始化得到的3D點來生成地圖點,更新關鍵幀間的連接關係;4. 全局BA優化,同時優化所有位姿和三維點;5. 取場景的中值深度,用於尺度歸一化;6. 將兩幀之間的變換歸一化到平均深度1的尺度下;7. 把3D點的尺度也歸一化到1;8. 將關鍵幀插入局部地圖,更新歸一化後的位姿、局部地圖點。
  • 新手入門SLAM必備資料
    會議進展網站http://www.roboticsproceedings.org/3.入門書籍,簡單實現及代碼《SLAM for Dummies》4.SLAM入門教材吐血推薦,對深入理解SLAM實質非常有幫助《STATE ESTIMATION FOR ROBOTICS》5.作者Joan Sola關於Graph-SLAM的教程,包含位姿變換
  • 讓無人機自主避障教學研究邁向更高處slam導航避障算法
    讓無人機自主避障教學研究邁向更高處slam導航避障算法。根據無人機避障技術的原理和發展趨勢,可以將無人機避障技術分為三重階段:即感知障礙物階段、繞過障礙物和場景建模和路徑搜索。3、機載雙目視覺系統機載雙目視覺系統包括雙目相機、圖傳系統,雙目相機固定於無人機底部,實時採集無人機巡視拍攝信息,發送至TX2機載處理板卡進行避障、跟隨以及slam計算,或下傳至地面圖傳接收機由開發工作站進行處理。
  • 王者榮耀S22賽季視覺優化,戰令商店替換,皮膚密寶更新!
    同時地圖還將詮釋中國美學的園林式設計,並且對王者榮耀地圖內進行特效優化,戰鬥細節方面講更加清晰。這可不是一個小工作啊,工作量巨大。想來賽季更新後,將會有不少小夥伴需要來適應適應這些地圖的變化了,例如傳送陣的利用等等。當然,想要體驗極致的畫質的玩家需要用得到超高幀率功能,目前此功能只是針對部分安卓機型開放,其他的小夥伴們就需要多等等了。
  • 研學相長 知行合一|2020視覺傳達系設計實踐與考察
    作為迄今已有29年歷史的優質企業,吉廣傳媒集團具有「國家一級廣告企業」、「全國廣告行業文明單位」和「德國海德堡中國北區印刷樣板企業」等資質,在我國綜合類廣告企業中排名第八位,成為不折不扣的省內廣告傳媒行業標兵。本次考察的吉廣集團印藝空間,是我省高效校外實踐基地和文創項目孵化基地,對於廣告、傳媒相關專業師生具有重要的參觀及實踐意義。
  • 工程之道,深度學習推理性能業界最佳優化實踐
    本文從推理側的數據排布(Inference Layout)講起,接著介紹MegEngine的Im2col+MatMul、Winograd、Fast-Run工程優化實踐。如何讓深度學習模型魯棒運行和推理,即在不同硬體平臺(比如CPU)上,針對目標架構(比如X86/ARM)做計算優化,實現最快運行速度,是一個長久存在的挑戰。MegEngine秉持極致的「工程之道」,針對CPU推理的卷積優化,做了細緻而系統的工程創新,不斷逼近加速極限。
  • 一個超乾貨的3D視覺學習社區
    哪一種算法在速度和精度上佔優勢?點雲的特徵提取方式有哪些?有哪些描述子?基於深度學習的點雲分割算法有哪些?精度如何?常用的點雲分類算法有哪些?準確率如何?怎麼測量點雲的體積?如何測量點雲擬合平面的面積?您好,請問有有關3D點雲的缺陷檢測和點雲補全的資料嗎?想問下有沒有三維雷射雷達點雲配準拼接的代碼工程之類的?現在有沒有對於sfm或者slam之後得到的點雲進行補全處理的工作啊?
  • 【泡泡機器人原創專欄】Visual Inertial ORB-SLAM代碼詳細說明
    SO3上左右雅克比、Adjoint等相關的理論公式可以參考[16]的7.1節,或者聯繫@高博的新書《視覺SLAM十四講》。@謝曉佳也有一份預積分的「部分」總結文檔,可以在qq群文件中找到。但感覺最好都自己手推一遍。 5.
  • 一文看懂SLAM導航技術分類、典型應用及國內發展現狀
    國內的科沃斯、塔米以及最新面世的嵐豹掃地機器人都可以通過用SLAM算法結合雷射雷達或者攝像頭的方法,讓掃地機高效繪製室內地圖,智能分析和規劃掃地環境,從而成功讓自己步入了智能導航的陣列。VR/AR方面:輔助增強視覺效果。SLAM技術能夠構建視覺效果更為真實的地圖,從而針對當前視角渲染虛擬物體的疊加效果,使之更真實沒有違和感。
  • 機器人的位姿描述與坐標變換
    機器人的位姿描述與坐標變換是進行工業機器人運動學和動力學分析的基礎。
  • 第二十四講 R-卡方檢驗之獨立性檢驗
    library("gplots")#將數據轉換成表格dt <- as.table(as.matrix(housetasks))balloonplot(t(dt), main ="housetasks", xlab ="", ylab="",label
  • 第五人格9月24日更新 第十四賽季正式上線
    第五人格9月24日更新,第十四賽季正式上線!本周更新活動結束後,新賽季即將開啟,新珍寶即將登場;新玩法、新求生者也將上線。還有節日活動即將跟各位偵探見面,接下來一起看看吧。 -賽季獎勵處查看詳情; 【黑傑克積分】:黑傑克模式積分新賽季將按照一定比例繼承; 【推理之徑】:第十四賽季開啟後,推理之徑等級將會重置為0,同時推理之徑上的獎勵也會更替為第十四賽季全新獎勵,最高可獲得先知奇珍時裝-最後的榮光; 【推理積分】:第十四賽季開啟後,將會重置本周推理積分上限; 【角色認知分繼承】:第十四賽季開啟後,角色認知分將根據上賽季結算分數按照一定比例繼承
  • 王者榮耀10.15更新,武陵仙君優化,六位英雄調整,馬克一刀削廢
    諸葛亮武陵仙君優化完成,在保有皮膚原有風格的基礎下,官方對皮膚的展示動畫、技能特效等方面進行了升級,而且還增加了皮膚的專屬動作,算是一次非常良心的優化。 本次更新也對6位英雄進行了調整,包括夏洛特、白起、瑤、盤古、馬可波羅和阿古朵。
  • 新賽季版本更新,排位賽6個ban位,傳送功能上線,選將頁面優化!
    新賽季開啟後王者榮耀都將會迎來一次版本大更新,雖然新賽季還沒上線,但全新的大版本也已經在體驗服裡上線測試了,本次更新的內容也是非常多的,除了增加新功能外,還有很多地方迎來了優化調整,其中值得一提的是,排位賽將會上線6個ban位,然後傳送功能也正式上線測試了,另外選將頁面和結算頁面也都得到了一波給力的優化
  • 火線幣商城更新、新優化!
    我愛的靈狐妹子和茉莉ak,還是可以有的呢。這次也不例外,又將有一批新的的永久道具上架,滿滿的期待呢~不管你買還是不買,它就在那裡,不離不棄~新增永久道具          本次火線幣商城更新有特別福利,限時銷售萬聖節限定「南瓜手雷」,想入手的玩家可別錯過哦!
  • 《成化十四年》更新時間什麼時候播出 每周几几點更新幾集
    《成化十四年》更新時間什麼時候播出 每周几几點更新幾集  《成化十四年》定檔4月1日登陸愛奇藝獨家播出,每周三至周五20點各更新2集,VIP會員搶先看1周(6集)。該劇講述了順天府推官唐泛和北鎮撫司總旗隋州攜手「探奇案,品人心」,抽絲剝繭粉碎陰謀,還百姓太平清明生活的故事。
  • 程序丨Unity3D性能優化最佳實踐(四):資源審查
    作者: Ian 翻譯: Kelvin Lo / 海龜系列回顧:Unity3D性能優化最佳實踐(
  • 華為Mate 40 系列 EMUI 11 更新:優化華為錢包和整機使用體驗
    IT之家12月13日消息 接網友投遞,華為 Mate 40 系列現已推送 EMUI 11.0.0.135 SP5 版本更新,包括 Mate 40 Pro 全網通版、Mate 40 Pro + 全網通版、Mate 40 RS 保時捷三款機型,更新優化了智慧多窗的使用體驗,優化了華為錢包和整機的系統穩定性
  • 英偉達 Studio 驅動更新:優化V-Ray和 Blender
    IT之家11月27日消息 根據英偉達的消息,NVIDIA Studio 驅動現已更新,優化了全球流行的兩大3D渲染器V-Ray和 Blender Cycles。英偉達表示,V-Ray和 Blender Cycles在即將發布的最新版上支持RTX加速的光線追蹤,這將大大提高藝術家的工作效率。其中,V-Ray GPU Next 渲染器開始通過一系列補充性更新在其眾多產品線中添加 RTX 硬體加速。ChaosGroup已推出了支持3ds Max的V-RayNext渲染器,不久即將發布支持Maya的V-Ray Next渲染器。