日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

一個利用GT-SAM的緊耦合激光雷達(dá)慣導(dǎo)里程計(jì)的框架

工程師鄧生 ? 來源:古月居 ? 作者:月照銀海似蛟龍 ? 2022-09-14 10:11 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

LIO-SAM的全稱是:Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping

從全稱上可以看出,該算法是一個緊耦合的雷達(dá)慣導(dǎo)里程計(jì)(Tightly-coupled Lidar Inertial Odometry),借助的手段就是利用GT-SAM庫中的方法。

LIO-SAM 提出了一個利用GT-SAM的緊耦合激光雷達(dá)慣導(dǎo)里程計(jì)的框架。

實(shí)現(xiàn)了高精度、實(shí)時的移動機(jī)器人的軌跡估計(jì)和建圖。

其中點(diǎn)云運(yùn)動畸變矯正的代碼在圖像投影的節(jié)點(diǎn)中

23c33d90-33ba-11ed-ba43-dac502259ad0.png

可以看到該節(jié)點(diǎn) 訂閱 3種消息:

原始點(diǎn)云數(shù)據(jù)

原始imu數(shù)據(jù)

imu預(yù)積分后預(yù)測的imu里程計(jì)數(shù)據(jù)其中完成的一個主要功能就是進(jìn)行畸變矯正。

本篇博客將解讀其畸變矯正處理流程部分。

23d60f9c-33ba-11ed-ba43-dac502259ad0.png

畸變矯正

將點(diǎn)云投影到一個矩陣上,并保存每個點(diǎn)的信息,并在內(nèi)部進(jìn)行畸變矯正

  void projectPointCloud()  {

    int cloudSize = laserCloudIn->points.size();    for (int i = 0; i < cloudSize; ++i)    {

遍歷整個點(diǎn)云

      PointType thisPoint;       thisPoint.x = laserCloudIn->points[i].x;      thisPoint.y = laserCloudIn->points[i].y;      thisPoint.z = laserCloudIn->points[i].z;      thisPoint.intensity = laserCloudIn->points[i].intensity;

取出對應(yīng)的某個點(diǎn)

float range = pointDistance(thisPoint);

計(jì)算這個點(diǎn)距離lidar中心的距離

      if (range < lidarMinRange || range > lidarMaxRange)        continue;

距離太小或者太遠(yuǎn)都認(rèn)為是異常點(diǎn)

      int rowIdn = laserCloudIn->points[i].ring;      if (rowIdn < 0 || rowIdn >= N_SCAN)        continue;      if (rowIdn % downsampleRate != 0)        continue;

取出對應(yīng)的在第幾根scan上


scan id 合理判斷


如果需要降采樣,就根據(jù)scan id 適當(dāng)跳過

      float horizonAngle = atan2(thisPoint.x, thisPoint.y) * 180 / M_PI;       static float ang_res_x = 360.0/float(Horizon_SCAN);      int columnIdn = -round((horizonAngle-90.0)/ang_res_x) + Horizon_SCAN/2;      if (columnIdn >= Horizon_SCAN)        columnIdn -= Horizon_SCAN;      if (columnIdn < 0 || columnIdn >= Horizon_SCAN)        continue;

計(jì)算水平角

計(jì)算水平分辨率


計(jì)算水平線束id ,轉(zhuǎn)換到x負(fù)方向?yàn)槠鹗?,順時針為正方向,范圍[0-H]


對水平角做補(bǔ)償,因?yàn)槔走_(dá)是順時針旋轉(zhuǎn),


對水平id進(jìn)行檢查

      if (rangeMat.at(rowIdn, columnIdn) != FLT_MAX)        continue;

如果這個位置有填充了就跳過


點(diǎn)云不是完全的360度,可能會多一些

      thisPoint = deskewPoint(&thisPoint, laserCloudIn->points[i].time);

對點(diǎn)做運(yùn)動補(bǔ)償

rangeMat.at(rowIdn, columnIdn) = range;

將這個點(diǎn)的距離數(shù)據(jù)保存進(jìn)這個range矩陣種

