{"id":271,"date":"2024-04-08T19:56:00","date_gmt":"2024-04-08T19:56:00","guid":{"rendered":"https:\/\/boochlin.com\/?p=271"},"modified":"2025-05-21T22:39:02","modified_gmt":"2025-05-21T22:39:02","slug":"slam-note-ndt_tku","status":"publish","type":"post","link":"https:\/\/boochlin.com\/?p=271","title":{"rendered":"SLAM Note &#8211; NDT_TKU"},"content":{"rendered":"<p><iframe style=\"border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/GDITXWdhUCFrwX\" width=\"595\" height=\"485\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" allowfullscreen=\"allowfullscreen\"> <\/iframe><\/p>\n<div style=\"margin-bottom: 5px;\"><strong> <a title=\"NDT-TKU\" href=\"\/\/www.slideshare.net\/boochlin\/ndttku\" target=\"_blank\" rel=\"noopener\">NDT-TKU<\/a> <\/strong> from <strong><a href=\"\/\/www.slideshare.net\/boochlin\" target=\"_blank\" rel=\"noopener\">Booch Lin<\/a><\/strong><\/div>\n<div style=\"margin-bottom: 5px;\"><\/div>\n<h3 style=\"margin-bottom: 5px;\">NDT &#8211; TKU Introduction<\/h3>\n<div style=\"margin-bottom: 5px;\">\u777d\u9055\u8a31\u4e45\u6c92\u6709\u5beb blog \uff0c\u4e3b\u8981\u9084\u662f\u592a\u5fd9\u3002\u9019\u5468\u7d42\u65bc\u7a7a\u51fa\u6642\u9593\u53ef\u4ee5\u4f86\u88dc\u88dc\u4e4b\u524d\u7684\u7b46\u8a18\uff0c\u7531\u65bc\u6700\u8fd1\u624d\u5c0d\u5167\u90e8\u5206\u4eab\u6b64\u4e3b\u984c\u3002\u6240\u4ee5\u9019\u500b\u4e3b\u984c\u5370\u8c61\u6700\u6df1\u523b\u3002<\/div>\n<div style=\"margin-bottom: 5px;\">\u96d6\u7136\u5f88\u60f3\u518d\u6b21\u5c31\u9032\u5165\u6b63\u984c\uff0c\u4f46\u662f\u7531\u65bc\u9019 blog \u7684\u98a8\u683c\u5c31\u662f\u5ee2\u8a71\u591a\uff0c\u6240\u4ee5\u6211\u7e7c\u7e8c\u5beb\u5ee2\u8a71\uff0c\u8ac7\u5230\u7684\u9019\u500b\u4e3b\u984c\uff0c\u7528\u5230\u5927\u91cf\u7684\u6578\u5b78\uff0c\u800c\u5c0f\u5f1f\u6211\u5728\u5927\u5b78\u57fa\u672c\u4e0a\u300e\u6a5f\u7387\u300f\u300e\u7dda\u6027\u4ee3\u6578\u300f\u300e\u5fae\u7a4d\u5206\u300f\u5927\u6982\u90fd\u6709\u91cd\u4fee\u904e\uff0c\u6240\u4ee5\u5982\u679c\u5ba2\u500c\u5c0d\u65bc\u6578\u5b78\u7684\u90e8\u4efd\u6709\u554f\u984c\uff0c\u8acb\u81ea\u884c\u4e0a\u7db2\u67e5\uff0c\u56e0\u70ba\u6211\u7b54\u7684\u4e0d\u6703\u6bd4google \u5927\u795e\u597d\u3002<\/div>\n<div style=\"margin-bottom: 5px;\"><\/div>\n<div style=\"margin-bottom: 5px;\"><span style=\"color: #0000ff;\"><b><span lang=\"en\" xml:lang=\"en\">\u9019\u6b21\u4e3b\u984c\u7684\u6700\u7d42\u76ee\u6a19 SLAM \uff08<\/span><\/b>\u00a0<\/span><b><span lang=\"en\" xml:lang=\"en\"><span style=\"color: #0000ff;\">Simultaneous localization and mapping\uff09 \u540c\u6b65\u5b9a\u4f4d\u8207\u5730\u5716\u69cb\u5efa<\/span>\uff0c\u662f\u4e00\u500b\u95dc\u65bc\u6a5f\u5668\u4eba\u6216\u662f\u81ea\u52d5\u99d5\u99db\u5fc5\u5b9a\u7814\u7a76\u7684\u4e3b\u984c\uff0c\u800c\u5f04\u61c2\u524d\u4e5f\u5fc5\u9808\u5148\u5177\u6709\u5927\u91cf\u7684\u76f8\u95dc\u77e5\u8b58\uff0c\u524d\u7f6e\u90e8\u4efd\u6211\u6c92\u6709\u8fa6\u6cd5\u7d30\u7d30\u8b1b\u89e3\uff0c\u4e3b\u8981\u4e5f\u662f\u6240\u5b78\u592a\u5c11\uff0c\u56e0\u6b64\u9019\u6b21\u5c31\u53ea\u5c08\u6ce8\u65bc SLAM \u7684\u5176\u4e2d\u4e00\u500b\u65b9\u6cd5 <span style=\"color: #0000ff;\">NDT<\/span> , \u800c <span style=\"color: #0000ff;\">TKU\u00a0<\/span>\u5247\u662f\u518d NDT \u9032\u4e00\u6b65\u7684\u63a8\u5c55\u3002<\/span><\/b><\/div>\n<div style=\"margin-bottom: 5px;\"><\/div>\n<p><!--more--><\/p>\n<p>\u5728\u6b64\u4e4b\u524d\uff0c\u6709\u8208\u8da3\u7684\u4eba\u53ef\u4ee5\u5148\u770b\u9019\u7bc7\u8ad6\u6587<\/p>\n<p><a href=\"http:\/\/aass.oru.se\/Research\/mro\/publications\/2009\/Magnusson_2009-Doctoral_Thesis-3D_NDT.pdf\"><b>Magnusson, M. (2009). The Three-Dimensional Normal-Distributions Transform \u2014 an Ef\ufb01cient Representation for Registration, Surface Analysis, and Loop Detection<\/b><\/a><\/p>\n<p><span style=\"color: #ff0000;\">\u9019\u5927\u6982\u662f\u76ee\u524d\u5c0d\u65bc NDT \u6700\u5165\u9580\u7684\u6587\u4ef6\uff0c\u5f04\u61c2\u4ed6\u4e0d\u6703\u5403\u8667\uff0c\u751a\u81f3\u4e0d\u7528\u770b\u6211\u7684\u6587\u7ae0\u5566\u3002<\/span><\/p>\n<p>SLAM \u7684\u6240\u6709\u6700\u7d42\u76ee\u7684\u5c31\u662f\u8981\u627e\u51fa\u81ea\u8eab\u5230\u5e95\u4f4d\u65bc\u4e16\u754c\u4e2d\u7684\u4f55\u8655\uff0c\u9019\u53ef\u80fd\u5927\u5bb6\u6703\u76f4\u89ba\u8a8d\u70ba\u4ea4\u7d66 GPS \u5c31\u597d\u5566\uff0c\u4f46\u662f\u5be6\u969b\u4e0a\u4ed6\u7684\u4e0d\u78ba\u5b9a\u56e0\u7d20\u5be6\u5728\u592a\u591a\uff0c\u5404\u4f4d\u81ea\u8eab\u7528\u624b\u6a5f\u5c0e\u822a\u90fd\u6703\u5e38\u5e38\u7f75\u8aaa\u5b9a\u4e0d\u6e96\uff0c\u90a3\u9ebc\u8981\u6c42\u66f4\u9ad8\u5b89\u5168\u6027\u7684\u81ea\u52d5\u99d5\u99db\u66f4\u4e0d\u53ef\u80fd\u5b8c\u5168\u4f9d\u8a17\u5728\u9019\u4e0a\u9762\uff0c\u7576\u7136\u76ee\u524d\u5169\u6d3e\u722d\u8ad6\u4e5f\u662f\u6c92\u6709\u505c\u904e\uff0c\u4e0d\u904e\u722d\u8ad6\u7684\u9ede\u4e3b<span style=\"color: #ff0000;\"><span style=\"color: #000000;\">\u8981<\/span>\u5c31\u662f\u5728\u65bc\u53ea\u8981\u767c\u5c55 GPS \u6280\u8853\u5230\u975e\u5e38\u9ad8\u7cbe\u5ea6\uff0c\u5c31\u53ef\u4ee5\u4e0d\u7528\u7814\u7a76\u5176\u4ed6\u76f8\u95dc\u5b9a\u4f4d\u6280\u8853<\/span>\u3002\u4f46\u662f\u7528\u819d\u84cb\u60f3\u4e5f\u77e5\u9053\u5c31\u9084\u4e0d\u5920\u7cbe\u5bc6\uff0c\u6240\u4ee5\u5b9a\u4f4d\u6f14\u7b97\u6cd5\u81f3\u4eca\u80fd\u7136\u662f\u4e00\u500b\u4e3b\u8981\u7814\u7a76\u4e3b\u984c\u3002<\/p>\n<p>\u5b9a\u4f4d\u6f14\u7b97\u6cd5\u4e00\u500b\u91cd\u9ede\u5c31\u662f Sensing\uff0c\u6a5f\u5668\u4eba\u5fc5\u9700\u8981\u80fd\u611f\u77e5\u5468\u570d\u74b0\u5883\uff0c\u5f97\u5230\u76f8\u95dc\u60c5\u5831\uff0c\u6700\u5e38\u898b\u7684\u5c31\u662f\u76f8\u6a5f\uff0c\u9019\u78ba\u5be6\u662f\u500b\u4e3b\u529b\uff0c\u800c\u4e14\u76f8\u8f03\u5176\u4ed6\u50b3\u611f\u5668\u78ba\u5be6\u4fbf\u5b9c\uff0c\u4e0d\u904e\u9019\u6b21\u8a0e\u8ad6\u7684\u76ee\u6a19\u4e26\u975e\u76f8\u6a5f\uff0c\u800c\u662f <span style=\"color: #0000ff;\">LIDAR<\/span> (\u5149\u9054)\uff0c\u901a\u5e38\u6383\u63cf\u5230\u7684\u756b\u9762\u9577\u9019\u6a23<\/p>\n<p><iframe src=\"https:\/\/www.youtube.com\/embed\/P99eKc2uNJU\" width=\"560\" height=\"315\" frameborder=\"0\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/p>\n<p>\u5f71\u7247\u662f <span style=\"color: #0000ff;\">VELODYNE LIDAR<\/span> \u7684\u793a\u610f\u5716\uff0c\u9806\u4ee3\u4e00\u984c\u9019\u6771\u897f\u8d85\u8cb4\uff0c\u6578\u767e\u842c\u6709\u4e4b\u3002\u76ee\u524d\u4e0d\u5c11\u7814\u7a76\u90fd\u662f\u91dd\u5c0d\u9019\u7a2e\u9ede\u96f2\u8cc7\u6599\u4f5c SLAM \u7814\u7a76\u3002<\/p>\n<p>\u5176\u5be6\u9019\u985e\u8cc7\u6599\u7814\u7a76\u4e3b\u8981\u5c31\u570d\u7e5e\u5728\u300e<span style=\"color: #ff0000;\">\u5229\u7528\u9019\u4e00\u6b21\u6383\u7784\u5230\u7684\u9ede\u96f2\u8ddf\u4e0b\u4e00\u6b21\u6383\u7784\u5230\u9ede\u96f2\uff0c\u5224\u65b7\u51fa\u6a5f\u5668\u4eba\u7684\u4f4d\u5b50\u8207\u59ff\u614b<\/span>\u300f\u3002\u8aaa\u8d77\u4f86\u7c21\u55ae\u662f\u500b\u5339\u914d\u554f\u984c\uff0c\u4f46\u662f\u505a\u8d77\u4f86\u8d85\u7d1a\u9ebb\u7169\uff0c\u5149\u662f\u5206\u985e\u5c31\u53ef\u4ee5\u641e\u6b7b\u81ea\u5df1\u4e86\u3002(\u5beb\u5230\u9019\u908a\u6709\u9ede\u7d2f\u4e86)\u3002<\/p>\n<p>\u770b\u5230\u9019\u88e1\uff0c\u6709\u4eba\u53ef\u80fd\u76f4\u89ba\u9019\u6703\u591a\u96e3\uff0c\u628a\u9019\u6b21 Scan \u6bcf\u500b\u9ede\u62ff\u4f86\u8ddf\u4e0b\u4e00\u500b Scan \u6bd4\u5c0d\u4e0d\u5c31\u597d\u4e86\uff0c\u90a3\u6211\u5c31\u6703\u60f3\u554f\u600e\u9ebc\u6bd4\uff0c\u832b\u832b\u4eba\u6d77\u4e2d\uff0c\u7e3d\u8981\u6709\u500b\u4f9d\u64da\uff0c\u5565-\u4f60\u8aaa\u6311\u8fd1\u7684\u6bd4\u963f\uff0c\u9019\u500b\u6211\u807d\u904e\uff0c\u5c08\u696d\u9ede\u8aaa\u6cd5\u300e<span style=\"color: #ff0000;\"><span style=\"color: #0000ff;\">ICP \uff08 Iterative Closest Point<\/span> \uff09<\/span>\u300f\uff0c\u9019\u6211\u5c31\u63d0\u5230\u9019\u88e1\uff0c\u4e0a\u9762\u90a3\u7bc7\u6587\u7ae0\u6709\u4ecb\u7d39\u3002\u4f86\u5f35\u5716\u544a\u8a34\u4f60\u9019\u6c34\u53ef\u6df1\u4e86<br \/>\n<a href=\"http:\/\/www.cnblogs.com\/gaoxiang12\/p\/3695962.html\">http:\/\/www.cnblogs.com\/gaoxiang12\/p\/3695962.html<\/a>\u00a0\u4e4b\u547c\u4e0a\u7684\u5927\u795e<\/p>\n<p><a href=\"http:\/\/ivory-cavern.blogspot.tw\/2009\/11\/icp-iterative-closest-point-c.html\">http:\/\/ivory-cavern.blogspot.tw\/2009\/11\/icp-iterative-closest-point-c.html<\/a>\u00a0ICP \u5be6\u505a<\/p>\n<p><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/ICP.png\"><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone size-full wp-image-272\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/ICP.png\" alt=\"ICP\" width=\"431\" height=\"436\" \/><\/a><\/p>\n<p>\u597d\u5566\uff0cICP \u626f\u9060\u4e86\uff0c\u53ea\u662f\u8981\u544a\u8a34\u5927\u5bb6\u4e26\u975e\u53ea\u6709 NDT \u800c\u5df2\uff0c\u56de\u5230\u6b63\u984c\u00a0<span style=\"color: #0000ff;\">NDT &#8211; TKU<\/span>\uff0c\u9019\u90e8\u4efd\u6211\u5c31\u7167\u8005\u6295\u5f71\u7247\u4f86\u8ac7\uff0c\u4e5f\u8acb\u5404\u4f4d\u540c\u6642\u770b\u6295\u5f71\u7247\u6703\u6bd4\u8f03\u597d\u61c2<\/p>\n<h4>PAGE 2:<\/h4>\n<h4 style=\"padding-left: 30px;\">What is ndt_tku<\/h4>\n<p style=\"padding-left: 30px;\">NDT \u5728 SLAM \u4e0a\u7684\u57fa\u672c\u73a9\u6cd5\u7b97\u662f\u884c\u4e4b\u591a\u5e74\uff0c<span style=\"color: #ff0000;\">\u5728 ROS \u7cfb\u7d71\u4e0a\u4e5f\u5df2\u7d93\u6709 PCL \u6574\u6210\u76f8\u7576\u65b9\u4fbf\u7684 CLASS<\/span>\uff0c<a href=\"http:\/\/Transformhttp:\/\/www.pointclouds.org\/documentation\/tutorials\/normal_distributions_transform.php\">How to use Normal Distributions\u00a0<\/a>\u9019\u7bc7\u6587\u7ae0\u4e5f\u5df2\u7d93\u8a73\u7d30\u6559\u5b78\u904e\uff0c\u800c NDT-TKU\uff0c\u5247\u662f\u6839\u64da \u7af9\u5167\u5148\u751f(<span style=\"color: #ff0000;\">T<\/span>A<span style=\"color: #ff0000;\">K<\/span>E<span style=\"color: #ff0000;\">U<\/span>CHI) \u6559\u6388\u63d0\u51fa\u7684\u8ad6\u6587\u00a0<a href=\"http:\/\/ieeexplore.ieee.org\/document\/4058864\/\">A 3-D Scan Matching using Improved 3-D Normal Distributions Transform for Mobile Robotic Mapping<\/a>(\u8ad6\u6587\u7db2\u8def\u4e0d\u516c\u958b) NDT \u518d\u9032\u5316\u7248\u672c\uff0c\u76f8\u95dc\u5be6\u505a\u5247\u662f\u5728\u4ed6\u9580\u7684 Open source project\u300e<a href=\"https:\/\/github.com\/CPFL\/Autoware\">Autoware<\/a>\u300f\u4e2d\u7684 <a href=\"https:\/\/github.com\/CPFL\/Autoware\/tree\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\">ROS node\u00a0<\/a><\/p>\n<h4>PAGE3:<\/h4>\n<h4>Why is ndt_tku<\/h4>\n<p style=\"padding-left: 30px;\">\u7531\u65bc\u6211\u662f\u7814\u7a76\u4ed6\u9580\u7684\u6574\u500b Autoware \u5c08\u6848\uff0c\u88e1\u9762\u5176\u5be6\u5df2\u7d93\u6709\u5be6\u505a PCL NDT \u7684 Node \uff0c\u5728\u975e\u5e38\u597d\u5947\u7684\u60c5\u6cc1\u4e0b\u6df7\u9032\u4ed6\u9580\u7684 slack \uff0c\u63d0\u554f\u70ba\u4f55\u8981\u81ea\u5df1\u4f5c\u4e00\u5957 NDT Tku \u7248\u672c\uff0c\u4e3b\u8981\u539f\u56e0\u5c31\u662f<\/p>\n<ol>\n<li>\u662f\u6307\u5c0e\u6559\u6388\u63d0\u51fa\u7684<\/li>\n<li>PCL \u7684 cuda \u5316\u6975\u5ea6\u9ebb\u7169\uff0c\u5de5\u7a0b\u5e2b\u8868\u793a\u4e0d\u5982\u81ea\u5e79\u4e00\u5957\uff0c\u7136\u5f8c cuda \u5316<\/li>\n<\/ol>\n<p style=\"padding-left: 30px;\">1 \u5f88\u597d\u7406\u89e3\uff0c2 \u5247\u662f\u70ba\u4e86\u5229\u7528\u986f\u793a\u5361\u7684 GPU\u52a0\u901f\u5316\u3002\u5c0d\u65bc\u81ea\u52d5\u99d5\u99db\u4f86\u8aaa\uff0c\u80fd\u5feb\u4e00\u9ede\u7b97\u51fa\uff0c\u5c31\u53ef\u4ee5\u8b93\u5f8c\u7e8c\u7684\u5224\u65b7\u66f4\u5bb9\u6613\u57f7\u884c\uff0c\u63d0\u9ad8\u5b89\u5168\u6027<\/p>\n<h4>PAGE4:<\/h4>\n<h4>Outline<\/h4>\n<p style=\"padding-left: 30px;\">\u7406\u89e3\u9019\u6771\u897f\u662f\u8981\u7167\u9806\u5e8f\u4f86\uff0c\u5148\u77e5\u9053<span style=\"color: #0000ff;\"> Normal-Distributions<\/span> \uff0c\u624d\u80fd\u77e5\u9053<span style=\"color: #0000ff;\">\u00a0Normal-Distributions Transform<\/span> \u5230\u5e95\u5728\u73a9\u5565\u3002\u6700\u5f8c\u624d\u80fd\u5c0e\u5230 TKU \u505a\u4e86\u5565\u6539\u9032\u3002<\/p>\n<h4>PAGE 5:<\/h4>\n<h4>Normal Distribution<\/h4>\n<p>\u6b63\u614b\u5206\u4f48 &#8211; \u662f\u4e00\u500b\u5728<a href=\"https:\/\/zh.wikipedia.org\/wiki\/%E6%95%B8%E5%AD%B8\">\u6578\u5b78<\/a>\u3001<a href=\"https:\/\/zh.wikipedia.org\/wiki\/%E7%89%A9%E7%90%86\">\u7269\u7406<\/a>\u53ca<a href=\"https:\/\/zh.wikipedia.org\/wiki\/%E5%B7%A5%E7%A8%8B\">\u5de5\u7a0b<\/a>\u7b49<a href=\"https:\/\/zh.wikipedia.org\/wiki\/%E9%A0%98%E5%9F%9F\">\u9818\u57df<\/a>\u90fd\u975e\u5e38\u91cd\u8981\u7684\u6a5f\u7387\u5206\u4f48\uff0c\u7531\u65bc\u9019\u500b<a href=\"https:\/\/zh.wikipedia.org\/wiki\/%E5%88%86%E4%BD%88%E5%87%BD%E6%95%B8\">\u5206\u5e03\u51fd\u6578<\/a>\u5177\u6709\u5f88\u591a\u975e\u5e38\u6f02\u4eae\u7684\u6027\u8cea.\u4f7f\u5f97\u5176\u5728\u8af8\u591a\u6d89\u53ca\u7d71\u8a08\u79d1\u5b78\u96e2\u6563\u79d1\u5b78\u7b49\u9818\u57df\u7684\u8a31\u591a\u65b9\u9762\u90fd\u6709\u8457\u91cd\u5927\u7684\u5f71\u97ff\u529b<\/p>\n<p><a href=\"https:\/\/en.wikipedia.org\/wiki\/Normal_distribution\">https:\/\/en.wikipedia.org\/wiki\/Normal_distribution<\/a><\/p>\n<p><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/nd.png\"><img decoding=\"async\" class=\"alignnone size-full wp-image-273\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/nd.png\" alt=\"nd\" width=\"304\" height=\"140\" \/><\/a><\/p>\n<p>\u9023\u7e8c\u7684\u6771\u897f\uff0c\u6578\u5b78\u53ea\u8981\u80fd\u8868\u793a\u51fa\u4f86\u5c31\u80fd\u7b97\uff0c\u5148\u7406\u89e3\u9019\u6a23\u7684\u5206\u4f48\u5c0d\u65bc\u9ede\u96f2\u7684\u904b\u7b97\u662f\u6709\u610f\u7fa9\u7684<\/p>\n<h4>PAGE 6:<\/h4>\n<h4><strong>Normal Distribution Transform<\/strong><\/h4>\n<p style=\"padding-left: 30px;\"><span style=\"color: #0000ff;\">\u9019\u88e1\u8ac7\u8ac7\u600e\u9ebc\u4f5c\u4e00\u822c\u7248\u7684 NDT\uff0c\u5c07\u6240\u6709\u7684\u9ede\u96f2\u5148\u5207\u6210\u4e00\u683c\u4e00\u683c ND Voxel<\/span><\/p>\n<p style=\"padding-left: 30px;\">The normal-distributions transform can be\u00a0 described as a method for compactly representing a surface.<\/p>\n<p style=\"padding-left: 30px;\">\u6b63\u614b\u5206\u4f48\u7d66\u51fa\u4e86\u9ede\u96f2\u7684\u5206\u6bb5\u5e73\u6ed1\u8868\u793a\uff0c\u5177\u6709\u9023\u7e8c\u7684\u5c0e\u6578\u3002 \u6bcf\u500b<a href=\"https:\/\/zh.wikipedia.org\/wiki\/%E6%A9%9F%E7%8E%87%E5%AF%86%E5%BA%A6%E5%87%BD%E6%95%B8\">PDF\uff08\u6a5f\u7387\u5bc6\u5ea6\u51fd\u6578\uff09<\/a>\u53ef\u4ee5\u770b\u4f5c\u662f\u5c40\u90e8\u8868\u9762\u7684\u8fd1\u4f3c\u503c\uff0c\u63cf\u8ff0\u4e86\u8868\u9762\u7684\u4f4d\u7f6e\u4ee5\u53ca\u5176\u53d6\u5411\u548c\u5e73\u6ed1\u5ea6\u3002<\/p>\n<p style=\"padding-left: 30px;\">A 2D laser scan from a mine tunnel (shown as points) and the PDFs describing the surface shape. Each cell is a square with 2 m side length in this case. Brighter areas represent a higher probability. PDFs have been computed only for cells with more than five points.<\/p>\n<p><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/CELL.png\"><img decoding=\"async\" class=\"alignnone wp-image-274\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/CELL.png\" alt=\"CELL\" width=\"414\" height=\"270\" \/><\/a><\/p>\n<h4>PAGE7 :<\/h4>\n<h4>NDT in tunnel &#8211; 3D<\/h4>\n<p style=\"padding-left: 30px;\">\u793a\u610f\u5716\uff0c\u81ea\u5df1\u770b\u6295\u5f71\u7247\u5566<\/p>\n<h4>PAGE 8:<\/h4>\n<h4>\u5982\u4f55\u8868\u793a\u9ede\u96f2 Cell \u7684\u6a5f\u7387\u5206\u5e03<\/h4>\n<p style=\"padding-left: 30px;\">D-dimensional normal random process, the likelihood of having measured ~x is\u00a0 where ~yk=1,&#8230;, m are the positions of the reference scan points contained in the cell.<\/p>\n<p style=\"padding-left: 30px;\">\u6b63\u614b\u5206\u4f48\u7d66\u51fa\u4e86\u9ede\u96f2\u7684\u5206\u6bb5\u5e73\u6ed1\u8868\u793a\uff0c\u5177\u6709\u9023\u7e8c\u7684\u5c0e\u6578\u3002 \u6bcf\u500bPDF\u53ef\u4ee5\u770b\u4f5c\u662f\u5c40\u90e8\u8868\u9762\u7684\u8fd1\u4f3c\u503c\uff0c\u63cf\u8ff0\u4e86\u8868\u9762\u7684\u4f4d\u7f6e\u4ee5\u53ca\u5176\u53d6\u5411\u548c\u5e73\u6ed1\u5ea6\u3002<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"color: #ff0000;\">\u5354\u65b9\u5dee\u77e9\u9663\u7684\u7279\u5fb5\u5411\u91cf\u548c\u7279\u5fb5\u503c\u53ef\u4ee5\u8868\u9054\u8868\u9762\u4fe1\u606f<\/span><\/p>\n<p style=\"padding-left: 30px;\">Each PDF can be seen as an approximation of the local surface, describing the position of the surface as well as its orientation and smoothness.<\/p>\n<h4>PAGE 9, 10:<\/h4>\n<h4>Scan registration<\/h4>\n<p style=\"padding-left: 30px;\">\u70ba\u4e86\u627e\u51fa\u5169\u6b21 SCAN \u7684 <span style=\"color: #0000ff;\">spatial transformation function<\/span> T(~p, ~x) that moves a point ~x in space by the pose ~p. \u53ef\u4ee5\u5229\u7528\u525b\u525b\u5f97\u5230\u7684 CELL PDF \uff0c\u53bb\u627e\u51fa\u6700\u63a5\u8fd1\uff08max\uff09\u7684\u5206\u4f48\u51fd\u6578<\/p>\n<p style=\"padding-left: 30px;\">NDT score \u53ef\u4ee5\u7528\u65bc\u725b\u9813\u6cd5\uff0c\u8868\u793a\u662f\u5426\u9054\u5230\u6700\u597d\u7684\u5206\u6578\u3002<span style=\"color: #0000ff;\">Gaussian approximation<\/span> \u5247\u53ef\u4ee5\u6e1b\u5c11\u904b\u7b97<\/p>\n<p style=\"padding-left: 30px;\">(\u770b\u6700\u4e0a\u9762\u63a8\u85a6\u7684\u8ad6\u6587\u6216\u662f\u6295\u5f71\u7247\uff0c\u6c92\u8fa6\u6cd5\u591a\u52a0\u8a3b\u89e3)<\/p>\n<h4>PAGE 11:<\/h4>\n<h4>Newton\u2019s algorithm for<\/h4>\n<ul>\n<li>Newton\u2019s algorithm can be used to find the parameters ~p that optimise s(~p)<\/li>\n<li>Newton\u2019s method iteratively solves the equation H\u2206~p = \u2212~g<\/li>\n<li>g and H are partial differential and second order partial differential of<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\">\u8001\u6a23\u5b50\u8d85\u904e15\u500b\u6578\u5b78\u7b26\u865f\u6211\u5011\u5c31\u5f88\u4e0d\u60f3\u7406\u6703<\/p>\n<p style=\"padding-left: 30px;\"><u><a href=\"https:\/\/www.youtube.com\/watch?v=Quw4ZHLH2CY\">https:\/\/www.youtube.com\/watch?v=Quw4ZHLH2CY<\/a><\/u><\/p>\n<p style=\"padding-left: 30px;\">\u5229\u7528\u5fae\u5206\u627e\u51fa\u5207\u7dda\uff0c\u758a\u4ee3\u6cd5\u8da8\u8fd1\u627e\u51fa function = 0 \u7684\u6839<\/p>\n<h4>PAGE 12:<\/h4>\n<h4>NDT FLOW<\/h4>\n<p><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/FLOW.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-275\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/FLOW.png\" alt=\"FLOW\" width=\"479\" height=\"606\" \/><\/a><\/p>\n<h4>PAGE13:<\/h4>\n<h4><b>\u6211\u77e5\u9053<\/b><b>\u5927\u5bb6<\/b><b>\u770b\u6578\u5b57<\/b><b>\u5f88<\/b><b>\u75db\u82e6<\/b><\/h4>\n<p>\u5176\u5be6\u7576\u521d\u5206\u4eab\u7684\u5c0d\u8c61\u90fd\u4e26\u975e\u6578\u5b78\u76f8\u95dc\u51fa\u8eab\uff0c\u4e5f\u4e26\u975e\u4f5c SLAM \u70ba\u4e3b\uff0c\u6240\u4ee5\u6211\u731c\u8b1b\u5f97\u5728\u7565\u904e\uff0c\u7c21\u55ae\uff0c\u9084\u662f\u4e0d\u597d\u7406\u89e3\uff0c\u56e0\u6b64\u4e0d\u5c11\u6771\u897f\u90fd\u6c92\u6709\u5728\u6df1\u5165\uff0c\u4f46\u662f\u70ba\u4e86\u80fd\u5c0e\u5230 TKU \u7684\u4fee\u6539\uff0c\u9084\u6709\u5be6\u505a\u4e0a\u7684\u53c3\u6578\u8a2d\u5b9a\uff0c\u4e0d\u5f97\u4e0d\u63d0\u3002<\/p>\n<h4>PAGE14:<\/h4>\n<h4>About ND Voxel size<\/h4>\n<ul>\n<li>\u592a\u5c0f\n<ul>\n<li>\u904b\u7b97\u91cf\u5927\uff0cmemory \u6d88\u8017\u5927<\/li>\n<li>\u5339\u914d\u7cbe\u78ba<\/li>\n<li>\u4f46\u5c0f\u65bc\u4e94\u500b\u9ede\uff0c\u5247\u5f88\u96e3\u5f62\u6210\u6b63\u614b\u5206\u4f48<\/li>\n<\/ul>\n<\/li>\n<li>\u592a\u5927\n<ul>\n<li>\u904b\u7b97\u91cf\u5c11<\/li>\n<li>\u5339\u914d\u4e0d\u7cbe\u78ba<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\">\u770b\u5230\u9019\u88e1\uff0c\u5176\u5be6\u53ef\u4ee5\u767c\u73fe NDT SLAM \u4e3b\u8981\u7684\u4f5c\u6cd5\u548c\u91cd\u9ede\u90fd\u5728\u65bc <span style=\"color: #ff0000;\">\u8655\u7406 PDF \u7684\u6700\u4f73\u5316\u554f\u984c<\/span>\uff0c\u5f9e\u7d50\u8ad6\u4f86\u770b\uff0c\u80fd\u4e0b\u624b\u7684\u5c31\u662f <span style=\"color: #ff0000;\">Cell \u7684\u53c3\u6578\u8abf\u6574<\/span>\u3002\u9019\u901a\u5e38\u4e5f\u5f88\u96e3\u6c7a\u5b9a\uff0c\u5fc5\u9808\u53c3\u7167\u74b0\u5883\uff08\u662f\u5426\u9644\u8fd1\u6709\u5f88\u591a\u5efa\u7bc9\u7269\uff0c\u9084\u662f\u5927\u5e73\u539f\uff09\uff0cSensor\u7684\u53c3\u6578\uff08\u6383\u63cf\u5bc6\u5ea6\uff0c\u6642\u9593\uff09\u7b49\u7b49\uff0c\u4f46\u7e3d\u800c\u8a00\u4e4b\u90fd\u662f\u4e0a\u9762\u7684\u6240\u63d0\u5230\u7684\u60c5\u6cc1\uff0c\u592a\u5927\u6216\u592a\u5c0f\u90fd\u4e0d\u597d\u3002<\/p>\n<h4>PAGE 15 :<\/h4>\n<h4>NDT &#8211; TKU version<\/h4>\n<p style=\"padding-left: 30px;\">\u4f7f\u7528\u683c\u5b50\u91cd\u758a\u7684\u65b9\u6cd5\uff0c\u4f46\u9019\u4e26\u975e TKU \u6240\u63d0\u51fa\u3002<\/p>\n<p style=\"padding-left: 30px;\">Peter Biber and Wolfgang Stra\u00dfer: \u201cThe Normal Distributions Transform:A New Approach to Laser Scan Matching\u201d, Proceedings of the 2003 IEEE\/RSJ International Conference on Intelligent Robots and Systems, pp. 2743\u20132748, 2003<\/p>\n<p style=\"padding-left: 30px;\">TKU \u63a1\u7528\u6bcf\u500b Cell \u90fd\u6709\u4e00\u534a\u7684\u91cd\u758a\u3002\u597d\u8655\u58de\u8655\u90fd\u5f88\u660e\u986f\u3002\u9019\u65b9\u767c\u5728\u5206\u985e\u4e0a\u70ba\u300e<span style=\"color: #ff0000;\">Trilinear interpolation<\/span>\u300f\uff0c\u5229\u7528\u91cd\u758a Cell \u7684\u4e0d\u9023\u7e8c\u6027\uff0c\u63d0\u9ad8 Cell \u4ea4\u754c\u8655\u7684\u9ede\u96f2\u5206\u4f48\u7a69\u56fa\u59d3<\/p>\n<h4>PAGE 16:<\/h4>\n<h4>\u5716\u7247\u6709\u611f<\/h4>\n<p style=\"padding-left: 30px;\">\u81ea\u5df1\u770b\u6295\u5f71\u7247\u5566<\/p>\n<h4>PAGE 17:<\/h4>\n<h4>TKU &#8211; ND Voxel size<\/h4>\n<p><span style=\"color: #ff0000;\">\u5728CELL\u91cd\u758a\u7684\u57fa\u790e\u4e0a\uff0c\u8ffd\u52a0\u8ddd\u96e2\u548c\u6642\u9593\u7684\u53c3\u6578\uff0c\u5148\u5206\u6210\u5169\u500b\u968e\u6bb5\uff0c<\/span><\/p>\n<ul>\n<li>Converging state\n<ul>\n<li>\u6309\u7167\u8ddd\u96e2\u5207\u5206 ND Voxel size\uff0c\u4e26\u904b\u7b97<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li>Adjust state\n<ul>\n<li>\u5230\u4e00\u5b9a\u6b21\u6578\u5f8c\u5247\u901a\u901a\u7528\u6700\u5c0f\u683c\u5b50\u4f86\u904b\u7b97<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 30px;\">Converging \u968e\u6bb5\uff0c\u5148\u6839\u64da\u8207 scanner \u7684\u8ddd\u96e2\u4f86\u6c7a\u5b9a Cell \u7684\u5927\u5c0f\uff0c\u9019\u662f\u5c6c\u65bc\u7269\u7406\u9650\u5236\uff0c\u96e2 Scanner \u8d8a\u8fd1\uff0c\u9ede\u96f2\u4e00\u5b9a\u8d8a\u5bc6\u96c6\uff0c\u56e0\u6b64\u53ef\u4ee5\u5c07 Cell \u5207\u5c0f\u4e00\u9ede\uff0c\u8d8a\u9060\u8d8a\u5927\uff0c\u9019\u6a23\u53ef\u4ee5\u52a0\u901f\u6536\u6582\u904b\u7b97\u3002<\/p>\n<p style=\"padding-left: 30px;\">Adjust \u968e\u6bb5\uff0c\u7576 Converging \u6536\u6582\u6b21\u6578\u9054\u5230\u4e00\u5b9a\u5f8c\uff0c\u5247\u53ef\u4ee5\u958b\u59cb\u901a\u901a\u4f7f\u7528\u6700\u5c0f Cell \u4f86\u9032\u884c\u6536\u6582\u904b\u7b97\uff0c\u9019\u6a23\u4e00\u4f86\u4e5f\u53ef\u4ee5\u4fdd\u6301 match \u7cbe\u5ea6\u3002<\/p>\n<p style=\"padding-left: 30px;\">\u9019\u662f TKU \u6240\u63d0\u51fa\u7684\u4e3b\u8981\u6982\u5ff5\uff0c\u800c\u8a73\u7d30\u5be6\u9a57\u6578\u64da\uff0c\u5247\u8acb\u5404\u70ba\u81ea\u5df1\u53bb\u770b\u8ad6\u6587\uff08\u8457\u4f5c\u6b0a\uff09\u3002<\/p>\n<h4>Page 18<\/h4>\n<h4>Reference:<\/h4>\n<p style=\"padding-left: 30px;\">1.A 3-D Scan Matching using Improved 3-D Normal Distributions Transform for Mobile Robotic Mapping(\u7db2\u8def\u4e0a\u4e0d\u516c\u958b)<\/p>\n<p style=\"padding-left: 30px;\">2.The Three-Dimensional Normal-Distributions Transform \u2014 an Efficient Representation for Registration, Surface Analysis, and Loop Detection<\/p>\n<p style=\"padding-left: 30px;\">3.The Normal Distributions Transform:A New Approach to Laser Scan Matching<\/p>\n<h4>PAGE 19\uff1a<\/h4>\n<h4>Other<\/h4>\n<p style=\"padding-left: 30px;\">\u9019\u662f\u4e00\u4e9b\u5be6\u505a\u4e0a\u53ef\u4ee5\u8abf\u6574\u7684\u53c3\u6578\uff0c\u6709\u7a7a\u7684\u4eba\u53ef\u4ee5\u81ea\u884c\u53bb\u770b PCL \u5be6\u505a<\/p>\n<h4>PAGE 20:<\/h4>\n<h4>Score detail<\/h4>\n<p style=\"padding-left: 30px;\">\u9019\u662f\u88dc\u5145 PAGE 10 \u7684 Score \u7684\u904b\u7b97\u3002<\/p>\n<p><span style=\"color: #800000;\">Ending<\/span><\/p>\n<p><span style=\"color: #800000;\">\u5982\u679c\u5404\u4f4d\u770b\u5230\u9019\u908a\u7684\u8a71\uff0c\u4e5f\u7b97\u662f\u5927\u529f\u544a\u6210\uff0c\u4f46\u9019\u7bc7\u771f\u7684\u4e26\u975e\u5165\u9580\u6587\u7ae0\uff0c\u6709\u554f\u984c\u7684\u8a71\u53ef\u662f\u767c\u554f\u770b\u770b\uff0c\u6216\u662f\u81ea\u884c\u53bb\u770b\u8ad6\u6587\u3002<\/span><\/p>\n<p><span style=\"color: #800000;\">\u63a5\u4e0b\u7684\u90e8\u4efd\uff0c\u771f\u7684\u5c31\u662f\u5c6c\u65bc Autoware \u7684 trace code \u7d00\u9304\u3002<\/span><\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;\u5206\u9694\u4e00\u4e0b&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n<h3><span style=\"font-weight: 400;\">Parameter \u53ef\u8abf\u63a7\u53c3\u6578<\/span><\/h3>\n<h4><strong><span style=\"color: #0000ff;\">Iteration<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L321\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L321<\/span><\/a><br \/>\n<span style=\"font-weight: 400;\">\u6700\u5927\u8fed\u4ee3\u6b21\u6578\uff0c<\/span><span style=\"font-weight: 400;\">\u9810\u8a2d100<\/span><\/p>\n<h4><strong><span style=\"color: #0000ff;\">G_MAP_CELLSIZE<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L11\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L11<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400; color: #000000;\">CELL \u55ae\u4f4d\u5927\u5c0f<\/span><br \/>\n<span style=\"font-weight: 400;\">\u7b49\u50f9\u65bcPCL setResolution\u00a0<\/span><span style=\"font-weight: 400;\">\u9810\u8a2d1.0<\/span><\/p>\n<h4><strong><span style=\"color: #0000ff;\">leaf size<\/span><\/strong><\/h4>\n<p><span style=\"font-weight: 400;\">Voxel grid size \u8abf\u6574\u53c3\u6578<\/span><br \/>\n<span style=\"font-weight: 400;\">setLeafSize<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L233\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L233<\/span><\/a><\/p>\n<h4><strong><span style=\"color: #0000ff;\">scan_points_num<\/span><\/strong><\/h4>\n<p><span style=\"font-weight: 400;\">\u6383\u63cf\u5f8c\u7684\u6700\u5927\u9ede\u96f2\u6578\u91cf default 13000\uff0c\u9019\u500b\u8981\u5c0f\u5fc3\u8a2d\u5b9a\uff0c\u9ede\u6578\u592a\u591a\u6703\u5831\u6389<\/span><\/p>\n<h4><span style=\"color: #0000ff;\">Epsilon<\/span><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L334\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L334<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u6536\u6582\u503c\u5f97\u6700\u5c0f\u8b8a\u52d5\u503c\uff0c\u8d8a\u5c0f\u8d8a\u7cbe\u78ba\uff0c\u8d8a\u5927\u7b97\u8d8a\u4e45\uff0c\u901a\u5e38\u4e0d\u6539<\/span><\/p>\n<h4><strong><span style=\"color: #0000ff;\">add_point_map(NDmap, &amp;map_points[i]);<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L501\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L501<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u9019\u4e00\u884c\u901a\u5e38\u8a3b\u89e3\u6389\uff0c\u4e3b\u8981\u7528\u65bc\u908a match \u908a\u66f4\u65b0\u5730\u5716\uff0c\u7b97\u662f MATCHING AND MAPPING \u7684\u7d50\u5408\uff0c\u4f46\u662f\u9084\u6c92\u6709\u5b8c\u6210\u3002<\/span><\/p>\n<h4><strong><span style=\"color: #0000ff;\">_downsampler_num<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/newton.cpp#L418\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/newton.cpp#L418<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u9019\u662f\u9810\u8a2d voxel filter \u7684\u8a2d\u5b9a\uff0c0=distance\uff0c1= voxel_grid\uff0c\u901a\u5e38\u662f 1 \uff0c\u6b63\u5e38\u4f86\u8aaa\u9019\u61c9\u8a72\u662f\u5916\u90e8\u53ef\u53c3\u6578\u5316\u7684\u90e8\u5206\u3002\u4f46\u5b83\u5011\u9084\u6c92\u5b8c\u6210\u3002<\/span><\/p>\n<h4><strong><span style=\"color: #0000ff;\">g_use_gnss<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L76\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L76<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u9810\u8a2d\u6c92\u6709\u555f\u52d5 GPS , \u7167\u7406\u8aaa\u4e5f\u61c9\u8a72\u5ba4\u5916\u90e8\u53ef\u8abf\u63a7\u53c3\u6578\uff0c\u4f46\u662f\u4ed6\u9580\u9084\u5728\u4f5c\u3002<\/span><\/p>\n<h4><strong><span style=\"color: #0000ff;\">layer_select<\/span><\/strong><\/h4>\n<p><span style=\"font-weight: 400;\">\u61c9\u8a72\u662f\u70ba\u4e86\u4e4b\u5f8c\u7684TKU\u5207\u5272\u683c\u5b50\u800c\u8a2d\u8a08\u7684\uff0c\u9084\u4e0d\u6e05\u695a\u600e\u9ebc\u7528\uff0c\u554f\u4ed6\u5011\u4e5f\u6c92\u56de\u7b54<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><strong><span style=\"color: #ff0000;\">CODE \u8b1b\u89e3<\/span><\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">\u4e3b\u8981\u4e09\u5927\u6a94\u6848<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp<\/span><\/a><\/p>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/algebra.cpp\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/algebra.cpp<\/span><\/a><\/p>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/newton.cpp\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/newton.cpp<\/span><\/a><\/p>\n<h4><strong><span style=\"color: #0000ff;\">add_point_map<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L629\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L629<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u4e00\u6b21\u4efd\u7684\u9ede\u96f2\u532f\u5165<\/span><\/p>\n<p><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/FLOW.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-275\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/FLOW.png\" alt=\"FLOW\" width=\"334\" height=\"423\" \/><\/a><\/p>\n<h4><strong><span style=\"color: #0000ff;\">adjust3d<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/newton.cpp#L195\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/newton.cpp#L195<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u5305\u542b\u4e00\u6b21\u4efd\u7684 \u6536\u6582\u8a08\u7b97\uff0c\u4e0a\u9762\u7684\u4e00\u6b21while \u904b\u7b97<\/span><\/p>\n<p><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/hg.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-277\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/hg.png\" alt=\"hg\" width=\"735\" height=\"125\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">gsum , hsum \u5206\u5225\u8868\u793a\u5e95\u4e0b\u7684\u4e00\u6b21\u5fae\u5206\uff0c\u548c\u4e8c\u6b21\u5fae\u5206\u7684 hessian matrix<\/span><\/p>\n<p><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/h.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-276\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/h.png\" alt=\"h\" width=\"1007\" height=\"372\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u6bcf\u6b21\u7684\u904b\u7b97\u90fd\u6703\u547c\u53eb get_ND \u53bb\u66f4\u65b0\u503c<\/span><\/p>\n<h4><strong><span style=\"color: #0000ff;\">get_ND<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L685\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L685<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u9019\u88e1\u6703\u9032\u884c newton \u6cd5\u7684\u66f4\u65b0\u503c\u554f\u984c\uff0c\u4e0a\u9762\u7684 for all points \u4e00\u6b21\u904b\u7b97<\/span><\/p>\n<h4><strong><span style=\"color: #0000ff;\">update_covariance <\/span><\/strong><\/h4>\n<p><span style=\"font-weight: 400;\">\u66f4\u65b0\u6bcf\u500b ND \u7684MEAN AND CONVARIANCE<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L595\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L595<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u8ad6\u6587\u88e1\u6709\u63d0\u5230\uff0c\u6c42\u6700\u5c0f eigen value of covariance \u53ef\u80fd\u6703\u9047\u5230\u6536\u6582\u8cea\u96d6\u7136\u5f88\u5c0f\uff0c\u4f46\u662f\u53ef\u4ee5\u7e7c\u7e8c\u6536\u6582\u7684\u60c5\u6cc1\uff0c\u8ad6\u6587\u5efa\u8b70\u4f4e\u65bc0.001\u6642\uff0c\u5247\u4e0d\u518d\u7e7c\u7e8c 0.001\uff0c\u5efa\u8b70\u4e0d\u8981\u4e82\u52d5\uff0c\u6e2c\u8a66\u5f8c\u4e26\u6c92\u6709\u7279\u5225\u6548\u679c\uff0c\u56e0\u70ba\u9019\u662f\u6975\u9650\u60c5\u6cc1<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A measure of this problem in [1] is to modify the minimum eigen value of the covariance matrix with 0.001 times as much as the maximum eigen value, if the minimum one is smaller than 0.001 times as much as the maximum one. The authors take same approaches. However, the number of overlapping ND voxel becomes eight in 3-D space.<\/span><\/p>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L882\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L882<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u8ad6\u6587\u63d0\u5230\u7684\u6e1b\u5c11\u904b\u7b97\u91cf\u7684\u65b9\u6cd5\uff0c\u4e0d\u9032\u884c\u5168\u76e4\u7684 mean \u503c\u8a08\u7b97\uff0c\u800c\u662f\u6709\u65b0\u9ede\u52a0\u5165\u6642\u5224\u65b7\u662f\u5426\u6709\u9700\u8981\u55ce?\uff0c\u76f4\u63a5\u7528\u7c97\u7565\u7684\u65b9\u5f0f\u52a0\u5165\u65b0\u7684\u503c\u3002<\/span><\/p>\n<ol>\n<li><span style=\"font-weight: 400;\"> Incremental update of ND voxel The number of reference scan points Mk in the ND voxel k is increased as the environment map is expanded. Therefore, the computational load to obtain mean vectors pk(k = 1, &#8230;, Mk) and covariance matrix \u03a3k(k = 1, &#8230;, Mk) will increase according to equations (1), and (2). To decrease this load, the authors take the following incremental update equations to apply NDT to reference scan in ND voxel. When ND voxel k gets new reference points xki, then mean vector pk and covariance matrix \u03a3k are updated by following equations;<\/span><\/li>\n<\/ol>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L595\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L595<\/span><\/a><\/p>\n<h4><strong><span style=\"color: #0000ff;\">set_sincos<\/span><\/strong><\/h4>\n<h4><strong><span style=\"color: #0000ff;\">set_sincos2<\/span><\/strong><\/h4>\n<h4><strong><span style=\"color: #0000ff;\">scan_transrate<\/span><\/strong><\/h4>\n<p><span style=\"font-weight: 400;\">\u9019\u4e09\u500b\u90fd\u662f\u7528\u65bc\u8868\u793a \u505a transform \u7684 \u77e9\u9663\u65cb\u8f49\u5f0f<\/span><\/p>\n<p><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/transform.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-280\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/transform.png\" alt=\"transform\" width=\"490\" height=\"161\" \/><\/a><\/p>\n<h4><strong><span style=\"color: #0000ff;\">calc_summand3d<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/newton.cpp#L38\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/newton.cpp#L38<\/span><\/a><\/p>\n<p><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/score.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-279\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/score.png\" alt=\"score\" width=\"381\" height=\"124\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u8a08\u7b97 ndt \u7684\u6a5f\u7387\u5206\u5e03\u7e3d\u5206\u6578\uff0c\u6703\u7528\u5230 <\/span><span style=\"font-weight: 400;\">probability_on_ND<\/span><\/p>\n<h4><strong><span style=\"color: #0000ff;\">probability_on_ND<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L905\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/packages\/ndt_localizer\/nodes\/ndt_matching_tku\/ndt_matching_tku.cpp#L905<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u6295\u5f71\u7247\u6709\u63d0\u5230\u904e\uff0c\u7528\u65bc\u8a08\u7b97\u5206\u6578\uff0c\u9ede\u96f2\u843d\u65bc\u6bcf\u500bnd\u88e1\u7684\u6a5f\u7387<\/span><\/p>\n<h4><strong><span style=\"color: #0000ff;\">jacobi_matrix3d<\/span><\/strong><\/h4>\n<p><a href=\"https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/algebra.cpp#L354\"><span style=\"font-weight: 400;\">https:\/\/github.com\/CPFL\/Autoware\/blob\/master\/ros\/src\/computing\/perception\/localization\/lib\/ndt_tku\/src\/algebra.cpp#L354<\/span><\/a><\/p>\n<p><span style=\"font-weight: 400;\">\u4e9e\u53ef\u6bd4\u77e9\u9663\uff0c\u7528\u65bc\u725b\u9813\u6cd5\uff0c\u6c42 eigen value.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h3><strong><span style=\"color: #0000ff;\">code flow<\/span><\/strong><\/h3>\n<p><a href=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/ndt_flow.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-278\" src=\"https:\/\/boochlin.com\/wp-content\/uploads\/2017\/04\/ndt_flow.png\" alt=\"ndt_flow\" width=\"1220\" height=\"912\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\u5982\u6709\u4efb\u4f55\u4fb5\u6b0a\uff0c\u8acb\u544a\u77e5\u5c0f\u5f1f\uff0c\u5c0f\u5f1f\u6703\u62ff\u4e0b\uff0c\u4e5f\u8acb\u5404\u4f4d\u6ce8\u610f\u76f8\u95dc\u8457\u4f5c\u6b0a\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u777d\u9055\u8a31\u4e45\u6c92\u6709\u5beb blog \uff0c\u4e3b\u8981\u9084\u662f\u592a\u5fd9\u3002\u9019\u5468\u7d42\u65bc\u7a7a\u51fa\u6642\u9593\u53ef\u4ee5\u4f86\u88dc\u88dc\u4e4b\u524d\u7684\u7b46\u8a18\uff0c\u7531\u65bc\u6700\u8fd1\u624d\u5c0d\u5167\u90e8\u5206\u4eab\u6b64\u4e3b\u984c\u3002\u6240\u4ee5\u9019\u500b\u4e3b\u984c\u5370\u8c61\u6700\u6df1\u523b\u3002<br \/>\n\u96d6\u7136\u5f88\u60f3\u518d\u6b21\u5c31\u9032\u5165\u6b63\u984c\uff0c\u4f46\u662f\u7531\u65bc\u9019 blog \u7684\u98a8\u683c\u5c31\u662f\u5ee2\u8a71\u591a\uff0c\u6240\u4ee5\u6211\u7e7c\u7e8c\u5beb\u5ee2\u8a71\uff0c\u8ac7\u5230\u7684\u9019\u500b\u4e3b\u984c\uff0c\u7528\u5230\u5927\u91cf\u7684\u6578\u5b78\uff0c\u800c\u5c0f\u5f1f\u6211\u5728\u5927\u5b78\u57fa\u672c\u4e0a\u300e\u6a5f\u7387\u300f\u300e\u7dda\u6027\u4ee3\u6578\u300f\u300e\u5fae\u7a4d\u5206\u300f\u5927\u6982\u90fd\u6709\u91cd\u4fee\u904e\uff0c\u6240\u4ee5\u5982\u679c\u5ba2\u500c\u5c0d\u65bc\u6578\u5b78\u7684\u90e8\u4efd\u6709\u554f\u984c\uff0c\u8acb\u81ea\u884c\u4e0a\u7db2\u67e5\uff0c\u56e0\u70ba\u6211\u7b54\u7684\u4e0d\u6703\u6bd4google \u5927\u795e\u597d\u3002<\/p>\n","protected":false},"author":1,"featured_media":584,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[67,25,14],"tags":[69,71,68,70],"_links":{"self":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/271"}],"collection":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=271"}],"version-history":[{"count":3,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/271\/revisions"}],"predecessor-version":[{"id":585,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/posts\/271\/revisions\/585"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=\/wp\/v2\/media\/584"}],"wp:attachment":[{"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/boochlin.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}