[{"data":1,"prerenderedAt":1528},["ShallowReactive",2],{"page-\u002Fgraphy\u002F3d-point-and-solve-pipeline":3},{"id":4,"title":5,"body":6,"description":12,"extension":1514,"meta":1515,"navigation":1523,"path":1524,"seo":1525,"stem":1526,"__hash__":1527},"content\u002Fgraphy\u002F3d point and solve pipeline.md","3d Point And Solve Pipeline",{"type":7,"value":8,"toc":1509},"minimark",[9,13,16,19,22,25,30,33,36,39,42,46,49,82,93,1505],[10,11,12],"p",{},"通过两个对角的realsense相机采集绿篱点云后通过刚体变换到世界坐标系合成完成绿篱点云之后使用重建算法，大致是这个流程：",[10,14,15],{},"我负责的两个版本一个是通过vggt的端到端模型直接来输出点云模型的，现在又换成了两个realsense深度相机来重建了。",[10,17,18],{},"过程比较简单，相机应该是realsense d435，你可以下载官方的工具Interl Realsense SDK，里面会提供很多的工具，有的工具也可以直接读取相机内参，这个可以直接询问ai，ai会告诉你sdk有什么工具提供了可以读取相机内参信息的。",[10,20,21],{},"有关于内外参的作用可以学习线性变化之后学习刚体变换，这个用途很广，不只是建图里需要使用，图形学里也是经常使用的。学习之后就可以知道内外参的具体作用，如果有精力顺便可以学习李群和李代数，这些是机器人学里比较重要的内容，我们的刚体变换可以用李群李代数表示。",[10,23,24],{},"然后接下来的视觉方案听个乐就行，因为realsense d435这种深度相机说实话有效距离不行，也不能很好处理含有空洞的绿篱。所以我个人认为这个视觉方案比较尴尬，作用不大。如果有兴趣可以自己下去试试更好的视觉方案，或者说这个项目可能连视觉都不需要。",[26,27,29],"h2",{"id":28},"工具","工具：",[10,31,32],{},"现在有ai agent这个强力的工具，个人认为，如果对代码能力比较苦手又不想练习的话，可以搭配claude code 、codex等工具来使用，所以无论用cpp python都是可以的。",[10,34,35],{},"python这块，比较好用的点云处理库是open3d，里面有重建、表面配准等算法；cpp这里最重要的是pcl库，全称叫做point cloud library，这个库最需要学习，处理点云是百分之百需要使用这个的，里面提供了数据结构和io操作、滤波、特征估计、风格、配准、曲面重建、kd-tree、八叉树空间检索等模块。",[10,37,38],{},"需要查看点云等工具，我推荐你下载个叫做CloudCompare的工具，你之后做点云分割还是查看点云都可以使用它，还有一个叫做meshlab，都可以下载，里面也提供了很多点云的重建算法，你可以直观的调整参数来重建看看效果，比代码操作方便一些。",[10,40,41],{},"对于需要进行上位机展示，如果可以用web工具的话，推荐python一个叫做viser的库，可以自定义控件和通过websocket将点云数据推到网页上展示，性能也还不错。",[26,43,45],{"id":44},"相机和处理环节","相机和处理环节：",[10,47,48],{},"两个相机在对角方向，朝下30°大概，通过调用深度相机采取到点云信息：",[50,51,55,56],"svg",{"xmlns":52,"viewBox":53,"width":54,"height":54},"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg","0 0 800 600","100%","\n  ",[57,58,59,59,60],"defs",{},"\n    ",[61,62,66,67,66,72,59],"filter",{"id":63,"x":64,"y":64,"width":65,"height":65},"glow","-20%","140%","\n      ",[68,69],"feGaussianBlur",{"stdDeviation":70,"result":71},"3","blur",[73,74,75,76,75,79,66],"feMerge",{},"\n        ",[77,78],"feMergeNode",{"in":71},[77,80],{"in":81},"SourceGraphic",[83,84,89],"pre",{"className":85,"code":87,"language":88},[86],"language-text","\u003C!-- 渐变定义 -->\n\u003ClinearGradient id=\"frustumA\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\">\n  \u003Cstop offset=\"0%\" stop-color=\"#00e5ff\" stop-opacity=\"0.3\"\u002F>\n  \u003Cstop offset=\"100%\" stop-color=\"#00e5ff\" stop-opacity=\"0\"\u002F>\n\u003C\u002FlinearGradient>\n\u003ClinearGradient id=\"frustumB\" x1=\"100%\" y1=\"0%\" x2=\"0%\" y2=\"100%\">\n  \u003Cstop offset=\"0%\" stop-color=\"#ff9100\" stop-opacity=\"0.3\"\u002F>\n  \u003Cstop offset=\"100%\" stop-color=\"#ff9100\" stop-opacity=\"0\"\u002F>\n\u003C\u002FlinearGradient>\n\n\u003C!-- 箭头标记 -->\n\u003Cmarker id=\"arrow\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerWidth=\"6\" markerHeight=\"6\" orient=\"auto-start-reverse\">\n  \u003Cpath d=\"M 0 0 L 10 5 L 0 10 z\" fill=\"#ffffff\" \u002F>\n\u003C\u002Fmarker>\n\n\u003C!-- 相机模块组件 -->\n\u003Cg id=\"camera\">\n  \u003Crect x=\"-30\" y=\"-15\" width=\"60\" height=\"30\" rx=\"4\" fill=\"#2d2d2d\" stroke=\"#00e5ff\" stroke-width=\"2\"\u002F>\n  \u003Crect x=\"-10\" y=\"15\" width=\"20\" height=\"8\" fill=\"#555\" \u002F>\n  \u003Ccircle cx=\"0\" cy=\"20\" r=\"4\" fill=\"#00e5ff\" filter=\"url(#glow)\"\u002F>\n\u003C\u002Fg>\n","text",[90,91,87],"code",{"__ignoreMap":92},"",[94,95,55,55,97,55,111],"rect",{"width":54,"height":54,"fill":96},"#121212",[98,99,59,103],"pattern",{"id":100,"width":101,"height":101,"patternunits":102},"grid",40,"userSpaceOnUse",[104,105,55],"path",{"d":106,"fill":107,"stroke":108,"stroke-opacity":109,"stroke-width":110},"M 40 0 L 0 0 0 40","none","#ffffff","0.05","1",[94,112,55,55,114],{"width":54,"height":54,"fill":113},"url(#grid)",[94,115,55,123],{"x":116,"y":117,"width":118,"height":119,"rx":120,"fill":121,"opacity":122},"100","480",600,80,"10","#1b5e20","0.6",[104,124,55,128,55,55,138,55,55,171,55,55,193,55,231,55,55,235,55,253,258,264,267,270,278,281,285,288,291,372,491,542,545,648,651,743,837,906,1051,1088,1245,1336,1487,1490,1493,1496,1499,1502],{"d":125,"stroke":126,"stroke-width":127,"fill":107},"M 100 480 Q 150 460 200 480 T 300 480 T 400 480 T 500 480 T 600 480 T 700 480","#4caf50","2",[88,129,137],{"x":130,"y":131,"fill":132,"font-family":133,"font-size":134,"text-anchor":135,"font-weight":136},"400","530","#81c784","sans-serif","20","middle","bold","绿篱表面 (Hedge)",[139,140,59,59,142],"g",{"transform":141},"translate(200, 150)",[143,144,59,149],"line",{"x1":145,"y1":145,"x2":146,"y2":145,"stroke":108,"stroke-opacity":147,"stroke-dasharray":148},"0","120","0.3","5,5",[143,150,59,155],{"x1":145,"y1":145,"x2":151,"y2":152,"stroke":153,"stroke-opacity":122,"stroke-dasharray":154},"103","60","#00e5ff","4,4",[104,156,59,158,165,55],{"d":157,"fill":107,"stroke":153,"stroke-width":127},"M 60 0 A 60 60 0 0 1 51 30",[88,159,164],{"x":160,"y":161,"fill":153,"font-family":162,"font-size":163},"65","25","monospace","14","30°",[83,166,169],{"className":167,"code":168,"language":88},[86],"\u003C!-- 相机图标 -->\n\u003Cuse href=\"#camera\" \u002F>\n\u003Ctext x=\"0\" y=\"-25\" fill=\"#00e5ff\" font-family=\"sans-serif\" font-size=\"16\" font-weight=\"bold\" text-anchor=\"middle\">RealSense A (对角)\u003C\u002Ftext>\n\n\u003C!-- 视锥 (Frustum) -->\n\u003Cpolygon points=\"0,20 -100,350 250,400\" fill=\"url(#frustumA)\" \u002F>\n\u003Cline x1=\"0\" y1=\"20\" x2=\"-100\" y2=\"350\" stroke=\"#00e5ff\" stroke-width=\"1\" stroke-opacity=\"0.5\"\u002F>\n\u003Cline x1=\"0\" y1=\"20\" x2=\"250\" y2=\"400\" stroke=\"#00e5ff\" stroke-width=\"1\" stroke-opacity=\"0.5\"\u002F>\n",[90,170,168],{"__ignoreMap":92},[139,172,59,59,174],{"transform":173},"translate(600, 150)",[143,175,59,177],{"x1":145,"y1":145,"x2":176,"y2":145,"stroke":108,"stroke-opacity":147,"stroke-dasharray":148},"-120",[143,178,59,181],{"x1":145,"y1":145,"x2":179,"y2":152,"stroke":180,"stroke-opacity":122,"stroke-dasharray":154},"-103","#ff9100",[104,182,59,184,187,55],{"d":183,"fill":107,"stroke":180,"stroke-width":127},"M -60 0 A 60 60 0 0 0 -51 30",[88,185,164],{"x":186,"y":161,"fill":180,"font-family":162,"font-size":163},"-80",[83,188,191],{"className":189,"code":190,"language":88},[86],"\u003C!-- 相机图标 -->\n\u003Cuse href=\"#camera\" \u002F>\n\u003Ctext x=\"0\" y=\"-25\" fill=\"#ff9100\" font-family=\"sans-serif\" font-size=\"16\" font-weight=\"bold\" text-anchor=\"middle\">RealSense B (对角)\u003C\u002Ftext>\n\n\u003C!-- 视锥 (Frustum) -->\n\u003Cpolygon points=\"0,20 -250,400 100,350\" fill=\"url(#frustumB)\" \u002F>\n\u003Cline x1=\"0\" y1=\"20\" x2=\"-250\" y2=\"400\" stroke=\"#ff9100\" stroke-width=\"1\" stroke-opacity=\"0.5\"\u002F>\n\u003Cline x1=\"0\" y1=\"20\" x2=\"100\" y2=\"350\" stroke=\"#ff9100\" stroke-width=\"1\" stroke-opacity=\"0.5\"\u002F>\n",[90,192,190],{"__ignoreMap":92},[139,194,59,59,196],{"filter":195},"url(#glow)",[197,198,59,201],"circle",{"cx":199,"cy":200,"r":127,"fill":153},"160","380",[197,202,59,205],{"cx":203,"cy":130,"r":204,"fill":153},"180","1.5",[197,206,59,209],{"cx":207,"cy":208,"r":127,"fill":153},"150","420",[197,210,59,59,213],{"cx":211,"cy":212,"r":110,"fill":153},"200","450",[197,214,59,216],{"cx":215,"cy":200,"r":127,"fill":180},"640",[197,217,59,219],{"cx":218,"cy":130,"r":204,"fill":180},"620",[197,220,59,222],{"cx":221,"cy":208,"r":127,"fill":180},"650",[197,223,225,55],{"cx":224,"cy":212,"r":110,"fill":180},"600",[83,226,229],{"className":227,"code":228,"language":88},[86],"\u003C!-- 重叠区域融合点云 (黄绿色) -->\n\u003Ccircle cx=\"380\" cy=\"420\" r=\"2.5\" fill=\"#ffff00\" \u002F>\n\u003Ccircle cx=\"400\" cy=\"430\" r=\"2\" fill=\"#ffff00\" \u002F>\n\u003Ccircle cx=\"420\" cy=\"410\" r=\"2.5\" fill=\"#ffff00\" \u002F>\n\u003Ccircle cx=\"370\" cy=\"440\" r=\"1.5\" fill=\"#ffff00\" \u002F>\n\u003Ccircle cx=\"430\" cy=\"440\" r=\"2\" fill=\"#ffff00\" \u002F>\n\u003Ccircle cx=\"410\" cy=\"460\" r=\"2.5\" fill=\"#ffff00\" \u002F>\n\u003Ccircle cx=\"390\" cy=\"470\" r=\"1.5\" fill=\"#ffff00\" \u002F>\n",[90,230,228],{"__ignoreMap":92},[88,232,234],{"x":130,"y":130,"fill":233,"font-family":133,"font-size":163,"text-anchor":135},"#ffff00","重叠融合点云",[139,236,59,59,238],{"transform":237},"translate(400, 300)",[143,239,59,241,247,55],{"x1":145,"y1":145,"x2":145,"y2":186,"stroke":108,"stroke-width":127,"marker-end":240},"url(#arrow)",[88,242,246],{"x":243,"y":244,"fill":108,"font-family":133,"font-size":163,"text-anchor":245},"-5","-85","end","Z (World)",[83,248,251],{"className":249,"code":250,"language":88},[86],"\u003C!-- X轴 (向右) -->\n\u003Cline x1=\"0\" y1=\"0\" x2=\"80\" y2=\"0\" stroke=\"#ffffff\" stroke-width=\"2\" marker-end=\"url(#arrow)\"\u002F>\n\u003Ctext x=\"85\" y=\"5\" fill=\"#ffffff\" font-family=\"sans-serif\" font-size=\"14\">X\u003C\u002Ftext>\n\n\u003C!-- Y轴 (斜向) -->\n\u003Cline x1=\"0\" y1=\"0\" x2=\"-50\" y2=\"50\" stroke=\"#ffffff\" stroke-width=\"2\" marker-end=\"url(#arrow)\"\u002F>\n\u003Ctext x=\"-60\" y=\"65\" fill=\"#ffffff\" font-family=\"sans-serif\" font-size=\"14\">Y\u003C\u002Ftext>\n\n\u003C!-- 刚体变换指示线 -->\n\u003Cpath d=\"M -120 -80 Q -60 -120 0 -80\" fill=\"none\" stroke=\"#aaaaaa\" stroke-width=\"1.5\" stroke-dasharray=\"4,4\" \u002F>\n\u003Ctext x=\"-60\" y=\"-110\" fill=\"#aaaaaa\" font-family=\"monospace\" font-size=\"12\" text-anchor=\"middle\">T_A (R|t)\u003C\u002Ftext>\n\n\u003Cpath d=\"M 120 -80 Q 60 -120 0 -80\" fill=\"none\" stroke=\"#aaaaaa\" stroke-width=\"1.5\" stroke-dasharray=\"4,4\" \u002F>\n\u003Ctext x=\"60\" y=\"-110\" fill=\"#aaaaaa\" font-family=\"monospace\" font-size=\"12\" text-anchor=\"middle\">T_B (R|t)\u003C\u002Ftext>\n",[90,252,250],{"__ignoreMap":92},[88,254,257],{"x":130,"y":255,"fill":108,"font-family":133,"font-size":256,"font-weight":136,"text-anchor":135},"40","24","\n双 RealSense 绿篱点云采集与刚体变换\n",[88,259,263],{"x":130,"y":260,"fill":261,"font-family":133,"font-size":262,"text-anchor":135},"70","#aaaaaa","16","\n（对角视角 · 向下倾斜 30° · 融合至世界坐标系）\n",[10,265,266],{},"然后采集点云的时候需要让点云扰动不是太大，需要使用realsense提供的部分滤波器。你可以使用阈值滤波器，把背景和无效噪点给裁掉，避免远处的离散点混入点云，然后还有个叫时间滤波器，可以抵消树木的一些微颤导致的帧间抖动，保证深度数据稳定性。",[10,268,269],{},"这个是采集管道里就应该使用的，在之后我们还需要使用一些滤波器，适用于后处理的，比如说统计离群点滤波和体素滤波。",[10,271,272,273,277],{},"因为在采集完之后还是会出现很多",[274,275,276],"strong",{},"离散的点云","，这个对于之后进行重建任务会有很大麻烦，所以我们是要去除的，它基于每个点到其邻居的平均距离分布来判断是否为离群点。对于绿篱表面这种连续但带有细小起伏的结构比较适用，能去除那些明显脱离主体的孤立噪点。",[10,279,280],{},"然后就是直通滤波，可以设置阈值进行简单的裁切，把不管兴趣的区域比如前方后方背景快速切掉，最后是体素滤波，因为点云如果是数量比较庞大的情况下，对于重建任务也是会增加很多困难的，不只是时间方面，还可能造成许多的空洞等。所以通过体素滤波进行降采样，将点云数量降低一个量级。",[26,282,284],{"id":283},"刚体变换","刚体变换：",[10,286,287],{},"这个是拼接环节，目标是改变点云的位置和姿态，不改变点云大小和形状，将B相机的局部坐标系下点云对齐到A的局部坐标系下或者你以机器内部的中心点作为坐标系都是可以的，这个看你怎么选择，看他们路径规划怎么做。",[10,289,290],{},"我们要先做相机标定，这个是为了得到B到A的刚体变换矩阵，可以学习一下ChArUco标定板，你把标定板放在两个相机的公共视野下，移动标定板让每个相机采集20多张图，最后来求解，这个可以询问AI，网上有成熟的标定工具，ROS也是有的，或者你让ai现场写一个也是可以。",[10,292,293,294,371],{},"我们要计算的是 ",[295,296,300],"mjx-container",{"className":297,"jax":299},[298],"MathJax","SVG",[50,301,309,327],{"style":302,"xmlns":52,"width":303,"height":304,"role":305,"focusable":306,"viewBox":307,"xmlnsXLink":308},"vertical-align: -0.363ex;","5.523ex","1.895ex","img","false","0 -677 2441.1 837.5","http:\u002F\u002Fwww.w3.org\u002F1999\u002Fxlink",[57,310,311,315,319,323],{},[104,312],{"id":313,"d":314},"MJX-1-TEX-I-1D447","M40 437Q21 437 21 445Q21 450 37 501T71 602L88 651Q93 669 101 677H569H659Q691 677 697 676T704 667Q704 661 687 553T668 444Q668 437 649 437Q640 437 637 437T631 442L629 445Q629 451 635 490T641 551Q641 586 628 604T573 629Q568 630 515 631Q469 631 457 630T439 622Q438 621 368 343T298 60Q298 48 386 46Q418 46 427 45T436 36Q436 31 433 22Q429 4 424 1L422 0Q419 0 415 0Q410 0 363 1T228 2Q99 2 64 0H49Q43 6 43 9T45 27Q49 40 55 46H83H94Q174 46 189 55Q190 56 191 56Q196 59 201 76T241 233Q258 301 269 344Q339 619 339 625Q339 630 310 630H279Q212 630 191 624Q146 614 121 583T67 467Q60 445 57 441T43 437H40Z",[104,316],{"id":317,"d":318},"MJX-1-TEX-I-1D435","M231 637Q204 637 199 638T194 649Q194 676 205 682Q206 683 335 683Q594 683 608 681Q671 671 713 636T756 544Q756 480 698 429T565 360L555 357Q619 348 660 311T702 219Q702 146 630 78T453 1Q446 0 242 0Q42 0 39 2Q35 5 35 10Q35 17 37 24Q42 43 47 45Q51 46 62 46H68Q95 46 128 49Q142 52 147 61Q150 65 219 339T288 628Q288 635 231 637ZM649 544Q649 574 634 600T585 634Q578 636 493 637Q473 637 451 637T416 636H403Q388 635 384 626Q382 622 352 506Q352 503 351 500L320 374H401Q482 374 494 376Q554 386 601 434T649 544ZM595 229Q595 273 572 302T512 336Q506 337 429 337Q311 337 310 336Q310 334 293 263T258 122L240 52Q240 48 252 48T333 46Q422 46 429 47Q491 54 543 105T595 229Z",[104,320],{"id":321,"d":322},"MJX-1-TEX-N-2192","M56 237T56 250T70 270H835Q719 357 692 493Q692 494 692 496T691 499Q691 511 708 511H711Q720 511 723 510T729 506T732 497T735 481T743 456Q765 389 816 336T935 261Q944 258 944 250Q944 244 939 241T915 231T877 212Q836 186 806 152T761 85T740 35T732 4Q730 -6 727 -8T711 -11Q691 -11 691 0Q691 7 696 25Q728 151 835 230H70Q56 237 56 250Z",[104,324],{"id":325,"d":326},"MJX-1-TEX-I-1D434","M208 74Q208 50 254 46Q272 46 272 35Q272 34 270 22Q267 8 264 4T251 0Q249 0 239 0T205 1T141 2Q70 2 50 0H42Q35 7 35 11Q37 38 48 46H62Q132 49 164 96Q170 102 345 401T523 704Q530 716 547 716H555H572Q578 707 578 706L606 383Q634 60 636 57Q641 46 701 46Q726 46 726 36Q726 34 723 22Q720 7 718 4T704 0Q701 0 690 0T651 1T578 2Q484 2 455 0H443Q437 6 437 9T439 27Q443 40 445 43L449 46H469Q523 49 533 63L521 213H283L249 155Q208 86 208 74ZM516 260Q516 271 504 416T490 562L463 519Q447 492 400 412L310 260L413 259Q516 259 516 260Z",[139,328,331],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},"currentColor","scale(1,-1)",[139,332,334],{"dataMmlNode":333},"math",[139,335,337,345],{"dataMmlNode":336},"msub",[139,338,340],{"dataMmlNode":339},"mi",[341,342],"use",{"dataC":343,"xLinkHref":344},"1D447","#MJX-1-TEX-I-1D447",[139,346,350,356,364],{"dataMmlNode":347,"transform":348,"dataMjxTexclass":349},"TeXAtom","translate(617,-152.7) scale(0.707)","ORD",[139,351,352],{"dataMmlNode":339},[341,353],{"dataC":354,"xLinkHref":355},"1D435","#MJX-1-TEX-I-1D435",[139,357,360],{"dataMmlNode":358,"transform":359},"mo","translate(759,0)",[341,361],{"dataC":362,"xLinkHref":363},"2192","#MJX-1-TEX-N-2192",[139,365,367],{"dataMmlNode":339,"transform":366},"translate(1759,0)",[341,368],{"dataC":369,"xLinkHref":370},"1D434","#MJX-1-TEX-I-1D434","，也就是相机 B 到相机 A 的外参矩阵。",[373,374,375,436],"ul",{},[376,377,378,379],"li",{},"相机 A 看标定板，得到了标定板在 A 坐标系下的位姿：",[295,380,382],{"className":381,"jax":299},[298],[50,383,388,404],{"style":384,"xmlns":52,"width":385,"height":386,"role":305,"focusable":306,"viewBox":387,"xmlnsXLink":308},"vertical-align: -0.381ex;","5.529ex","1.912ex","0 -677 2444 845.2",[57,389,390,393,396,400],{},[104,391],{"id":392,"d":314},"MJX-2-TEX-I-1D447",[104,394],{"id":395,"d":326},"MJX-2-TEX-I-1D434",[104,397],{"id":398,"d":399},"MJX-2-TEX-N-2190","M944 261T944 250T929 230H165Q167 228 182 216T211 189T244 152T277 96T303 25Q308 7 308 0Q308 -11 288 -11Q281 -11 278 -11T272 -7T267 2T263 21Q245 94 195 151T73 236Q58 242 55 247Q55 254 59 257T73 264Q121 283 158 314T215 375T247 434T264 480L267 497Q269 503 270 505T275 509T288 511Q308 511 308 500Q308 493 303 475Q293 438 278 406T246 352T215 315T185 287T165 270H929Q944 261 944 250Z",[104,401],{"id":402,"d":403},"MJX-2-TEX-I-1D442","M740 435Q740 320 676 213T511 42T304 -22Q207 -22 138 35T51 201Q50 209 50 244Q50 346 98 438T227 601Q351 704 476 704Q514 704 524 703Q621 689 680 617T740 435ZM637 476Q637 565 591 615T476 665Q396 665 322 605Q242 542 200 428T157 216Q157 126 200 73T314 19Q404 19 485 98T608 313Q637 408 637 476Z",[139,405,406],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,407,408],{"dataMmlNode":333},[139,409,410,415],{"dataMmlNode":336},[139,411,412],{"dataMmlNode":339},[341,413],{"dataC":343,"xLinkHref":414},"#MJX-2-TEX-I-1D447",[139,416,417,422,429],{"dataMmlNode":347,"transform":348,"dataMjxTexclass":349},[139,418,419],{"dataMmlNode":339},[341,420],{"dataC":369,"xLinkHref":421},"#MJX-2-TEX-I-1D434",[139,423,425],{"dataMmlNode":358,"transform":424},"translate(750,0)",[341,426],{"dataC":427,"xLinkHref":428},"2190","#MJX-2-TEX-N-2190",[139,430,432],{"dataMmlNode":339,"transform":431},"translate(1750,0)",[341,433],{"dataC":434,"xLinkHref":435},"1D442","#MJX-2-TEX-I-1D442",[376,437,438,439],{},"相机 B 看标定板，得到了标定板在 B 坐标系下的位姿：",[295,440,442],{"className":441,"jax":299},[298],[50,443,448,462],{"style":444,"xmlns":52,"width":445,"height":446,"role":305,"focusable":306,"viewBox":447,"xmlnsXLink":308},"vertical-align: -0.375ex;","5.544ex","1.906ex","0 -677 2450.3 842.6",[57,449,450,453,456,459],{},[104,451],{"id":452,"d":314},"MJX-3-TEX-I-1D447",[104,454],{"id":455,"d":318},"MJX-3-TEX-I-1D435",[104,457],{"id":458,"d":399},"MJX-3-TEX-N-2190",[104,460],{"id":461,"d":403},"MJX-3-TEX-I-1D442",[139,463,464],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,465,466],{"dataMmlNode":333},[139,467,468,473],{"dataMmlNode":336},[139,469,470],{"dataMmlNode":339},[341,471],{"dataC":343,"xLinkHref":472},"#MJX-3-TEX-I-1D447",[139,474,476,481,486],{"dataMmlNode":347,"transform":475,"dataMjxTexclass":349},"translate(617,-150) scale(0.707)",[139,477,478],{"dataMmlNode":339},[341,479],{"dataC":354,"xLinkHref":480},"#MJX-3-TEX-I-1D435",[139,482,483],{"dataMmlNode":358,"transform":359},[341,484],{"dataC":427,"xLinkHref":485},"#MJX-3-TEX-N-2190",[139,487,488],{"dataMmlNode":339,"transform":366},[341,489],{"dataC":434,"xLinkHref":490},"#MJX-3-TEX-I-1D442",[10,492,493,494,541],{},"我们要找的是 ",[295,495,497],{"className":496,"jax":299},[298],[50,498,499,513],{"style":302,"xmlns":52,"width":303,"height":304,"role":305,"focusable":306,"viewBox":307,"xmlnsXLink":308},[57,500,501,504,507,510],{},[104,502],{"id":503,"d":314},"MJX-4-TEX-I-1D447",[104,505],{"id":506,"d":326},"MJX-4-TEX-I-1D434",[104,508],{"id":509,"d":399},"MJX-4-TEX-N-2190",[104,511],{"id":512,"d":318},"MJX-4-TEX-I-1D435",[139,514,515],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,516,517],{"dataMmlNode":333},[139,518,519,524],{"dataMmlNode":336},[139,520,521],{"dataMmlNode":339},[341,522],{"dataC":343,"xLinkHref":523},"#MJX-4-TEX-I-1D447",[139,525,526,531,536],{"dataMmlNode":347,"transform":348,"dataMjxTexclass":349},[139,527,528],{"dataMmlNode":339},[341,529],{"dataC":369,"xLinkHref":530},"#MJX-4-TEX-I-1D434",[139,532,533],{"dataMmlNode":358,"transform":424},[341,534],{"dataC":427,"xLinkHref":535},"#MJX-4-TEX-N-2190",[139,537,538],{"dataMmlNode":339,"transform":431},[341,539],{"dataC":354,"xLinkHref":540},"#MJX-4-TEX-I-1D435","（把 B 坐标系里的点，变到 A 坐标系里）。",[10,543,544],{},"根据坐标变换的链式法则：",[295,546,549],{"className":547,"jax":299,"display":548},[298],"true",[50,550,554,580],{"style":302,"xmlns":52,"width":551,"height":552,"role":305,"focusable":306,"viewBox":553,"xmlnsXLink":308},"15.869ex","1.908ex","0 -683 7014.2 843.5",[57,555,556,560,563,567,570,573,576],{},[104,557],{"id":558,"d":559},"MJX-5-TEX-I-1D443","M287 628Q287 635 230 637Q206 637 199 638T192 648Q192 649 194 659Q200 679 203 681T397 683Q587 682 600 680Q664 669 707 631T751 530Q751 453 685 389Q616 321 507 303Q500 302 402 301H307L277 182Q247 66 247 59Q247 55 248 54T255 50T272 48T305 46H336Q342 37 342 35Q342 19 335 5Q330 0 319 0Q316 0 282 1T182 2Q120 2 87 2T51 1Q33 1 33 11Q33 13 36 25Q40 41 44 43T67 46Q94 46 127 49Q141 52 146 61Q149 65 218 339T287 628ZM645 554Q645 567 643 575T634 597T609 619T560 635Q553 636 480 637Q463 637 445 637T416 636T404 636Q391 635 386 627Q384 621 367 550T332 412T314 344Q314 342 395 342H407H430Q542 342 590 392Q617 419 631 471T645 554Z",[104,561],{"id":562,"d":326},"MJX-5-TEX-I-1D434",[104,564],{"id":565,"d":566},"MJX-5-TEX-N-3D","M56 347Q56 360 70 367H707Q722 359 722 347Q722 336 708 328L390 327H72Q56 332 56 347ZM56 153Q56 168 72 173H708Q722 163 722 153Q722 140 707 133H70Q56 140 56 153Z",[104,568],{"id":569,"d":314},"MJX-5-TEX-I-1D447",[104,571],{"id":572,"d":399},"MJX-5-TEX-N-2190",[104,574],{"id":575,"d":318},"MJX-5-TEX-I-1D435",[104,577],{"id":578,"d":579},"MJX-5-TEX-N-22C5","M78 250Q78 274 95 292T138 310Q162 310 180 294T199 251Q199 226 182 208T139 190T96 207T78 250Z",[139,581,582],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,583,584,598,605,629,636],{"dataMmlNode":333},[139,585,586,592],{"dataMmlNode":336},[139,587,588],{"dataMmlNode":339},[341,589],{"dataC":590,"xLinkHref":591},"1D443","#MJX-5-TEX-I-1D443",[139,593,595],{"dataMmlNode":339,"transform":594},"translate(675,-152.7) scale(0.707)",[341,596],{"dataC":369,"xLinkHref":597},"#MJX-5-TEX-I-1D434",[139,599,601],{"dataMmlNode":358,"transform":600},"translate(1533.1,0)",[341,602],{"dataC":603,"xLinkHref":604},"3D","#MJX-5-TEX-N-3D",[139,606,608,613],{"dataMmlNode":336,"transform":607},"translate(2588.9,0)",[139,609,610],{"dataMmlNode":339},[341,611],{"dataC":343,"xLinkHref":612},"#MJX-5-TEX-I-1D447",[139,614,615,619,624],{"dataMmlNode":347,"transform":348,"dataMjxTexclass":349},[139,616,617],{"dataMmlNode":339},[341,618],{"dataC":369,"xLinkHref":597},[139,620,621],{"dataMmlNode":358,"transform":424},[341,622],{"dataC":427,"xLinkHref":623},"#MJX-5-TEX-N-2190",[139,625,626],{"dataMmlNode":339,"transform":431},[341,627],{"dataC":354,"xLinkHref":628},"#MJX-5-TEX-I-1D435",[139,630,632],{"dataMmlNode":358,"transform":631},"translate(5252.2,0)",[341,633],{"dataC":634,"xLinkHref":635},"22C5","#MJX-5-TEX-N-22C5",[139,637,639,643],{"dataMmlNode":336,"transform":638},"translate(5752.5,0)",[139,640,641],{"dataMmlNode":339},[341,642],{"dataC":590,"xLinkHref":591},[139,644,646],{"dataMmlNode":339,"transform":645},"translate(675,-150) scale(0.707)",[341,647],{"dataC":354,"xLinkHref":628},[10,649,650],{},"又因为：",[295,652,654],{"className":653,"jax":299,"display":548},[298],[50,655,659,682],{"style":384,"xmlns":52,"width":656,"height":657,"role":305,"focusable":306,"viewBox":658,"xmlnsXLink":308},"15.882ex","1.926ex","0 -683 7019.8 851.2",[57,660,661,664,667,670,673,676,679],{},[104,662],{"id":663,"d":559},"MJX-6-TEX-I-1D443",[104,665],{"id":666,"d":326},"MJX-6-TEX-I-1D434",[104,668],{"id":669,"d":566},"MJX-6-TEX-N-3D",[104,671],{"id":672,"d":314},"MJX-6-TEX-I-1D447",[104,674],{"id":675,"d":399},"MJX-6-TEX-N-2190",[104,677],{"id":678,"d":403},"MJX-6-TEX-I-1D442",[104,680],{"id":681,"d":579},"MJX-6-TEX-N-22C5",[139,683,684],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,685,686,698,703,726,732],{"dataMmlNode":333},[139,687,688,693],{"dataMmlNode":336},[139,689,690],{"dataMmlNode":339},[341,691],{"dataC":590,"xLinkHref":692},"#MJX-6-TEX-I-1D443",[139,694,695],{"dataMmlNode":339,"transform":594},[341,696],{"dataC":369,"xLinkHref":697},"#MJX-6-TEX-I-1D434",[139,699,700],{"dataMmlNode":358,"transform":600},[341,701],{"dataC":603,"xLinkHref":702},"#MJX-6-TEX-N-3D",[139,704,705,710],{"dataMmlNode":336,"transform":607},[139,706,707],{"dataMmlNode":339},[341,708],{"dataC":343,"xLinkHref":709},"#MJX-6-TEX-I-1D447",[139,711,712,716,721],{"dataMmlNode":347,"transform":348,"dataMjxTexclass":349},[139,713,714],{"dataMmlNode":339},[341,715],{"dataC":369,"xLinkHref":697},[139,717,718],{"dataMmlNode":358,"transform":424},[341,719],{"dataC":427,"xLinkHref":720},"#MJX-6-TEX-N-2190",[139,722,723],{"dataMmlNode":339,"transform":431},[341,724],{"dataC":434,"xLinkHref":725},"#MJX-6-TEX-I-1D442",[139,727,729],{"dataMmlNode":358,"transform":728},"translate(5255.1,0)",[341,730],{"dataC":634,"xLinkHref":731},"#MJX-6-TEX-N-22C5",[139,733,735,739],{"dataMmlNode":336,"transform":734},"translate(5755.3,0)",[139,736,737],{"dataMmlNode":339},[341,738],{"dataC":590,"xLinkHref":692},[139,740,741],{"dataMmlNode":339,"transform":645},[341,742],{"dataC":434,"xLinkHref":725},[295,744,746],{"className":745,"jax":299,"display":548},[298],[50,747,751,774],{"style":444,"xmlns":52,"width":748,"height":749,"role":305,"focusable":306,"viewBox":750,"xmlnsXLink":308},"15.911ex","1.92ex","0 -683 7032.5 848.6",[57,752,753,756,759,762,765,768,771],{},[104,754],{"id":755,"d":559},"MJX-7-TEX-I-1D443",[104,757],{"id":758,"d":318},"MJX-7-TEX-I-1D435",[104,760],{"id":761,"d":566},"MJX-7-TEX-N-3D",[104,763],{"id":764,"d":314},"MJX-7-TEX-I-1D447",[104,766],{"id":767,"d":399},"MJX-7-TEX-N-2190",[104,769],{"id":770,"d":403},"MJX-7-TEX-I-1D442",[104,772],{"id":773,"d":579},"MJX-7-TEX-N-22C5",[139,775,776],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,777,778,790,796,820,826],{"dataMmlNode":333},[139,779,780,785],{"dataMmlNode":336},[139,781,782],{"dataMmlNode":339},[341,783],{"dataC":590,"xLinkHref":784},"#MJX-7-TEX-I-1D443",[139,786,787],{"dataMmlNode":339,"transform":645},[341,788],{"dataC":354,"xLinkHref":789},"#MJX-7-TEX-I-1D435",[139,791,793],{"dataMmlNode":358,"transform":792},"translate(1539.5,0)",[341,794],{"dataC":603,"xLinkHref":795},"#MJX-7-TEX-N-3D",[139,797,799,804],{"dataMmlNode":336,"transform":798},"translate(2595.2,0)",[139,800,801],{"dataMmlNode":339},[341,802],{"dataC":343,"xLinkHref":803},"#MJX-7-TEX-I-1D447",[139,805,806,810,815],{"dataMmlNode":347,"transform":475,"dataMjxTexclass":349},[139,807,808],{"dataMmlNode":339},[341,809],{"dataC":354,"xLinkHref":789},[139,811,812],{"dataMmlNode":358,"transform":359},[341,813],{"dataC":427,"xLinkHref":814},"#MJX-7-TEX-N-2190",[139,816,817],{"dataMmlNode":339,"transform":366},[341,818],{"dataC":434,"xLinkHref":819},"#MJX-7-TEX-I-1D442",[139,821,823],{"dataMmlNode":358,"transform":822},"translate(5267.8,0)",[341,824],{"dataC":634,"xLinkHref":825},"#MJX-7-TEX-N-22C5",[139,827,829,833],{"dataMmlNode":336,"transform":828},"translate(5768,0)",[139,830,831],{"dataMmlNode":339},[341,832],{"dataC":590,"xLinkHref":784},[139,834,835],{"dataMmlNode":339,"transform":645},[341,836],{"dataC":434,"xLinkHref":819},[10,838,839,840,871,872,905],{},"所以，我们可以把 ",[295,841,843],{"className":842,"jax":299},[298],[50,844,847,855],{"style":444,"xmlns":52,"width":845,"height":749,"role":305,"focusable":306,"viewBox":846,"xmlnsXLink":308},"2.861ex","0 -683 1264.5 848.6",[57,848,849,852],{},[104,850],{"id":851,"d":559},"MJX-8-TEX-I-1D443",[104,853],{"id":854,"d":403},"MJX-8-TEX-I-1D442",[139,856,857],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,858,859],{"dataMmlNode":333},[139,860,861,866],{"dataMmlNode":336},[139,862,863],{"dataMmlNode":339},[341,864],{"dataC":590,"xLinkHref":865},"#MJX-8-TEX-I-1D443",[139,867,868],{"dataMmlNode":339,"transform":645},[341,869],{"dataC":434,"xLinkHref":870},"#MJX-8-TEX-I-1D442"," 用 ",[295,873,875],{"className":874,"jax":299},[298],[50,876,881,889],{"style":877,"xmlns":52,"width":878,"height":879,"role":305,"focusable":306,"viewBox":880,"xmlnsXLink":308},"vertical-align: -0.339ex;","2.855ex","1.885ex","0 -683 1261.7 833",[57,882,883,886],{},[104,884],{"id":885,"d":559},"MJX-9-TEX-I-1D443",[104,887],{"id":888,"d":318},"MJX-9-TEX-I-1D435",[139,890,891],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,892,893],{"dataMmlNode":333},[139,894,895,900],{"dataMmlNode":336},[139,896,897],{"dataMmlNode":339},[341,898],{"dataC":590,"xLinkHref":899},"#MJX-9-TEX-I-1D443",[139,901,902],{"dataMmlNode":339,"transform":645},[341,903],{"dataC":354,"xLinkHref":904},"#MJX-9-TEX-I-1D435"," 表示出来：",[295,907,909],{"className":908,"jax":299,"display":548},[298],[50,910,915,954],{"style":911,"xmlns":52,"width":912,"height":913,"role":305,"focusable":306,"viewBox":914,"xmlnsXLink":308},"vertical-align: -0.566ex;","19.903ex","2.565ex","0 -883.9 8797.2 1133.9",[57,916,917,920,923,926,930,933,936,939,943,947,951],{},[104,918],{"id":919,"d":559},"MJX-10-TEX-I-1D443",[104,921],{"id":922,"d":403},"MJX-10-TEX-I-1D442",[104,924],{"id":925,"d":566},"MJX-10-TEX-N-3D",[104,927],{"id":928,"d":929},"MJX-10-TEX-N-28","M94 250Q94 319 104 381T127 488T164 576T202 643T244 695T277 729T302 750H315H319Q333 750 333 741Q333 738 316 720T275 667T226 581T184 443T167 250T184 58T225 -81T274 -167T316 -220T333 -241Q333 -250 318 -250H315H302L274 -226Q180 -141 137 -14T94 250Z",[104,931],{"id":932,"d":314},"MJX-10-TEX-I-1D447",[104,934],{"id":935,"d":318},"MJX-10-TEX-I-1D435",[104,937],{"id":938,"d":399},"MJX-10-TEX-N-2190",[104,940],{"id":941,"d":942},"MJX-10-TEX-N-29","M60 749L64 750Q69 750 74 750H86L114 726Q208 641 251 514T294 250Q294 182 284 119T261 12T224 -76T186 -143T145 -194T113 -227T90 -246Q87 -249 86 -250H74Q66 -250 63 -250T58 -247T55 -238Q56 -237 66 -225Q221 -64 221 250T66 725Q56 737 55 738Q55 746 60 749Z",[104,944],{"id":945,"d":946},"MJX-10-TEX-N-2212","M84 237T84 250T98 270H679Q694 262 694 250T679 230H98Q84 237 84 250Z",[104,948],{"id":949,"d":950},"MJX-10-TEX-N-31","M213 578L200 573Q186 568 160 563T102 556H83V602H102Q149 604 189 617T245 641T273 663Q275 666 285 666Q294 666 302 660V361L303 61Q310 54 315 52T339 48T401 46H427V0H416Q395 3 257 3Q121 3 100 0H88V46H114Q136 46 152 46T177 47T193 50T201 52T207 57T213 61V578Z",[104,952],{"id":953,"d":579},"MJX-10-TEX-N-22C5",[139,955,956],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,957,958,970,976,983,1007,1034,1040],{"dataMmlNode":333},[139,959,960,965],{"dataMmlNode":336},[139,961,962],{"dataMmlNode":339},[341,963],{"dataC":590,"xLinkHref":964},"#MJX-10-TEX-I-1D443",[139,966,967],{"dataMmlNode":339,"transform":645},[341,968],{"dataC":434,"xLinkHref":969},"#MJX-10-TEX-I-1D442",[139,971,973],{"dataMmlNode":358,"transform":972},"translate(1542.3,0)",[341,974],{"dataC":603,"xLinkHref":975},"#MJX-10-TEX-N-3D",[139,977,979],{"dataMmlNode":358,"transform":978},"translate(2598.1,0)",[341,980],{"dataC":981,"xLinkHref":982},"28","#MJX-10-TEX-N-28",[139,984,986,991],{"dataMmlNode":336,"transform":985},"translate(2987.1,0)",[139,987,988],{"dataMmlNode":339},[341,989],{"dataC":343,"xLinkHref":990},"#MJX-10-TEX-I-1D447",[139,992,993,998,1003],{"dataMmlNode":347,"transform":475,"dataMjxTexclass":349},[139,994,995],{"dataMmlNode":339},[341,996],{"dataC":354,"xLinkHref":997},"#MJX-10-TEX-I-1D435",[139,999,1000],{"dataMmlNode":358,"transform":359},[341,1001],{"dataC":427,"xLinkHref":1002},"#MJX-10-TEX-N-2190",[139,1004,1005],{"dataMmlNode":339,"transform":366},[341,1006],{"dataC":434,"xLinkHref":969},[139,1008,1011,1017],{"dataMmlNode":1009,"transform":1010},"msup","translate(5437.4,0)",[139,1012,1013],{"dataMmlNode":358},[341,1014],{"dataC":1015,"xLinkHref":1016},"29","#MJX-10-TEX-N-29",[139,1018,1020,1026],{"dataMmlNode":347,"transform":1019,"dataMjxTexclass":349},"translate(422,413) scale(0.707)",[139,1021,1022],{"dataMmlNode":358},[341,1023],{"dataC":1024,"xLinkHref":1025},"2212","#MJX-10-TEX-N-2212",[139,1027,1030],{"dataMmlNode":1028,"transform":1029},"mn","translate(778,0)",[341,1031],{"dataC":1032,"xLinkHref":1033},"31","#MJX-10-TEX-N-31",[139,1035,1037],{"dataMmlNode":358,"transform":1036},"translate(7035.3,0)",[341,1038],{"dataC":634,"xLinkHref":1039},"#MJX-10-TEX-N-22C5",[139,1041,1043,1047],{"dataMmlNode":336,"transform":1042},"translate(7535.5,0)",[139,1044,1045],{"dataMmlNode":339},[341,1046],{"dataC":590,"xLinkHref":964},[139,1048,1049],{"dataMmlNode":339,"transform":645},[341,1050],{"dataC":354,"xLinkHref":997},[10,1052,1053,1054,1087],{},"将上式代入 ",[295,1055,1057],{"className":1056,"jax":299},[298],[50,1058,1063,1071],{"style":1059,"xmlns":52,"width":1060,"height":1061,"role":305,"focusable":306,"viewBox":1062,"xmlnsXLink":308},"vertical-align: -0.345ex;","2.84ex","1.891ex","0 -683 1255.3 835.7",[57,1064,1065,1068],{},[104,1066],{"id":1067,"d":559},"MJX-11-TEX-I-1D443",[104,1069],{"id":1070,"d":326},"MJX-11-TEX-I-1D434",[139,1072,1073],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,1074,1075],{"dataMmlNode":333},[139,1076,1077,1082],{"dataMmlNode":336},[139,1078,1079],{"dataMmlNode":339},[341,1080],{"dataC":590,"xLinkHref":1081},"#MJX-11-TEX-I-1D443",[139,1083,1084],{"dataMmlNode":339,"transform":594},[341,1085],{"dataC":369,"xLinkHref":1086},"#MJX-11-TEX-I-1D434"," 的方程中：",[295,1089,1091],{"className":1090,"jax":299,"display":548},[298],[50,1092,1095,1133],{"style":911,"xmlns":52,"width":1093,"height":913,"role":305,"focusable":306,"viewBox":1094,"xmlnsXLink":308},"27.046ex","0 -883.9 11954.4 1133.9",[57,1096,1097,1100,1103,1106,1109,1112,1115,1118,1121,1124,1127,1130],{},[104,1098],{"id":1099,"d":559},"MJX-12-TEX-I-1D443",[104,1101],{"id":1102,"d":326},"MJX-12-TEX-I-1D434",[104,1104],{"id":1105,"d":566},"MJX-12-TEX-N-3D",[104,1107],{"id":1108,"d":314},"MJX-12-TEX-I-1D447",[104,1110],{"id":1111,"d":399},"MJX-12-TEX-N-2190",[104,1113],{"id":1114,"d":403},"MJX-12-TEX-I-1D442",[104,1116],{"id":1117,"d":579},"MJX-12-TEX-N-22C5",[104,1119],{"id":1120,"d":929},"MJX-12-TEX-N-28",[104,1122],{"id":1123,"d":318},"MJX-12-TEX-I-1D435",[104,1125],{"id":1126,"d":942},"MJX-12-TEX-N-29",[104,1128],{"id":1129,"d":946},"MJX-12-TEX-N-2212",[104,1131],{"id":1132,"d":950},"MJX-12-TEX-N-31",[139,1134,1135],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,1136,1137,1149,1154,1177,1182,1187,1209,1229,1234],{"dataMmlNode":333},[139,1138,1139,1144],{"dataMmlNode":336},[139,1140,1141],{"dataMmlNode":339},[341,1142],{"dataC":590,"xLinkHref":1143},"#MJX-12-TEX-I-1D443",[139,1145,1146],{"dataMmlNode":339,"transform":594},[341,1147],{"dataC":369,"xLinkHref":1148},"#MJX-12-TEX-I-1D434",[139,1150,1151],{"dataMmlNode":358,"transform":600},[341,1152],{"dataC":603,"xLinkHref":1153},"#MJX-12-TEX-N-3D",[139,1155,1156,1161],{"dataMmlNode":336,"transform":607},[139,1157,1158],{"dataMmlNode":339},[341,1159],{"dataC":343,"xLinkHref":1160},"#MJX-12-TEX-I-1D447",[139,1162,1163,1167,1172],{"dataMmlNode":347,"transform":348,"dataMjxTexclass":349},[139,1164,1165],{"dataMmlNode":339},[341,1166],{"dataC":369,"xLinkHref":1148},[139,1168,1169],{"dataMmlNode":358,"transform":424},[341,1170],{"dataC":427,"xLinkHref":1171},"#MJX-12-TEX-N-2190",[139,1173,1174],{"dataMmlNode":339,"transform":431},[341,1175],{"dataC":434,"xLinkHref":1176},"#MJX-12-TEX-I-1D442",[139,1178,1179],{"dataMmlNode":358,"transform":728},[341,1180],{"dataC":634,"xLinkHref":1181},"#MJX-12-TEX-N-22C5",[139,1183,1184],{"dataMmlNode":358,"transform":734},[341,1185],{"dataC":981,"xLinkHref":1186},"#MJX-12-TEX-N-28",[139,1188,1190,1194],{"dataMmlNode":336,"transform":1189},"translate(6144.3,0)",[139,1191,1192],{"dataMmlNode":339},[341,1193],{"dataC":343,"xLinkHref":1160},[139,1195,1196,1201,1205],{"dataMmlNode":347,"transform":475,"dataMjxTexclass":349},[139,1197,1198],{"dataMmlNode":339},[341,1199],{"dataC":354,"xLinkHref":1200},"#MJX-12-TEX-I-1D435",[139,1202,1203],{"dataMmlNode":358,"transform":359},[341,1204],{"dataC":427,"xLinkHref":1171},[139,1206,1207],{"dataMmlNode":339,"transform":366},[341,1208],{"dataC":434,"xLinkHref":1176},[139,1210,1212,1217],{"dataMmlNode":1009,"transform":1211},"translate(8594.6,0)",[139,1213,1214],{"dataMmlNode":358},[341,1215],{"dataC":1015,"xLinkHref":1216},"#MJX-12-TEX-N-29",[139,1218,1219,1224],{"dataMmlNode":347,"transform":1019,"dataMjxTexclass":349},[139,1220,1221],{"dataMmlNode":358},[341,1222],{"dataC":1024,"xLinkHref":1223},"#MJX-12-TEX-N-2212",[139,1225,1226],{"dataMmlNode":1028,"transform":1029},[341,1227],{"dataC":1032,"xLinkHref":1228},"#MJX-12-TEX-N-31",[139,1230,1232],{"dataMmlNode":358,"transform":1231},"translate(10192.5,0)",[341,1233],{"dataC":634,"xLinkHref":1181},[139,1235,1237,1241],{"dataMmlNode":336,"transform":1236},"translate(10692.7,0)",[139,1238,1239],{"dataMmlNode":339},[341,1240],{"dataC":590,"xLinkHref":1143},[139,1242,1243],{"dataMmlNode":339,"transform":645},[341,1244],{"dataC":354,"xLinkHref":1200},[10,1246,1247,1248,1335],{},"对比最开始的公式 ",[295,1249,1251],{"className":1250,"jax":299},[298],[50,1252,1253,1276],{"style":302,"xmlns":52,"width":551,"height":552,"role":305,"focusable":306,"viewBox":553,"xmlnsXLink":308},[57,1254,1255,1258,1261,1264,1267,1270,1273],{},[104,1256],{"id":1257,"d":559},"MJX-13-TEX-I-1D443",[104,1259],{"id":1260,"d":326},"MJX-13-TEX-I-1D434",[104,1262],{"id":1263,"d":566},"MJX-13-TEX-N-3D",[104,1265],{"id":1266,"d":314},"MJX-13-TEX-I-1D447",[104,1268],{"id":1269,"d":399},"MJX-13-TEX-N-2190",[104,1271],{"id":1272,"d":318},"MJX-13-TEX-I-1D435",[104,1274],{"id":1275,"d":579},"MJX-13-TEX-N-22C5",[139,1277,1278],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,1279,1280,1292,1297,1320,1325],{"dataMmlNode":333},[139,1281,1282,1287],{"dataMmlNode":336},[139,1283,1284],{"dataMmlNode":339},[341,1285],{"dataC":590,"xLinkHref":1286},"#MJX-13-TEX-I-1D443",[139,1288,1289],{"dataMmlNode":339,"transform":594},[341,1290],{"dataC":369,"xLinkHref":1291},"#MJX-13-TEX-I-1D434",[139,1293,1294],{"dataMmlNode":358,"transform":600},[341,1295],{"dataC":603,"xLinkHref":1296},"#MJX-13-TEX-N-3D",[139,1298,1299,1304],{"dataMmlNode":336,"transform":607},[139,1300,1301],{"dataMmlNode":339},[341,1302],{"dataC":343,"xLinkHref":1303},"#MJX-13-TEX-I-1D447",[139,1305,1306,1310,1315],{"dataMmlNode":347,"transform":348,"dataMjxTexclass":349},[139,1307,1308],{"dataMmlNode":339},[341,1309],{"dataC":369,"xLinkHref":1291},[139,1311,1312],{"dataMmlNode":358,"transform":424},[341,1313],{"dataC":427,"xLinkHref":1314},"#MJX-13-TEX-N-2190",[139,1316,1317],{"dataMmlNode":339,"transform":431},[341,1318],{"dataC":354,"xLinkHref":1319},"#MJX-13-TEX-I-1D435",[139,1321,1322],{"dataMmlNode":358,"transform":631},[341,1323],{"dataC":634,"xLinkHref":1324},"#MJX-13-TEX-N-22C5",[139,1326,1327,1331],{"dataMmlNode":336,"transform":638},[139,1328,1329],{"dataMmlNode":339},[341,1330],{"dataC":590,"xLinkHref":1286},[139,1332,1333],{"dataMmlNode":339,"transform":645},[341,1334],{"dataC":354,"xLinkHref":1319},"，即可得出最终结论：",[295,1337,1339],{"className":1338,"jax":299,"display":548},[298],[50,1340,1343,1378],{"style":911,"xmlns":52,"width":1341,"height":913,"role":305,"focusable":306,"viewBox":1342,"xmlnsXLink":308},"25.24ex","0 -883.9 11156.1 1133.9",[57,1344,1345,1348,1351,1354,1357,1360,1363,1366,1369,1372,1375],{},[104,1346],{"id":1347,"d":314},"MJX-14-TEX-I-1D447",[104,1349],{"id":1350,"d":326},"MJX-14-TEX-I-1D434",[104,1352],{"id":1353,"d":399},"MJX-14-TEX-N-2190",[104,1355],{"id":1356,"d":318},"MJX-14-TEX-I-1D435",[104,1358],{"id":1359,"d":566},"MJX-14-TEX-N-3D",[104,1361],{"id":1362,"d":403},"MJX-14-TEX-I-1D442",[104,1364],{"id":1365,"d":579},"MJX-14-TEX-N-22C5",[104,1367],{"id":1368,"d":929},"MJX-14-TEX-N-28",[104,1370],{"id":1371,"d":942},"MJX-14-TEX-N-29",[104,1373],{"id":1374,"d":946},"MJX-14-TEX-N-2212",[104,1376],{"id":1377,"d":950},"MJX-14-TEX-N-31",[139,1379,1380],{"stroke":329,"fill":329,"stroke-width":145,"transform":330},[139,1381,1382,1406,1412,1434,1440,1446,1467],{"dataMmlNode":333},[139,1383,1384,1389],{"dataMmlNode":336},[139,1385,1386],{"dataMmlNode":339},[341,1387],{"dataC":343,"xLinkHref":1388},"#MJX-14-TEX-I-1D447",[139,1390,1391,1396,1401],{"dataMmlNode":347,"transform":348,"dataMjxTexclass":349},[139,1392,1393],{"dataMmlNode":339},[341,1394],{"dataC":369,"xLinkHref":1395},"#MJX-14-TEX-I-1D434",[139,1397,1398],{"dataMmlNode":358,"transform":424},[341,1399],{"dataC":427,"xLinkHref":1400},"#MJX-14-TEX-N-2190",[139,1402,1403],{"dataMmlNode":339,"transform":431},[341,1404],{"dataC":354,"xLinkHref":1405},"#MJX-14-TEX-I-1D435",[139,1407,1409],{"dataMmlNode":358,"transform":1408},"translate(2718.9,0)",[341,1410],{"dataC":603,"xLinkHref":1411},"#MJX-14-TEX-N-3D",[139,1413,1415,1419],{"dataMmlNode":336,"transform":1414},"translate(3774.7,0)",[139,1416,1417],{"dataMmlNode":339},[341,1418],{"dataC":343,"xLinkHref":1388},[139,1420,1421,1425,1429],{"dataMmlNode":347,"transform":348,"dataMjxTexclass":349},[139,1422,1423],{"dataMmlNode":339},[341,1424],{"dataC":369,"xLinkHref":1395},[139,1426,1427],{"dataMmlNode":358,"transform":424},[341,1428],{"dataC":427,"xLinkHref":1400},[139,1430,1431],{"dataMmlNode":339,"transform":431},[341,1432],{"dataC":434,"xLinkHref":1433},"#MJX-14-TEX-I-1D442",[139,1435,1437],{"dataMmlNode":358,"transform":1436},"translate(6440.9,0)",[341,1438],{"dataC":634,"xLinkHref":1439},"#MJX-14-TEX-N-22C5",[139,1441,1443],{"dataMmlNode":358,"transform":1442},"translate(6941.1,0)",[341,1444],{"dataC":981,"xLinkHref":1445},"#MJX-14-TEX-N-28",[139,1447,1449,1453],{"dataMmlNode":336,"transform":1448},"translate(7330.1,0)",[139,1450,1451],{"dataMmlNode":339},[341,1452],{"dataC":343,"xLinkHref":1388},[139,1454,1455,1459,1463],{"dataMmlNode":347,"transform":475,"dataMjxTexclass":349},[139,1456,1457],{"dataMmlNode":339},[341,1458],{"dataC":354,"xLinkHref":1405},[139,1460,1461],{"dataMmlNode":358,"transform":359},[341,1462],{"dataC":427,"xLinkHref":1400},[139,1464,1465],{"dataMmlNode":339,"transform":366},[341,1466],{"dataC":434,"xLinkHref":1433},[139,1468,1470,1475],{"dataMmlNode":1009,"transform":1469},"translate(9780.4,0)",[139,1471,1472],{"dataMmlNode":358},[341,1473],{"dataC":1015,"xLinkHref":1474},"#MJX-14-TEX-N-29",[139,1476,1477,1482],{"dataMmlNode":347,"transform":1019,"dataMjxTexclass":349},[139,1478,1479],{"dataMmlNode":358},[341,1480],{"dataC":1024,"xLinkHref":1481},"#MJX-14-TEX-N-2212",[139,1483,1484],{"dataMmlNode":1028,"transform":1029},[341,1485],{"dataC":1032,"xLinkHref":1486},"#MJX-14-TEX-N-31",[10,1488,1489],{},"上述公式是直接复制AI的结果，可以看一下用作参考。这样就可以得到一个刚体变换的矩阵了，是一个4X4的，包含了旋转+平移。然后我们可以把B中的点云通过变换到A的坐标系里去。相机A和相机B可能同时扫描到一个绿篱表面，你也可以再跑一遍体素，如果必要的话。",[26,1491,1492],{"id":1492},"重建",[10,1494,1495],{},"之前的项目我们是使用的滚球法重建，叫做BPA，就像一个固定半径的小球在点云表面滚动，碰到三个点就组成一个三角面，因此对于电云质量是比较苛刻的。有一个算法相比BPA对于噪点和密度不匀的包容度远高于BPA，叫做泊松重建，这个可以把原本不封闭的空洞给补上。还有就是Alpha Shapes，适合提取轮廓，适合生成绿篱的外表表面，但是受干扰比较大。",[10,1497,1498],{},"如果感兴趣可以去CloudCompare里试试。不过我一般不会这样干，我当时是直接用凸包来计算包络的，基于点云的凸包ConvexHull，可以下去了解一下，这个用于计算包络体积，这个比强行重建更准确和快速。",[10,1500,1501],{},"然后你刚才说的网格平面化，可能是ransac平面拟合，如果你用深度相机采集的点云是含有地面的话，你重建出来地面会类似一个平面，那么这个平面你就可以用ransac平面拟合算法你得到一个平面方程，这个pcl和open3d似乎都有相关的算子，可以直接用。",[10,1503,1504],{},"最后你得到一模型就可以交给做路径规划的负责人了，他们就可以来切片分析和处理。差不多就是这样。",[1506,1507,1508],"style",{},"\nmjx-container[jax=\"SVG\"] {\n  direction: ltr;\n}\n\nmjx-container[jax=\"SVG\"] > svg {\n  overflow: visible;\n  min-height: 1px;\n  min-width: 1px;\n}\n\nmjx-container[jax=\"SVG\"] > svg a {\n  fill: blue;\n  stroke: blue;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"] {\n  display: block;\n  text-align: center;\n  margin: 1em 0;\n}\n\nmjx-container[jax=\"SVG\"][display=\"true\"][width=\"full\"] {\n  display: flex;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"left\"] {\n  text-align: left;\n}\n\nmjx-container[jax=\"SVG\"][justify=\"right\"] {\n  text-align: right;\n}\n\ng[data-mml-node=\"merror\"] > g {\n  fill: red;\n  stroke: red;\n}\n\ng[data-mml-node=\"merror\"] > rect[data-background] {\n  fill: yellow;\n  stroke: none;\n}\n\ng[data-mml-node=\"mtable\"] > line[data-line], svg[data-table] > g > line[data-line] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > rect[data-frame], svg[data-table] > g > rect[data-frame] {\n  stroke-width: 70px;\n  fill: none;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dashed, svg[data-table] > g > .mjx-dashed {\n  stroke-dasharray: 140;\n}\n\ng[data-mml-node=\"mtable\"] > .mjx-dotted, svg[data-table] > g > .mjx-dotted {\n  stroke-linecap: round;\n  stroke-dasharray: 0,140;\n}\n\ng[data-mml-node=\"mtable\"] > g > svg {\n  overflow: visible;\n}\n\n[jax=\"SVG\"] mjx-tool {\n  display: inline-block;\n  position: relative;\n  width: 0;\n  height: 0;\n}\n\n[jax=\"SVG\"] mjx-tool > mjx-tip {\n  position: absolute;\n  top: 0;\n  left: 0;\n}\n\nmjx-tool > mjx-tip {\n  display: inline-block;\n  padding: .2em;\n  border: 1px solid #888;\n  font-size: 70%;\n  background-color: #F8F8F8;\n  color: black;\n  box-shadow: 2px 2px 5px #AAAAAA;\n}\n\ng[data-mml-node=\"maction\"][data-toggle] {\n  cursor: pointer;\n}\n\nmjx-status {\n  display: block;\n  position: fixed;\n  left: 1em;\n  bottom: 1em;\n  min-width: 25%;\n  padding: .2em .4em;\n  border: 1px solid #888;\n  font-size: 90%;\n  background-color: #F8F8F8;\n  color: black;\n}\n\nforeignObject[data-mjx-xml] {\n  font-family: initial;\n  line-height: normal;\n  overflow: visible;\n}\n\nmjx-container[jax=\"SVG\"] path[data-c], mjx-container[jax=\"SVG\"] use[data-c] {\n  stroke-width: 3;\n}\n",{"title":92,"searchDepth":1510,"depth":1510,"links":1511},2,[1512,1513],{"id":28,"depth":1510,"text":29},{"id":44,"depth":1510,"text":45},"md",{"date":1516,"tags":1517},"2026-10-25",[1518,1519,1520,1521,1522],"cpp","python","open3d","pcl","realsense",true,"\u002Fgraphy\u002F3d-point-and-solve-pipeline",{"description":12},"graphy\u002F3d point and solve pipeline","J6b7KESFs5ihOBV0kfYrboOMr4u8AkniZodSf3Hn5yQ",1793064673477]