int index = columnIdn + rowIdn * Horizon_SCAN;

算出點(diǎn)的索引

fullCloud->points[index] = thisPoint;

保存這個點(diǎn)的坐標(biāo)

之后來看下運(yùn)動補(bǔ)償?shù)煤瘮?shù)deskewPoint

  PointType deskewPoint(PointType *point, double relTime)  {

    if (deskewFlag == -1 || cloudInfo.imuAvailable == false)      return *point;

判斷是否可以進(jìn)行運(yùn)動補(bǔ)償,不能得話則之間返回原點(diǎn)


判斷依據(jù):

deskewFlag 是原始點(diǎn)云 沒有 time得標(biāo)簽 則為-1

cloudInfo.imuAvailable 的原始imu里面的數(shù)據(jù)判斷

    double pointTime = timeScanCur + relTime;

relTime 是相對時間,加上起始時間就是絕對時間

    float rotXCur, rotYCur, rotZCur;    findRotation(pointTime, &rotXCur, &rotYCur, &rotZCur);

通過findRotation函數(shù) 計(jì)算當(dāng)前點(diǎn) 相對起始點(diǎn)的相對旋轉(zhuǎn)

其內(nèi)部為:

  void findRotation(double pointTime, float *rotXCur, float *rotYCur, float *rotZCur)  {    *rotXCur = 0; *rotYCur = 0; *rotZCur = 0;

先將相對旋轉(zhuǎn)至0

    int imuPointerFront = 0;    while (imuPointerFront < imuPointerCur)    {      if (pointTime < imuTime[imuPointerFront])        break;      ++imuPointerFront;    }

找到距離該點(diǎn)云時間最近的 大于該點(diǎn)云時間的點(diǎn)

    if (pointTime > imuTime[imuPointerFront] || imuPointerFront == 0)    {      *rotXCur = imuRotX[imuPointerFront];      *rotYCur = imuRotY[imuPointerFront];      *rotZCur = imuRotZ[imuPointerFront];    }

如果時間戳不在兩個imu的旋轉(zhuǎn)之間,就直接賦值了

    } else {       int imuPointerBack = imuPointerFront - 1;      double ratioFront = (pointTime - imuTime[imuPointerBack]) / (imuTime[imuPointerFront] - imuTime[imuPointerBack]);      double ratioBack = (imuTime[imuPointerFront] - pointTime) / (imuTime[imuPointerFront] - imuTime[imuPointerBack]);      *rotXCur = imuRotX[imuPointerFront] * ratioFront + imuRotX[imuPointerBack] * ratioBack;      *rotYCur = imuRotY[imuPointerFront] * ratioFront + imuRotY[imuPointerBack] * ratioBack;      *rotZCur = imuRotZ[imuPointerFront] * ratioFront + imuRotZ[imuPointerBack] * ratioBack;    }

否則 作一個線性插值,得到相對旋轉(zhuǎn)


算兩個權(quán)重 進(jìn)行 插值

    float posXCur, posYCur, posZCur;    findPosition(relTime, &posXCur, &posYCur, &posZCur);

這里沒有計(jì)算平移補(bǔ)償 如果運(yùn)動不快的話

    if (firstPointFlag == true)    {      transStartInverse = (pcl::getTransformation(posXCur, posYCur, posZCur, rotXCur, rotYCur, rotZCur)).inverse();      firstPointFlag = false;    }

計(jì)算第一個點(diǎn)的相對位姿

    Eigen::Affine3f transFinal = pcl::getTransformation(posXCur, posYCur, posZCur, rotXCur, rotYCur, rotZCur);    Eigen::Affine3f transBt = transStartInverse * transFinal;

計(jì)算當(dāng)前點(diǎn)和第一點(diǎn)的相對位姿

    newPoint.x = transBt(0,0) * point->x + transBt(0,1) * point->y + transBt(0,2) * point->z + transBt(0,3);    newPoint.y = transBt(1,0) * point->x + transBt(1,1) * point->y + transBt(1,2) * point->z + transBt(1,3);    newPoint.z = transBt(2,0) * point->x + transBt(2,1) * point->y + transBt(2,2) * point->z + transBt(2,3);    newPoint.intensity = point->intensity;    return newPoint;

就是R*p+t ,把點(diǎn)補(bǔ)償?shù)降谝粋€點(diǎn)對應(yīng)的時刻的位姿

