0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹主流的VIO初始化方案

3D視覺(jué)工坊 ? 來(lái)源:3DCV ? 2023-06-21 09:22 ? 次閱讀

4e16659a-0fbf-11ee-962d-dac502259ad0.png

視覺(jué)慣性融合技術(shù)應(yīng)用于機(jī)器人自動(dòng)駕駛方面。單目相機(jī)和低成本IMU成為最佳選擇。因?yàn)閂IO系統(tǒng)的高度非線性,初值對(duì)視覺(jué)慣性系統(tǒng)很重要,但很難獲得精確的初始狀態(tài)。VIO初始化的主要意義有:(1)對(duì)齊相機(jī)的世界坐標(biāo)系和慣性系,因此需要估計(jì)重力方向(2)為后續(xù)的VIO算法提供較為準(zhǔn)確的初始參數(shù)和狀態(tài)(尺度、IMU bias、初始速度),使得算法可以快速穩(wěn)定地進(jìn)入正常運(yùn)行階段。良好的初始化對(duì)VIO算法的整體精度和魯棒性至關(guān)重要。本文旨在介紹主流的VIO初始化方案

1 前言

目前的初始化方法分為松耦合(Vins-Mono、ORBSLAM3)和緊耦合方案(OpenVINS),松耦合方案用的較多,并且表現(xiàn)更好。從求解方法上,有濾波、圖優(yōu)化、閉式解三種方法。但是,濾波會(huì)很早將狀態(tài)邊緣化,會(huì)失去最優(yōu)性。圖優(yōu)化由于計(jì)算復(fù)雜性高。大多數(shù)現(xiàn)有的初始化方法需要系統(tǒng)靜止或已知初始狀態(tài)。不能適應(yīng)動(dòng)態(tài)運(yùn)動(dòng)、空中初始化。閉合式解法缺乏傳感器噪聲模型。本文主要介紹基于VINS-Mono的松耦合方案。

2 問(wèn)題概述

已知:(1)IMU 和圖像時(shí)間戳已同步;(2)IMU 和相機(jī)外參數(shù)已知求解:尺度、圖像幀的速度、重力方向、IMU bias

3 方法

3.1 進(jìn)行單目結(jié)構(gòu)重建(SFM),獲得up-to-scale的相機(jī)姿態(tài)和特征點(diǎn)位置

設(shè)定一定長(zhǎng)度的滑動(dòng)窗口,它維護(hù)了幾個(gè)空間分離的圖像幀??臻g幀由足夠的視差的圖像幀來(lái)選擇。選擇兩幀具有足夠特征視差的幀。然后使用五點(diǎn)法恢復(fù)這兩幀之間的相對(duì)旋轉(zhuǎn)和帶尺度的平移。然后任意設(shè)置尺度,對(duì)這兩幀中觀察到的所有特征進(jìn)行三角剖分?;谶@些三角化特征,采用PnP方法估計(jì)窗口中其他幀的姿態(tài)。

4e241cd0-0fbf-11ee-962d-dac502259ad0.png

最后,應(yīng)用全局BA最小化所有特征觀測(cè)值的總重投影誤差得到所有的幀姿態(tài)和特征位置。已知相機(jī)與IMU之間的外參數(shù),則所有變量都可以從相機(jī)坐標(biāo)系轉(zhuǎn)換到IMU坐標(biāo)系:

4e2be26c-0fbf-11ee-962d-dac502259ad0.png

s是未知的尺度。

3.2 對(duì)IMU測(cè)量進(jìn)行預(yù)積分,得到IMU的相對(duì)運(yùn)動(dòng)約束

預(yù)積分公式為:

4e314b3a-0fbf-11ee-962d-dac502259ad0.png

分別表示相對(duì)位置、速度和旋轉(zhuǎn)約束。可以看出,慣性測(cè)量通常被積分以形成與圖像幀的初始位置和速度無(wú)關(guān)的相對(duì)運(yùn)動(dòng)約束。

