国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

域名指向另一個(gè)網(wǎng)站湖南有實(shí)力seo優(yōu)化

域名指向另一個(gè)網(wǎng)站,湖南有實(shí)力seo優(yōu)化,省級(jí)示范校建設(shè)專題網(wǎng)站,wordpress如何一欄顯示文章目錄 引言外參標(biāo)定原理ICP匹配示例參考文獻(xiàn) 引言 多激光雷達(dá)系統(tǒng)通常用于自動(dòng)駕駛或機(jī)器人,每個(gè)雷達(dá)的位置和姿態(tài)不同,需要將它們的數(shù)據(jù)統(tǒng)一到同一個(gè)坐標(biāo)系下。多激光雷達(dá)外參標(biāo)定的核心目標(biāo)是通過(guò)計(jì)算不同雷達(dá)坐標(biāo)系之間的剛性變換關(guān)系&#xff08…

文章目錄

  • 引言
  • 外參標(biāo)定原理
  • ICP匹配示例
  • 參考文獻(xiàn)

引言

多激光雷達(dá)系統(tǒng)通常用于自動(dòng)駕駛或機(jī)器人,每個(gè)雷達(dá)的位置和姿態(tài)不同,需要將它們的數(shù)據(jù)統(tǒng)一到同一個(gè)坐標(biāo)系下。多激光雷達(dá)外參標(biāo)定的核心目標(biāo)是通過(guò)計(jì)算不同雷達(dá)坐標(biāo)系之間的剛性變換關(guān)系(旋轉(zhuǎn)矩陣 R R R 和平移向量 t t t),將多個(gè)雷達(dá)的點(diǎn)云數(shù)據(jù)統(tǒng)一到同一坐標(biāo)系下。具體需求包括:

  • 數(shù)據(jù)融合:消除多雷達(dá)間的位姿差異,生成全局一致的點(diǎn)云。
  • 減少累積誤差:避免多傳感器數(shù)據(jù)因坐標(biāo)系不統(tǒng)一導(dǎo)致的定位與建圖誤差。
  • 提升感知精度:為自動(dòng)駕駛或機(jī)器人提供更可靠的環(huán)境感知能力。

外參標(biāo)定原理

外參標(biāo)定本質(zhì)是求解兩個(gè)坐標(biāo)系之間的最優(yōu)變換參數(shù),設(shè)雷達(dá)A的坐標(biāo)系為源坐標(biāo)系,雷達(dá)B為目標(biāo)坐標(biāo)系。對(duì)于同一物理點(diǎn) P P P,其在兩個(gè)坐標(biāo)系下的坐標(biāo)分別為 P A P_A PA? P B P_B PB?,滿足:
P B = R ? P A + t P_B = R \cdot P_A + t PB?=R?PA?+t
其中 R ∈ S O ( 3 ) R \in SO(3) RSO(3) 為旋轉(zhuǎn)矩陣, t ∈ R 3 t \in \mathbb{R}^3 tR3 為平移向量。