然后看提取出有效的點(diǎn)的信息 函數(shù)cloudExtraction

  void cloudExtraction()  {

    for (int i = 0; i < N_SCAN; ++i)    {

遍歷每一根scan

cloudInfo.startRingIndex[i] = count - 1 + 5;

這個scan可以計(jì)算曲率的起始點(diǎn)(計(jì)算曲率需要左右各五個點(diǎn))

      for (int j = 0; j < Horizon_SCAN; ++j)      {

遍歷該 scan上的每 個點(diǎn)

        if (rangeMat.at(i,j) != FLT_MAX)//FLT_MAX就是最大的浮點(diǎn)數(shù)        {

判斷該點(diǎn) 是否 是一個 有效的點(diǎn)


rangeMat的每個點(diǎn)初始化為FLT_MAX ,如果點(diǎn)有效,則會賦值為 range

cloudInfo.pointColInd[count] = j;

點(diǎn)云信息里面 這個點(diǎn)對應(yīng)著哪一個垂直線

cloudInfo.pointRange[count] = rangeMat.at(i,j);

點(diǎn)云信息里面 保存它的距離信息

 extractedCloud->push_back(fullCloud->points[j + i*Horizon_SCAN]);

他的3d坐標(biāo)信息

cloudInfo.endRingIndex[i] = count -1 - 5;

這個scan可以計(jì)算曲率的終端

在上面處理完后


即可發(fā)布點(diǎn)云

  void publishClouds()  {    cloudInfo.header = cloudHeader;    cloudInfo.cloud_deskewed = publishCloud(&pubExtractedCloud, extractedCloud, cloudHeader.stamp, lidarFrame);    pubLaserCloudInfo.publish(cloudInfo);  }

最后將處理后的點(diǎn)云發(fā)布出去

result

23ec0fe0-33ba-11ed-ba43-dac502259ad0.png

23fb2ef8-33ba-11ed-ba43-dac502259ad0.png

240d608c-33ba-11ed-ba43-dac502259ad0.png





審核編輯:劉清

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

    關(guān)注

    9

    文章

    3024

    瀏覽量

    115628
  • SAM
    SAM
    +關(guān)注

    關(guān)注

    0

    文章

    118

    瀏覽量

    34463
  • 激光雷達(dá)
    +關(guān)注

    關(guān)注

    982

    文章

    4560

    瀏覽量

    197183

原文標(biāo)題:LIO-SAM點(diǎn)云預(yù)處理前端:畸變矯正

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    萬線激光雷達(dá)是依托什么技術(shù)實(shí)現(xiàn)的?

    [首發(fā)于智駕最前沿微信公眾號]在自動駕駛領(lǐng)域,當(dāng)談?wù)?b class='flag-5'>激光雷達(dá)時,線束多少直是其關(guān)鍵指標(biāo),從最初的16線、64線到后來的128線,線數(shù)越高,意味著掃描出的點(diǎn)云越密集,看得也越清楚。就在最近,速騰聚創(chuàng)
    的頭像 發(fā)表于 04-28 09:06 ?502次閱讀
    萬線<b class='flag-5'>激光雷達(dá)</b>是依托什么技術(shù)實(shí)現(xiàn)的?

    固態(tài)激光雷達(dá)參數(shù)以及避障視頻

    本帖最后由 jf_63660781 于 2026-3-27 14:23 編輯 1 產(chǎn)品概述 G90A-60傳感器是款線陣固態(tài)激光雷達(dá)。本產(chǎn)品基于三角測距原理,并配以相關(guān)光學(xué)、電學(xué)
    發(fā)表于 03-27 14:14

    禾賽科技ATX激光雷達(dá)獲得汽奔騰新代車型定點(diǎn)

      3 月 25 日,全球激光雷達(dá)領(lǐng)導(dǎo)者禾賽科技(NASDAQ: HSAI;HKEX: 2525)宣布,其 ATX 激光雷達(dá)正式獲得汽奔騰新代車型定點(diǎn)。此次合作意味著禾賽在
    的頭像 發(fā)表于 03-26 16:55 ?1882次閱讀

    【科研動態(tài)】新代集成光子FMCW激光雷達(dá)光源的設(shè)計(jì)框架與性能權(quán)衡

    隨著自動駕駛、航空航天及工業(yè)測量等領(lǐng)域?qū)Ω呔忍綔y需求的不斷增長,調(diào)頻連續(xù)波(FMCW)激光雷達(dá)因其出色的抗干擾能力、高分辨率測距以及直接測速能力而備受關(guān)注。與傳統(tǒng)直接飛行時間(ToF)激光雷達(dá)相比
    的頭像 發(fā)表于 02-05 11:36 ?675次閱讀
    【科研動態(tài)】新<b class='flag-5'>一</b>代集成光子FMCW<b class='flag-5'>激光雷達(dá)</b>光源的設(shè)計(jì)<b class='flag-5'>框架</b>與性能權(quán)衡

    禾賽科技位列全球激光雷達(dá)行業(yè)專利第

    Landscape Analysis 2025)。KnowMade 指出,禾賽在激光雷達(dá)領(lǐng)域的專利數(shù)量位居激光雷達(dá)行業(yè)全球第,專利綜合強(qiáng)度激光雷達(dá)行業(yè)全球第
    的頭像 發(fā)表于 01-27 14:28 ?583次閱讀
    禾賽科技位列全球<b class='flag-5'>激光雷達(dá)</b>行業(yè)專利第<b class='flag-5'>一</b>

    如何解決激光雷達(dá)點(diǎn)云中“鬼影”和“膨脹”問題?

    [首發(fā)于智駕最前沿微信公眾號]之前在聊激光雷達(dá)點(diǎn)云“鬼影”和“膨脹”的文章中( 相關(guān)閱讀: 激光雷達(dá)點(diǎn)云中“鬼影”和“膨脹”是什么原因?qū)е碌??),很多小伙伴都提?b class='flag-5'>一問題,那就是
    的頭像 發(fā)表于 01-02 09:30 ?655次閱讀
    如何解決<b class='flag-5'>激光雷達(dá)</b>點(diǎn)云中“鬼影”和“膨脹”問題?

    如何為自動駕駛汽車選擇款合適的激光雷達(dá)?

    物體離傳感器多遠(yuǎn)。把很多這樣的測距結(jié)果按角度組織起來,就能得到三維的“點(diǎn)云”,用來表示周圍物體的形狀和位置。激光雷達(dá)的主要作用就是讓車知道周圍有哪些東西、在什么位置、大概是什么大小。 ? 它是怎么工作的?
    的頭像 發(fā)表于 12-14 09:58 ?2757次閱讀
    如何為自動駕駛汽車選擇<b class='flag-5'>一</b>款合適的<b class='flag-5'>激光雷達(dá)</b>?

    禾賽科技激光雷達(dá)已累計(jì)交付超200萬臺

    今日,全球激光雷達(dá)領(lǐng)導(dǎo)者禾賽科技(NASDAQ: HSAI;HKEX: 2525)宣布,公司累計(jì)第 200 萬臺激光雷達(dá)已于 11 月中旬在禾賽麥克斯韋智造中心正式量產(chǎn)下線并交付客戶。禾賽成為全球首個累計(jì)量產(chǎn)并交付超 200 萬臺的激光
    的頭像 發(fā)表于 11-17 15:47 ?2616次閱讀

    禾賽科技與理想汽車?yán)m(xù)簽激光雷達(dá)合作

    今日,全球激光雷達(dá)領(lǐng)先企業(yè)禾賽科技(NASDAQ: HSAI;HKEX: 2525)正式宣布獲得理想汽車全新代輔助駕駛平臺全系車型激光雷達(dá)定點(diǎn),包括 L 系列、 i 系列和 MEGA。禾賽科技也將繼續(xù)作為理想汽車的獨(dú)家
    的頭像 發(fā)表于 11-13 10:21 ?2046次閱讀

    激光雷達(dá)為什么會出現(xiàn)串?dāng)_的問題?

    飛行時間(Time-of-Flight,TOF)和連續(xù)波調(diào)頻型(Frequency-Modulated Continuous Wave,F(xiàn)MCW)兩種。 圖片源自:網(wǎng)絡(luò) 脈沖型TOF激光雷達(dá)雷達(dá)的工作原理比較直觀,發(fā)射器每隔
    的頭像 發(fā)表于 11-04 10:42 ?1003次閱讀
    <b class='flag-5'>激光雷達(dá)</b>為什么會出現(xiàn)串?dāng)_的問題?

    【CIE全國RISC-V創(chuàng)新應(yīng)用大賽】+基于MUSE Pi Pro的3d激光里程計(jì)實(shí)現(xiàn)

    基于MUSE Pi Pro的3D激光里程計(jì)實(shí)現(xiàn)技術(shù)文檔 內(nèi)容摘要 本文檔詳細(xì)介紹了基于MUSE Pi Pro開發(fā)板和速騰聚創(chuàng)Airy 96線激光雷達(dá)實(shí)現(xiàn)3D激光
    發(fā)表于 10-24 17:02

    華為,激光雷達(dá)! 車載激光雷達(dá)市場的“隱形冠軍”

    達(dá)到93.4%!相比此前1-5月份的三家份額91%進(jìn)步提高,激光雷達(dá)產(chǎn)業(yè)正形成“寡頭”競爭格局。 值得關(guān)注的是,華為以 64.38 萬顆的裝機(jī)量穩(wěn)居榜首,市場份額攀升至 41.1%,成為車載激光雷達(dá)市場的“隱形冠軍”。 ? 作
    的頭像 發(fā)表于 10-23 18:57 ?4292次閱讀
    華為,<b class='flag-5'>激光雷達(dá)</b>第<b class='flag-5'>一</b>! 車載<b class='flag-5'>激光雷達(dá)</b>市場的“隱形冠軍”

    【SOA是什么?】#激光雷達(dá)

    激光雷達(dá)
    天津見合八方光電科技有限公司
    發(fā)布于 :2025年07月15日 14:39:59

    SPAD席卷車載激光雷達(dá)市場

    電子發(fā)燒友網(wǎng)報(bào)道(文/梁浩斌)上周我們報(bào)道了款新推出的激光雷達(dá)ASIC方案,值得關(guān)注的是該方案中與ASIC搭配的傳感器均選擇了SiPM。當(dāng)然從成本的角度來看,作為第三方的激光雷達(dá)ASIC方案
    的頭像 發(fā)表于 06-13 00:59 ?6091次閱讀

    超酷的樹莓派激光雷達(dá)掃描儀!

    摘要這款DIY的PiLiDAR掃描儀項(xiàng)目利用樹莓派進(jìn)行激光雷達(dá)測繪。激光雷達(dá)通過發(fā)射激光來掃描周圍環(huán)境,從而創(chuàng)建三維模型。該項(xiàng)目需要樹莓派4、攝像頭、電機(jī)以及
    的頭像 發(fā)表于 06-01 08:33 ?1298次閱讀
    超酷的樹莓派<b class='flag-5'>激光雷達(dá)</b>掃描儀!
    佛坪县| 荥经县| 庄浪县| 清原| 岳阳市| 上思县| 林甸县| 田林县| 福安市| 岳阳市| 德安县| 浠水县| 长顺县| 商城县| 威信县| 民丰县| 玉树县| 东乡族自治县| 广安市| 延津县| 舞阳县| 集贤县| 阿合奇县| 罗山县| 武威市| 温州市| 乌鲁木齐县| 肃北| 青神县| 克东县| 安阳县| 盐源县| 合作市| 镇雄县| 正镶白旗| 济源市| 登封市| 吉安市| 宜兴市| 勐海县| 泽州县|