3.3 視覺(jué)慣性對(duì)準(zhǔn)

我們已經(jīng)得到了視覺(jué)SFM和IMU預(yù)積分中獲得了相機(jī)姿勢(shì)。本節(jié)將介紹對(duì)齊這兩個(gè)軌跡的方法。

陀螺儀bias標(biāo)定

窗口中兩個(gè)連續(xù)的圖像幀bk和bk+1,我們有來(lái)自視覺(jué)結(jié)構(gòu)的相對(duì)旋轉(zhuǎn)以及來(lái)自IMU預(yù)積分的相對(duì)旋轉(zhuǎn)約束。通過(guò)最小化兩者之間的誤差來(lái)估計(jì)陀螺儀的bias:

4e3c9512-0fbf-11ee-962d-dac502259ad0.png

注意每次更新bg,都要重新計(jì)算預(yù)積分量。上面第二個(gè)式子用到了快速更新預(yù)積分量的方法。

估計(jì)速度、重力方向和尺度參數(shù)。

重力方向估計(jì)并強(qiáng)制其模長(zhǎng)等于已知值。即需要估計(jì)的變量有

4e42f9e8-0fbf-11ee-962d-dac502259ad0.png

4e4c4700-0fbf-11ee-962d-dac502259ad0.png

考慮預(yù)積分位置和速度相關(guān)的約束,IMU軌跡在相機(jī)坐標(biāo)系c0下有:

4e51de4a-0fbf-11ee-962d-dac502259ad0.png

利用外參數(shù),得到相機(jī)坐標(biāo)系下的相機(jī)軌跡與預(yù)積分的關(guān)系:

4ef3593c-0fbf-11ee-962d-dac502259ad0.png

將待估計(jì)變量放到方程右邊,有:

4efc12ca-0fbf-11ee-962d-dac502259ad0.png

其中,

4f0239ac-0fbf-11ee-962d-dac502259ad0.png

上式中,帶尺度的相機(jī)位置和姿態(tài)已經(jīng)通過(guò)視覺(jué)SFM獲得。通過(guò)求解最小二乘問(wèn)題:

4f0b7f80-0fbf-11ee-962d-dac502259ad0.png

可以得到視覺(jué)坐標(biāo)系下的速度和重力矢量,以及尺度。視覺(jué)結(jié)構(gòu)的平移分量將被縮放到米制單位。通過(guò)強(qiáng)制范數(shù)約束,估計(jì)的重力將經(jīng)歷另一輪的細(xì)化。

重力方向細(xì)化

上面的優(yōu)化中,并沒(méi)有約束重力的大小。通過(guò)約束重力矢量的大小,可以對(duì)前一步得到的重力矢量進(jìn)行細(xì)化。在大多數(shù)情況下,重力矢量的大小是已知的。但是,如果我們直接將這個(gè)范數(shù)約束加入到上面的優(yōu)化問(wèn)題中,就會(huì)變得非線性,難以求解。在這里,VINS-Mono使用一種方法通過(guò)優(yōu)化其切線空間上的二維誤差狀態(tài)來(lái)強(qiáng)制執(zhí)行重力范數(shù)。

4f1406a0-0fbf-11ee-962d-dac502259ad0.png

上圖表示重力方向參數(shù)化示意圖。由于重力的大小是已知的,重力的自由度為2,我們可以在它的切空間上用兩個(gè)變量來(lái)參數(shù)化重力。我們將重力參數(shù)化為:

4f1ce694-0fbf-11ee-962d-dac502259ad0.png