一般來(lái)說(shuō),多激光雷達(dá)的主流的外參標(biāo)定方法有手動(dòng)標(biāo)定調(diào)參法、自動(dòng)標(biāo)定法、基于車輛運(yùn)動(dòng)軌跡的標(biāo)定法。

  • 手動(dòng)標(biāo)定法:
    使用已知幾何形狀的標(biāo)定物(如立方體、棋盤格),通過(guò)人工測(cè)量或標(biāo)定物特征點(diǎn)計(jì)算外參。優(yōu)點(diǎn):精度高,適合實(shí)驗(yàn)室環(huán)境。 缺點(diǎn):依賴標(biāo)定物,效率低。
    基本步驟是:
    1. 將標(biāo)定物放置在雷達(dá)共同視場(chǎng)內(nèi);
    2. 提取標(biāo)定物的角點(diǎn)或平面;
    3. 基于最小二乘法求解 R R R t t t
  • 自動(dòng)標(biāo)定法:
    基本方式是利用環(huán)境中的穩(wěn)定特征(如地面、建筑物邊緣)自動(dòng)對(duì)齊點(diǎn)云,優(yōu)點(diǎn)在于無(wú)需標(biāo)定物、適應(yīng)性較強(qiáng),但易受動(dòng)態(tài)物體干擾,且要求場(chǎng)景特征豐富。
    多采用 ICP(Iterative Closest PointNDT(Normal Distributions Transform) 求解 R R R t t t。
    ICP 通過(guò)迭代最近點(diǎn)匹配,最小化點(diǎn)對(duì)距離:
    min ? R , t ∑ i = 1 N ∥ ( R ? P A , i + t ) ? P B , i ∥ 2 \min_{R,t} \sum_{i=1}^N \| (R \cdot P_{A,i} + t) - P_{B,i} \|^2 R,tmin?i=1N?(R?PA,i?+t)?PB,i?2
    NDT(Normal Distributions Transform) 則將點(diǎn)云轉(zhuǎn)換為概率密度函數(shù),通過(guò)優(yōu)化概率分布相似性求解變換。

激光雷達(dá)外參標(biāo)定

  • 基于運(yùn)動(dòng)軌跡的標(biāo)定:
    利用雷達(dá)在運(yùn)動(dòng)過(guò)程中采集的數(shù)據(jù),通過(guò)里程計(jì)或SLAM生成軌跡約束。一般是聯(lián)合優(yōu)化多個(gè)雷達(dá)的外參和運(yùn)動(dòng)軌跡,再使用因子圖優(yōu)化(Factor Graph Optimization)等方式進(jìn)行優(yōu)化,求解雷達(dá)之間的運(yùn)動(dòng)軌跡所匹配的 R R R t t t。
    這種方式適合動(dòng)態(tài)環(huán)境卻可在線標(biāo)定,但計(jì)算復(fù)雜度高,需高精度里程計(jì)支持。

注:實(shí)際工程落地時(shí),可不用追求高難度的優(yōu)化算法,可根據(jù)具體場(chǎng)景選擇合適的方式來(lái)進(jìn)行標(biāo)定

ICP匹配示例

在這篇文章中,我們可結(jié)合手動(dòng)標(biāo)定法與自動(dòng)標(biāo)定法聯(lián)調(diào)方式來(lái)確保標(biāo)定精度,簡(jiǎn)單操作是假設(shè)我們通過(guò)手動(dòng)標(biāo)定方式初步得到基準(zhǔn)激光雷達(dá)與附屬激光雷達(dá)的相對(duì)坐標(biāo)變換參數(shù) R 0 R_0 R0? t 0 t_0 t0? ,在此基礎(chǔ)上采用 G I C P GICP GICP、 I C P ICP ICP等基礎(chǔ)算法進(jìn)行多次配準(zhǔn)提高標(biāo)定精度,得到最終的 R R R t t t

這里展示一個(gè) I C P ICP ICP的使用示例:
按" 空格 "即可觀察迭代匹配的效果。

#include <pcl/console/time.h>  
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>
#include <pcl/registration/icp.h>
#include <pcl/visualization/pcl_visualizer.h>#include <string>typedef pcl::PointXYZ PointT;
typedef pcl::PointCloud<PointT> PointCloudT;bool next_iteration = false;void print4x4Matrix(const Eigen::Matrix4d& matrix) {printf("Rotation matrix :\n");printf("    | %6.3f %6.3f %6.3f | \n", matrix(0, 0), matrix(0, 1),matrix(0, 2));printf("R = | %6.3f %6.3f %6.3f | \n", matrix(1, 0), matrix(1, 1),matrix(1, 2));printf("    | %6.3f %6.3f %6.3f | \n", matrix(2, 0), matrix(2, 1),matrix(2, 2));printf("Translation vector :\n");printf("t = < %6.3f, %6.3f, %6.3f >\n\n", matrix(0, 3), matrix(1, 3),matrix(2, 3));
}
/*** 此函數(shù)是查看器的回調(diào)。 當(dāng)查看器窗口位于頂部時(shí),只要按任意鍵,就會(huì)調(diào)用此函數(shù)。* 如果碰到“空格”; 將布爾值設(shè)置為true。* @param event* @param nothing*/
void keyboardEventOccurred(const pcl::visualization::KeyboardEvent& event,void* nothing) {if (event.getKeySym() == "space" && event.keyDown()) next_iteration = true;
}int main(int argc, char* argv[]) {// The point clouds we will be usingPointCloudT::Ptr cloud_in(new PointCloudT);   // Original point cloudPointCloudT::Ptr cloud_tr(new PointCloudT);   // Transformed point cloudPointCloudT::Ptr cloud_icp(new PointCloudT);  // ICP output point cloud//    我們檢查程序的參數(shù),設(shè)置初始ICP迭代的次數(shù),然后嘗試加載PLY文件。// Checking program argumentsif (argc < 2) {printf("Usage :\n");printf("\t\t%s file.ply number_of_ICP_iterations\n", argv[0]);PCL_ERROR("Provide one ply file.\n");return (-1);}int iterations = 1;  // Default number of ICP iterationsif (argc > 2) {// If the user passed the number of iteration as an argumentiterations = atoi(argv[2]);if (iterations < 1) {PCL_ERROR("Number of initial iterations must be >= 1\n");return (-1);}}pcl::console::TicToc time;time.tic();if (pcl::io::loadPLYFile(argv[1], *cloud_in) < 0) {PCL_ERROR("Error loading cloud %s.\n", argv[1]);return (-1);}std::cout << "\nLoaded file " << argv[1] << " (" << cloud_in->size()<< " points) in " << time.toc() << " ms\n"<< std::endl;// 我們使用剛性矩陣變換來(lái)變換原始點(diǎn)云。// cloud_in包含原始點(diǎn)云。// cloud_tr和cloud_icp包含平移/旋轉(zhuǎn)的點(diǎn)云。// cloud_tr是我們將用于顯示的備份(綠點(diǎn)云)。// Defining a rotation matrix and translation vectorEigen::Matrix4d transformation_matrix = Eigen::Matrix4d::Identity();// A rotation matrix (see https://en.wikipedia.org/wiki/Rotation_matrix)double theta = M_PI / 8;  // The angle of rotation in radianstransformation_matrix(0, 0) = std::cos(theta);transformation_matrix(0, 1) = -sin(theta);transformation_matrix(1, 0) = sin(theta);transformation_matrix(1, 1) = std::cos(theta);// A translation on Z axis (0.4 meters)transformation_matrix(2, 3) = 0.4;// Display in terminal the transformation matrixstd::cout << "Applying this rigid transformation to: cloud_in -> cloud_icp"<< std::endl;print4x4Matrix(transformation_matrix);// Executing the transformationpcl::transformPointCloud(*cloud_in, *cloud_icp, transformation_matrix);*cloud_tr = *cloud_icp;  // We backup cloud_icp into cloud_tr for later use// 這是ICP對(duì)象的創(chuàng)建。 我們?cè)O(shè)置ICP算法的參數(shù)。// setMaximumIterations(iterations)設(shè)置要執(zhí)行的初始迭代次數(shù)(默認(rèn)值為1)。// 然后,我們將點(diǎn)云轉(zhuǎn)換為cloud_icp。// 第一次對(duì)齊后,我們將在下一次使用該ICP對(duì)象時(shí)(當(dāng)用戶按下“空格”時(shí))將ICP最大迭代次數(shù)設(shè)置為1。// The Iterative Closest Point algorithmtime.tic();pcl::IterativeClosestPoint<PointT, PointT> icp;icp.setMaximumIterations(iterations);icp.setInputSource(cloud_icp);icp.setInputTarget(cloud_in);icp.align(*cloud_icp);icp.setMaximumIterations(1);  // We set this variable to 1 for the next time// we will call .align () functionstd::cout << "Applied " << iterations << " ICP iteration(s) in " << time.toc()<< " ms" << std::endl;// 檢查ICP算法是否收斂; 否則退出程序。// 如果返回true,我們將轉(zhuǎn)換矩陣存儲(chǔ)在4x4矩陣中,然后打印剛性矩陣轉(zhuǎn)換。if (icp.hasConverged()) {// std::cout << "\nICP has converged, score is " << icp.getFitnessScore()//           << std::endl;// std::cout << "\nICP transformation " << iterations//           << " : cloud_icp -> cloud_in" << std::endl;transformation_matrix = icp.getFinalTransformation().cast<double>();print4x4Matrix(transformation_matrix);} else {PCL_ERROR("\nICP has not converged.\n");return (-1);}// Visualizationpcl::visualization::PCLVisualizer viewer("ICP demo");// Create two vertically separated viewportsint v1(0);int v2(1);viewer.createViewPort(0.0, 0.0, 0.5, 1.0, v1);viewer.createViewPort(0.5, 0.0, 1.0, 1.0, v2);// The color we will be usingfloat bckgr_gray_level = 0.0;  // Blackfloat txt_gray_lvl = 1.0 - bckgr_gray_level;// Original point cloud is whitepcl::visualization::PointCloudColorHandlerCustom<PointT> cloud_in_color_h(cloud_in, (int)255 * txt_gray_lvl, (int)255 * txt_gray_lvl,(int)255 * txt_gray_lvl);viewer.addPointCloud(cloud_in, cloud_in_color_h, "cloud_in_v1", v1);viewer.addPointCloud(cloud_in, cloud_in_color_h, "cloud_in_v2", v2);// Transformed point cloud is greenpcl::visualization::PointCloudColorHandlerCustom<PointT> cloud_tr_color_h(cloud_tr, 20, 180, 20);viewer.addPointCloud(cloud_tr, cloud_tr_color_h, "cloud_tr_v1", v1);// ICP aligned point cloud is redpcl::visualization::PointCloudColorHandlerCustom<PointT> cloud_icp_color_h(cloud_icp, 180, 20, 20);viewer.addPointCloud(cloud_icp, cloud_icp_color_h, "cloud_icp_v2", v2);// Adding text descriptions in each viewportviewer.addText("White: Original point cloud\nGreen: Matrix transformed point cloud", 10,15, 16, txt_gray_lvl, txt_gray_lvl, txt_gray_lvl, "icp_info_1", v1);viewer.addText("White: Original point cloud\nRed: ICP aligned point cloud",10, 15, 16, txt_gray_lvl, txt_gray_lvl, txt_gray_lvl,"icp_info_2", v2);std::stringstream ss;ss << iterations;std::string iterations_cnt = "ICP iterations = " + ss.str();viewer.addText(iterations_cnt, 10, 60, 16, txt_gray_lvl, txt_gray_lvl,txt_gray_lvl, "iterations_cnt", v2);// Set background colorviewer.setBackgroundColor(bckgr_gray_level, bckgr_gray_level,bckgr_gray_level, v1);viewer.setBackgroundColor(bckgr_gray_level, bckgr_gray_level,bckgr_gray_level, v2);// Set camera position and orientationviewer.setCameraPosition(-3.68332, 2.94092, 5.71266, 0.289847, 0.921947,-0.256907, 0);viewer.setSize(1280, 1024);  // Visualiser window size// Register keyboard callback :viewer.registerKeyboardCallback(&keyboardEventOccurred, (void*)NULL);// Display the visualiserwhile (!viewer.wasStopped()) {viewer.spinOnce();// The user pressed "space" :if (next_iteration) {// The Iterative Closest Point algorithmtime.tic();// 如果用戶按下鍵盤上的任意鍵,則會(huì)調(diào)用keyboardEventOccurred函數(shù)。// 此功能檢查鍵是否為“空格”。// 如果是,則全局布爾值next_iteration設(shè)置為true,從而允許查看器循環(huán)輸入代碼的下一部分:調(diào)用ICP對(duì)象以進(jìn)行對(duì)齊。// 記住,我們已經(jīng)配置了該對(duì)象輸入/輸出云,并且之前通過(guò)setMaximumIterations將最大迭代次數(shù)設(shè)置為1。icp.align(*cloud_icp);std::cout << "Applied 1 ICP iteration in " << time.toc() << " ms"<< std::endl;// 和以前一樣,我們檢查ICP是否收斂,如果不收斂,則退出程序。if (icp.hasConverged()) {// printf(“ 033 [11A”);// 在終端增加11行以覆蓋顯示的最后一個(gè)矩陣是一個(gè)小技巧。// 簡(jiǎn)而言之,它允許替換文本而不是編寫新行; 使輸出更具可讀性。// 我們?cè)黾拥螖?shù)以更新可視化器中的文本值。printf("\033[11A");  // Go up 11 lines in terminal output.printf("\nICP has converged, score is %+.0e\n", icp.getFitnessScore());// 這意味著,如果您已經(jīng)完成了10次迭代,則此函數(shù)返回矩陣以將點(diǎn)云從迭代10轉(zhuǎn)換為11。std::cout << "\nICP transformation " << ++iterations<< " : cloud_icp -> cloud_in" << std::endl;// 函數(shù)getFinalTransformation()返回在迭代過(guò)程中完成的剛性矩陣轉(zhuǎn)換(此處為1次迭代)。transformation_matrix *=icp.getFinalTransformation().cast<double>();  // WARNING /!\ This is not accurate! For// "educational" purpose only!print4x4Matrix(transformation_matrix);  // Print the transformation between// original pose and current posess.str("");ss << iterations;std::string iterations_cnt = "ICP iterations = " + ss.str();viewer.updateText(iterations_cnt, 10, 60, 16, txt_gray_lvl,txt_gray_lvl, txt_gray_lvl, "iterations_cnt");viewer.updatePointCloud(cloud_icp, cloud_icp_color_h, "cloud_icp_v2");} else {PCL_ERROR("\nICP has not converged.\n");return (-1);}//這不是我們想要的。//如果我們將最后一個(gè)矩陣與新矩陣相乘,那么結(jié)果就是從開始到當(dāng)前迭代的轉(zhuǎn)換矩陣。}next_iteration = false;}return (0);
}

ICP效果示例

參考文獻(xiàn)

[1] 姜聿于——自動(dòng)駕駛感知【激光雷達(dá)】:一、標(biāo)定

[2] Segal A , Hhnel D , Thrun S .Generalized-ICP[J]. 2009.DOI:10.15607/RSS.2009.V.021.

[3] Kulmer D , Tahiraj I , Chumak A ,et al.Multi-LiCa: A Motion and Targetless Multi LiDAR-to-LiDAR Calibration Framework[J].IEEE, 2025.DOI:10.1109/MFI62651.2024.10705773.

http://aloenet.com.cn/news/41624.html

相關(guān)文章:

  • 合肥快速做網(wǎng)站百度推廣登錄官網(wǎng)
  • 網(wǎng)站批量發(fā)布百度不收錄網(wǎng)站怎么辦
  • 化工網(wǎng)站制作圖片優(yōu)化是什么意思
  • 策劃會(huì)展網(wǎng)站建設(shè)論壇推廣軟件
  • 做電商網(wǎng)站的公司杭州做seo的公司
  • 北京網(wǎng)站制作應(yīng)用拓客渠道有哪些
  • 效果圖制作網(wǎng)站有哪些網(wǎng)站建設(shè)公司哪家好?該如何選擇
  • 河曲縣城鄉(xiāng)建設(shè)管理局網(wǎng)站seo收錄排名
  • 專業(yè)的模板建站企業(yè)免費(fèi)推廣網(wǎng)站排名
  • 如何進(jìn)行網(wǎng)站運(yùn)營(yíng)與規(guī)劃百度seo關(guān)鍵詞外包
  • 蘇州高端網(wǎng)站建設(shè)開發(fā)seo管理系統(tǒng)
  • wordpress hook 列表武漢seo網(wǎng)站管理
  • wordpress 渲染html石家莊關(guān)鍵詞優(yōu)化平臺(tái)
  • 大石橋網(wǎng)站地推app接任務(wù)平臺(tái)
  • 湛江網(wǎng)站建設(shè)外包武漢百度seo排名
  • 成都網(wǎng)站維護(hù)公司百度營(yíng)銷推廣官網(wǎng)
  • 能24小時(shí)掛機(jī)的云電腦網(wǎng)站優(yōu)化關(guān)鍵詞價(jià)格
  • 數(shù)字化文化館網(wǎng)站建設(shè)系統(tǒng)優(yōu)化助手
  • 環(huán)境保護(hù)局網(wǎng)站管理制度建設(shè)磁力搜索引擎下載
  • 網(wǎng)站seo應(yīng)用微信營(yíng)銷軟件排行榜
  • 免費(fèi)python在線正常網(wǎng)站識(shí)圖
  • 建設(shè)網(wǎng)站網(wǎng)站名推廣軟文300字
  • 南昌加盟網(wǎng)站建設(shè)免費(fèi)發(fā)布信息的平臺(tái)
  • 在線做春節(jié)網(wǎng)站百度廣告銷售
  • 在線制作logo圖標(biāo)軟件seo服務(wù)外包報(bào)價(jià)
  • 重慶建工建設(shè)工程信息網(wǎng)關(guān)鍵詞排名優(yōu)化易下拉排名
  • 網(wǎng)站管理的內(nèi)容接單平臺(tái)
  • 常州網(wǎng)站價(jià)格免費(fèi)留電話的廣告
  • 零食b2c網(wǎng)站濟(jì)南網(wǎng)絡(luò)優(yōu)化哪家專業(yè)
  • 請(qǐng)人做彩票網(wǎng)站多少錢b2b電商平臺(tái)有哪些