[{"data":1,"prerenderedAt":363},["ShallowReactive",2],{"method-mc2slam2019":3},{"method":4,"reference":57,"equipment":79,"figures":120,"results":121},{"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":28,"sensors":34,"platform":37,"estimator":40,"association":41,"timeModel":42,"deskew":43,"loopClosure":44,"globalOptimization":45,"mapRepresentation":46,"prior":47,"outputGeometry":48,"compute":49,"codeUrl":50,"codeLicense":51,"relatedVersions":52},"mc2slam2019","Neuhaus et al., 2019","MC2SLAM","MC2SLAM: Real-Time Inertial Lidar Odometry Using Two-Scan Motion Compensation",2019,"recent","C05","odometry_with_local_mapping","MC2SLAM 以兩個連續 LiDAR 掃描一起估計第一個掃描期間的運動：先以 IMU 積分（無 IMU 時以線性外推）預測兩掃描的軌跡，再在其上加一個隨時間線性增長的六自由度偏差，用點到平面殘差把稀疏取樣的查詢點配準到最近約 100 個掃描構成的局部地圖，完成配準與去畸變；殘差尺度以中位數絕對偏差穩健估計。每次只補償前一個掃描並插入近似 Poisson 圓盤取樣的局部地圖，得到的相對位姿再與 IMU 預積分因子放入因子圖，估計速度與偏差並使軌跡與重力對齊。","Inertial LiDAR odometry that estimates motion over two consecutive sweeps as a linear-in-time bias on an IMU-predicted trajectory, registering Poisson-disk-sampled query points point-to-plane to a Poisson-disk local map with MAD-scaled robust weights, then fuses the resulting relative poses with IMU preintegration in a factor graph.","full_text_reviewed","peer_reviewed_published","supplementary","原論文只測 KITTI、校園車載與頭戴式室內外資料，未在營建場域驗證。但以 MC2SLAM 為基礎的 Vision & Robotics 團隊參加兩屆以營建場景為主的 Hilti SLAM Challenge：2021 年在論文表列的 13 支具名隊伍中得分第三（406 分，RMSE 0.101 m）[helmberger2022hilti]，2022 年 Hilti-Oxford 在表列隊伍中得分第二（443.8 分，平均 ATE 3.94 cm），其中施工中建物一樓、多樓層與樓梯序列分別為 1.1、2.0 與 4.8 cm [zhang2023hiltioxford]。這些參賽版本另加迴圈閉合與光束法平差，與本章所述純里程計不同，精度不能直接歸於原論文方法。",[20,21],"public_benchmark","cross_site",[23,24,25,26,27],"Lower KITTI training translation drift than IMLS on 6 of the 11 listed sequences and lower than LOAM on all 11 (Table 1)","KITTI test set translational error 0.69%, shared 4th\u002F5th place among LiDAR methods at the time, with better rotation error and runtime than the equally ranked IMLS (Sec. 5)","IMU integration is essential for erratic head-mounted motion: campus run drift 0.41% and 0.54% with IMU versus 8.96% and 15.65% without (Table 2)","Local map strongly reduces long-term drift, e.g. field 0.42% with versus 7.50% without (Table 2, Fig. 3)","About 32 ms per sweep for motion compensation, real time on a desktop CPU (Sec. 5)",[29,30,31,32,33],"KITTI scans had to be re-distorted with the previous relative pose and approximately recalibrated, which may introduce errors; the IMU part could not be evaluated on KITTI (Sec. 5)","Own-dataset accuracy is measured only by drift at manually registered loop checkpoints, not against an independent 6-DoF ground truth (Sec. 5)","IMU factors are re-integrated whenever the base state changes, which may be an issue for very long trajectories (Sec. 4.1)","Loop closing is not part of the evaluated system (footnote 1)","Using 1500 instead of 500 query points slightly improves accuracy but more than doubles bias-estimation time (17.6 to 37.8 ms) (Sec. 5)",[35,36],"3D multi-beam LiDAR (Velodyne HDL-32 with built-in IMU in the authors' data; Velodyne HDL-64 in KITTI without IMU)","IMU (built-in HDL-32 IMU)",[38,39],"vehicle (car-mounted HDL-32 and KITTI)","wearable (helmet-mounted HDL-32, indoor and outdoor walking)","two parts: per-sweep robust nonlinear least squares for a 6-DoF bias on an IMU-predicted trajectory over two sweeps (Tukey loss, MAD-based residual scale, Ceres), and an online factor graph with pose prior, laser odometry and IMU preintegration factors solved in Ceres every five sweeps (Sec. 3.2, 4)","Poisson-disk-like query points (minimum spacing about 20 cm, then about 500 random points) matched point-to-plane to a local map within radius epsilon; plane normal by eigen analysis of neighbours (Sec. 3.1-3.2)","discrete factor-graph states at sweep starts; within two consecutive sweeps, an IMU-integrated (or linearly extrapolated) trajectory corrected by a bias growing linearly in time in the log map (Eq. 1)","two-scan motion compensation: the trajectory over sweeps k and k+1 is estimated jointly with registration, then only sweep k is compensated and inserted into the local map (Sec. 3.2)","not in the reported system; authors state their implementation can close loops but the chapter focuses on odometry (footnote 1)","online factor graph over all sweep poses with IMU velocity and bias nodes (one dynamic node per five pose nodes); IMU factors re-integrated when the base state changes (Sec. 4)","local map of all compensated points from the last about 100 sweeps, inserted only if farther than about 5 cm from stored points (approximate Poisson disk), stored in a uniform grid ordered by time (Sec. 3.2)","yaw-only constrained prior pose at the origin; gravity alignment from IMU; for KITTI an approximate intrinsic correction by Deschaud (Sec. 4.1, 5)","odometry trajectory and motion-compensated sweeps accumulated into a point cloud map (Fig. 1)","real time on an Intel i7-3700K (as written): about 32 ms per sweep for motion compensation averaged over 1000 frames of campus run 1; pose-graph optimization about 108.6 ms every five sweeps in a separate thread (Sec. 5, Runtime)",null,"not_applicable (no public code)",[53],{"relation":54,"title":55,"doi_or_url":56},"dataset","Authors' MC2SLAM datasets page (URL printed in the chapter; not opened)","https:\u002F\u002Fagas.uni-koblenz.de\u002Fdata\u002Fdatasets\u002Fmc2slam\u002F",{"id":5,"kind":58,"shortName":7,"title":8,"authors":59,"year":9,"venue":64,"venueType":65,"publisher":66,"volumeIssuePages":67,"doi":68,"arxivId":50,"url":69,"firstPublicDate":70,"publicationStatus":16,"metadataStatus":71,"fulltextStatus":15,"era":10,"classicReason":72,"codeUrl":50,"cluster":11,"topics":73,"mdpi":74,"verification":75,"label":6,"fulltextRoute":76,"versionRead":77,"addedByCensus":78},"method",[60,61,62,63],"Frank Neuhaus","Tilman Koß","Robert Kohnen","Dietrich Paulus","Pattern Recognition (GCPR 2018), Lecture Notes in Computer Science 11269","conference","Springer","LNCS 11269, pp. 60-72","10.1007\u002F978-3-030-12939-2_5","https:\u002F\u002Fdoi.org\u002F10.1007\u002F978-3-030-12939-2_5","2019-02-14","metadata_verified","not_applicable",[11],false,"corrected","NTU institutional (curl)","Springer version of record (LNCS 11269, pp. 60-72, 2019)",true,[80,88,93,98,102,109,114],{"category":81,"model":82,"canonical":83,"role":84,"dataset":85,"specs":86,"locator":87},"lidar","Velodyne HDL 32","Velodyne HDL-32E","method input","MC2SLAM own datasets (campus run 1-2, campus drive, field)","multi-beam LiDAR with built-in IMU; per-point timestamps from datasheet","Sec. 5 Own Datasets",{"category":89,"model":90,"canonical":91,"role":84,"dataset":85,"specs":92,"locator":87},"imu","Velodyne HDL 32 built-in IMU","Velodyne HDL-32 built-in IMU","not_reported",{"category":94,"model":95,"canonical":95,"role":84,"dataset":85,"specs":96,"locator":97},"platform","helmet (head-mounted sensor)","person walking indoors and outdoors (campus run)","Sec. 5; Fig. 1",{"category":94,"model":99,"canonical":99,"role":84,"dataset":85,"specs":100,"locator":101},"car","car-mounted sensor (campus drive, field)","Sec. 5",{"category":81,"model":103,"canonical":104,"role":105,"dataset":106,"specs":107,"locator":108},"Velodyne HDL 64","Velodyne HDL-64E","dataset sensor","KITTI odometry","scans pre-compensated in the KITTI odometry release","Sec. 5 KITTI Dataset",{"category":110,"model":111,"canonical":111,"role":112,"dataset":106,"specs":113,"locator":108},"gnss","commercial GPS\u002FINS (model not stated)","reference or ground truth","ground truth for the training sequences",{"category":115,"model":116,"canonical":117,"role":118,"dataset":50,"specs":92,"locator":119},"compute","Intel i7-3700K (as written)","Intel i7-3700K","compute for runtime","Sec. 5 Runtime",[],{"totalRows":122,"groupCount":123,"groups":124,"others":362},28,4,[125,190,303,340],{"slug":126,"group":127,"sourceId":5,"sourceLabel":6,"table":128,"selfRows":129,"metrics":130,"seqs":136,"entrants":147,"cells":154,"outcomes":184,"locators":185,"hardware":186,"wordings":187,"notes":188},"mc2slam2019-table-2","mc2slam2019:Table 2","Table 2",12,[131],{"label":132,"unit":133,"statistic":134,"alignment":135},"translation drift per meter (in %) at loop checkpoints","%","mean","none",[137,141,143,145],{"dataset":138,"sequence":139,"environment":140},"MC2SLAM own datasets","campus run 1","head-mounted indoor and outdoor walking (campus run) and car-mounted (campus drive, field)",{"dataset":138,"sequence":142,"environment":140},"campus run 2",{"dataset":138,"sequence":144,"environment":140},"campus drive",{"dataset":138,"sequence":146,"environment":140},"field",[148,150,152],{"name":149,"methodId":5,"linkable":78,"proposed":78,"self":78},"Local Map yes, IMU yes",{"name":151,"methodId":5,"linkable":78,"proposed":74,"self":78},"Local Map no, IMU yes",{"name":153,"methodId":5,"linkable":78,"proposed":74,"self":78},"Local Map yes, IMU no",[155,159,162,165,168,170,172,174,176,178,180,182],[156,156,156,157,158,156,158,158,156],0,0.41,-1,[156,156,160,161,158,156,158,158,156],1,0.54,[156,156,163,164,158,156,158,158,156],2,0.1,[156,156,166,167,158,156,158,158,156],3,0.42,[160,156,156,169,158,156,158,158,156],1.9,[160,156,160,171,158,156,158,158,156],2.13,[160,156,163,173,158,156,158,158,156],0.64,[160,156,166,175,158,156,158,158,156],7.5,[163,156,156,177,158,156,158,158,156],8.96,[163,156,160,179,158,156,158,158,156],15.65,[163,156,163,181,158,156,158,158,156],0.3,[163,156,166,183,158,156,158,158,156],0.43,[],[128],[],[],[189],"Own HDL-32 datasets; translation drift per metre (%) computed at manually registered loop checkpoints and averaged over 10 runs with different random seeds; settings vary local map and IMU",{"slug":191,"group":192,"sourceId":5,"sourceLabel":6,"table":193,"selfRows":194,"metrics":195,"seqs":198,"entrants":222,"cells":230,"outcomes":297,"locators":298,"hardware":299,"wordings":300,"notes":301},"mc2slam2019-table-1","mc2slam2019:Table 1","Table 1",11,[196],{"label":197,"unit":133,"statistic":134,"alignment":72},"translation drift per meter (in %)",[199,202,204,206,208,210,212,214,216,218,220],{"dataset":106,"sequence":200,"environment":201},"00 Urban","vehicle, urban, highway and country roads",{"dataset":106,"sequence":203,"environment":201},"01 Highway",{"dataset":106,"sequence":205,"environment":201},"02 Urban+Country",{"dataset":106,"sequence":207,"environment":201},"03 Country",{"dataset":106,"sequence":209,"environment":201},"04 Country",{"dataset":106,"sequence":211,"environment":201},"05 Urban",{"dataset":106,"sequence":213,"environment":201},"06 Urban",{"dataset":106,"sequence":215,"environment":201},"07 Urban",{"dataset":106,"sequence":217,"environment":201},"08 Urban+Country",{"dataset":106,"sequence":219,"environment":201},"09 Urban+Country",{"dataset":106,"sequence":221,"environment":201},"10 Urban+Country",[223,226,228],{"name":224,"methodId":225,"linkable":78,"proposed":74,"self":74},"LOAM [24]","loam2017_auro",{"name":227,"methodId":50,"linkable":74,"proposed":74,"self":74},"IMLS [6]",{"name":229,"methodId":5,"linkable":78,"proposed":78,"self":78},"Ours",[231,233,235,237,239,241,244,247,250,253,256,259,261,263,265,267,269,271,272,273,275,277,278,280,281,282,283,285,287,289,291,293,295],[156,156,156,232,158,156,158,158,156],0.78,[156,156,160,234,158,156,158,158,156],1.43,[156,156,163,236,158,156,158,158,156],0.92,[156,156,166,238,158,156,158,158,156],0.86,[156,156,123,240,158,156,158,158,156],0.71,[156,156,242,243,158,156,158,158,156],5,0.57,[156,156,245,246,158,156,158,158,156],6,0.65,[156,156,248,249,158,156,158,158,156],7,0.63,[156,156,251,252,158,156,158,158,156],8,1.12,[156,156,254,255,158,156,158,158,156],9,0.77,[156,156,257,258,158,156,158,158,156],10,0.79,[160,156,156,260,158,156,158,158,156],0.5,[160,156,160,262,158,156,158,158,156],0.82,[160,156,163,264,158,156,158,158,156],0.53,[160,156,166,266,158,156,158,158,156],0.68,[160,156,123,268,158,156,158,158,156],0.33,[160,156,242,270,158,156,158,158,156],0.32,[160,156,245,268,158,156,158,158,156],[160,156,248,268,158,156,158,158,156],[160,156,251,274,158,156,158,158,156],0.8,[160,156,254,276,158,156,158,158,156],0.55,[160,156,257,264,158,156,158,158,156],[163,156,156,279,158,156,158,158,156],0.51,[163,156,160,258,158,156,158,158,156],[163,156,163,161,158,156,158,158,156],[163,156,166,246,158,156,158,158,156],[163,156,123,284,158,156,158,158,156],0.44,[163,156,242,286,158,156,158,158,156],0.27,[163,156,245,288,158,156,158,158,156],0.31,[163,156,248,290,158,156,158,158,156],0.34,[163,156,251,292,158,156,158,158,156],0.84,[163,156,254,294,158,156,158,158,156],0.46,[163,156,257,296,158,156,158,158,156],0.52,[],[193],[],[],[302],"KITTI odometry training set; translation drift per metre (%) of LOAM [24], IMLS [6] and MC2SLAM; LiDAR only (no IMU in KITTI odometry); scans re-distorted and intrinsically corrected as in IMLS",{"slug":304,"group":305,"sourceId":5,"sourceLabel":6,"table":306,"selfRows":123,"metrics":307,"seqs":317,"entrants":320,"cells":322,"outcomes":331,"locators":332,"hardware":333,"wordings":334,"notes":335},"mc2slam2019-text-sec-5-runtime","mc2slam2019:Text Sec.5 Runtime","Text Sec.5 Runtime",[308,311,313,315],{"label":309,"unit":310,"statistic":134,"alignment":72},"motion compensation per sweep (total)","ms",{"label":312,"unit":310,"statistic":134,"alignment":72},"bias estimation for motion compensation",{"label":314,"unit":310,"statistic":134,"alignment":72},"bias estimation with 1500 query points",{"label":316,"unit":310,"statistic":134,"alignment":72},"pose graph optimization per run (every five sweeps, separate thread)",[318],{"dataset":138,"sequence":139,"environment":319},"head-mounted walking",[321],{"name":7,"methodId":5,"linkable":78,"proposed":78,"self":78},[323,325,327,329],[156,156,156,324,158,156,156,158,156],32,[156,160,156,326,158,156,156,158,160],17.6,[156,163,156,328,158,156,156,158,163],37.8,[156,166,156,330,158,156,156,158,166],108.6,[],[119],[116],[],[336,337,338,339],"Runtime of MC2SLAM components on campus run 1: mean over 1000 frames of campus run 1; 500 query points","Runtime of MC2SLAM components on campus run 1: 500 query points","Runtime of MC2SLAM components on campus run 1: 1500 query points","Runtime of MC2SLAM components on campus run 1: campus run 1",{"slug":341,"group":342,"sourceId":5,"sourceLabel":6,"table":343,"selfRows":160,"metrics":344,"seqs":347,"entrants":351,"cells":353,"outcomes":356,"locators":357,"hardware":358,"wordings":359,"notes":360},"mc2slam2019-text-sec-5","mc2slam2019:Text Sec.5","Text Sec.5",[345],{"label":346,"unit":133,"statistic":134,"alignment":72},"translational error",[348],{"dataset":106,"sequence":349,"environment":350},"11-21 (online test set)","vehicle, urban and country roads",[352],{"name":7,"methodId":5,"linkable":78,"proposed":78,"self":78},[354],[156,156,156,355,158,156,158,158,156],0.69,[],[108],[],[],[361],"KITTI online test set result as listed on the KITTI website (entry MC2SLAM), shared 4th\u002F5th place among laser-based methods at the time of writing",[],1790510660696]