b1和b2是張成切平面的兩個(gè)正交基。w1和w2分別是指向b1和b2的位移。我們可以用Gram-Schmidt過(guò)程(一種構(gòu)造單位正交基的方法)很容易地求出b1、 b2的集合。這樣,我們?cè)谄淝锌臻g上用兩種狀態(tài)重新參數(shù)化重力,然后將g替換為上式,也是線性形式。重新優(yōu)化上面的最小二乘問(wèn)題,迭代幾次,直到g收斂。在細(xì)化重力矢量之后,我們根據(jù)重力矢量將所有變量從視覺(jué)坐標(biāo)系旋轉(zhuǎn)到世界坐標(biāo)系(重力方向和Z軸平行的坐標(biāo)系):

4f2600a8-0fbf-11ee-962d-dac502259ad0.png

4 結(jié)論

此時(shí),初始化過(guò)程完成,這些變量將被輸入到一個(gè)緊密耦合的非線性視覺(jué)慣性估計(jì)器,即VIO過(guò)程。還有幾點(diǎn)需要解釋:對(duì)于旋翼飛行器來(lái)說(shuō),直線運(yùn)動(dòng)或零加速度運(yùn)動(dòng)等簡(jiǎn)并運(yùn)動(dòng)是不可避免的。這時(shí)候在SFM窗口內(nèi)的IMU測(cè)量可能無(wú)法使整個(gè)系統(tǒng)可見(jiàn),我們可以通過(guò)檢查初始化過(guò)程中的預(yù)積分的值來(lái)拒絕小的加速度運(yùn)動(dòng),初始化過(guò)程只有在IMU測(cè)量中包含足夠的激勵(lì)時(shí)才開(kāi)始。在初始化過(guò)程中,加速度偏差很難標(biāo)定,因?yàn)榧铀俣韧ǔT谛⌒D(zhuǎn)下與重力耦合。因此該方法不涉及加速度bias的標(biāo)定。忽略加速度偏差不會(huì)對(duì)初始化結(jié)果造成顯著的負(fù)面影響,可以在VIO過(guò)程中引入,這里不做介紹。




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 機(jī)器人
    +關(guān)注

    關(guān)注

    210

    文章

    28127

    瀏覽量

    205889
  • 陀螺儀
    +關(guān)注

    關(guān)注

    44

    文章

    776

    瀏覽量

    98500
  • IMU
    IMU
    +關(guān)注

    關(guān)注

    6

    文章

    297

    瀏覽量

    45646
  • 自動(dòng)駕駛
    +關(guān)注

    關(guān)注

    782

    文章

    13633

    瀏覽量

    165989

原文標(biāo)題:一文讀懂復(fù)雜的VIO初始化

