[{"data":1,"prerenderedAt":169},["ShallowReactive",2],{"method-karto_spa2010":3},{"method":4,"reference":64,"equipment":89,"figures":96,"results":97},{"id":5,"label":6,"shortName":7,"title":8,"year":9,"era":10,"cluster":11,"scope":12,"keyIdeaZh":13,"keyIdeaEn":14,"fulltextStatus":15,"publicationStatus":16,"recommendation":17,"constructionRelevance":18,"validationEnvironment":19,"strengths":22,"limitations":27,"sensors":33,"platform":35,"estimator":37,"association":38,"timeModel":39,"deskew":40,"loopClosure":41,"globalOptimization":42,"mapRepresentation":43,"prior":44,"outputGeometry":45,"compute":46,"codeUrl":47,"codeLicense":48,"relatedVersions":49},"karto_spa2010","Konolige et al., 2010","Karto SLAM (Sparse Pose Adjustment)","Efficient Sparse Pose Adjustment for 2D mapping",2010,"classic","C01","estimation_framework_or_library","本文提出稀疏位姿調整（Sparse Pose Adjustment, SPA），以 Levenberg-Marquardt 最佳化 2D 位姿圖。作者以有序資料結構一次走訪全部約束即建出稀疏的 H 矩陣，再用 CSparse 的稀疏 Cholesky 分解直接求解線性子問題；每條約束保留完整的精度矩陣，因此能處理非球形的共變異。增量模式採用可接續的 LM，保留上一輪的 lambda，每加入一個節點只做一次迭代。實驗用的位姿圖由 SRI 的 Karto 以相關式掃描匹配產生，包含序列匹配與迴圈閉合約束；SPA 本身只是後端，不處理資料關聯。","Sparse Levenberg-Marquardt back end for 2D pose graphs that builds the sparse system in one ordered pass and solves it by sparse direct Cholesky, used as the optimizer behind the Karto laser SLAM front end.","full_text_reviewed","peer_reviewed_published","background","未在營建場域驗證；63 組真實資料都是室內機器人記錄，沒有獨立參考量測。作者指出 100 m 乘 100 m 辦公空間的 2D 雷射地圖可達數千個節點，且位姿圖可增刪節點以支援長期建圖（Sec. I、VII），這與大型建築室內 2D 平面地圖的建立與更新有關（推論）。其 ROS 實作 slam_karto 以及後續的 SLAM Toolbox [slamtoolbox2021] 都以 Karto 為基礎，是室內 2D 雷射建圖的現成工具（推論）。",[20,21],"completed_building","simulation",[23,24,25,26],"In batch mode SPA and PCG converged to almost the same error, both with more than 10 times lower error than TORO on the larger graphs, and SPA needed almost an order of magnitude less computation than PCG or TORO for almost all graphs (Sec. VI.B).","Full optimization of the 3603-node, 4986-constraint MIT map from odometry took 150 ms; incremental mode needed less than 15 ms per node addition (Sec. I; Fig. 1).","On the 100k-node synthetic graph, on-line SPA reached the same minimum chi-square as TreeMap while TreeMap used up to 100 s per iteration (Sec. VI.D; Fig. 8).","As a pose-graph method SPA allows incremental additions and deletions, which the authors link to lifelong mapping (Sec. VII).",[28,29,30,31,32],"With all nodes initialized at (0,0,0), SPA and PCG converged to non-global minima on all real datasets, while TORO recovered the correct topology (Sec. VI.B).","On the synthetic graph SPA did not converge to the global minimum from odometry or zero initialization; spanning-tree initialization was required (Sec. VI.D).","The 63 indoor datasets have no ground truth; accuracy is the covariance-weighted chi-square error of the constraints, which reflects scan alignment only if the scan matcher is accurate (Sec. VI.A).","Evaluated only for 2D poses, although the authors state SPA can be parameterized with 3D poses (Sec. I).","The authors state that none of the real-world datasets they found were challenging for SPA (Sec. VI.C; Sec. VII).",[34],"front-end agnostic optimizer; test graphs were built by the Karto front end from 2D laser logs (laser model not reported)",[36,21],"not_reported (63 stored indoor robot logs; platforms not described)","Levenberg-Marquardt nonlinear least squares on a 2D pose graph with full precision matrices per constraint; the linear subproblem is built in one ordered pass (per-column std::map blocks converted to compressed column storage) and solved by sparse direct Cholesky (CSparse with AMD ordering); a 'continuable LM' keeps lambda between incremental iterations (Sec. IV.B-F; Tables I-II)","not_applicable to SPA itself; constraints and covariances come from the Karto front end, which uses the correlation method of Konolige and Chou (extended by Olson) for sequential matching and for loop-closure matching of sets of scans (Sec. V)","discrete poses","not_applicable","not_applicable to the optimizer; loop-closure constraints are produced by Karto's scan-set matching (Sec. V)","batch or incremental LM optimization of the whole 2D pose graph; spanning-tree initialization gave the best results and was needed for global convergence on the large synthetic graph (Sec. VI.B, VI.D)","2D pose graph (in Karto, poses carry laser scans); SPA holds no map of its own","none (initialization from odometry or from a spanning tree of the graph)","optimized 2D poses (x, y, theta); maps are rendered from scans at the optimized poses (Fig. 3)","Intel Core i7-920 at 2.67 GHz: 150 ms to fully optimize the 3603-node MIT map from odometry, less than 15 ms per node in incremental mode (Sec. I); about 10 s for the 100k-node, 400k-constraint synthetic graph from spanning-tree initialization (Fig. 6)","https:\u002F\u002Fgithub.com\u002Fros-perception\u002Fsparse_bundle_adjustment","BSD (spa2d.h header and package.xml); the ROS slam_karto wrapper that uses it is LGPL (package.xml; spa_solver.h header LGPL-3.0-or-later) and open_karto is LGPLv3 (package.xml)",[50,54,56,60],{"relation":51,"title":52,"doi_or_url":53},"code_release","SPA code and datasets page stated in the paper (www.ros.org\u002Fresearch\u002F2010\u002Fspa; HTTP 301 to https, content not checked)","https:\u002F\u002Fwww.ros.org\u002Fresearch\u002F2010\u002Fspa",{"relation":51,"title":55,"doi_or_url":47},"ros-perception\u002Fsparse_bundle_adjustment (contains spa2d.h, BSD)",{"relation":57,"title":58,"doi_or_url":59},"software_using_this_method","ros-perception\u002Fslam_karto ROS wrapper whose SpaSolver is built on spa2d.h with the open_karto front end (LGPL)","https:\u002F\u002Fgithub.com\u002Fros-perception\u002Fslam_karto",{"relation":61,"title":62,"doi_or_url":63},"derived_software","SLAM Toolbox builds on Open Karto and replaced its Sparse Bundle Adjustment interface with Ceres (slamtoolbox2021, Features)","https:\u002F\u002Fdoi.org\u002F10.21105\u002Fjoss.02783",{"id":5,"kind":65,"shortName":7,"title":8,"authors":66,"year":9,"venue":73,"venueType":74,"publisher":75,"volumeIssuePages":76,"doi":77,"arxivId":78,"url":79,"firstPublicDate":80,"publicationStatus":16,"metadataStatus":81,"fulltextStatus":15,"era":10,"classicReason":82,"codeUrl":47,"cluster":11,"topics":83,"mdpi":84,"verification":85,"label":6,"fulltextRoute":86,"versionRead":87,"addedByCensus":88},"component",[67,68,69,70,71,72],"Kurt Konolige","Giorgio Grisetti","Rainer Kümmerle","Wolfram Burgard","Benson Limketkai","Regis Vincent","2010 IEEE\u002FRSJ International Conference on Intelligent Robots and Systems (IROS 2010), Taipei, Taiwan","conference","IEEE","pp. 22-29","10.1109\u002Firos.2010.5649043",null,"https:\u002F\u002Fdoi.org\u002F10.1109\u002FIROS.2010.5649043","2010-10","metadata_verified","reproducible baseline and necessary technical node: SPA is the sparse Levenberg-Marquardt pose-graph back end that SRI's Karto front end (correlative scan matching with covariance, Sec. V) feeds; the ROS slam_karto package builds its SpaSolver on sparse_bundle_adjustment\u002Fspa2d.h (src\u002Fspa_solver.h checked) and SLAM Toolbox states it builds on Open Karto [slamtoolbox2021]. Karto appears as a 2D comparison baseline in rtabmap2019 Table 9 according to the corpus full-text record of that paper.",[11],false,"corrected","NTU institutional (curl)","IEEE Xplore version of record PDF (IROS 2010, pp. 22-29, 8 pp.)",true,[90],{"category":91,"model":92,"canonical":92,"role":93,"dataset":78,"specs":94,"locator":95},"compute","Intel Core i7-920","compute for runtime","2.67 GHz","Sec. VI",[],{"totalRows":98,"groupCount":99,"groups":100,"others":168},4,1,[101],{"slug":102,"group":103,"sourceId":5,"sourceLabel":6,"table":104,"selfRows":98,"metrics":105,"seqs":118,"entrants":132,"cells":139,"outcomes":151,"locators":155,"hardware":160,"wordings":162,"notes":163},"karto-spa2010-text-sec-i-vi-vii","karto_spa2010:Text Sec. I, VI, VII","Text Sec. I, VI, VII",[106,110,114,116],{"label":107,"unit":108,"statistic":109,"alignment":109},"time for full nonlinear optimization of the graph","s","not_reported",{"label":111,"unit":112,"statistic":113,"alignment":109},"time per node addition in incremental mode (stated as less than 15 ms)","ms","max",{"label":115,"unit":108,"statistic":109,"alignment":109},"time for a full optimization of the graph (about 10 seconds)",{"label":117,"unit":112,"statistic":113,"alignment":109},"on-line computation per node (worst case)",[119,123,125,128],{"dataset":120,"sequence":121,"environment":122},"Karto-generated pose graph of the MIT corridor log","MIT corridor map (3603 nodes, 4986 constraints)","indoor building corridors",{"dataset":120,"sequence":124,"environment":122},"MIT corridor map",{"dataset":126,"sequence":127,"environment":21},"synthetic grid dataset (500 m x 500 m, 100 km trajectory)","100k nodes, 400k constraints",{"dataset":129,"sequence":130,"environment":131},"63 Karto-generated real-world graphs","all","indoor",[133,135,137],{"name":134,"methodId":5,"linkable":88,"proposed":88,"self":88},"SPA",{"name":136,"methodId":5,"linkable":88,"proposed":88,"self":88},"SPA (incremental)",{"name":138,"methodId":5,"linkable":88,"proposed":88,"self":88},"SPA (spanning-tree initialization)",[140,144,146,149],[141,141,141,142,143,141,141,143,141],0,0.15,-1,[99,99,99,145,141,99,141,143,99],15,[147,147,147,148,99,147,141,143,147],2,10,[99,150,150,148,147,150,141,143,150],3,[152,153,154],"upper bound: less than 15 ms for any node addition","approximate","stated as in the range of 10 ms per node at worst",[156,157,158,159],"Sec. I; Fig. 1","Sec. I","Fig. 6 caption","Sec. VII",[161],"Intel Core i7-920, 2.67 GHz",[],[164,165,166,167],"Full nonlinear optimization of the MIT corridor graph from odometry initialization","Incremental mode, graph optimized after each node addition","Batch optimization of the synthetic grid dataset from spanning-tree initialization","On-line computation over the real-world datasets",[],1790510664075]