• <menuitem id="h3zrq"></menuitem>
      <span id="h3zrq"><i id="h3zrq"><small id="h3zrq"></small></i></span>
    • 加入收藏 在線留言 聯系我們
      關注微信
      手機掃一掃 立刻聯系商家
      全國熱線18638161680
      公司新聞
      web3.0卡牌鏈游項目系統開發源碼解決方案(成熟技術)
      發布時間: 2023-06-28 10:49 更新時間: 2024-12-02 21:00

          一、什么是元宇宙?

          元宇宙指的是通過虛擬增強的物理現實,呈現收斂性和物理持久性特征的,基于未來互聯網,具有鏈接感知和共享特征的3D虛擬空間。

          大概可以從時空性、真實性、獨立性、連接性四個方面交叉描述元宇宙:

          (1)Fromtheperspectiveofspace-time,themetauniverseisavirtualdigitalworldinthespacedimensionandarealdigitalworldinthetimedimension;

          (2)Fromtheperspectiveofauthenticity,therearebothdigitalcopiesoftherealworldandcreationsofthevirtualworldinthemetauniverse;

          (3)Fromtheperspectiveofindependence,themetauniverseisaparallelspacecloselyconnectedwiththeexternalrealworldandhighlyindependent;

          (4)Fromtheconnectivitypointofview,themetauniverseisasustainableandwidelycoveredvirtualrealitysystemthatincludesthenetwork,hardwareterminalsandusers;

          為了保證代碼的簡潔,我們要把以前做過的東西封裝成函數,寫在slamBase.cpp中,以便將來調用。(不過,由于是算法性質的內容,就不封成c++的對象了)。

          首先工具函數:將cv的旋轉矢量與位移矢量轉換為變換矩陣,類型為Eigen::Isometry3d;

          src/slamBase.cpp

          1//cvMat2Eigen

          2Eigen::Isometry3dcvMat2Eigen(cv::Mat&rvec,cv::Mat&tvec)

          3{

          4cv::MatR;

          5cv::Rodrigues(rvec,R);

          6Eigen::Matrix3dr;

          7cv::cv2eigen(R,r);

          8

          9//將平移向量和旋轉矩陣轉換成變換矩陣

          10Eigen::Isometry3dT=Eigen::Isometry3d::Identity();

          11

          12Eigen::AngleAxisdangle(r);

          13Eigen::Translation&lt;double,3&gt;trans(tvec.at&lt;double&gt;(0,0),tvec.at&lt;double&gt;(0,1),tvec.at&lt;double&gt;(0,2));

          14T=angle;

          15T(0,3)=tvec.at&lt;double&gt;(0,0);

          16T(1,3)=tvec.at&lt;double&gt;(0,1);

          17T(2,3)=tvec.at&lt;double&gt;(0,2);

          18returnT;

          19}

          另一個函數:將新的幀合并到舊的點云里:

          1//joinPointCloud

          2//輸入:原始點云,新來的幀以及它的位姿

          3//輸出:將新來幀加到原始幀后的圖像

          4PointCloud::PtrjoinPointCloud(PointCloud::Ptroriginal,FRAME&newFrame,Eigen::Isometry3dT,CAMERA_INTRINSIC_PARAMETERS&camera)

          5{

          6PointCloud::PtrnewCloud=image2PointCloud(newFrame.rgb,newFrame.depth,camera);

          7

          8//合并點云

          9PointCloud::Ptroutput(newPointCloud());

          10pcl::transformPointCloud(*original,*output,T.matrix());

          11*newCloud+=*output;

          12

          13//Voxelgrid濾波降采樣

          14staticpcl::VoxelGrid&lt;PointT&gt;voxel;

          15staticParameterReaderpd;

          16doublegridsize=atof(pd.getData("voxel_grid").c_str());

          17voxel.setLeafSize(gridsize,gridsize,gridsize);

          18voxel.setInputCloud(newCloud);

          19PointCloud::Ptrtmp(newPointCloud());

          20voxel.filter(*tmp);

          21returntmp;


      聯系方式

      • 電  話:18638161680
      • 聯系人:王
      • 手  機:18638161680
      • 微  信:18638161680