文章出處:【微信號(hào):3D視覺(jué)工坊,微信公眾號(hào):3D視覺(jué)工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    CW32L083 RTC初始化設(shè)置

    介紹CW32L083的RTC初始化設(shè)置
    的頭像 發(fā)表于 06-24 10:16 ?1451次閱讀
    CW32L083 RTC<b class='flag-5'>初始化</b>設(shè)置

    手機(jī)模塊初始化向?qū)?/a>

    手機(jī)模塊初始化向?qū)?為了剛好的對(duì)手機(jī)模塊進(jìn)行初始化,所以把最基本的向?qū)?xiě)下來(lái).本向?qū)нm用于本公司的西門(mén)子TC35I和華為GT9000模塊。一、在初始化手機(jī)模塊前,請(qǐng)先確定DT
    發(fā)表于 09-18 09:41 ?17次下載

    FPGA的ROM初始化問(wèn)題討論

    本文討論FPGA的ROM初始化問(wèn)題,詳細(xì)介紹mit文件的創(chuàng)建與使用。利用FPGA實(shí)現(xiàn)的ROM只能認(rèn)為器件處于用戶狀態(tài)時(shí)具備ROM功能。使用時(shí)不必要刻意劃分,而ROM單元的初始化則是設(shè)計(jì)人員必須面
    發(fā)表于 02-08 14:24 ?5463次閱讀
    FPGA的ROM<b class='flag-5'>初始化</b>問(wèn)題討論

    RDA1846S初始化設(shè)置

    RDA1846S初始化設(shè)置RDA1846S初始化設(shè)置RDA1846S初始化設(shè)置
    發(fā)表于 01-15 17:08 ?0次下載

    UCOS_III_配置與初始化

    UCOS_III_配置與初始化
    發(fā)表于 12-20 22:53 ?5次下載

    HX711初始化程序

    這是HX711的初始化程序
    發(fā)表于 02-08 01:51 ?89次下載

    ds1302時(shí)鐘芯片初始化,自動(dòng)決定DS1302是否需要初始化程序

    ds1302芯片時(shí)鐘芯片大家都在問(wèn)到底需要不需要初始化?這篇文章將會(huì)給大家一個(gè)程序,可以自動(dòng)決定DS1302是否需要初始化。
    發(fā)表于 10-19 19:19 ?8458次閱讀

    LCD1206初始化及各控制指令介紹附部分程序下載

    LCD1206初始化及各控制指令介紹附部分程序
    發(fā)表于 03-22 17:27 ?63次下載

    8259a初始化的步驟及代碼介紹

    本文首先介紹了8259a工作初始化的步驟及程序,其次介紹了通過(guò)OCW對(duì)8259A進(jìn)行操作方法,最后介紹了8259A初始化編程。
    的頭像 發(fā)表于 05-23 14:24 ?3w次閱讀
    8259a<b class='flag-5'>初始化</b>的步驟及代碼<b class='flag-5'>介紹</b>

    8253初始化程序分享_8253應(yīng)用案例

    本文首先介紹了8253概念及8253各通道的工作方式,其次詳細(xì)介紹了8253初始化要求及編程,最后用一個(gè)例子介紹了8253的初始化程序。
    發(fā)表于 05-23 15:52 ?2.2w次閱讀
    8253<b class='flag-5'>初始化</b>程序分享_8253應(yīng)用案例

    在51平臺(tái)下初始化文件的引入導(dǎo)致全局變量無(wú)法初始化的問(wèn)題如何解決

    本文檔的主要內(nèi)容詳細(xì)介紹的是在51平臺(tái)下初始化文件的引入導(dǎo)致全局變量無(wú)法初始化的問(wèn)題如何解決。
    發(fā)表于 08-20 17:31 ?0次下載
    在51平臺(tái)下<b class='flag-5'>初始化</b>文件的引入導(dǎo)致全局變量無(wú)法<b class='flag-5'>初始化</b>的問(wèn)題如何解決

    uboot中進(jìn)行LCD初始化的流程免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是uboot中進(jìn)行LCD初始化的流程免費(fèi)下載。
    發(fā)表于 08-12 08:00 ?11次下載
    uboot中進(jìn)行LCD<b class='flag-5'>初始化</b>的流程免費(fèi)下載

    C++之初始化列表學(xué)習(xí)的總結(jié)

    類中可以使用初始化列表對(duì)成員進(jìn)行初始化。
    的頭像 發(fā)表于 12-24 17:39 ?811次閱讀

    初始化相關(guān)的重要寄存器介紹

    在上例中,介紹了配置OV5640所需的SCCB時(shí)序,以及具體的實(shí)現(xiàn)。本例將介紹初始化相關(guān)的重要寄存器,以及上電時(shí)序。
    的頭像 發(fā)表于 10-18 09:18 ?1656次閱讀

    基于旋轉(zhuǎn)平移解耦框架的視覺(jué)慣性初始化方法

    精確和魯棒的初始化對(duì)于視覺(jué)慣性里程計(jì)(VIO)至關(guān)重要,因?yàn)椴涣嫉?b class='flag-5'>初始化會(huì)嚴(yán)重降低姿態(tài)精度。
    的頭像 發(fā)表于 11-01 10:16 ?136次閱讀
    基于旋轉(zhuǎn)平移解耦框架的視覺(jué)慣性<b class='flag-5'>初始化</b>方法