diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..f63f5a9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,194 @@ +木兰宽松许可证,第2版 + +木兰宽松许可证,第2版 + +2020年1月 http://license.coscl.org.cn/MulanPSL2 + +您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: + +0. 定义 + +“软件” 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 + +“贡献” 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 + +“贡献者” 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 + +“法人实体” 是指提交贡献的机构及其“关联实体”。 + +“关联实体” 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是 +指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 + +1. 授予版权许可 + +每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可 +以复制、使用、修改、分发其“贡献”,不论修改与否。 + +2. 授予专利许可 + +每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定 +撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡 +献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软 +件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“ +关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或 +其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权 +行动之日终止。 + +3. 无商标许可 + +“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定 +的声明义务而必须使用除外。 + +4. 分发限制 + +您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“ +本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 + +5. 免责声明与责任限制 + +“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对 +任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于 +何种法律理论,即使其曾被建议有此种损失的可能性。 + +6. 语言 + +“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文 +版为准。 + +条款结束 + +如何将木兰宽松许可证,第2版,应用到您的软件 + +如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: + +1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; + +2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; + +3, 请将如下声明文本放入每个源文件的头部注释中。 + +Copyright (c) [Year] [name of copyright holder] +[Software Name] is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan +PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. + +Mulan Permissive Software License,Version 2 + +Mulan Permissive Software License,Version 2 (Mulan PSL v2) + +January 2020 http://license.coscl.org.cn/MulanPSL2 + +Your reproduction, use, modification and distribution of the Software shall +be subject to Mulan PSL v2 (this License) with the following terms and +conditions: + +0. Definition + +Software means the program and related documents which are licensed under +this License and comprise all Contribution(s). + +Contribution means the copyrightable work licensed by a particular +Contributor under this License. + +Contributor means the Individual or Legal Entity who licenses its +copyrightable work under this License. + +Legal Entity means the entity making a Contribution and all its +Affiliates. + +Affiliates means entities that control, are controlled by, or are under +common control with the acting entity under this License, ‘control’ means +direct or indirect ownership of at least fifty percent (50%) of the voting +power, capital or other securities of controlled or commonly controlled +entity. + +1. Grant of Copyright License + +Subject to the terms and conditions of this License, each Contributor hereby +grants to you a perpetual, worldwide, royalty-free, non-exclusive, +irrevocable copyright license to reproduce, use, modify, or distribute its +Contribution, with modification or not. + +2. Grant of Patent License + +Subject to the terms and conditions of this License, each Contributor hereby +grants to you a perpetual, worldwide, royalty-free, non-exclusive, +irrevocable (except for revocation under this Section) patent license to +make, have made, use, offer for sale, sell, import or otherwise transfer its +Contribution, where such patent license is only limited to the patent claims +owned or controlled by such Contributor now or in future which will be +necessarily infringed by its Contribution alone, or by combination of the +Contribution with the Software to which the Contribution was contributed. +The patent license shall not apply to any modification of the Contribution, +and any other combination which includes the Contribution. If you or your +Affiliates directly or indirectly institute patent litigation (including a +cross claim or counterclaim in a litigation) or other patent enforcement +activities against any individual or entity by alleging that the Software or +any Contribution in it infringes patents, then any patent license granted to +you under this License for the Software shall terminate as of the date such +litigation or activity is filed or taken. + +3. No Trademark License + +No trademark license is granted to use the trade names, trademarks, service +marks, or product names of Contributor, except as required to fulfill notice +requirements in section 4. + +4. Distribution Restriction + +You may distribute the Software in any medium with or without modification, +whether in source or executable forms, provided that you provide recipients +with a copy of this License and retain copyright, patent, trademark and +disclaimer statements in the Software. + +5. Disclaimer of Warranty and Limitation of Liability + +THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY +KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR +COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT +LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING +FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO +MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGES. + +6. Language + +THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION +AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF +DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION +SHALL PREVAIL. + +END OF THE TERMS AND CONDITIONS + +How to Apply the Mulan Permissive Software License,Version 2 +(Mulan PSL v2) to Your Software + +To apply the Mulan PSL v2 to your work, for easy identification by +recipients, you are suggested to complete following three steps: + +i. Fill in the blanks in following statement, including insert your software +name, the year of the first publication of your software, and your name +identified as the copyright owner; + +ii. Create a file named "LICENSE" which contains the whole context of this +License in the first directory of your software package; + +iii. Attach the statement to the appropriate annotated syntax at the +beginning of each source file. + +Copyright (c) [Year] [name of copyright holder] +[Software Name] is licensed under Mulan PSL v2. +You can use this software according to the terms and conditions of the Mulan +PSL v2. +You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 +THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +See the Mulan PSL v2 for more details. diff --git a/PAIR_DIAGNOSTICS.md b/PAIR_DIAGNOSTICS.md index 70e7928..72b96ae 100644 --- a/PAIR_DIAGNOSTICS.md +++ b/PAIR_DIAGNOSTICS.md @@ -33,7 +33,7 @@ norm = 7.9716 cm / 0.547109 deg 查看原结果: ```powershell -$Repo = "D:\Outdoor Ackerman Cart Sensor Adaptation\LiDAR_RTK_Calibration_Rigorous_20260721" +$Repo = "D:\你的代码目录\calibration" powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\view_open3d_result.ps1" -PairIndex 0 ``` diff --git a/README.md b/README.md index 0e9fd24..d6b6d18 100644 --- a/README.md +++ b/README.md @@ -1,399 +1,226 @@ -# 双天线 RTK—3D 激光雷达严谨手眼标定 +# LiDAR–双天线 RTK 手眼标定 -本仓库是当前建议提交和继续维护的正式版本。第二批 38 站高频 RTK 用于主要求解;第一批 38 站稀疏 RTK 只作辅助复核。Open3D GICP 和 small_gicp 分别生成雷达运动 (B),两套独立结果及跨后端共识结果均保留。 - -实际部署只读取 [`results/final_extrinsic_deployment.json`](results/final_extrinsic_deployment.json)。算法原始求解、残差、Bootstrap 和筛选记录保留在其他结果文件中,不应与部署文件混用。 - -## 标定总体流程 - -1. **准备静止站点数据**:每站车辆静止,保存一帧原始雷达点云和该站 RTK;程序只使用雷达传感器坐标系下的 `points_raw`。 -2. **由 RTK 生成车体运动 (A)**:将双天线 RTK 的位置、水平航向、杆臂和 heading offset 转为车体位姿 (T_{WB_i}),再计算 - - \[ - A_{ij}=T_{WB_i}^{-1}T_{WB_j}. - \] -3. **由点云配准生成雷达运动 (B)**:Open3D GICP 和 small_gicp 分别把第 j 站点云配准到第 i 站,得到 - - \[ - B_{ij}=T_{L_iL_j}. - \] -4. **先验证和筛选 B,再求 X**:使用对称留出点、重叠率、留出点 RMSE、海森矩阵、正反向一致性、多初值稳定性、旋转共轭不变量和闭环误差检查 B。这个阶段不读取待求外参 X,也不使用 AX 残差筛选 B。 -5. **建立跨后端共识 B**:只保留 Open3D 与 small_gicp 对同一运动对的 B 相差不超过 `0.05 m / 0.50°` 的边;最终使用 Open3D B,small_gicp 作为独立一致性门控。 -6. **求解手眼外参 X**:固定 A 和通过筛选的 B 后,求解 - - \[ - A_{ij}X=XB_{ij},\qquad X=T_{body\leftarrow lidar}. - \] - - 使用 Huber 鲁棒最小二乘、12 个初值、地面平面约束和 100 次 Bootstrap。 -7. **结果复核**:第二批共识对用于主要求解和整体残差统计;第一批重新独立生成 B,只作为稀疏 RTK 辅助复核;3D 可视化分别比较模式 3 的 GICP B 与模式 4 的 (X^{-1}AX)。 -8. **形成部署结果**:第二批跨后端共识结果给出完整的 `[x,y,z,roll,pitch,yaw]`;部署 JSON 直接采用该算法结果。。 - -### 验证逻辑 - -顺序固定为: +本仓库提供一套可从原始 Medulla 记录复现的静态站点标定流程,求解三维激光雷达到后轮轴中心车体系的外参 ```text -先生成 B - -> 用不依赖 X 的点云与几何指标筛 B - -> 用另一个 GICP 后端复核同一 B - -> 固定共识 B - -> 最后才求 X - -> AX 残差只用于结果评价,不反过来选择 B +X = T_body_lidar ``` -代码证据: - -- [`code/refine_pairs.py`](code/refine_pairs.py) 不读取外参文件,只使用留出点、正反向和旋转共轭不变量等指标; -- [`code/cross_backend_filter.py`](code/cross_backend_filter.py) 只比较两个后端的 B,不读取 X; -- [`code/rigorous_calibration.py`](code/rigorous_calibration.py) 在 B 集合固定后才执行 `calibrate` 求 X; -- 第一批辅助复核的 B 也重新独立生成,且不使用 AX 残差筛选。 - -但这些检查仍不能把 B 变成绝对真值:重复结构、动态物体或错误局部最优仍可能让两个后端同时出错,所以必须结合模式 3 点云质量、留出集指标和多运动对整体统计判断。 - -## 最终部署外参 - -坐标变换定义: - -\[ -X=T_{body\leftarrow lidar} -\] - -即将原始雷达点从雷达坐标系变换到以后轮轴中心为原点、X 前/Y 左/Z 上的车体坐标系。 - -部署值: - -- 平移 `[x,y,z] = [1.297760, -0.000067, 0.720498] m` -- RPY `[roll,pitch,yaw] = [-0.785151, 1.202661, -0.835510] deg` -- 唯一部署文件:[`results/final_extrinsic_deployment.json`](results/final_extrinsic_deployment.json) - -该值来自第二批 39 对跨后端共识、完整地面平面约束和 Bootstrap 稳定性检查。 - -算法在完整地面平面模型下的原始结果为: - -- 平移 `[1.297760, -0.000067, 0.720498] m` -- RPY `[-0.785151, 1.202661, -0.835510] deg` -- 文件:[`results/final_extrinsic_recommended.json`](results/final_extrinsic_recommended.json) - -`final_extrinsic_recommended.json` 保留完整求解、残差和 Bootstrap 记录,用于复现和审计;`final_extrinsic_deployment.json` 是唯一部署入口。 - -共识结果统计: - -- 第二批 39 对 AX RMS:`0.07985 m / 0.96118°` -- 第一批 22 对辅助复核:`0.06067 m / 1.00298°` -- 结果摘要:[`results/final_summary.json`](results/final_summary.json) - -两套后端分别求得: - -| 后端 | 平移 `[x,y,z]` m | RPY deg | 第二批 AX RMS | -|---|---|---|---| -| Open3D GICP | `[1.297883,-0.003100,0.721789]` | `[-0.757207,1.146042,-0.879781]` | `0.1002 m / 1.0115°` | -| small_gicp | `[1.299630,-0.003565,0.721886]` | `[-0.787156,1.141456,-0.935757]` | `0.1187 m / 1.1351°` | - -两后端单独求出的 X 相差 1.81 mm、0.063°。共识求解的 100 次 Bootstrap 标准差 `[x,y,z,roll,pitch,yaw]` 为: +约定 `T_A_B` 将 B 系坐标变换到 A 系。对任意站点 i、j: ```text -[0.00322 m, 0.00333 m, 0.00169 m, 0.0980°, 0.0746°, 0.1189°] +A_ij = T_W_Bi^-1 T_W_Bj # RTK 给出的车体相对运动 +B_ij = T_Li_Lj # GICP 给出的雷达相对运动 +A_ij X = X B_ij ``` -这里的 Z Bootstrap 只描述当前地面模型条件下的内部稳定性,不代表机械高度的绝对精度。 +当前部署建议仍采用 [results/01_previous_two_batches/final_extrinsic_deployment.json](results/01_previous_two_batches/final_extrinsic_deployment.json)。data4 是一次独立重算,结果与部署值相差约 `1.592 cm / 0.234°`,但自身 AX 残差更高,因此只作为候选和稳定性证据,不自动替换部署值。 -重要限制:旋转 RMS 仍约 1°,所以这不是厘米级绝对精度认证。远距离点云仍可能看到角度错层;Bootstrap 也不包含 RTK 参考点、航向偏置或杆臂定义错误等系统误差。 -### `code/` 文件职责 +## 标定总流程 -`code/` 中的 Python 脚本按“生成 B → 独立筛选 B → 求解 X → 汇总/诊断”的顺序组织。通常应通过 `run/` 下的 PowerShell 脚本调度,而不是手工跳过中间筛选步骤。 - -| 文件 | 职责 | 主要输入 → 主要输出 | -|---|---|---| -| [`rigorous_calibration.py`](code/rigorous_calibration.py) | **主求解器**,实现坐标变换、Open3D GICP/small_gicp 配准、质量计算和手眼优化。`ground` 从 `points_raw` 做 RANSAC 地面平面;`pairs` 将 RTK 车体轨迹构造成 A、将点云配准构造成 B,并输出海森矩阵、留出点、正反向和多初值质量报告;`calibrate` 用 Huber 鲁棒最小二乘、地面约束、多初值和 Bootstrap 求 `T_body_lidar`;`validate` 只计算给定 X 在独立 B 集上的 AX 残差。 | prepared 的 `frames_all`、车体位姿 CSV、B/地面文件 → `.npz` B 集、质量 JSON/CSV、外参 JSON、辅助复核 JSON。 | -| [`refine_pairs.py`](code/refine_pairs.py) | **第二级 B 精筛器**。按留出点重叠率/RMSE、旋转共轭不变量、正反向一致性剔除差的 B;不读取 X,也不用 AX 残差选 B。 | 初始 B `.npz` + 配准质量 JSON → `*_refined.npz` + `*.refinement.json` 审计记录。 | -| [`cross_backend_filter.py`](code/cross_backend_filter.py) | **跨后端一致性门控**。只保留 Open3D 与 small_gicp 对同一运动对的 B 差异不超过默认 `0.05 m / 0.50°` 的边;最终 B 本体采用 Open3D,small_gicp 仅作为独立门控。 | 两套 refined B `.npz` → `consensus/B_batch*_consensus.npz` + `*.consensus.json`。 | -| [`finalize_consensus.py`](code/finalize_consensus.py) | **发布共识解**。读取共识 B 求得的外参、第一批辅助复核和两单后端外参,写出带选择依据的 `final_extrinsic_recommended.json` 与 `final_summary.json`。 | 共识外参/复核 JSON、两后端外参 JSON → 推荐外参和最终摘要 JSON。 | -| [`summarize_results.py`](code/summarize_results.py) | **单后端阶段汇总器**。比较 Open3D 与 small_gicp 的外参差异、第二批拟合残差和第一批辅助复核,生成 `comparison_summary.json`;完整流程随后由 `finalize_consensus.py` 以共识解覆盖推荐结果。 | 两单后端外参、质量、辅助复核 JSON → 对比摘要 JSON 与阶段性推荐 JSON。 | -| [`scan_extrinsic_sensitivity.py`](code/scan_extrinsic_sensitivity.py) | **局部灵敏度诊断器**。对 X 在车体系左乘小的 roll/pitch/yaw 修正,比较某一对与全部 B 对的残差、改善/变差数量、地面指标和 Z 可观性。只生成扫描 JSON/CSV,**绝不改写 X**。 | B `.npz`、外参 JSON、可选地面 CSV → `diagnostics/*_scan.json/.csv`。 | -| [`visualize_pair_3d.py`](code/visualize_pair_3d.py) | **交互式 3D 点云核查器**。蓝色为目标站 i、橙色为源站 j;按键 1/2/3/4 分别查看原始、RTK 初值 A、GICP B、外参预测 `X^-1 A X`,并打印 `B^-1(X^-1AX)` 的 cm/deg 增量。可选按键 5 显示临时 RPY 修正,修正不写入文件。 | 站点点云、B `.npz`、外参 JSON → Open3D 交互窗口与终端增量。 | - -## 坐标与公式 - -\[ -A_{ij}=T_{WB_i}^{-1}T_{WB_j},\qquad -B_{ij}=T_{L_iL_j},\qquad -A_{ij}X=XB_{ij} -\] - -`B_ij` 把第 j 站雷达点变换到第 i 站雷达坐标系。程序只读取 `points_raw`,禁止使用已经变到车体坐标系的点。 - -RTK 轨迹使用 `body_poses_rear_gga_raw_rear_to_front.csv`,对应后天线 GGA 位置和双天线后到前方向。 - -地面约束采用完整平面变换: - -\[ -n_B=R_Xn_L,\qquad r_h=d_L-n_B^Tt_X-h_{body} -\] - -不再使用旧近似式 `d_L-(t_z+h_body)`。 - -## 详细求解流程 - -1. 第二批高频 RTK 生成 A;第一批稀疏 RTK 不参与主要求解。 -2. 不使用手量外参作初值:生成 B 时 (X_0=I),所以 (B_0=A);求 X 也从单位变换和随机初值开始。 -3. 两后端均采用三级粗到细:体素 0.30/0.15/0.08 m,对应距离 1.20/0.50/0.25 m。 -4. 逐对检查对称留出点、海森矩阵、正反向一致性、多初值稳定性和 B 三角闭环。 -5. 使用重叠率、留出点 RMSE 和旋转共轭不变量筛选 B;不使用 AX 残差筛选。 -6. 两后端分别求 X;随后使用跨后端 B 一致性得到最终 39 对共识集合。 -7. 使用 Huber 鲁棒最小二乘、12 个随机初值、完整地面约束和 100 次 Bootstrap 求算法 X。 -8. 第一批重新独立生成 B,仅作辅助复核,不参与第二批求解。 -9. 使用共识算法完整解形成精简部署 JSON,不覆盖算法原始结果。 - -## 目录 - -```text -code/ - rigorous_calibration.py - refine_pairs.py - cross_backend_filter.py - summarize_results.py - finalize_consensus.py - scan_extrinsic_sensitivity.py - visualize_pair_3d.py -run/ - run_all.ps1 - run_consensus_finish.ps1 - run_sensitivity_scan.ps1 - view_open3d_result.ps1 - view_small_gicp_result.ps1 -tools/ - frontlidar_dlog_export.py # 从单个原始 dlog 导出 LiDAR NPZ 与 RTK sidecar - prepare_station_dataset.py # 从逐站导出结果构建标定所需 prepared 数据集 -results/ - common/ - open3d_gicp/ - small_gicp/ - consensus/ - diagnostics/ - final_extrinsic_deployment.json # 实际部署只读取这个文件 - final_extrinsic_recommended.json # 算法原始结果及详细诊断 - final_summary.json +```mermaid +flowchart LR + raw["原始站点 dlog / RTK、IMU rscap"] --> export["分别解析并统一到时间轴"] + export --> assoc["按每个 LiDAR 帧关联 RTK/IMU,导出 NPZ"] + assoc --> prep["每站选一帧,构建 RTK 车体位姿 A"] + prep --> b1["small_gicp 求 B"] + prep --> b2["Open3D GICP 求 B"] + b1 --> gate["与 X 无关的质量筛选及双后端一致性"] + b2 --> gate + gate --> solve["AX=XB + 地面约束求 X"] + solve --> check["残差、bootstrap、条件数、跨批复核和 3D 可视化"] ``` -## 从原始数据到最终外参 +流程有两个原始数据入口: -下面是从云盘中的**原始 dlog**到最终 LiDAR—车体外参的完整流程。第 2、3 步由本仓库的 tools/ 脚本完成;第 4 步及之后由 run/ 调度。不要把云盘中的原始数据直接传给 run_all.ps1。 +- 旧式数据:LiDAR 和 `GPS-POST-Z` 位于每个站点 dlog 中,使用 `export_legacy_stations.ps1`。 +- 新式多传感器数据:LiDAR 位于逐站 dlog,RTK 与 IMU 是独立 `.rscap`,使用 `export_multisensor_stations.ps1`。处理顺序是统一时间轴、分别解析、按 LiDAR 帧关联、导出 NPZ。 -```text -原始静止站点 dlog(两批) - → 逐站导出 LiDAR 原始点云 + RTK 旁路表(NPZ) - → 逐站质量筛选、选取静止帧、重建 RTK 车体位姿(prepared) - → Open3D / small_gicp 分别求 B - → X 无关的 B 精筛与跨后端共识 - → AX=XB + 地面平面约束求 X - → 第一批辅助复核、3D 点云核查、确认部署 JSON -``` +IMU 会在新式数据中原样解析并随 LiDAR 帧关联保存,但当前 LiDAR–RTK 外参求解不使用 IMU,也不做运动畸变校正,因为每一站采集点云时车辆静止。IMU 外参应使用单独的激励数据和专用标定流程求解。 -### 1. 整理原始数据与标定元数据 +## 三批数据的角色 -每一个静止站点目录必须完整保留 LiDAR DObject 记录、对应 `.dorec` 文件和 RTK 日志。dlog 导出器要求站点目录至少具有: +| 数据 | 原始格式 | 站点 | RTK 情况 | 在本仓库中的角色 | +|---|---|---:|---|---| +| 第一批 | 逐站 dlog,内嵌 GPS-POST-Z | 38 | 约 10 秒一条,部分站仅 1–11 个有效样本 | 辅助复核,不承担主要求解 | +| 第二批 | 逐站 dlog,内嵌 GPS-POST-Z | 38 | 每站约 125–412 个有效样本,航向稳定 | 现部署外参的主要求解数据 | +| data4 | 逐站 LiDAR dlog + 独立 RTK/IMU rscap | 34 | 11,678 个 LiDAR 帧均成功关联 fixed RTK、heading 和 IMU | 独立重算与跨批比较 | -```text -/ - dobject/ # DObject 索引日志 - dobject_recording/ # 与索引对应的 .dorec 二进制记录 - GPS-POST-Z/ # RTK 文本记录;建议同时保留完整原始 N4 串口流 -``` +原始数据体积较大,不在 Git 仓库中。复现者应从云盘取得第一批、第二批或 data4 的原始目录,并在命令行传入路径。 -两批数据要分开存放:第二批高频 RTK 用于主要求解,第一批仅用于辅助复核。与数据一同归档的标定元数据必须包括:LiDAR DObject 名称、时区、RTK 天线参考点、双天线基线方向、heading offset、天线到后轮轴中心的杆臂、车体系定义,以及 LiDAR/RTK/IMU 的时间基准。 +## 环境 -对于后续新录数据,RTK 原始记录应保留 `gnss_week`、`gnss_tow_ms`、GGA UTC、`pitch_deg`、基线长度、解算状态/类型、标准差、HDOP 和完整原文。PC 接收时间只能作为延迟诊断,不能替代 GNSS 测量时间。 +- Windows PowerShell 5.1 或 PowerShell 7 +- Python 3.10+ +- `pip install -r requirements.txt` +- `small_gicp` 后端需要可导入 `small_gicp`;Open3D 后端需要 `open3d` -### 2. 将每个原始站点 dlog 导出为 NPZ +所有脚本从自身位置推导仓库根目录。数据和输出路径均由参数传入,不依赖开发者电脑上的固定路径。 -本仓库的 [tools/frontlidar_dlog_export.py](tools/frontlidar_dlog_export.py) 从每个静止站点的原始 dlog 导出 LiDAR 原始点云与 RTK sidecar。对每个站点分别执行;必须开启 RTK sidecar 与审计报告: +## 从原始数据开始复现 + +以下路径只表示格式,请替换为自己的目录。 + +### A. 第一批、第二批旧式 dlog ```powershell -$Repo = "D:\Outdoor Ackerman Cart Sensor Adaptation\LiDAR_RTK_Calibration_Rigorous_20260721" -$Exporter = "$Repo\tools\frontlidar_dlog_export.py" -$RawStation = "<某一个原始静止站点 dlog 目录>" -$StationOut = "<工作目录>\export\001" +$Repo = "D:\你的代码目录\calibration" -python $Exporter ` - --dlog "$RawStation" ` - --out "$StationOut" ` - --object frontlidar ` - --format npz ` - --timezone +08:00 ` - --rtk-sidecars ` - --write-reports +powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\export_legacy_stations.ps1" ` + -DataRoot "D:\你的数据目录\batch2_raw" ` + -OutputRoot "D:\你的输出目录\batch2_export" + +powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\prepare_legacy_dataset.ps1" ` + -ExportRoot "D:\你的输出目录\batch2_export" ` + -Output "D:\你的输出目录\batch2_prepared" ` + -HeadingOffsetDeg 21.226 ` + -AntennaLever -0.320,-0.365,0.620 ` + -ExpectedStations 38 ` + -HeadingStdLimitDeg 0.5 ``` -导出后的站点目录应包含: +第一批采用同一导出方式,但应在导出命令显式添加 `-RtkMaxDtMs 15000`;因其 RTK 稀疏,准备阶段也不建议沿用 `0.5°` 的严格站内航向离散度阈值。上述 `21.226°` 和杆臂 `[-0.320,-0.365,0.620] m` 是本项目已有两批数据采用的配置,不是通用常数;换车或改变天线安装后必须重新确认。 -```text -/ - frames/ # 多帧 LiDAR NPZ;每帧保留 points_raw - rtk/ # gps_post_z.csv/jsonl/npz 等 RTK 旁路表 - reports/manifest.csv # 每帧导出状态、时间及 RTK 匹配信息 - reports/validation_report.json - reports/metadata.json -``` - -先检查每个站点的 `validation_report.json`、`manifest.csv` 和 `rtk/gps_post_z.csv`:LiDAR payload 必须可读;候选帧必须存在;RTK 位置/航向有效;并记录 LiDAR—RTK 时间差。若新插件已开始输出 GNSS 周/周内时间与 pitch,导出器也必须同步扩展并写出这些字段;旧导出器只保留旧插件字段时,不能伪称已完成严格时间同步。 - -### 3. 从导出 NPZ 构建 prepared 静止站点数据 - -对每个批次,将所有站点导出目录汇总后执行以下预处理逻辑,生成供本仓库使用的 `prepared` 目录: - -1. 每个站点只选择一帧**车辆已静止**且 RTK 质量合格的 LiDAR 帧;通常取有效候选帧中的中间帧,避免启动/停车边缘。 -2. 仅保留 `position_valid=true`、`heading_valid=true`、Fix 为 4 或 5,且航向标准差满足项目门限的 RTK 样本;记录每站的样本数、时间跨度、航向圆标准差与被剔除原因。 -3. 使用 GNSS 测量时间把位置、heading 和 pitch 配成同一时刻;将经纬高转换到同一 ENU 世界系;根据天线杆臂和双天线方向求后轮轴中心车体位姿 `T_WB`。双天线可提供 heading/pitch,但不能提供 roll;roll 在后续 LiDAR—IMU 流程中由 IMU 补充。 -4. 将选出的 LiDAR 帧原样复制到 `frames_all/`。标定程序从每帧的 `points_raw` 转为 LiDAR 传感器系 XYZ,不得使用已经变换到车体系的点。 -5. 输出时间戳车体位姿 CSV。当前主求解器要求列为: - -```text -time,x,y,z,qx,qy,qz,qw -``` - -最终目录必须类似: - -```text -/ - frames_all/ - station_01.npz - station_02.npz - ... - body_poses_rear_gga_raw_rear_to_front.csv - station_summary.csv # 推荐保留:站点质量和选择原因 - manifest.json # 推荐保留:参考点、杆臂、heading/pitch 定义与筛选配置 -``` - -本仓库的 [tools/prepare_station_dataset.py](tools/prepare_station_dataset.py) 完成上述固定站点筛选、点云复制和车体位姿重建。它要求每个站点均已由上一步使用 --rtk-sidecars --write-reports 导出。下面的参数仅用于复现本仓库历史结果:lat/lon/h 被假定为后天线相位中心,raw_heading_deg 被假定为后天线指向前天线;车体系为后轮轴中心、X 前 Y 左 Z 上。 - -~~~powershell -$Repo = "D:\Outdoor Ackerman Cart Sensor Adaptation\LiDAR_RTK_Calibration_Rigorous_20260721" -$Prepare = "$Repo\tools\prepare_station_dataset.py" - -# 第二批:主要求解数据。ExportBatch2 下为 38 个逐站导出目录。 -python $Prepare --export-root "" --output "" --expected-stations 38 --heading-std-limit-deg 0.5 --heading-offset-deg 21.226 --antenna-lever -0.320 -0.365 0.620 --pose-name rear_gga_raw_rear_to_front - -# 第一批:辅助复核数据。若航向质量较低,不应设置过严的 heading 标准差阈值。 -python $Prepare --export-root "" --output "" --expected-stations 38 --heading-offset-deg 21.226 --antenna-lever -0.320 -0.365 0.620 --pose-name rear_gga_raw_rear_to_front -~~~ - -命令完成后检查 /station_summary.csv:每行均应有有效 RTK 样本,且没有超出设定的航向离散度。manifest.json 记录实际采用的杆臂、航向偏移、ENU 原点和输入站点;它应与原始数据一同归档。 - -不要把上述 21.226° 和 [-0.320,-0.365,0.620] m 当成通用常数:它们是本车、后天线、后天线到前天线航向定义、以及后轮轴中心车体原点的历史配置。换车、换参考天线、改变车体原点或改变 rawHeading 定义后,必须先复核并替换这些参数,再重建 A。 - -当前导出器可复现本仓库历史日志,但历史 RTK 插件只记录工控机接收时间,并未保存 GNSS 周/周内时间、双天线 pitch、质量标准差及完整原始串口流。因此它不能把旧数据宣称为严格 GNSS 时间同步。插件升级后,应先扩展导出器以保存新字段,再以 GNSS 测量时间重建位置/航向(及可用的 pitch)轨迹。 -### 4. 安装标定依赖并运行第一阶段 +### B. data4 式独立 RTK/IMU rscap ```powershell -$Repo = "D:\Outdoor Ackerman Cart Sensor Adaptation\LiDAR_RTK_Calibration_Rigorous_20260721" -python -m pip install -r "$Repo\requirements.txt" -python -c "import numpy, scipy, open3d, small_gicp; print('dependencies OK')" +powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\export_multisensor_stations.ps1" ` + -DataRoot "D:\你的数据目录\data4_raw" ` + -RtkCapture "D:\你的数据目录\captures\rtk.rscap" ` + -ImuCapture "D:\你的数据目录\captures\imu.rscap" ` + -OutputRoot "D:\你的输出目录\data4_export" +powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\prepare_multisensor_dataset.ps1" ` + -CombinedRoot "D:\你的输出目录\data4_export\combined" ` + -Output "D:\你的输出目录\data4_prepared" ` + -HeadingOffsetDeg 21.226 ` + -AntennaLever -0.320,-0.365,0.620 ` + -ExpectedStations 34 +``` + +### C. 运行标定 + +单批数据同时运行 small_gicp、Open3D GICP 和跨后端共识: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_single_dataset.ps1" ` + -Prepared "D:\你的输出目录\data4_prepared" ` + -OutputRoot "D:\你的输出目录\data4_calibration" ` + -BodyHeight 0.2335 +``` + +复现本仓库“第二批求解、第一批辅助复核”的历史流程: + +```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_all.ps1" ` - -Batch1Prepared "<第一批 prepared 目录>" ` - -Batch2Prepared "<第二批 prepared 目录>" + -Batch1Prepared "D:\你的输出目录\batch1_prepared" ` + -Batch2Prepared "D:\你的输出目录\batch2_prepared" ` + -OutputRoot "D:\你的输出目录\two_batch_calibration" ``` -`run_all.ps1` 完成:第二批地面拟合;Open3D 与 small_gicp 两套 B 生成和精筛;两套单后端 X 求解;第一批独立 B 与辅助复核;以及单后端对比摘要。第一阶段至少应生成: +`BodyHeight=0.2335 m` 是后轮轴中心离地高度,用于把雷达地面平面约束转换到车体原点;它不是雷达离地高度。换轮胎、胎压或车体载荷后应重新测量并评估不确定度。 + +## 如何判断结果 + +不能仅凭 `AX=XB` 残差或一张叠图宣称外参正确。至少同时检查: + +1. B 的配准质量:收敛、有效对应点数/比例、RMSE、Hessian 信息矩阵特征值与条件数、small_gicp 与 Open3D 的相对运动一致性。 +2. X 的可观性:加权雅可比条件数越接近 1 越均衡;极大值说明存在弱方向,但没有脱离尺度和数据分布的单一硬阈值。本次 data4 为 `7.44`,不是病态。 +3. AX 残差分布:看 RMS、median、P90/P95、max 和逐对异常,而不是只看均值。 +4. 重采样稳定性:bootstrap 的六自由度标准差及置信区间。 +5. 跨批检查:同一 X 在独立批次的残差,以及两批独立求出的 X 之 SE(3) 差。 +6. 3D 可视化:模式 3 的 B 与模式 4 的 `X^-1 A X` 是否都使相同墙面、杆件和地面重合。 + +当前没有把“增量小于某个值”当成绝对真值判据。工程筛查可先关注多数优质运动对是否约在厘米级到数厘米、亚度级;但阈值必须结合场景尺度、点云分辨率、RTK 质量和车辆运动幅度制定。模式 3 已错位时优先检查 B;模式 3 正常而模式 4 系统性错位时,再检查 A、坐标约定和 X。 + +## 结果摘要 + +| 结果 | 平移 xyz (m) | roll/pitch/yaw (deg) | AX 平移/旋转 RMS | 结论 | +|---|---|---|---|---| +| 部署值(第二批求解) | `[1.297760,-0.000067,0.720498]` | `[-0.785151,1.202661,-0.835510]` | `0.07985 m / 0.96118°`,39 对 | 当前建议部署 | +| data4 独立候选 | `[1.300376,-0.001707,0.704877]` | `[-0.791892,1.393823,-0.970743]` | `0.11762 m / 1.24257°`,26 对 | 独立候选,不替换部署值 | + +data4 候选相对部署值变化 `1.592 cm / 0.234°`,其中 z 低 `1.562 cm`。旧部署值作用于 data4 的残差约 `0.11953 m / 1.24836°`;data4 候选作用于历史第二批的残差约 `0.07931 m / 0.98926°`。两个 X 的跨批表现接近,当前数据不足以证明 data4 的较低 z 更接近真值。 + +## 仓库目录 ```text -results/common/ground_planes_batch2.csv -results/open3d_gicp/B_batch2_refined.npz -results/small_gicp/B_batch2_refined.npz -results/open3d_gicp/extrinsic_batch2_refined.json -results/small_gicp/extrinsic_batch2_refined.json -results/comparison_summary.json +code/ 标定、配准筛选、共识、比较和可视化核心程序 +tools/ 原始 dlog/rscap 解析、时间关联、NPZ 导出和数据准备 +run/ 不含本机固定路径的 PowerShell 入口 +results/ 历史两批、data4 与跨批比较三个结果目录 ``` -### 5. 构造跨后端共识并生成算法结果 +完整复现流程和所有主要文件职责均在本 README;`run/README.md`、`tools/README.md` 和 [results/README.md](results/README.md) 只是目录内快速索引。 -第一阶段成功后执行: +## 代码、工具和运行入口职责 -```powershell -powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_consensus_finish.ps1" -``` +根 README 是本仓库唯一的完整复现说明。`run/README.md`、`tools/README.md` 和 `results/README.md` 只作为进入对应目录时的快速索引,不承载另一套流程。 -该步骤以 `0.05 m / 0.50°` 门限对同一运动对的 Open3D 与 small_gicp B 做一致性门控,用共识 B 重求第二批外参,并将第一批只用于辅助复核。主要输出为: +### code:标定核心 + +| 文件 | 职责 | +|---|---| +| `rigorous_calibration.py` | 核心 CLI。`ground` 拟合每站地面;`pairs` 用 small_gicp 或 Open3D GICP 求 B 和质量指标;`calibrate` 联合 AX=XB 与地面约束求 X;`validate` 计算指定 X 的逐对残差。 | +| `refine_pairs.py` | 根据收敛、RMSE、对应关系、Hessian/信息矩阵和运动覆盖筛选 B;不读取 X,避免循环挑选。 | +| `cross_backend_filter.py` | 对齐 Open3D 与 small_gicp 的同一站点对,只保留两个后端相互一致的 B。 | +| `finalize_consensus.py` | 汇总历史两批的 consensus B、外参和第一批辅助复核。 | +| `summarize_results.py` | 汇总两个后端的外参、B 质量和跨批检查,生成推荐结果。 | +| `compare_extrinsics.py` | 在 SE(3) 上计算两套外参的严格相对平移和旋转差。 | +| `visualize_pair_3d.py` | 交互显示原始点云、RTK A、GICP B、`X^-1AX`,并打印 `B^-1(X^-1AX)` 数值增量。 | +| `scan_extrinsic_sensitivity.py` | 对 X 左乘小角度 roll/pitch/yaw 扰动,检查指定运动对的局部敏感方向。 | + +### tools:原始数据到 prepared + +| 文件 | 职责 | +|---|---| +| `frontlidar_dlog_export.py` | 从 Medulla dlog 导出传感器坐标系 `points_raw`;旧格式可同时匹配站内 GPS-POST-Z。 | +| `prepare_station_dataset.py` | 从旧式逐站导出中每站选择一帧,计算 yaw-only RTK 后轮轴位姿并生成 prepared。 | +| `build_multisensor_npz.py` | 将独立 LiDAR、RTK、IMU 统一到 LiDAR 帧索引并生成 combined NPZ。 | +| `prepare_multisensor_station_dataset.py` | 从 combined NPZ 选择每站静止帧,生成与旧流程相同的 prepared 接口。 | +| `rscap_v2/capture_format_v2.py` | 读取 rscap v2 文件头、原始记录块和文件尾。 | +| `rscap_v2/audit_capture_v2.py` | 审计 capture 完整性、时间范围和记录统计。 | +| `rscap_v2/parse_rtk_imu_v2.py` | 分别解析 RTK 与 IMU capture,输出 JSONL。 | +| `rscap_v2/pipeline_common*.py` | rscap 解析、时间处理和采集格式兼容的共用逻辑。 | + +### run:推荐 PowerShell 入口 + +| 文件 | 职责 | +|---|---| +| `export_legacy_stations.ps1` | 批量导出 LiDAR 与 RTK 同在逐站 dlog 中的旧格式。 | +| `export_multisensor_stations.ps1` | 解析独立 RTK/IMU,导出逐站 LiDAR,并按 LiDAR 帧建立关联。 | +| `prepare_legacy_dataset.ps1` | 旧式导出结果转换为 prepared。 | +| `prepare_multisensor_dataset.ps1` | combined 多传感器结果转换为 prepared。 | +| `run_single_dataset.ps1` | 单批数据同时完成两个 GICP 后端、B 筛选、consensus 和 X 求解。 | +| `run_all.ps1` | 历史流程:第二批求解,第一批稀疏 RTK 数据作辅助复核。 | +| `run_consensus_finish.ps1` | 在已有两个后端 B 的基础上重新生成 consensus 和汇总结果。 | +| `run_sensitivity_scan.ps1` | 对历史运动对执行外参角度灵敏度扫描。 | +| `view_result.ps1` | 传入匹配的 frames、B 和 X,运行交互式 3D 可视化。 | + +### 标定核心文件的数据关系 ```text -results/consensus/B_batch2_consensus.npz -results/consensus/extrinsic_batch2_consensus.json -results/consensus/batch1_auxiliary_check.json -results/final_extrinsic_recommended.json -results/final_summary.json +原始 dlog/rscap + -> tools 导出和时间关联 + -> prepared/{frames_all, body_poses_*.csv} + -> rigorous_calibration.py pairs 生成 A、B + -> refine_pairs.py 做与 X 无关的 B 筛选 + -> cross_backend_filter.py 生成 consensus B + -> rigorous_calibration.py calibrate 联合 AX=XB 与地面约束求 X + -> validate / visualize_pair_3d.py 做数值和三维检查 ``` -### 6. 验证、可视化与部署确认 -先检查 `results/final_summary.json`:当前历史数据的参考值是第二批共识 39 对、AX RMS 约 `0.07985 m / 0.96118°`。若明显偏离,应从第 2、3 步检查站点选择、RTK 时间/参考点/杆臂/heading 定义,而不是直接手调 X。 +## 重要限制 -再使用 3D 可视化检查:模式 3 为点云配准 B,模式 4 为外参预测 `X^-1AX`;终端打印 `B^-1(X^-1AX)` 的平移与旋转增量。只有 B 质量、全体运动对统计、地面约束和可视化均合理时,才可确认外参。 +- RTK 车体姿态当前是双天线 heading 构造的 yaw-only 轨迹;没有用 RTK pitch/roll 构造 A。 +- 新式解析器保存 IMU 与 RTK pitch 等原始字段,但当前手眼方程未融合 IMU。 +- 静止站点法不估计 LiDAR–RTK 时间偏移;时间戳关联必须在导出阶段通过审计。 +- 地面约束负责 roll、pitch 和 z 的补充可观性,不会独立求出另一套六自由度外参。 +- 仓库归档的是结果和轻量 B 文件,不包含云盘中的原始点云数据。 -`final_extrinsic_recommended.json` 是完整算法审计结果。`run_consensus_finish.ps1` 不会自动覆盖 `results/final_extrinsic_deployment.json`;部署 JSON 必须在人工确认坐标定义和高度约束后明确写入。 -## prepared 阶段的快速重跑 +## 专题说明 -```powershell -$Repo = "D:\Outdoor Ackerman Cart Sensor Adaptation\LiDAR_RTK_Calibration_Rigorous_20260721" -python -m pip install -r "$Repo\requirements.txt" -powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_all.ps1" -powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_consensus_finish.ps1" -``` - -如果 prepared 数据移动了: - -```powershell -powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_all.ps1" -Batch1Prepared "你的第一批prepared目录" -Batch2Prepared "你的第二批prepared目录" -powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_consensus_finish.ps1" -``` - -重跑 `run_consensus_finish.ps1` 会重新生成算法原始结果,但不会自动生成或覆盖已经人工确认的 `final_extrinsic_deployment.json`。 - -## 3D 可视化 - -Open3D 单后端结果: - -```powershell -powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\view_open3d_result.ps1" -PairIndex 0 -``` - -small_gicp 单后端结果: - -```powershell -powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\view_small_gicp_result.ps1" -PairIndex 0 -``` - -蓝色是目标站 i,橙色是源站 j。按键:`1` 原始;`2` RTK 初始 A;`3` GICP B;`4` 外参预测的 (X^{-1}AX);指定左乘 RPY 试验量后,`5` 为试验结果。 - -程序打印的差值为: - -\[ -B^{-1}(X^{-1}AX) -\] - -其 xyz/RPY 分量位于站点 j 的雷达局部坐标系,不是屏幕坐标。模式 3 好而模式 4 差,说明 A/X 一致性不足;模式 3 本身差,说明该 B 不能用于判断外参。 - -共识运动对可直接指定部署外参: - -```powershell -python "$Repo\code\visualize_pair_3d.py" --frames "C:\Users\admin\Documents\Codex\2026-07-15\wo\outputs\calibration_data1_20260720\prepared\frames_all" --pairs "$Repo\results\consensus\B_batch2_consensus.npz" --extrinsic "$Repo\results\final_extrinsic_deployment.json" --pair-index 0 -``` - -局部灵敏度扫描和判断规则见 [`PAIR_DIAGNOSTICS.md`](PAIR_DIAGNOSTICS.md)。 - -## 关键质量文件 - -- [`results/open3d_gicp/B_batch2_quality.json`](results/open3d_gicp/B_batch2_quality.json):海森矩阵、留出点、正反向和多初值信息; -- [`results/open3d_gicp/B_batch2_refined.refinement.json`](results/open3d_gicp/B_batch2_refined.refinement.json):二级筛选原因; -- [`results/consensus/B_batch2_consensus.consensus.json`](results/consensus/B_batch2_consensus.consensus.json):跨后端一致性筛选; -- [`results/consensus/batch1_auxiliary_check.json`](results/consensus/batch1_auxiliary_check.json):第一批辅助复核; -- [`results/final_summary.json`](results/final_summary.json):算法结果摘要; -- [`results/diagnostics/`](results/diagnostics/):局部修正对单对及全体运动对的影响。 - -## 必须外部确认的假设 - -- `lat/lon/h` 确为后天线相位中心; -- `rawHeading` 确为后天线指向前天线; -- heading offset 数值和正负号正确; - -任何一项变化,都必须更新相应约束;RTK 定义变化时需要重新生成 A 并重跑。 +- [运动对诊断](PAIR_DIAGNOSTICS.md) +- [双后端共识筛选](CONSENSUS_SELECTION.md) +- [结果文件索引](results/README.md) diff --git a/code/compare_extrinsics.py b/code/compare_extrinsics.py new file mode 100644 index 0000000..4e8ca80 --- /dev/null +++ b/code/compare_extrinsics.py @@ -0,0 +1,43 @@ +#!/usr/bin/env python3 +"""Compare two T_body_lidar JSON files in parameter space and on SE(3).""" + +import argparse +import json +from pathlib import Path + +import numpy as np +from scipy.spatial.transform import Rotation + + +def main() -> int: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--reference", type=Path, required=True) + parser.add_argument("--candidate", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + reference = json.loads(args.reference.read_text(encoding="utf-8-sig")) + candidate = json.loads(args.candidate.read_text(encoding="utf-8-sig")) + a = np.asarray(reference["matrix_4x4"], dtype=float) + b = np.asarray(candidate["matrix_4x4"], dtype=float) + delta = np.linalg.inv(a) @ b + result = { + "convention": "delta = inverse(reference) @ candidate", + "reference": str(args.reference.resolve()), + "candidate": str(args.candidate.resolve()), + "candidate_minus_reference_translation_xyz_m": (b[:3, 3] - a[:3, 3]).tolist(), + "candidate_minus_reference_rpy_xyz_deg": ( + np.asarray(candidate["rotation_rpy_deg_xyz"], float) + - np.asarray(reference["rotation_rpy_deg_xyz"], float) + ).tolist(), + "relative_translation_norm_m": float(np.linalg.norm(delta[:3, 3])), + "relative_rotation_deg": float(np.degrees(Rotation.from_matrix(delta[:3, :3]).magnitude())), + "relative_matrix_4x4": delta.tolist(), + } + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8") + print(json.dumps(result, ensure_ascii=False, indent=2)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/results/01_previous_two_batches/README.md b/results/01_previous_two_batches/README.md new file mode 100644 index 0000000..7983064 --- /dev/null +++ b/results/01_previous_two_batches/README.md @@ -0,0 +1,10 @@ +# 历史两批结果 + +第二批 38 站的密集 RTK 数据用于求解;第一批 38 站因 RTK 约 10 秒一条,仅作辅助检查。最终部署值: + +```text +translation_m = [1.297759692, -0.000067331, 0.720497835] +RPY_deg_xyz = [-0.785151146, 1.202660822, -0.835510053] +``` + +共识估计使用 39 个运动对,AX RMS 约 `0.07985 m / 0.96118°`。第一批辅助检查 22 对约 `0.06067 m / 1.00298°`。`final_extrinsic_deployment.json` 是唯一建议直接交给下游的部署 JSON;其余文件用于审计和复现。 diff --git a/results/common/ground_planes_batch2.csv b/results/01_previous_two_batches/common/ground_planes_batch2.csv similarity index 100% rename from results/common/ground_planes_batch2.csv rename to results/01_previous_two_batches/common/ground_planes_batch2.csv diff --git a/results/comparison_summary.json b/results/01_previous_two_batches/comparison_summary.json similarity index 99% rename from results/comparison_summary.json rename to results/01_previous_two_batches/comparison_summary.json index 4b59601..ffab318 100644 --- a/results/comparison_summary.json +++ b/results/01_previous_two_batches/comparison_summary.json @@ -76,4 +76,4 @@ "batch1_auxiliary_rotation_rms_deg": 1.1492603033421918 }, "important_limit": "Backend agreement is strong, but AX rotation RMS remains about one degree. This is not a centimetre-grade absolute certification." -} \ No newline at end of file +} diff --git a/results/consensus/B_batch1_consensus.consensus.json b/results/01_previous_two_batches/consensus/B_batch1_consensus.consensus.json similarity index 99% rename from results/consensus/B_batch1_consensus.consensus.json rename to results/01_previous_two_batches/consensus/B_batch1_consensus.consensus.json index 3967e3b..87d1d02 100644 --- a/results/consensus/B_batch1_consensus.consensus.json +++ b/results/01_previous_two_batches/consensus/B_batch1_consensus.consensus.json @@ -325,4 +325,4 @@ "reason": "" } ] -} \ No newline at end of file +} diff --git a/results/consensus/B_batch1_consensus.npz b/results/01_previous_two_batches/consensus/B_batch1_consensus.npz similarity index 100% rename from results/consensus/B_batch1_consensus.npz rename to results/01_previous_two_batches/consensus/B_batch1_consensus.npz diff --git a/results/consensus/B_batch2_consensus.consensus.json b/results/01_previous_two_batches/consensus/B_batch2_consensus.consensus.json similarity index 99% rename from results/consensus/B_batch2_consensus.consensus.json rename to results/01_previous_two_batches/consensus/B_batch2_consensus.consensus.json index 6f15bfe..d1c5393 100644 --- a/results/consensus/B_batch2_consensus.consensus.json +++ b/results/01_previous_two_batches/consensus/B_batch2_consensus.consensus.json @@ -527,4 +527,4 @@ "reason": "" } ] -} \ No newline at end of file +} diff --git a/results/consensus/B_batch2_consensus.npz b/results/01_previous_two_batches/consensus/B_batch2_consensus.npz similarity index 100% rename from results/consensus/B_batch2_consensus.npz rename to results/01_previous_two_batches/consensus/B_batch2_consensus.npz diff --git a/results/consensus/batch1_auxiliary_check.json b/results/01_previous_two_batches/consensus/batch1_auxiliary_check.json similarity index 99% rename from results/consensus/batch1_auxiliary_check.json rename to results/01_previous_two_batches/consensus/batch1_auxiliary_check.json index 49344ae..7e5874d 100644 --- a/results/consensus/batch1_auxiliary_check.json +++ b/results/01_previous_two_batches/consensus/batch1_auxiliary_check.json @@ -176,4 +176,4 @@ } ] } -} \ No newline at end of file +} diff --git a/results/consensus/extrinsic_batch2_consensus.json b/results/01_previous_two_batches/consensus/extrinsic_batch2_consensus.json similarity index 99% rename from results/consensus/extrinsic_batch2_consensus.json rename to results/01_previous_two_batches/consensus/extrinsic_batch2_consensus.json index c8c63e4..3279d38 100644 --- a/results/consensus/extrinsic_batch2_consensus.json +++ b/results/01_previous_two_batches/consensus/extrinsic_batch2_consensus.json @@ -396,4 +396,4 @@ -0.6468477685453492 ] } -} \ No newline at end of file +} diff --git a/results/diagnostics/consensus_pair0_left_rpy_scan.csv b/results/01_previous_two_batches/diagnostics/consensus_pair0_left_rpy_scan.csv similarity index 100% rename from results/diagnostics/consensus_pair0_left_rpy_scan.csv rename to results/01_previous_two_batches/diagnostics/consensus_pair0_left_rpy_scan.csv diff --git a/results/diagnostics/consensus_pair0_left_rpy_scan.json b/results/01_previous_two_batches/diagnostics/consensus_pair0_left_rpy_scan.json similarity index 99% rename from results/diagnostics/consensus_pair0_left_rpy_scan.json rename to results/01_previous_two_batches/diagnostics/consensus_pair0_left_rpy_scan.json index 91b2d0f..4da1000 100644 --- a/results/diagnostics/consensus_pair0_left_rpy_scan.json +++ b/results/01_previous_two_batches/diagnostics/consensus_pair0_left_rpy_scan.json @@ -6,8 +6,8 @@ "correction_convention": "X_test = DeltaR_body * X; DeltaR uses fixed body xyz RPY axes", "component_frame": "delta translation/RPY components are in station-j LiDAR coordinates, not screen axes", "selection_rule": "Never accept a correction from selected_pair alone. Require improvement over all refined pairs, directional consistency across pairs, acceptable ground constraints, and independent visual review. This script never overwrites X.", - "pairs_file": "D:\\Outdoor Ackerman Cart Sensor Adaptation\\LiDAR_RTK_Calibration_Rigorous_20260721\\results\\consensus\\B_batch2_consensus.npz", - "extrinsic_file": "D:\\Outdoor Ackerman Cart Sensor Adaptation\\LiDAR_RTK_Calibration_Rigorous_20260721\\results\\final_extrinsic_recommended.json", + "pairs_file": "results\\01_previous_two_batches\\consensus\\B_batch2_consensus.npz", + "extrinsic_file": "results\\01_previous_two_batches\\final_extrinsic_recommended.json", "stations": 38, "pairs": 39, "selected_pair_index": 0, @@ -17436,4 +17436,4 @@ } } ] -} \ No newline at end of file +} diff --git a/results/diagnostics/open3d_refined_pair0_left_rpy_scan.csv b/results/01_previous_two_batches/diagnostics/open3d_refined_pair0_left_rpy_scan.csv similarity index 100% rename from results/diagnostics/open3d_refined_pair0_left_rpy_scan.csv rename to results/01_previous_two_batches/diagnostics/open3d_refined_pair0_left_rpy_scan.csv diff --git a/results/diagnostics/open3d_refined_pair0_left_rpy_scan.json b/results/01_previous_two_batches/diagnostics/open3d_refined_pair0_left_rpy_scan.json similarity index 99% rename from results/diagnostics/open3d_refined_pair0_left_rpy_scan.json rename to results/01_previous_two_batches/diagnostics/open3d_refined_pair0_left_rpy_scan.json index 62df0d4..760e8d4 100644 --- a/results/diagnostics/open3d_refined_pair0_left_rpy_scan.json +++ b/results/01_previous_two_batches/diagnostics/open3d_refined_pair0_left_rpy_scan.json @@ -6,8 +6,8 @@ "correction_convention": "X_test = DeltaR_body * X; DeltaR uses fixed body xyz RPY axes", "component_frame": "delta translation/RPY components are in station-j LiDAR coordinates, not screen axes", "selection_rule": "Never accept a correction from selected_pair alone. Require improvement over all refined pairs, directional consistency across pairs, acceptable ground constraints, and independent visual review. This script never overwrites X.", - "pairs_file": "D:\\Outdoor Ackerman Cart Sensor Adaptation\\LiDAR_RTK_Calibration_Rigorous_20260721\\results\\open3d_gicp\\B_batch2_refined.npz", - "extrinsic_file": "D:\\Outdoor Ackerman Cart Sensor Adaptation\\LiDAR_RTK_Calibration_Rigorous_20260721\\results\\final_extrinsic_recommended.json", + "pairs_file": "results\\01_previous_two_batches\\open3d_gicp\\B_batch2_refined.npz", + "extrinsic_file": "results\\01_previous_two_batches\\final_extrinsic_recommended.json", "stations": 38, "pairs": 66, "selected_pair_index": 0, @@ -28128,4 +28128,4 @@ } } ] -} \ No newline at end of file +} diff --git a/results/diagnostics/small_gicp_refined_pair0_left_rpy_scan.csv b/results/01_previous_two_batches/diagnostics/small_gicp_refined_pair0_left_rpy_scan.csv similarity index 100% rename from results/diagnostics/small_gicp_refined_pair0_left_rpy_scan.csv rename to results/01_previous_two_batches/diagnostics/small_gicp_refined_pair0_left_rpy_scan.csv diff --git a/results/diagnostics/small_gicp_refined_pair0_left_rpy_scan.json b/results/01_previous_two_batches/diagnostics/small_gicp_refined_pair0_left_rpy_scan.json similarity index 99% rename from results/diagnostics/small_gicp_refined_pair0_left_rpy_scan.json rename to results/01_previous_two_batches/diagnostics/small_gicp_refined_pair0_left_rpy_scan.json index 459df5b..ad9225b 100644 --- a/results/diagnostics/small_gicp_refined_pair0_left_rpy_scan.json +++ b/results/01_previous_two_batches/diagnostics/small_gicp_refined_pair0_left_rpy_scan.json @@ -6,8 +6,8 @@ "correction_convention": "X_test = DeltaR_body * X; DeltaR uses fixed body xyz RPY axes", "component_frame": "delta translation/RPY components are in station-j LiDAR coordinates, not screen axes", "selection_rule": "Never accept a correction from selected_pair alone. Require improvement over all refined pairs, directional consistency across pairs, acceptable ground constraints, and independent visual review. This script never overwrites X.", - "pairs_file": "D:\\Outdoor Ackerman Cart Sensor Adaptation\\LiDAR_RTK_Calibration_Rigorous_20260721\\results\\small_gicp\\B_batch2_refined.npz", - "extrinsic_file": "D:\\Outdoor Ackerman Cart Sensor Adaptation\\LiDAR_RTK_Calibration_Rigorous_20260721\\results\\final_extrinsic_recommended.json", + "pairs_file": "results\\01_previous_two_batches\\small_gicp\\B_batch2_refined.npz", + "extrinsic_file": "results\\01_previous_two_batches\\final_extrinsic_recommended.json", "stations": 38, "pairs": 80, "selected_pair_index": 0, @@ -33672,4 +33672,4 @@ } } ] -} \ No newline at end of file +} diff --git a/results/final_extrinsic_deployment.json b/results/01_previous_two_batches/final_extrinsic_deployment.json similarity index 99% rename from results/final_extrinsic_deployment.json rename to results/01_previous_two_batches/final_extrinsic_deployment.json index 6135c96..43f7022 100644 --- a/results/final_extrinsic_deployment.json +++ b/results/01_previous_two_batches/final_extrinsic_deployment.json @@ -43,3 +43,4 @@ ] ] } + diff --git a/results/final_extrinsic_recommended.json b/results/01_previous_two_batches/final_extrinsic_recommended.json similarity index 99% rename from results/final_extrinsic_recommended.json rename to results/01_previous_two_batches/final_extrinsic_recommended.json index 1cfb084..bdfe44e 100644 --- a/results/final_extrinsic_recommended.json +++ b/results/01_previous_two_batches/final_extrinsic_recommended.json @@ -402,4 +402,4 @@ "consensus_pair_threshold": "Open3D-small_gicp B delta <= 0.05 m and <= 0.50 deg", "warning": "AX rotation RMS remains about one degree; this is not centimetre-grade absolute certification." } -} \ No newline at end of file +} diff --git a/results/final_summary.json b/results/01_previous_two_batches/final_summary.json similarity index 99% rename from results/final_summary.json rename to results/01_previous_two_batches/final_summary.json index 7e67af3..191ee6a 100644 --- a/results/final_summary.json +++ b/results/01_previous_two_batches/final_summary.json @@ -437,4 +437,4 @@ } }, "warning": "AX rotation RMS remains about one degree; this is not centimetre-grade absolute certification." -} \ No newline at end of file +} diff --git a/results/open3d_gicp/B_batch1_auxiliary.npz b/results/01_previous_two_batches/open3d_gicp/B_batch1_auxiliary.npz similarity index 100% rename from results/open3d_gicp/B_batch1_auxiliary.npz rename to results/01_previous_two_batches/open3d_gicp/B_batch1_auxiliary.npz diff --git a/results/open3d_gicp/B_batch1_auxiliary_refined.npz b/results/01_previous_two_batches/open3d_gicp/B_batch1_auxiliary_refined.npz similarity index 100% rename from results/open3d_gicp/B_batch1_auxiliary_refined.npz rename to results/01_previous_two_batches/open3d_gicp/B_batch1_auxiliary_refined.npz diff --git a/results/open3d_gicp/B_batch1_auxiliary_refined.refinement.json b/results/01_previous_two_batches/open3d_gicp/B_batch1_auxiliary_refined.refinement.json similarity index 99% rename from results/open3d_gicp/B_batch1_auxiliary_refined.refinement.json rename to results/01_previous_two_batches/open3d_gicp/B_batch1_auxiliary_refined.refinement.json index 033367e..e66c870 100644 --- a/results/open3d_gicp/B_batch1_auxiliary_refined.refinement.json +++ b/results/01_previous_two_batches/open3d_gicp/B_batch1_auxiliary_refined.refinement.json @@ -1264,4 +1264,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/results/open3d_gicp/B_batch1_quality.csv b/results/01_previous_two_batches/open3d_gicp/B_batch1_quality.csv similarity index 100% rename from results/open3d_gicp/B_batch1_quality.csv rename to results/01_previous_two_batches/open3d_gicp/B_batch1_quality.csv diff --git a/results/open3d_gicp/B_batch1_quality.json b/results/01_previous_two_batches/open3d_gicp/B_batch1_quality.json similarity index 99% rename from results/open3d_gicp/B_batch1_quality.json rename to results/01_previous_two_batches/open3d_gicp/B_batch1_quality.json index 499fbcb..9658f02 100644 --- a/results/open3d_gicp/B_batch1_quality.json +++ b/results/01_previous_two_batches/open3d_gicp/B_batch1_quality.json @@ -13472,4 +13472,4 @@ "rejection_reasons": [] } ] -} \ No newline at end of file +} diff --git a/results/open3d_gicp/B_batch2_estimation.npz b/results/01_previous_two_batches/open3d_gicp/B_batch2_estimation.npz similarity index 100% rename from results/open3d_gicp/B_batch2_estimation.npz rename to results/01_previous_two_batches/open3d_gicp/B_batch2_estimation.npz diff --git a/results/open3d_gicp/B_batch2_quality.csv b/results/01_previous_two_batches/open3d_gicp/B_batch2_quality.csv similarity index 100% rename from results/open3d_gicp/B_batch2_quality.csv rename to results/01_previous_two_batches/open3d_gicp/B_batch2_quality.csv diff --git a/results/open3d_gicp/B_batch2_quality.json b/results/01_previous_two_batches/open3d_gicp/B_batch2_quality.json similarity index 99% rename from results/open3d_gicp/B_batch2_quality.json rename to results/01_previous_two_batches/open3d_gicp/B_batch2_quality.json index 8316e67..6737012 100644 --- a/results/open3d_gicp/B_batch2_quality.json +++ b/results/01_previous_two_batches/open3d_gicp/B_batch2_quality.json @@ -13455,4 +13455,4 @@ "rejection_reasons": [] } ] -} \ No newline at end of file +} diff --git a/results/open3d_gicp/B_batch2_refined.npz b/results/01_previous_two_batches/open3d_gicp/B_batch2_refined.npz similarity index 100% rename from results/open3d_gicp/B_batch2_refined.npz rename to results/01_previous_two_batches/open3d_gicp/B_batch2_refined.npz diff --git a/results/open3d_gicp/B_batch2_refined.refinement.json b/results/01_previous_two_batches/open3d_gicp/B_batch2_refined.refinement.json similarity index 99% rename from results/open3d_gicp/B_batch2_refined.refinement.json rename to results/01_previous_two_batches/open3d_gicp/B_batch2_refined.refinement.json index 13b807a..5fca1fc 100644 --- a/results/open3d_gicp/B_batch2_refined.refinement.json +++ b/results/01_previous_two_batches/open3d_gicp/B_batch2_refined.refinement.json @@ -1286,4 +1286,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/results/open3d_gicp/batch1_auxiliary_check.json b/results/01_previous_two_batches/open3d_gicp/batch1_auxiliary_check.json similarity index 99% rename from results/open3d_gicp/batch1_auxiliary_check.json rename to results/01_previous_two_batches/open3d_gicp/batch1_auxiliary_check.json index 1d058d7..ca03da5 100644 --- a/results/open3d_gicp/batch1_auxiliary_check.json +++ b/results/01_previous_two_batches/open3d_gicp/batch1_auxiliary_check.json @@ -309,4 +309,4 @@ } ] } -} \ No newline at end of file +} diff --git a/results/open3d_gicp/extrinsic_batch2.json b/results/01_previous_two_batches/open3d_gicp/extrinsic_batch2.json similarity index 99% rename from results/open3d_gicp/extrinsic_batch2.json rename to results/01_previous_two_batches/open3d_gicp/extrinsic_batch2.json index b1d2428..1634334 100644 --- a/results/open3d_gicp/extrinsic_batch2.json +++ b/results/01_previous_two_batches/open3d_gicp/extrinsic_batch2.json @@ -741,4 +741,4 @@ -0.7099716198219946 ] } -} \ No newline at end of file +} diff --git a/results/open3d_gicp/extrinsic_batch2_refined.json b/results/01_previous_two_batches/open3d_gicp/extrinsic_batch2_refined.json similarity index 99% rename from results/open3d_gicp/extrinsic_batch2_refined.json rename to results/01_previous_two_batches/open3d_gicp/extrinsic_batch2_refined.json index a86dba5..cdc3672 100644 --- a/results/open3d_gicp/extrinsic_batch2_refined.json +++ b/results/01_previous_two_batches/open3d_gicp/extrinsic_batch2_refined.json @@ -531,4 +531,4 @@ -0.7328998428204786 ] } -} \ No newline at end of file +} diff --git a/results/small_gicp/B_batch1_auxiliary.npz b/results/01_previous_two_batches/small_gicp/B_batch1_auxiliary.npz similarity index 100% rename from results/small_gicp/B_batch1_auxiliary.npz rename to results/01_previous_two_batches/small_gicp/B_batch1_auxiliary.npz diff --git a/results/small_gicp/B_batch1_auxiliary_refined.npz b/results/01_previous_two_batches/small_gicp/B_batch1_auxiliary_refined.npz similarity index 100% rename from results/small_gicp/B_batch1_auxiliary_refined.npz rename to results/01_previous_two_batches/small_gicp/B_batch1_auxiliary_refined.npz diff --git a/results/small_gicp/B_batch1_auxiliary_refined.refinement.json b/results/01_previous_two_batches/small_gicp/B_batch1_auxiliary_refined.refinement.json similarity index 99% rename from results/small_gicp/B_batch1_auxiliary_refined.refinement.json rename to results/01_previous_two_batches/small_gicp/B_batch1_auxiliary_refined.refinement.json index 436b695..c617999 100644 --- a/results/small_gicp/B_batch1_auxiliary_refined.refinement.json +++ b/results/01_previous_two_batches/small_gicp/B_batch1_auxiliary_refined.refinement.json @@ -1104,4 +1104,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/results/small_gicp/B_batch1_quality.csv b/results/01_previous_two_batches/small_gicp/B_batch1_quality.csv similarity index 100% rename from results/small_gicp/B_batch1_quality.csv rename to results/01_previous_two_batches/small_gicp/B_batch1_quality.csv diff --git a/results/small_gicp/B_batch1_quality.json b/results/01_previous_two_batches/small_gicp/B_batch1_quality.json similarity index 99% rename from results/small_gicp/B_batch1_quality.json rename to results/01_previous_two_batches/small_gicp/B_batch1_quality.json index 6dedad6..22efe53 100644 --- a/results/small_gicp/B_batch1_quality.json +++ b/results/01_previous_two_batches/small_gicp/B_batch1_quality.json @@ -13506,4 +13506,4 @@ "rejection_reasons": [] } ] -} \ No newline at end of file +} diff --git a/results/small_gicp/B_batch2_estimation.npz b/results/01_previous_two_batches/small_gicp/B_batch2_estimation.npz similarity index 100% rename from results/small_gicp/B_batch2_estimation.npz rename to results/01_previous_two_batches/small_gicp/B_batch2_estimation.npz diff --git a/results/small_gicp/B_batch2_quality.csv b/results/01_previous_two_batches/small_gicp/B_batch2_quality.csv similarity index 100% rename from results/small_gicp/B_batch2_quality.csv rename to results/01_previous_two_batches/small_gicp/B_batch2_quality.csv diff --git a/results/small_gicp/B_batch2_quality.json b/results/01_previous_two_batches/small_gicp/B_batch2_quality.json similarity index 99% rename from results/small_gicp/B_batch2_quality.json rename to results/01_previous_two_batches/small_gicp/B_batch2_quality.json index 58ce0e1..b112a9d 100644 --- a/results/small_gicp/B_batch2_quality.json +++ b/results/01_previous_two_batches/small_gicp/B_batch2_quality.json @@ -22520,4 +22520,4 @@ "rejection_reasons": [] } ] -} \ No newline at end of file +} diff --git a/results/small_gicp/B_batch2_refined.npz b/results/01_previous_two_batches/small_gicp/B_batch2_refined.npz similarity index 100% rename from results/small_gicp/B_batch2_refined.npz rename to results/01_previous_two_batches/small_gicp/B_batch2_refined.npz diff --git a/results/small_gicp/B_batch2_refined.refinement.json b/results/01_previous_two_batches/small_gicp/B_batch2_refined.refinement.json similarity index 99% rename from results/small_gicp/B_batch2_refined.refinement.json rename to results/01_previous_two_batches/small_gicp/B_batch2_refined.refinement.json index c07c275..d1121f5 100644 --- a/results/small_gicp/B_batch2_refined.refinement.json +++ b/results/01_previous_two_batches/small_gicp/B_batch2_refined.refinement.json @@ -1862,4 +1862,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/results/small_gicp/batch1_auxiliary_check.json b/results/01_previous_two_batches/small_gicp/batch1_auxiliary_check.json similarity index 99% rename from results/small_gicp/batch1_auxiliary_check.json rename to results/01_previous_two_batches/small_gicp/batch1_auxiliary_check.json index 17a9345..12e6e4b 100644 --- a/results/small_gicp/batch1_auxiliary_check.json +++ b/results/01_previous_two_batches/small_gicp/batch1_auxiliary_check.json @@ -274,4 +274,4 @@ } ] } -} \ No newline at end of file +} diff --git a/results/small_gicp/extrinsic_batch2.json b/results/01_previous_two_batches/small_gicp/extrinsic_batch2.json similarity index 99% rename from results/small_gicp/extrinsic_batch2.json rename to results/01_previous_two_batches/small_gicp/extrinsic_batch2.json index 6bbb651..6688257 100644 --- a/results/small_gicp/extrinsic_batch2.json +++ b/results/01_previous_two_batches/small_gicp/extrinsic_batch2.json @@ -971,4 +971,4 @@ -0.7335620940370134 ] } -} \ No newline at end of file +} diff --git a/results/small_gicp/extrinsic_batch2_refined.json b/results/01_previous_two_batches/small_gicp/extrinsic_batch2_refined.json similarity index 99% rename from results/small_gicp/extrinsic_batch2_refined.json rename to results/01_previous_two_batches/small_gicp/extrinsic_batch2_refined.json index 7b2897a..fc6b6f7 100644 --- a/results/small_gicp/extrinsic_batch2_refined.json +++ b/results/01_previous_two_batches/small_gicp/extrinsic_batch2_refined.json @@ -601,4 +601,4 @@ -0.8275267997610058 ] } -} \ No newline at end of file +} diff --git a/results/02_data4_calibration/README.md b/results/02_data4_calibration/README.md new file mode 100644 index 0000000..d0fcfe6 --- /dev/null +++ b/results/02_data4_calibration/README.md @@ -0,0 +1,12 @@ +# data4 独立标定结果 + +data4 含 34 个静止站点,LiDAR 来自逐站 dlog,RTK/IMU 来自独立 rscap。求解不使用手量外参初始化。 + +```text +translation_m = [1.300376020, -0.001706691, 0.704877045] +RPY_deg_xyz = [-0.791891617, 1.393823210, -0.970742631] +AX RMS = 0.11762 m / 1.24257 deg (26 pairs) +condition = 7.44293 +``` + +该结果用于独立对照,不是当前部署值。`final_extrinsic_data4.json` 与 `consensus/extrinsic.json` 数值相同;前者是便于下游读取的顶层副本。 diff --git a/results/02_data4_calibration/common/ground_planes.csv b/results/02_data4_calibration/common/ground_planes.csv new file mode 100644 index 0000000..565940d --- /dev/null +++ b/results/02_data4_calibration/common/ground_planes.csv @@ -0,0 +1,35 @@ +time,nx,ny,nz,d,inliers,rms_m,frame_counter +1784783825.357129,-0.011572516208853837,-0.01546146293660183,0.9998134926237273,0.9428804652027359,2148,0.011933750988078078,382 +1784783905.353819,0.0037183584307534687,-0.006818427483323246,0.9999698409738341,0.9412842800288904,1992,0.011942807895967073,1182 +1784783971.0503054,-0.021709843154394736,-0.005232422217807239,0.999750621139065,0.9451429710867566,1863,0.012080615710528817,1839 +1784784059.7468228,-0.02414670904491499,-0.0009406084776101358,0.9997079832120939,0.9517260475425733,1921,0.013468410314875789,2726 +1784784149.2434597,-0.034005828386544125,0.003026503321489513,0.9994170520425345,0.9257219945735469,1673,0.012714432789206961,3621 +1784784224.2408776,-0.02761369891036776,0.0016288328836576937,0.9996173420544108,0.9001377900125058,1799,0.012615520511386497,4371 +1784784301.6372502,-0.0071762210837946405,-0.011511959356927467,0.9999079840878965,0.9580809447760092,2113,0.012007730376482893,5145 +1784784387.733771,-0.010489658730106238,-0.009076163262051764,0.9999037905319524,0.9306898458653136,2187,0.01214615852280608,6006 +1784784474.9314597,-0.016114135387570262,-0.0509432368134707,0.9985715403834008,0.9072229543504865,1894,0.012012086783846727,6878 +1784784549.4274275,-0.025174259196536854,-0.013435577824823405,0.9995927880504234,0.9410339772836553,1603,0.01154746446935748,7623 +1784784614.7244046,-0.03173300872144653,-0.01870285516152855,0.9993213794202,0.932566466561638,1970,0.01233410897082844,8276 +1784784682.921899,-0.022665842512528424,-0.02998919824936144,0.9992932040054899,0.9145231002636922,1663,0.012948552270457988,8958 +1784784758.8187964,-0.023688193326187944,-0.030852054660206355,0.9992432237549499,0.9349709939783197,1756,0.013443733500218538,9717 +1784784836.0155501,-0.018461711654128285,-0.02498001140817507,0.9995174656967467,0.94720244509644,2057,0.013445893726732725,10489 +1784784921.1126208,-0.01993595874096254,-0.02538449671402936,0.9994789566947642,0.9120981909462803,1822,0.012774262320504949,11340 +1784784992.709947,-0.017778693539407146,-0.026803117327322167,0.9994826216386005,0.9369057170493221,2114,0.012253841210002203,12056 +1784785067.6067727,-0.03766905893322114,-0.00624993226014667,0.9992707242513558,0.9491859078478477,1753,0.01368084681318558,12805 +1784785215.9006598,-0.023255779098430147,-0.030526061005580876,0.9992633928739754,0.9173759052467025,2145,0.012710466955150847,14288 +1784785296.4990919,-0.014034225033964978,-0.025014032112439084,0.9995885847313253,0.9275558675790446,2445,0.012495377814995792,15094 +1784785363.1952267,-0.03352240146955635,-0.008711847039715113,0.9993999961581301,0.9543448006240765,1968,0.01391585588879859,15761 +1784785434.592462,-0.016701702947054253,0.016663838961403298,0.9997216460544089,0.9289121671743757,1857,0.011181698281215124,16475 +1784785506.389296,-0.03393096202185679,-0.007325597743377637,0.9993973311120926,0.9387396500642948,1844,0.01340053385502904,17193 +1784785587.5863533,-0.03382019410288933,-0.0007820019558384217,0.9994276276668481,0.9255866795455666,1691,0.012723688174337812,18005 +1784785681.9825997,-0.03422781555599595,-0.019255467037831406,0.999228544243718,0.9454924962027047,1959,0.01264678059788212,18949 +1784785815.4779446,-0.0011902245774294716,-0.023262098479360813,0.9997286922659526,0.9523139768255908,2026,0.012446728838862407,20284 +1784785891.9768085,-0.02758114176328463,0.0022252358991911286,0.9996170911625244,0.9417694614877323,1551,0.012616490996777729,21049 +1784785967.8726046,-0.031038730802887403,-0.010699305087773895,0.9994609157244643,0.9511405539250901,1512,0.013166899954854165,21808 +1784786031.5701303,-0.023257481598180085,-0.0214545061132305,0.9994992714940555,0.9380611442094842,1555,0.013339981386836522,22445 +1784786087.9670725,-0.02720411594210121,-0.012536181034248165,0.9995512894498637,0.942804167293392,1531,0.013246549575843425,23009 +1784786160.8647907,-0.030839502708575457,0.06473269778477829,0.9974259886879789,1.0783938869067702,1436,0.010501132985089602,23738 +1784786252.6621523,-0.040972893104105006,-0.02082299858725662,0.9989432540242288,0.9524735117369321,1736,0.012945834939507173,24656 +1784786319.6581354,-0.029761355495275914,-0.026565272466750618,0.9992039571668294,0.9594371422885729,1571,0.013108184070957877,25326 +1784786396.7558627,-0.030769194030483185,-0.022645428394942407,0.9992699541522921,0.9756606317668476,1326,0.013202989492489907,26097 +1784786557.4492514,-0.019983269314458783,-0.016965365794746882,0.9996563636124948,0.9409853928234136,1228,0.013269243263785414,27704 diff --git a/results/02_data4_calibration/consensus/B_consensus.consensus.json b/results/02_data4_calibration/consensus/B_consensus.consensus.json new file mode 100644 index 0000000..d6f7efb --- /dev/null +++ b/results/02_data4_calibration/consensus/B_consensus.consensus.json @@ -0,0 +1,340 @@ +{ + "selection_is_X_independent": true, + "B_source": "Open3D; small_gicp is used only as an agreement gate", + "max_translation_m": 0.05, + "max_rotation_deg": 0.5, + "input_open3d_pairs": 42, + "accepted_pairs": 26, + "pairs": [ + { + "i": 0, + "j": 1, + "open3d_small_translation_m": 0.014276441704401843, + "open3d_small_rotation_deg": 0.61360593819684, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 0, + "j": 2, + "open3d_small_translation_m": 0.019952450418350955, + "open3d_small_rotation_deg": 0.1460927002571647, + "accepted": true, + "reason": "" + }, + { + "i": 1, + "j": 2, + "accepted": false, + "reason": "not_in_small_gicp_refined" + }, + { + "i": 2, + "j": 3, + "open3d_small_translation_m": 0.02240729290024995, + "open3d_small_rotation_deg": 0.16748011698659707, + "accepted": true, + "reason": "" + }, + { + "i": 2, + "j": 5, + "open3d_small_translation_m": 0.0061616498009369, + "open3d_small_rotation_deg": 0.13760629005733752, + "accepted": true, + "reason": "" + }, + { + "i": 3, + "j": 5, + "open3d_small_translation_m": 0.03979893704050873, + "open3d_small_rotation_deg": 0.21317157512260582, + "accepted": true, + "reason": "" + }, + { + "i": 3, + "j": 6, + "open3d_small_translation_m": 0.012411893826144786, + "open3d_small_rotation_deg": 0.6409039547122976, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 5, + "j": 8, + "open3d_small_translation_m": 0.02304199707639382, + "open3d_small_rotation_deg": 0.37075901631515606, + "accepted": true, + "reason": "" + }, + { + "i": 6, + "j": 7, + "open3d_small_translation_m": 0.008481323658868146, + "open3d_small_rotation_deg": 0.2110246381252998, + "accepted": true, + "reason": "" + }, + { + "i": 6, + "j": 8, + "open3d_small_translation_m": 0.03928926702287607, + "open3d_small_rotation_deg": 0.3638880951335251, + "accepted": true, + "reason": "" + }, + { + "i": 7, + "j": 8, + "open3d_small_translation_m": 0.008121615288998074, + "open3d_small_rotation_deg": 0.6269514061788241, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 10, + "j": 11, + "open3d_small_translation_m": 0.021311366483594964, + "open3d_small_rotation_deg": 0.5895827931090624, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 12, + "j": 14, + "open3d_small_translation_m": 0.021593615635265958, + "open3d_small_rotation_deg": 0.28280557179019644, + "accepted": true, + "reason": "" + }, + { + "i": 12, + "j": 15, + "open3d_small_translation_m": 0.03680193420722766, + "open3d_small_rotation_deg": 0.560849139510841, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 13, + "j": 15, + "open3d_small_translation_m": 0.02340982602704091, + "open3d_small_rotation_deg": 0.5560478634176494, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 13, + "j": 16, + "open3d_small_translation_m": 0.027602744462628358, + "open3d_small_rotation_deg": 0.2529072067309942, + "accepted": true, + "reason": "" + }, + { + "i": 15, + "j": 16, + "open3d_small_translation_m": 0.0209082447077901, + "open3d_small_rotation_deg": 0.03400462126505844, + "accepted": true, + "reason": "" + }, + { + "i": 15, + "j": 17, + "open3d_small_translation_m": 0.04186146133502697, + "open3d_small_rotation_deg": 0.13358624916951176, + "accepted": true, + "reason": "" + }, + { + "i": 15, + "j": 18, + "open3d_small_translation_m": 0.014610177110996908, + "open3d_small_rotation_deg": 0.25378510251316655, + "accepted": true, + "reason": "" + }, + { + "i": 16, + "j": 19, + "open3d_small_translation_m": 0.012703728170382652, + "open3d_small_rotation_deg": 0.36607447371237334, + "accepted": true, + "reason": "" + }, + { + "i": 17, + "j": 18, + "open3d_small_translation_m": 0.03054772105829047, + "open3d_small_rotation_deg": 0.6293060553954827, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 21, + "j": 22, + "open3d_small_translation_m": 0.008438580476457845, + "open3d_small_rotation_deg": 0.15351253406054555, + "accepted": true, + "reason": "" + }, + { + "i": 21, + "j": 23, + "open3d_small_translation_m": 0.018479690388276085, + "open3d_small_rotation_deg": 0.5781174905909121, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 21, + "j": 24, + "open3d_small_translation_m": 0.031284642427708814, + "open3d_small_rotation_deg": 0.39218826727895556, + "accepted": true, + "reason": "" + }, + { + "i": 22, + "j": 23, + "open3d_small_translation_m": 0.011568269703658672, + "open3d_small_rotation_deg": 0.06135783639322868, + "accepted": true, + "reason": "" + }, + { + "i": 22, + "j": 25, + "open3d_small_translation_m": 0.041018828349300214, + "open3d_small_rotation_deg": 0.42033964239927313, + "accepted": true, + "reason": "" + }, + { + "i": 23, + "j": 24, + "open3d_small_translation_m": 0.009191025383393128, + "open3d_small_rotation_deg": 0.5691342385312416, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 25, + "j": 26, + "open3d_small_translation_m": 0.020915300595375722, + "open3d_small_rotation_deg": 0.48750667250286367, + "accepted": true, + "reason": "" + }, + { + "i": 25, + "j": 27, + "open3d_small_translation_m": 0.09632206662156453, + "open3d_small_rotation_deg": 0.36999381209651033, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 25, + "j": 28, + "open3d_small_translation_m": 0.030138112812714665, + "open3d_small_rotation_deg": 0.46587172800425714, + "accepted": true, + "reason": "" + }, + { + "i": 26, + "j": 27, + "open3d_small_translation_m": 0.010107572072066551, + "open3d_small_rotation_deg": 0.4201365669869145, + "accepted": true, + "reason": "" + }, + { + "i": 26, + "j": 28, + "open3d_small_translation_m": 0.006243998078354416, + "open3d_small_rotation_deg": 1.3246136424341453, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 26, + "j": 29, + "open3d_small_translation_m": 0.036178252863401886, + "open3d_small_rotation_deg": 0.2782366609124745, + "accepted": true, + "reason": "" + }, + { + "i": 27, + "j": 28, + "open3d_small_translation_m": 0.00854064689385523, + "open3d_small_rotation_deg": 0.36768009631129556, + "accepted": true, + "reason": "" + }, + { + "i": 27, + "j": 29, + "open3d_small_translation_m": 0.013991202401755857, + "open3d_small_rotation_deg": 0.43729057730087656, + "accepted": true, + "reason": "" + }, + { + "i": 28, + "j": 29, + "open3d_small_translation_m": 0.12711262123542336, + "open3d_small_rotation_deg": 0.923125258275691, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 28, + "j": 31, + "accepted": false, + "reason": "not_in_small_gicp_refined" + }, + { + "i": 29, + "j": 30, + "open3d_small_translation_m": 0.024384029932636327, + "open3d_small_rotation_deg": 0.4169363425835767, + "accepted": true, + "reason": "" + }, + { + "i": 29, + "j": 31, + "open3d_small_translation_m": 0.012379055939823663, + "open3d_small_rotation_deg": 0.2514662901219578, + "accepted": true, + "reason": "" + }, + { + "i": 30, + "j": 31, + "open3d_small_translation_m": 0.056474627862095485, + "open3d_small_rotation_deg": 0.6666837905087916, + "accepted": false, + "reason": "backend_disagreement" + }, + { + "i": 30, + "j": 32, + "open3d_small_translation_m": 0.015291330212417978, + "open3d_small_rotation_deg": 0.309282499387647, + "accepted": true, + "reason": "" + }, + { + "i": 31, + "j": 32, + "accepted": false, + "reason": "not_in_small_gicp_refined" + } + ] +} \ No newline at end of file diff --git a/results/02_data4_calibration/consensus/B_consensus.npz b/results/02_data4_calibration/consensus/B_consensus.npz new file mode 100644 index 0000000..251bd12 Binary files /dev/null and b/results/02_data4_calibration/consensus/B_consensus.npz differ diff --git a/results/02_data4_calibration/consensus/extrinsic.json b/results/02_data4_calibration/consensus/extrinsic.json new file mode 100644 index 0000000..2bfd4ce --- /dev/null +++ b/results/02_data4_calibration/consensus/extrinsic.json @@ -0,0 +1,334 @@ +{ + "schema_version": 2, + "success": true, + "message": "`ftol` termination condition is satisfied.", + "convention": "T_body_lidar maps raw LiDAR points into rear-axle body frame", + "equation": "A_ij X = X B_ij", + "measured_extrinsic_used_as_initial": false, + "translation_m": [ + 1.3003760202954853, + -0.001706690964618711, + 0.7048770452870675 + ], + "rotation_rpy_deg_xyz": [ + -0.7918916173570606, + 1.3938232102436765, + -0.9707426305626278 + ], + "quaternion_xyzw": [ + -0.006806709954738454, + 0.01222091143708808, + -0.008386347182892065, + 0.9998669847555559 + ], + "matrix_4x4": [ + [ + 0.9995606370091497, + 0.016604094942673456, + 0.024552738604839263, + 1.3003760202954853 + ], + [ + -0.016936831740812692, + 0.9997666757610401, + 0.01340663150469432, + -0.001706690964618711 + ], + [ + -0.02432440487342451, + -0.013816586729505535, + 0.9996086360464778, + 0.7048770452870675 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "estimation": { + "stations": 34, + "pairs": 26, + "residuals": { + "pairs": 26, + "translation_m": { + "rms": 0.11761746401526753, + "median": 0.05973702338495346, + "p90": 0.12346154791373619, + "p95": 0.2642880752048252, + "max": 0.38818289084930874 + }, + "rotation_deg": { + "rms": 1.2425719632195558, + "median": 0.7690245702483323, + "p90": 1.8136122342812846, + "p95": 1.9548737964733964, + "max": 4.332147922413344 + }, + "per_pair": [ + { + "pair_index": 0, + "translation_m": 0.04628122614893134, + "rotation_deg": 0.6982246240615032 + }, + { + "pair_index": 1, + "translation_m": 0.060020104078054665, + "rotation_deg": 0.3948778403656006 + }, + { + "pair_index": 2, + "translation_m": 0.10360591701372288, + "rotation_deg": 0.30363546700066535 + }, + { + "pair_index": 3, + "translation_m": 0.06188990107567784, + "rotation_deg": 0.5542261589736583 + }, + { + "pair_index": 4, + "translation_m": 0.02429424053491548, + "rotation_deg": 0.5086436052507228 + }, + { + "pair_index": 5, + "translation_m": 0.06697411809016678, + "rotation_deg": 0.7794510927257128 + }, + { + "pair_index": 6, + "translation_m": 0.012085958852730979, + "rotation_deg": 0.7997166092197476 + }, + { + "pair_index": 7, + "translation_m": 0.04528858471141819, + "rotation_deg": 0.868879957697597 + }, + { + "pair_index": 8, + "translation_m": 0.05426127100895971, + "rotation_deg": 1.8644817833901326 + }, + { + "pair_index": 9, + "translation_m": 0.12845158967421863, + "rotation_deg": 1.9850044675011511 + }, + { + "pair_index": 10, + "translation_m": 0.06743761428527982, + "rotation_deg": 0.23695300739340452 + }, + { + "pair_index": 11, + "translation_m": 0.060359774544132216, + "rotation_deg": 0.3380187067759931 + }, + { + "pair_index": 12, + "translation_m": 0.03420362550416907, + "rotation_deg": 0.49547670606543825 + }, + { + "pair_index": 13, + "translation_m": 0.059453942691852245, + "rotation_deg": 0.6142581264077737 + }, + { + "pair_index": 14, + "translation_m": 0.048234437308639966, + "rotation_deg": 1.7627426851724366 + }, + { + "pair_index": 15, + "translation_m": 0.0572558948305829, + "rotation_deg": 0.8826512445544471 + }, + { + "pair_index": 16, + "translation_m": 0.11847150615325375, + "rotation_deg": 4.332147922413344 + }, + { + "pair_index": 17, + "translation_m": 0.05084797298915324, + "rotation_deg": 0.9691629612561474 + }, + { + "pair_index": 18, + "translation_m": 0.03403536387594384, + "rotation_deg": 0.9311969881819248 + }, + { + "pair_index": 19, + "translation_m": 0.05397038183164141, + "rotation_deg": 0.5108403673418249 + }, + { + "pair_index": 20, + "translation_m": 0.10079710084559501, + "rotation_deg": 0.9132399116834199 + }, + { + "pair_index": 21, + "translation_m": 0.0245653967740859, + "rotation_deg": 0.29258746424545673 + }, + { + "pair_index": 22, + "translation_m": 0.06599237622687693, + "rotation_deg": 1.130391129168243 + }, + { + "pair_index": 23, + "translation_m": 0.30956690371502743, + "rotation_deg": 0.7585980477709516 + }, + { + "pair_index": 24, + "translation_m": 0.38818289084930874, + "rotation_deg": 0.6792102747820554 + }, + { + "pair_index": 25, + "translation_m": 0.10874622325422871, + "rotation_deg": 0.8215202229484776 + } + ] + } + }, + "ground": { + "planes": 34, + "body_origin_height_above_ground_m": 0.2335, + "formula": "d_lidar - (R_X n_lidar)^T t_X - body_height" + }, + "linearized_one_sigma": { + "translation_m": [ + 0.00880269284499636, + 0.00901239388348182, + 0.0047231303576790815 + ], + "rotation_deg": [ + 0.08002846787949729, + 0.07607548557648909, + 0.16438009658312316 + ], + "warning": "conditional local estimate; bootstrap is the primary stability check" + }, + "weighted_jacobian_condition_number": 7.44293047593025, + "solver_multistart": { + "runs": 12, + "candidates_relative_to_best": [ + { + "cost": 125.63045335315196, + "success": true, + "translation_m": 2.6261422580681395e-09, + "rotation_deg": 5.414246532613018e-08 + }, + { + "cost": 125.63045335315196, + "success": true, + "translation_m": 1.4824807208067879e-09, + "rotation_deg": 1.72860210982948e-08 + }, + { + "cost": 125.63045335315223, + "success": true, + "translation_m": 2.630839730785566e-09, + "rotation_deg": 6.406686644059802e-08 + }, + { + "cost": 125.63045335315202, + "success": true, + "translation_m": 3.4171046507681323e-09, + "rotation_deg": 6.031782751294924e-08 + }, + { + "cost": 125.63045335315198, + "success": true, + "translation_m": 1.024465800095368e-09, + "rotation_deg": 5.593612335539163e-09 + }, + { + "cost": 125.63045335315205, + "success": true, + "translation_m": 3.3380353081804456e-09, + "rotation_deg": 5.989779005616406e-08 + }, + { + "cost": 125.63045335315195, + "success": true, + "translation_m": 1.3390324575379226e-09, + "rotation_deg": 1.669449907197552e-08 + }, + { + "cost": 125.63045335315194, + "success": true, + "translation_m": 9.664926809065912e-10, + "rotation_deg": 1.725605645088929e-08 + }, + { + "cost": 125.63045335315195, + "success": true, + "translation_m": 1.1236440604027455e-09, + "rotation_deg": 8.844155186013785e-09 + }, + { + "cost": 125.63045335315957, + "success": true, + "translation_m": 4.0330699471902714e-08, + "rotation_deg": 2.7706147186959257e-07 + }, + { + "cost": 125.63045335315196, + "success": true, + "translation_m": 1.1516332665838399e-10, + "rotation_deg": 2.767718681568013e-09 + }, + { + "cost": 125.63045335315192, + "success": true, + "translation_m": 2.220446049250313e-16, + "rotation_deg": 0.0 + } + ] + }, + "bootstrap": { + "runs": 100, + "order": [ + "x_m", + "y_m", + "z_m", + "roll_deg", + "pitch_deg", + "yaw_deg" + ], + "std": [ + 0.004332764631777773, + 0.0052124106362270465, + 0.002294080818689292, + 0.09999053340933307, + 0.10013087210161215, + 0.1488688877903013 + ], + "p025": [ + 1.2918362278137754, + -0.009531330977586527, + 0.7011199682224338, + -0.9599898042168808, + 1.2066688822355272, + -1.2617485460367455 + ], + "p975": [ + 1.3082553293462966, + 0.009443875945124016, + 0.7092373306937458, + -0.5988363907444886, + 1.5590218787244785, + -0.7051603064062103 + ] + } +} \ No newline at end of file diff --git a/results/02_data4_calibration/final_extrinsic_data4.json b/results/02_data4_calibration/final_extrinsic_data4.json new file mode 100644 index 0000000..2bfd4ce --- /dev/null +++ b/results/02_data4_calibration/final_extrinsic_data4.json @@ -0,0 +1,334 @@ +{ + "schema_version": 2, + "success": true, + "message": "`ftol` termination condition is satisfied.", + "convention": "T_body_lidar maps raw LiDAR points into rear-axle body frame", + "equation": "A_ij X = X B_ij", + "measured_extrinsic_used_as_initial": false, + "translation_m": [ + 1.3003760202954853, + -0.001706690964618711, + 0.7048770452870675 + ], + "rotation_rpy_deg_xyz": [ + -0.7918916173570606, + 1.3938232102436765, + -0.9707426305626278 + ], + "quaternion_xyzw": [ + -0.006806709954738454, + 0.01222091143708808, + -0.008386347182892065, + 0.9998669847555559 + ], + "matrix_4x4": [ + [ + 0.9995606370091497, + 0.016604094942673456, + 0.024552738604839263, + 1.3003760202954853 + ], + [ + -0.016936831740812692, + 0.9997666757610401, + 0.01340663150469432, + -0.001706690964618711 + ], + [ + -0.02432440487342451, + -0.013816586729505535, + 0.9996086360464778, + 0.7048770452870675 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "estimation": { + "stations": 34, + "pairs": 26, + "residuals": { + "pairs": 26, + "translation_m": { + "rms": 0.11761746401526753, + "median": 0.05973702338495346, + "p90": 0.12346154791373619, + "p95": 0.2642880752048252, + "max": 0.38818289084930874 + }, + "rotation_deg": { + "rms": 1.2425719632195558, + "median": 0.7690245702483323, + "p90": 1.8136122342812846, + "p95": 1.9548737964733964, + "max": 4.332147922413344 + }, + "per_pair": [ + { + "pair_index": 0, + "translation_m": 0.04628122614893134, + "rotation_deg": 0.6982246240615032 + }, + { + "pair_index": 1, + "translation_m": 0.060020104078054665, + "rotation_deg": 0.3948778403656006 + }, + { + "pair_index": 2, + "translation_m": 0.10360591701372288, + "rotation_deg": 0.30363546700066535 + }, + { + "pair_index": 3, + "translation_m": 0.06188990107567784, + "rotation_deg": 0.5542261589736583 + }, + { + "pair_index": 4, + "translation_m": 0.02429424053491548, + "rotation_deg": 0.5086436052507228 + }, + { + "pair_index": 5, + "translation_m": 0.06697411809016678, + "rotation_deg": 0.7794510927257128 + }, + { + "pair_index": 6, + "translation_m": 0.012085958852730979, + "rotation_deg": 0.7997166092197476 + }, + { + "pair_index": 7, + "translation_m": 0.04528858471141819, + "rotation_deg": 0.868879957697597 + }, + { + "pair_index": 8, + "translation_m": 0.05426127100895971, + "rotation_deg": 1.8644817833901326 + }, + { + "pair_index": 9, + "translation_m": 0.12845158967421863, + "rotation_deg": 1.9850044675011511 + }, + { + "pair_index": 10, + "translation_m": 0.06743761428527982, + "rotation_deg": 0.23695300739340452 + }, + { + "pair_index": 11, + "translation_m": 0.060359774544132216, + "rotation_deg": 0.3380187067759931 + }, + { + "pair_index": 12, + "translation_m": 0.03420362550416907, + "rotation_deg": 0.49547670606543825 + }, + { + "pair_index": 13, + "translation_m": 0.059453942691852245, + "rotation_deg": 0.6142581264077737 + }, + { + "pair_index": 14, + "translation_m": 0.048234437308639966, + "rotation_deg": 1.7627426851724366 + }, + { + "pair_index": 15, + "translation_m": 0.0572558948305829, + "rotation_deg": 0.8826512445544471 + }, + { + "pair_index": 16, + "translation_m": 0.11847150615325375, + "rotation_deg": 4.332147922413344 + }, + { + "pair_index": 17, + "translation_m": 0.05084797298915324, + "rotation_deg": 0.9691629612561474 + }, + { + "pair_index": 18, + "translation_m": 0.03403536387594384, + "rotation_deg": 0.9311969881819248 + }, + { + "pair_index": 19, + "translation_m": 0.05397038183164141, + "rotation_deg": 0.5108403673418249 + }, + { + "pair_index": 20, + "translation_m": 0.10079710084559501, + "rotation_deg": 0.9132399116834199 + }, + { + "pair_index": 21, + "translation_m": 0.0245653967740859, + "rotation_deg": 0.29258746424545673 + }, + { + "pair_index": 22, + "translation_m": 0.06599237622687693, + "rotation_deg": 1.130391129168243 + }, + { + "pair_index": 23, + "translation_m": 0.30956690371502743, + "rotation_deg": 0.7585980477709516 + }, + { + "pair_index": 24, + "translation_m": 0.38818289084930874, + "rotation_deg": 0.6792102747820554 + }, + { + "pair_index": 25, + "translation_m": 0.10874622325422871, + "rotation_deg": 0.8215202229484776 + } + ] + } + }, + "ground": { + "planes": 34, + "body_origin_height_above_ground_m": 0.2335, + "formula": "d_lidar - (R_X n_lidar)^T t_X - body_height" + }, + "linearized_one_sigma": { + "translation_m": [ + 0.00880269284499636, + 0.00901239388348182, + 0.0047231303576790815 + ], + "rotation_deg": [ + 0.08002846787949729, + 0.07607548557648909, + 0.16438009658312316 + ], + "warning": "conditional local estimate; bootstrap is the primary stability check" + }, + "weighted_jacobian_condition_number": 7.44293047593025, + "solver_multistart": { + "runs": 12, + "candidates_relative_to_best": [ + { + "cost": 125.63045335315196, + "success": true, + "translation_m": 2.6261422580681395e-09, + "rotation_deg": 5.414246532613018e-08 + }, + { + "cost": 125.63045335315196, + "success": true, + "translation_m": 1.4824807208067879e-09, + "rotation_deg": 1.72860210982948e-08 + }, + { + "cost": 125.63045335315223, + "success": true, + "translation_m": 2.630839730785566e-09, + "rotation_deg": 6.406686644059802e-08 + }, + { + "cost": 125.63045335315202, + "success": true, + "translation_m": 3.4171046507681323e-09, + "rotation_deg": 6.031782751294924e-08 + }, + { + "cost": 125.63045335315198, + "success": true, + "translation_m": 1.024465800095368e-09, + "rotation_deg": 5.593612335539163e-09 + }, + { + "cost": 125.63045335315205, + "success": true, + "translation_m": 3.3380353081804456e-09, + "rotation_deg": 5.989779005616406e-08 + }, + { + "cost": 125.63045335315195, + "success": true, + "translation_m": 1.3390324575379226e-09, + "rotation_deg": 1.669449907197552e-08 + }, + { + "cost": 125.63045335315194, + "success": true, + "translation_m": 9.664926809065912e-10, + "rotation_deg": 1.725605645088929e-08 + }, + { + "cost": 125.63045335315195, + "success": true, + "translation_m": 1.1236440604027455e-09, + "rotation_deg": 8.844155186013785e-09 + }, + { + "cost": 125.63045335315957, + "success": true, + "translation_m": 4.0330699471902714e-08, + "rotation_deg": 2.7706147186959257e-07 + }, + { + "cost": 125.63045335315196, + "success": true, + "translation_m": 1.1516332665838399e-10, + "rotation_deg": 2.767718681568013e-09 + }, + { + "cost": 125.63045335315192, + "success": true, + "translation_m": 2.220446049250313e-16, + "rotation_deg": 0.0 + } + ] + }, + "bootstrap": { + "runs": 100, + "order": [ + "x_m", + "y_m", + "z_m", + "roll_deg", + "pitch_deg", + "yaw_deg" + ], + "std": [ + 0.004332764631777773, + 0.0052124106362270465, + 0.002294080818689292, + 0.09999053340933307, + 0.10013087210161215, + 0.1488688877903013 + ], + "p025": [ + 1.2918362278137754, + -0.009531330977586527, + 0.7011199682224338, + -0.9599898042168808, + 1.2066688822355272, + -1.2617485460367455 + ], + "p975": [ + 1.3082553293462966, + 0.009443875945124016, + 0.7092373306937458, + -0.5988363907444886, + 1.5590218787244785, + -0.7051603064062103 + ] + } +} \ No newline at end of file diff --git a/results/02_data4_calibration/open3d_gicp/B_estimation.npz b/results/02_data4_calibration/open3d_gicp/B_estimation.npz new file mode 100644 index 0000000..58cec4e Binary files /dev/null and b/results/02_data4_calibration/open3d_gicp/B_estimation.npz differ diff --git a/results/02_data4_calibration/open3d_gicp/B_quality.csv b/results/02_data4_calibration/open3d_gicp/B_quality.csv new file mode 100644 index 0000000..96d43b5 --- /dev/null +++ b/results/02_data4_calibration/open3d_gicp/B_quality.csv @@ -0,0 +1,97 @@ +i,j,rtk_translation_m,rtk_rotation_deg,heldout_inlier_ratio,heldout_inlier_rmse_m,hessian_rank,hessian_condition,reverse_translation_m,reverse_rotation_deg,multistart_success_rate,accepted,rejection_reasons +0,1,1.8477087194158957,24.171297449440786,0.8061657032755298,0.10961296014103376,6,2.7038608113687213,0.004225163540003135,0.15304490677206398,1.0,True, +0,2,2.633731568575307,80.09074797031298,0.7489394523717702,0.116305716193008,6,3.0720058333957385,0.02073003109723772,0.12418344306820694,1.0,True, +0,3,6.923255970100826,79.91583883299243,0.6310283235519265,0.12470979645173065,6,5.235632990817995,0.02154775870989581,0.2539904497958252,1.0,True, +1,2,1.7155362084417105,55.91945052087219,0.7867383512544803,0.11079021393934936,6,3.282529873989152,0.0076823267394430066,0.05080433004685343,1.0,True, +1,3,5.885389341942907,55.74454138355163,0.6794562317367552,0.1190716913809658,6,4.183386002322129,0.024832426027852336,0.29364033194785566,1.0,True, +1,4,2.3031736807956613,106.08652205569953,0.6786112833230006,0.11255015823152649,6,3.2941312581877575,0.007769137931169012,0.07270245476793177,1.0,True, +2,3,4.339151683168145,0.17490913732054883,0.7586776859504132,0.11541610277862563,6,3.730803369806123,0.007879904085793275,0.11659483159946175,1.0,True, +2,4,0.6150408096900305,50.167071534827386,0.7854572527608884,0.1098649389241601,6,2.641287751481569,0.017042953274278242,0.09383247792992147,1.0,True, +2,5,5.894923525501676,8.735318060700383,0.7074574574574575,0.11912871456224478,6,3.8527093190832473,0.016641241123247028,0.24777402858141082,1.0,True, +3,4,3.9735035126146885,50.34198067214791,0.6974624291697462,0.1172763088894914,6,3.5010457716923225,0.012148721219467648,0.2079308684382429,1.0,True, +3,5,2.3619393178889707,8.910227198020932,0.7962985964476462,0.10646082199215777,6,3.0377458538379902,0.011008298723511818,0.08217077610411756,1.0,True, +3,6,2.2300116834828536,47.63555775102664,0.8376509054325956,0.10956583416752592,6,3.1930663579156233,0.001222821038316072,0.09207521511761255,1.0,True, +4,5,5.370771070097231,41.431753474126985,0.6652516676773802,0.12322094568314959,6,4.985227704290952,0.005399786589867114,0.1389350777589359,1.0,True, +4,6,6.142548765456278,97.97753842317456,0.6529585072428186,0.11878586101480827,6,5.324803753668097,0.011377811219747914,0.20418431358287809,1.0,True, +4,7,5.314106070657687,123.28910472998356,0.6964418087472202,0.11691192595448072,6,4.414726450762486,0.017641796253111963,0.10886712169052283,1.0,True, +5,6,1.9357867378988893,56.54578494904757,0.7526921648718901,0.10924852668609378,6,3.289802074469556,0.012374747586501101,0.14461856068326442,1.0,True, +5,7,0.19501559913675365,81.85735125585654,0.7833561729164071,0.11683079277948674,6,2.8807765869032655,0.0136898748124479,0.2000656277647698,1.0,True, +5,8,1.8038807059856978,172.47951556359365,0.7410703250525275,0.11436945722491815,6,3.9768956884456648,0.020336999081352437,0.07548452187379719,1.0,True, +6,7,2.130456053070114,25.311566306808988,0.8497729566094854,0.10415909908074772,6,3.375936129784756,0.008986805974948919,0.1309947950641294,1.0,True, +6,8,0.24494500622098103,115.93373061454483,0.7678928928928929,0.11166725079781287,6,3.2609205733873607,0.010085391730565987,0.11752836996157842,1.0,True, +6,9,8.025985916230132,103.90638727582186,0.6071384156199477,0.12594282886521954,6,6.882498483502561,0.01655440444551025,0.4345945520890901,1.0,True, +7,8,1.9962664218365056,90.62216430773583,0.8299748110831234,0.10748525688830209,6,3.0071179226782414,0.007106461978852689,0.10698728473689886,1.0,True, +7,9,7.8811064994361235,78.59482096901284,0.6188509200150206,0.1271320507839345,6,6.716979637303383,0.026230622734929154,0.28112746782878123,1.0,True, +7,10,7.620696678413973,134.60031955305035,0.5757088027733069,0.1313446077529101,6,5.755535843660075,0.012710332356906473,0.2297418063823675,1.0,True, +8,9,7.803713858547152,12.027343338722998,0.6326834719980131,0.12084265385763356,6,5.539689880493177,0.02518064403521875,0.3859647522318924,1.0,True, +8,10,8.062504137991457,43.97815524531457,0.6163861933423412,0.12936028463965984,6,4.789005902863088,0.011327540721525892,0.17059480981566058,1.0,True, +8,11,11.084531710563947,22.606708130954026,0.5371195721380364,0.13463285672049757,6,5.833003178860405,0.017887959781482814,0.14919899299178907,1.0,True, +9,10,2.04815062353057,56.00549858403758,0.6543345543345543,0.10729272360686735,6,3.3788563349731584,0.008725655639009402,0.02870462611907292,1.0,True, +9,11,4.738677237611319,34.634051469677026,0.5818780055682106,0.11717687815100752,6,3.555986532172074,0.009813025835682346,0.0603546019895227,1.0,True, +9,12,7.170741483679294,16.35622721712263,0.5379123584441162,0.12645695585785732,6,4.882558096197038,0.008862930161052695,0.11566409877698863,1.0,True, +10,11,3.2047552083250137,21.371447114360556,0.7118898623279099,0.1192865608074921,6,3.2202034715576238,0.0029529340190147615,0.0041769080934441144,1.0,True, +10,12,6.291813977735496,39.64927136691496,0.6120311738918656,0.1252565212812615,6,4.691686416856199,0.005686910809265337,0.10204044727301474,1.0,True, +10,13,10.199392557022867,72.41150002956134,0.516551290119572,0.1354903305714049,6,7.346543684414892,0.01356504272158301,0.3255230434099281,1.0,True, +11,12,3.467398797536633,18.277824252554396,0.650555275113579,0.12104882943540958,6,4.612247786063486,0.003583199374499245,0.03300207707174736,1.0,True, +11,13,7.516502113110916,51.04005291520078,0.5698054068172914,0.12858662743221627,6,7.539783468898054,0.016001435752891854,0.11059625579949509,1.0,True, +11,14,3.767517331528496,20.548768889074672,0.6420881321982974,0.12414062948335584,6,4.9522650472668115,0.012369101516230236,0.018705060406060074,1.0,True, +12,13,4.049286119591895,32.762228662646386,0.6972966112450819,0.11680896213116294,6,4.282247993741361,0.011410238767832601,0.04779713993430858,1.0,True, +12,14,0.97948616772873,2.2709446365202806,0.8749086479902558,0.09521299965540617,6,3.309695139564419,0.006159472215773642,0.014929948455572307,1.0,True, +12,15,4.286747470271891,25.863710300929224,0.7022030893897189,0.11797995277580095,6,4.2772327867721325,0.008495008365045943,0.102782991447036,1.0,True, +13,14,4.006260191078547,30.491284026126113,0.6955810147299509,0.1145595612270532,6,3.350289886810732,0.010228664633443074,0.03515966054944097,1.0,True, +13,15,0.9562774815922267,6.898518361717157,0.868300353819945,0.10454213568084784,6,3.243735713395398,0.0023750253827712867,0.010725047644197173,1.0,True, +13,16,3.565173336606111,18.944899794614482,0.7265456392027422,0.10962529664062398,6,3.522751424445623,0.008958927594995584,0.0304143851242741,1.0,True, +14,15,4.019575892829469,23.592765664408944,0.7120070334086913,0.11868441290330693,6,4.620592469502459,0.002571958018982041,0.05506919751152759,1.0,True, +14,16,7.5676649485439835,49.43618382074059,0.5918615984405458,0.12229328437386527,6,7.149509813179243,0.014273957859022303,0.25325650727956367,1.0,True, +14,17,5.910977627463022,0.8461207481731591,0.6694009445687298,0.12443900216431929,6,5.157741429696001,0.017895201000461415,0.10920228290609475,1.0,True, +15,16,3.7301261399251735,25.84341815633164,0.702887537993921,0.11495230769293868,6,3.540289976352534,0.013545291843393993,0.033466251783377816,1.0,True, +15,17,2.2049738368271745,24.438886412582093,0.7429531936901991,0.11679524427533879,6,3.526664394280145,0.00989411002791081,0.07786907370564648,1.0,True, +15,18,4.7000039832559155,3.452521908779401,0.7209645010046886,0.11716134583909153,6,4.125231895423432,0.011654729311847106,0.13683586564190353,1.0,True, +16,17,3.368526196086246,50.282304568913744,0.618922305764411,0.11254196340939995,6,4.068632188828396,0.03104786021350874,0.10375098145235381,1.0,True, +16,18,3.5240348999326185,22.39089624755224,0.6890156918687589,0.11084024896736888,6,4.42116710884217,0.01556225520371614,0.02495881796886513,1.0,True, +16,19,2.146829294717985,30.035090485266103,0.8685060899826,0.10135543575024519,6,2.92007223300188,0.002952251383831446,0.02753369989560042,1.0,True, +17,18,2.640403049812329,27.891408321361506,0.7697708305735859,0.10648049893472207,6,3.7928223564531667,0.010582276181446382,0.039599051949106026,1.0,True, +17,19,3.933985934417215,80.31739505417984,0.6293759512937596,0.1095449771750205,6,3.6483069293931876,0.012240937390583118,0.060306184678878015,1.0,True, +17,20,4.2254212089887,152.98392843416656,0.6014520938674964,0.12300562605352797,6,4.719447385686107,1.3272837904090529,0.4474442011368189,1.0,False,forward_reverse_translation +18,19,2.4460967931915643,52.425986732818345,0.6827314510833881,0.10834806615100012,6,3.5073857685652805,0.012418496053917759,0.11905018881098527,1.0,True, +18,20,6.593931011285688,125.09252011280485,0.5756313809779688,0.1265759478434112,6,5.389095141151797,0.012917057356045326,0.24042373011343365,1.0,True, +18,21,11.793089868757727,175.70238585456048,0.4044519656339495,0.14396876383759685,6,10.041635341774429,0.06610149517267662,0.6118050873537593,1.0,False,forward_reverse_rotation +19,20,6.650720121741557,72.6665333799865,0.6234734541714874,0.12775305804057488,6,5.958603794025073,0.009237066767190358,0.22540488888099894,1.0,True, +19,21,12.053580264031138,123.27639912174077,0.3788200074840963,0.14687803396129923,6,10.170069582593054,0.1645149893124099,1.1204113986936788,1.0,False,forward_reverse_translation;forward_reverse_rotation +19,22,14.836246959975925,128.85294276465592,0.3215252152521525,0.1505833656059155,6,15.25410245430046,0.08605091089946505,0.48945936193054473,1.0,False,heldout_inlier_ratio;forward_reverse_translation +20,21,5.40286046809103,50.60986574175429,0.6596992097884272,0.12147955429086157,6,4.0820327359553845,0.014725537493637062,0.1988422472286775,1.0,True, +20,22,8.200956565000565,56.18640938466938,0.5739414499308958,0.13255415786946786,6,5.328486341352201,0.006040617548520927,0.19706632354687328,1.0,True, +20,23,5.175118275082073,70.79178325235415,0.6456945156330087,0.12075756038041646,6,3.9642702950866386,0.022949011013485506,0.1911210947924365,1.0,True, +21,22,2.8644847627909416,5.57654364291509,0.7716237647919971,0.11632271358541554,6,2.79620153032919,0.00996357879827298,0.15332892195322273,1.0,True, +21,23,1.2936223973175418,20.18191751059984,0.8576224819696593,0.09865676260631216,6,3.0367950693845156,0.0039225733250952055,0.00898487649368532,1.0,True, +21,24,2.3128500583741403,54.59467208208593,0.7715940569126165,0.1136150455355286,6,2.76815824933335,0.007475673605589086,0.042277690012993266,1.0,True, +22,23,3.7194009250537223,14.605373867684753,0.7396689147762109,0.11702962848624102,6,3.4148047250889095,0.01814015943430581,0.11847321816106485,1.0,True, +22,24,4.786117710081478,49.01812843917083,0.6983240223463687,0.11898873157361621,6,3.6334655936865663,0.013438931050857202,0.08244161259412694,1.0,True, +22,25,2.3747421598149763,12.391903814042255,0.736861094407697,0.11586394710110075,6,2.383007054117407,0.018559552524775386,0.0645260279790244,1.0,True, +23,24,1.0880644725336985,34.41275457148609,0.7853164556962026,0.1128725442321241,6,2.409921828847164,0.002195759849115173,0.032112959181416705,1.0,True, +23,25,5.033935954106079,2.213470053642494,0.6881127450980392,0.12303206700403986,6,2.9363727218037994,0.004939188019100004,0.12964064637100806,1.0,True, +23,26,5.765534437288107,40.730927532824346,0.6852618757612667,0.12040544972155913,6,3.0590065093977192,0.006032445250250899,0.14039335223024835,1.0,True, +24,25,6.097212810998921,36.62622462512857,0.677667493796526,0.12346315805814134,6,3.6286524357748307,0.02347922689116974,0.16273859629352566,1.0,True, +24,26,6.852918693116795,6.318172961338249,0.6530209617755857,0.12710147612984257,6,3.5331859775372005,0.013311199903818141,0.18193579850152686,1.0,True, +24,27,7.47982907414204,31.60254826458195,0.6649014778325123,0.1248115961442785,6,4.10006355979974,0.017872821205486625,0.1680556511699705,1.0,True, +25,26,1.2882746074869595,42.944397586466835,0.9127837514934289,0.0958142916589384,6,2.9017658682436953,0.003534148840172682,0.018440169300173608,1.0,True, +25,27,1.7666235781584831,68.22877288971053,0.8510739856801909,0.10418150333394147,6,2.368253417089997,0.006103232696002816,0.13366555345652814,1.0,True, +25,28,2.1807182972588706,88.09106909546726,0.8853518429870751,0.10761251229652005,6,2.6372860976794645,0.003483231665912094,0.0369774420199415,1.0,True, +26,27,0.6269948654714946,25.284375303243706,0.9183867141162515,0.09074909570650921,6,2.8142315359282506,0.00040199505815422204,0.011554314408129918,1.0,True, +26,28,0.9431372257108486,45.14667150900044,0.8853200095170116,0.10604184939655073,6,2.656402027789519,0.007320240476189879,0.12930335868605478,1.0,True, +26,29,1.129925637779203,87.41573662125148,0.7880466815984911,0.10871274240898265,6,3.111957466886604,0.0063952430610542755,0.039517035902874385,1.0,True, +27,28,0.44809323479571145,19.862296205756735,0.9289448669201521,0.0850509551532673,6,2.96325286846982,0.005157655135591474,0.022666807877311387,1.0,True, +27,29,1.160064136065596,62.13136131800778,0.7872365477452019,0.10455513464835667,6,2.9621627623005296,0.011650639607012138,0.1624719134077532,1.0,True, +27,30,4.25412615059095,152.09392556214777,0.04792444029850746,0.15706827084964883,6,3.4115087753552786,2.5641513880069633,2.874944882076104,0.0,False,heldout_inlier_ratio;forward_reverse_translation;forward_reverse_rotation;multistart_instability +28,29,1.5995723610319212,42.26906511225104,0.8000944621560987,0.1086547547358129,6,3.1466224100058553,0.0011394164967304414,0.02119627748719656,1.0,True, +28,30,4.295353381127667,132.23162935639104,0.042095416276894296,0.16025490727880456,6,4.631028587407634,2.5607552487652696,2.17230408479254,0.0,False,heldout_inlier_ratio;heldout_inlier_rmse;forward_reverse_translation;forward_reverse_rotation;multistart_instability +28,31,5.754426930327516,158.8421298011293,0.7465330381074466,0.1066966653439246,6,2.402598366822474,0.00635764905956918,0.040016615214377715,1.0,True, +29,30,4.099530130205247,89.96256424413995,0.7248812145092132,0.10870831469083347,6,2.9471223804737057,0.00465638537716095,0.12465763189227934,1.0,True, +29,31,4.890018768530818,116.57306468887772,0.7243012243012243,0.11138751941762699,6,2.7645021322697017,0.004263906321896464,0.046637396086304225,1.0,True, +29,32,4.464737187763289,159.39493219688632,0.6956070563818748,0.1103354081949904,6,3.227012588611917,0.011088061861347823,0.34561739459504637,1.0,True, +30,31,2.3862917603439455,26.61050044473775,0.8185562292643862,0.0961579573295129,6,2.899558208444643,0.004999163455591531,0.0213847958734735,1.0,True, +30,32,1.1507634071714652,69.43236795274659,0.8041343079031521,0.099533431536842,6,2.6146168742247573,0.003171376495143,0.02376737774843464,1.0,True, +30,33,2.4361832484951105,160.7145717128102,0.0824534345711235,0.13003518012314966,6,7.2913036106936,1.3743823383381788,1.9837113244583153,0.0,False,heldout_inlier_ratio;forward_reverse_translation;forward_reverse_rotation;multistart_instability +31,32,1.2514382602180638,42.82186750800885,0.8157085941946499,0.09925944770258267,6,3.0485411400768245,0.004719596234887584,0.06146741991681224,1.0,True, +31,33,0.641507519046697,134.10407126807203,0.0911563017261764,0.12702324561674966,6,7.541483837366941,2.816294381538612,3.333105317420589,0.0,False,heldout_inlier_ratio;forward_reverse_translation;forward_reverse_rotation;multistart_instability +32,33,1.4370687242949811,91.2822037600631,0.7569928006609229,0.10008740880870744,6,3.6611044282667207,2.988193350509204,2.696443494598379,1.0,False,forward_reverse_translation;forward_reverse_rotation diff --git a/results/02_data4_calibration/open3d_gicp/B_quality.json b/results/02_data4_calibration/open3d_gicp/B_quality.json new file mode 100644 index 0000000..8a1a178 --- /dev/null +++ b/results/02_data4_calibration/open3d_gicp/B_quality.json @@ -0,0 +1,12004 @@ +{ + "schema_version": 2, + "backend": "open3d", + "transform_convention": "B_ij=T_Li_Lj maps station j points into station i", + "raw_point_field": "points_raw", + "measured_extrinsic_used_as_initial": false, + "stations": 34, + "candidate_pairs": 96, + "accepted_pairs": 87, + "parameters": { + "command": "pairs", + "backend": "open3d", + "frames": "\\data4_prepared\\frames_all", + "body": "\\data4_prepared\\body_poses_rear_gga_raw_rear_to_front.csv", + "output": "results\\02_data4_calibration\\open3d_gicp\\B_estimation.npz", + "quality_json": "results\\02_data4_calibration\\open3d_gicp\\B_quality.json", + "quality_csv": "results\\02_data4_calibration\\open3d_gicp\\B_quality.csv", + "time_offset": 0.0, + "min_stations": 30, + "min_pairs": 20, + "min_gap": 1, + "max_gap": 3, + "min_translation": 0.5, + "min_rotation": 3.0, + "min_range": 2.0, + "max_range": 50.0, + "z_min": -0.6, + "z_max": 5.0, + "min_roi_points": 1000, + "holdout_fraction": 0.2, + "voxels": [ + 0.3, + 0.15, + 0.08 + ], + "correspondences": [ + 1.2, + 0.5, + 0.25 + ], + "iterations": 40, + "threads": 8, + "evaluation_distance": 0.25, + "min_inlier_ratio": 0.35, + "max_inlier_rmse": 0.16, + "max_hessian_condition": 100000000.0, + "reverse_translation_tolerance": 0.08, + "reverse_rotation_tolerance": 0.5, + "multistart": 1, + "multistart_translation_sigma": 0.3, + "multistart_rotation_sigma": 3.0, + "multistart_translation_tolerance": 0.08, + "multistart_rotation_tolerance": 0.5, + "min_multistart_success": 0.5, + "seed": 20260721 + }, + "accepted_loop_closure": { + "count": 80, + "translation_rms_m": 0.018166280559552293, + "translation_p95_m": 0.032032870276120416, + "rotation_rms_deg": 0.2258764385588969, + "rotation_p95_deg": 0.4138842730797386 + }, + "pairs": [ + { + "i": 0, + "j": 1, + "lidar_time_i": 1784783825.357129, + "lidar_time_j": 1784783905.353819, + "frame_counter_i": 382, + "frame_counter_j": 1182, + "rtk_translation_m": 1.8477087194158957, + "rtk_rotation_deg": 24.171297449440786, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9124833454993864, + 0.4087832678693191, + 0.016443360250509458, + 1.607248674769736 + ], + [ + -0.4087570975022782, + 0.9126290990659016, + -0.005075704845147599, + -1.2736994951406013 + ], + [ + -0.017081552264378075, + -0.002089844071314855, + 0.9998519155975032, + 0.015083257286964366 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8912, + "backend_objective": 121.7846872438052, + "backend_elapsed_sec": 0.6735248000186402, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9747102212855637, + "inlier_rmse_m": 0.29732734644907166, + "target_points": 4680, + "source_points": 4745 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9067073170731708, + "inlier_rmse_m": 0.17788239925150534, + "target_points": 8116, + "source_points": 8200 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7850599013389711, + "inlier_rmse_m": 0.11689845025056375, + "target_points": 11527, + "source_points": 11352 + } + ], + "heldout_symmetric": { + "evaluated": 7785, + "inliers": 6276, + "inlier_ratio": 0.8061657032755298, + "inlier_rmse_m": 0.10961296014103376, + "median_m": 0.10290553406024071, + "p90_m": 0.4159689941694349, + "p95_m": 0.660543787598926 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4570.928424341017, + 6091.915500186119, + 8218.29586154031, + 8912.000000000004, + 9908.615279058009, + 12359.154238147052 + ], + "effective_rank": 6, + "scaled_condition_number": 2.7038608113687213, + "weakest_scaled_direction": [ + 0.1404548149582046, + -0.954489788282662, + -0.022808000846886767, + 0.15027831562051963, + 0.02720394885209864, + -0.2130207903882992 + ] + }, + "forward_reverse": { + "translation_m": 0.004225163540003135, + "rotation_deg": 0.15304490677206398 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.88711357575485e-15, + "rotation_deg": 3.644959732437771e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 0, + "j": 2, + "lidar_time_i": 1784783825.357129, + "lidar_time_j": 1784783971.0503054, + "frame_counter_i": 382, + "frame_counter_j": 1839, + "rtk_translation_m": 2.633731568575307, + "rtk_rotation_deg": 80.09074797031298, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.18415074469542553, + 0.9828874303255367, + -0.004560979739464177, + 0.1285797386588232 + ], + [ + -0.9822201459742468, + 0.18384945289183605, + -0.037986359574273536, + -3.6632910616894554 + ], + [ + -0.036497781719628336, + 0.01147510258935272, + 0.9992678489524749, + -0.05090295442714565 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8376, + "backend_objective": 121.70157639854357, + "backend_elapsed_sec": 1.1375933999952395, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9193615257048093, + "inlier_rmse_m": 0.36012160429722173, + "target_points": 4680, + "source_points": 4824 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8147617341454676, + "inlier_rmse_m": 0.18234917834663997, + "target_points": 8116, + "source_points": 8373 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7151028771450525, + "inlier_rmse_m": 0.1205396059773973, + "target_points": 11527, + "source_points": 11713 + } + ], + "heldout_symmetric": { + "evaluated": 7779, + "inliers": 5826, + "inlier_ratio": 0.7489394523717702, + "inlier_rmse_m": 0.116305716193008, + "median_m": 0.12166881280745838, + "p90_m": 0.7253251436615892, + "p95_m": 1.1864732045548871 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4510.301945304857, + 5697.075682531042, + 7337.131383859359, + 8376.000000000002, + 10950.97395174291, + 13855.673886352668 + ], + "effective_rank": 6, + "scaled_condition_number": 3.0720058333957385, + "weakest_scaled_direction": [ + 0.17845194667543746, + -0.9529192811024751, + -0.06046276323885731, + 0.21322516669365418, + 0.04590670542155498, + -0.09418918928525147 + ] + }, + "forward_reverse": { + "translation_m": 0.02073003109723772, + "rotation_deg": 0.12418344306820694 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.3255766586637668e-15, + "rotation_deg": 3.9062251487094956e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 0, + "j": 3, + "lidar_time_i": 1784783825.357129, + "lidar_time_j": 1784784059.7468228, + "frame_counter_i": 382, + "frame_counter_j": 2726, + "rtk_translation_m": 6.923255970100826, + "rtk_rotation_deg": 79.91583883299243, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.18112144418244783, + 0.9834422822049228, + -0.006024950525822739, + 1.0114106687503623 + ], + [ + -0.9828026468188434, + 0.18077276862125635, + -0.03768505712988331, + -7.9180064229089 + ], + [ + -0.035971931601476256, + 0.012746909295193681, + 0.9992715028661021, + -0.09176761115724737 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7222, + "backend_objective": 119.47233078198428, + "backend_elapsed_sec": 0.7550125000125263, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8704347826086957, + "inlier_rmse_m": 0.4030752687532109, + "target_points": 4680, + "source_points": 4600 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7492377119160873, + "inlier_rmse_m": 0.2074968430810786, + "target_points": 8116, + "source_points": 8199 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6172122040851209, + "inlier_rmse_m": 0.12861894002776791, + "target_points": 11527, + "source_points": 11701 + } + ], + "heldout_symmetric": { + "evaluated": 7838, + "inliers": 4946, + "inlier_ratio": 0.6310283235519265, + "inlier_rmse_m": 0.12470979645173065, + "median_m": 0.16249583491150005, + "p90_m": 1.127892426892725, + "p95_m": 1.6840798396493042 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3116.530870928646, + 3616.077459867839, + 4530.932260100788, + 7221.999999999998, + 14064.642102863943, + 16317.011844736757 + ], + "effective_rank": 6, + "scaled_condition_number": 5.235632990817995, + "weakest_scaled_direction": [ + -0.0889517997231584, + -0.8727994203652213, + -0.07100183172264181, + 0.20279792874891328, + 0.014220955059010583, + -0.42888023218672017 + ] + }, + "forward_reverse": { + "translation_m": 0.02154775870989581, + "rotation_deg": 0.2539904497958252 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.561946379312358e-15, + "rotation_deg": 4.082099171790095e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 1, + "j": 2, + "lidar_time_i": 1784783905.353819, + "lidar_time_j": 1784783971.0503054, + "frame_counter_i": 1182, + "frame_counter_j": 1839, + "rtk_translation_m": 1.7155362084417105, + "rtk_rotation_deg": 55.91945052087219, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5703621590849038, + 0.821348578612324, + -0.008574374351692447, + -0.37061613600444165 + ], + [ + -0.821058167224997, + 0.5698001829877843, + -0.034514308630153326, + -2.7849967100804527 + ], + [ + -0.023462598260563367, + 0.026725715679918577, + 0.9993674212241758, + -0.06696246882094566 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8688, + "backend_objective": 119.12615101554276, + "backend_elapsed_sec": 0.671062899986282, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.929726368159204, + "inlier_rmse_m": 0.33697921087708393, + "target_points": 4745, + "source_points": 4824 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8418726860145707, + "inlier_rmse_m": 0.18138320701055788, + "target_points": 8200, + "source_points": 8373 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.741739947067361, + "inlier_rmse_m": 0.11709642843192421, + "target_points": 11352, + "source_points": 11713 + } + ], + "heldout_symmetric": { + "evaluated": 7812, + "inliers": 6146, + "inlier_ratio": 0.7867383512544803, + "inlier_rmse_m": 0.11079021393934936, + "median_m": 0.10615299310778248, + "p90_m": 0.555946571740533, + "p95_m": 0.969515419595336 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4247.758040296146, + 6590.793258482112, + 7765.743344720985, + 8688.0, + 10671.432788876968, + 13943.392664749714 + ], + "effective_rank": 6, + "scaled_condition_number": 3.282529873989152, + "weakest_scaled_direction": [ + 0.7143715770369833, + -0.5685039425704193, + -0.01437367248859399, + 0.09525659775198415, + 0.11006738261592135, + 0.3808953486347275 + ] + }, + "forward_reverse": { + "translation_m": 0.0076823267394430066, + "rotation_deg": 0.05080433004685343 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.091906389296114e-15, + "rotation_deg": 1.2370917720180042e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 1, + "j": 3, + "lidar_time_i": 1784783905.353819, + "lidar_time_j": 1784784059.7468228, + "frame_counter_i": 1182, + "frame_counter_j": 2726, + "rtk_translation_m": 5.885389341942907, + "rtk_rotation_deg": 55.74454138355163, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5677117937717027, + 0.8231722635499711, + -0.009525950584280525, + 2.1747982089262523 + ], + [ + -0.8228726633723463, + 0.567089527482333, + -0.03591723394647397, + -6.307683293538051 + ], + [ + -0.024164003952513127, + 0.0282292816395109, + 0.9993093657977496, + -0.055834217336639576 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7559, + "backend_objective": 116.91522311551721, + "backend_elapsed_sec": 0.6891992000164464, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.89, + "inlier_rmse_m": 0.3986148224803752, + "target_points": 4745, + "source_points": 4600 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7724112696670326, + "inlier_rmse_m": 0.201735357046292, + "target_points": 8200, + "source_points": 8199 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6460131612682677, + "inlier_rmse_m": 0.12436648465333977, + "target_points": 11352, + "source_points": 11701 + } + ], + "heldout_symmetric": { + "evaluated": 7871, + "inliers": 5348, + "inlier_ratio": 0.6794562317367552, + "inlier_rmse_m": 0.1190716913809658, + "median_m": 0.14051140425269928, + "p90_m": 0.9280799954286513, + "p95_m": 1.4150638702240643 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3358.8141228463414, + 3883.3604923113085, + 5142.063251551352, + 7559.0, + 11941.83472714739, + 14051.215985917264 + ], + "effective_rank": 6, + "scaled_condition_number": 4.183386002322129, + "weakest_scaled_direction": [ + 0.6588843053936845, + -0.6731253792992864, + -0.06228269912551105, + 0.1403779452877159, + 0.11178388486547487, + 0.27693493242979667 + ] + }, + "forward_reverse": { + "translation_m": 0.024832426027852336, + "rotation_deg": 0.29364033194785566 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.810912295584256e-15, + "rotation_deg": 2.918755522343551e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 1, + "j": 4, + "lidar_time_i": 1784783905.353819, + "lidar_time_j": 1784784149.2434597, + "frame_counter_i": 1182, + "frame_counter_j": 3621, + "rtk_translation_m": 2.3031736807956613, + "rtk_rotation_deg": 106.08652205569953, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.2792586016320975, + 0.9595668478601869, + -0.035300111928288046, + -1.6343974322405281 + ], + [ + -0.9583479302727091, + -0.28081892958279203, + -0.05205740418028683, + -3.5931015258593946 + ], + [ + -0.059865498882916174, + 0.019292311308886003, + 0.9980200041922311, + -0.13672808218991864 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7720, + "backend_objective": 110.04688896458612, + "backend_elapsed_sec": 0.7995364000089467, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8763514841753489, + "inlier_rmse_m": 0.4049968642637917, + "target_points": 4745, + "source_points": 5087 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7437456160860416, + "inlier_rmse_m": 0.19028982821036353, + "target_points": 8200, + "source_points": 8554 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6436015006252606, + "inlier_rmse_m": 0.1193933765469775, + "target_points": 11352, + "source_points": 11995 + } + ], + "heldout_symmetric": { + "evaluated": 8065, + "inliers": 5473, + "inlier_ratio": 0.6786112833230006, + "inlier_rmse_m": 0.11255015823152649, + "median_m": 0.13047764634417147, + "p90_m": 1.0497407641801448, + "p95_m": 1.563911048890568 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3967.7384126797183, + 6296.931320752373, + 7292.601523964159, + 7719.999999999999, + 9605.642013811417, + 13070.251129520537 + ], + "effective_rank": 6, + "scaled_condition_number": 3.2941312581877575, + "weakest_scaled_direction": [ + 0.629765991931893, + -0.6489876134085772, + -0.022216375998354243, + 0.12351099951532632, + 0.10636918945679678, + 0.3938869561419962 + ] + }, + "forward_reverse": { + "translation_m": 0.007769137931169012, + "rotation_deg": 0.07270245476793177 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.450677444825646e-15, + "rotation_deg": 2.7205656615342872e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 3, + "lidar_time_i": 1784783971.0503054, + "lidar_time_j": 1784784059.7468228, + "frame_counter_i": 1839, + "frame_counter_j": 2726, + "rtk_translation_m": 4.339151683168145, + "rtk_rotation_deg": 0.17490913732054883, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.999991319380825, + 0.003378147225644592, + 0.0024391154786888402, + 4.343951852265247 + ], + [ + -0.003378296881480377, + 0.999994291900637, + 5.7239162451469864e-05, + 0.08240890312795224 + ], + [ + -0.0024389081936575054, + -6.547872179532494e-05, + 0.9999970237152489, + 0.09238422580396248 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8533, + "backend_objective": 124.04338155685502, + "backend_elapsed_sec": 0.8489924999885261, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9547826086956521, + "inlier_rmse_m": 0.34565071620542903, + "target_points": 4824, + "source_points": 4600 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8579095011586779, + "inlier_rmse_m": 0.1910296234806383, + "target_points": 8373, + "source_points": 8199 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7292539099222288, + "inlier_rmse_m": 0.12056907407753296, + "target_points": 11713, + "source_points": 11701 + } + ], + "heldout_symmetric": { + "evaluated": 7865, + "inliers": 5967, + "inlier_ratio": 0.7586776859504132, + "inlier_rmse_m": 0.11541610277862563, + "median_m": 0.11579828430632305, + "p90_m": 0.5963558285722059, + "p95_m": 0.9938464692460102 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3882.109898512825, + 5437.98649130646, + 6774.243136412574, + 8532.999999999998, + 11927.346365475993, + 14483.388691329354 + ], + "effective_rank": 6, + "scaled_condition_number": 3.730803369806123, + "weakest_scaled_direction": [ + 0.9256360542292418, + -0.19327966065111107, + -0.028638752245179484, + 0.024698876028721752, + 0.15989145149735912, + -0.28079419335224304 + ] + }, + "forward_reverse": { + "translation_m": 0.007879904085793275, + "rotation_deg": 0.11659483159946175 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.1597090274781069e-14, + "rotation_deg": 2.2636696567291275e-13 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 4, + "lidar_time_i": 1784783971.0503054, + "lidar_time_j": 1784784149.2434597, + "frame_counter_i": 1839, + "frame_counter_j": 3621, + "rtk_translation_m": 0.6150408096900305, + "rtk_rotation_deg": 50.167071534827386, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6292283506890186, + 0.7772079210651236, + -0.004419289853054612, + -0.06037445948293375 + ], + [ + -0.7769405172797831, + 0.6288389197498825, + -0.030414562578222216, + -1.5018669787964878 + ], + [ + -0.02085941749426873, + 0.022571230392464278, + 0.9995276005495645, + -0.016724501583587736 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8927, + "backend_objective": 118.19685080134848, + "backend_elapsed_sec": 0.6347673000127543, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.957145665421663, + "inlier_rmse_m": 0.3166949336818787, + "target_points": 4824, + "source_points": 5087 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8731587561374795, + "inlier_rmse_m": 0.18589209082209873, + "target_points": 8373, + "source_points": 8554 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7442267611504794, + "inlier_rmse_m": 0.11506683968984271, + "target_points": 11713, + "source_points": 11995 + } + ], + "heldout_symmetric": { + "evaluated": 8059, + "inliers": 6330, + "inlier_ratio": 0.7854572527608884, + "inlier_rmse_m": 0.1098649389241601, + "median_m": 0.1080405056113027, + "p90_m": 0.4846096342206315, + "p95_m": 0.7508272406722126 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4973.178708122637, + 7635.867578439772, + 8927.0, + 9133.365101136127, + 9441.611777821116, + 13135.596007693253 + ], + "effective_rank": 6, + "scaled_condition_number": 2.641287751481569, + "weakest_scaled_direction": [ + 0.9581967989778387, + 0.16346925646298, + 0.00329099831049311, + -0.03407435681613071, + 0.1972613613793352, + 0.12268968768614129 + ] + }, + "forward_reverse": { + "translation_m": 0.017042953274278242, + "rotation_deg": 0.09383247792992147 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.5142854222490728e-15, + "rotation_deg": 1.239157671383907e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 5, + "lidar_time_i": 1784783971.0503054, + "lidar_time_j": 1784784224.2408776, + "frame_counter_i": 1839, + "frame_counter_j": 4371, + "rtk_translation_m": 5.894923525501676, + "rtk_rotation_deg": 8.735318060700383, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9888798584604905, + 0.14861505655550875, + 0.005494587897629577, + 5.573060338161258 + ], + [ + -0.14860716924014655, + 0.9888946353451434, + -0.0018191855392335858, + -2.128175157319343 + ], + [ + -0.005703926857196394, + 0.0009824207849427802, + 0.9999832498936211, + 0.09435783689948411 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8063, + "backend_objective": 121.26392622624698, + "backend_elapsed_sec": 1.204426499985857, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9105217766278568, + "inlier_rmse_m": 0.37941227871451855, + "target_points": 4824, + "source_points": 4638 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8008349705304518, + "inlier_rmse_m": 0.19790572332369388, + "target_points": 8373, + "source_points": 8144 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6792182629938506, + "inlier_rmse_m": 0.12263586053133406, + "target_points": 11713, + "source_points": 11871 + } + ], + "heldout_symmetric": { + "evaluated": 7992, + "inliers": 5654, + "inlier_ratio": 0.7074574574574575, + "inlier_rmse_m": 0.11912871456224478, + "median_m": 0.13161180955394386, + "p90_m": 0.763536316327384, + "p95_m": 1.2796367011309606 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3768.856744238671, + 4907.756093047072, + 6205.779531004399, + 8062.999999999997, + 11997.693692097588, + 14520.309500818075 + ], + "effective_rank": 6, + "scaled_condition_number": 3.8527093190832473, + "weakest_scaled_direction": [ + 0.8516205342757313, + -0.36459246206899604, + -0.05202383078592718, + 0.06243044948132635, + 0.19068815377050627, + -0.31440227451769237 + ] + }, + "forward_reverse": { + "translation_m": 0.016641241123247028, + "rotation_deg": 0.24777402858141082 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 6.700600662293866e-15, + "rotation_deg": 2.2287436183320685e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 4, + "lidar_time_i": 1784784059.7468228, + "lidar_time_j": 1784784149.2434597, + "frame_counter_i": 2726, + "frame_counter_j": 3621, + "rtk_translation_m": 3.9735035126146885, + "rtk_rotation_deg": 50.34198067214791, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6320383959302255, + 0.7749216717289151, + -0.004885565966439111, + -4.397133705168794 + ], + [ + -0.7746603786543729, + 0.6316317106519097, + -0.030703091733681923, + -1.5995131761862942 + ], + [ + -0.020706612784626342, + 0.023190187230957525, + 0.9995166088680972, + -0.13124589981666174 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7775, + "backend_objective": 118.77394537513572, + "backend_elapsed_sec": 0.6677896000037435, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9156673874582268, + "inlier_rmse_m": 0.394140946532546, + "target_points": 4600, + "source_points": 5087 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7739069441197101, + "inlier_rmse_m": 0.19540520828645833, + "target_points": 8199, + "source_points": 8554 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6481867444768653, + "inlier_rmse_m": 0.1235977009823417, + "target_points": 11701, + "source_points": 11995 + } + ], + "heldout_symmetric": { + "evaluated": 8118, + "inliers": 5662, + "inlier_ratio": 0.6974624291697462, + "inlier_rmse_m": 0.1172763088894914, + "median_m": 0.13132035817090315, + "p90_m": 0.8644149430219845, + "p95_m": 1.3312626239168603 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4054.536206922804, + 5223.36917965103, + 6473.618437295361, + 7775.000000000002, + 11364.074032659659, + 14195.11684342051 + ], + "effective_rank": 6, + "scaled_condition_number": 3.5010457716923225, + "weakest_scaled_direction": [ + 0.9522800830762025, + 0.11220892226905158, + 0.05058803004350543, + -0.014116003231909953, + 0.20505814044941273, + -0.18911517613375647 + ] + }, + "forward_reverse": { + "translation_m": 0.012148721219467648, + "rotation_deg": 0.2079308684382429 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.2525283383123117e-15, + "rotation_deg": 2.1518695944473066e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 5, + "lidar_time_i": 1784784059.7468228, + "lidar_time_j": 1784784224.2408776, + "frame_counter_i": 2726, + "frame_counter_j": 4371, + "rtk_translation_m": 2.3619393178889707, + "rtk_rotation_deg": 8.910227198020932, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9893836285143895, + 0.14532171070747418, + 0.0012790718334064976, + 1.2442614991982979 + ], + [ + -0.14531728735485663, + 0.9893803920362936, + -0.0030538254594377973, + -2.2077202594323104 + ], + [ + -0.0017092757319458404, + 0.0028355336647455554, + 0.999994519047634, + -0.0048488466134743715 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 9071, + "backend_objective": 113.474000993497, + "backend_elapsed_sec": 0.6919846999808215, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9510564898663217, + "inlier_rmse_m": 0.32654207140609, + "target_points": 4600, + "source_points": 4638 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8629666011787819, + "inlier_rmse_m": 0.17746795053925932, + "target_points": 8199, + "source_points": 8144 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7641310757307724, + "inlier_rmse_m": 0.11184603700225404, + "target_points": 11701, + "source_points": 11871 + } + ], + "heldout_symmetric": { + "evaluated": 8051, + "inliers": 6411, + "inlier_ratio": 0.7962985964476462, + "inlier_rmse_m": 0.10646082199215777, + "median_m": 0.09596000236923331, + "p90_m": 0.484811204037213, + "p95_m": 0.7011085403614495 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4435.760688008934, + 7122.86936683215, + 8604.129119207291, + 9070.999999999996, + 10589.288926429066, + 13474.713638616691 + ], + "effective_rank": 6, + "scaled_condition_number": 3.0377458538379902, + "weakest_scaled_direction": [ + 0.9608319986059689, + -0.220986705578402, + -0.00198817640466025, + 0.03515283523472079, + 0.15230712743517377, + 0.059410526629998246 + ] + }, + "forward_reverse": { + "translation_m": 0.011008298723511818, + "rotation_deg": 0.08217077610411756 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.8972738541948013e-15, + "rotation_deg": 1.0226161295408938e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 6, + "lidar_time_i": 1784784059.7468228, + "lidar_time_j": 1784784301.6372502, + "frame_counter_i": 2726, + "frame_counter_j": 5145, + "rtk_translation_m": 2.2300116834828536, + "rtk_rotation_deg": 47.63555775102664, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6772870061114546, + -0.735249933447995, + -0.02626493322478562, + 1.7740013973911537 + ], + [ + 0.7357019435089199, + 0.677082102958797, + 0.017391842055759523, + 0.6213249385951899 + ], + [ + 0.004996165507874993, + -0.031102431056315417, + 0.9995037154071034, + 0.04083951617812816 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 9539, + "backend_objective": 132.3713911436418, + "backend_elapsed_sec": 0.593184299999848, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9644626319190178, + "inlier_rmse_m": 0.28650239278823486, + "target_points": 4600, + "source_points": 4643 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9216512215669755, + "inlier_rmse_m": 0.17307630871826551, + "target_points": 8199, + "source_points": 8309 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.8227531481800932, + "inlier_rmse_m": 0.1178000953923029, + "target_points": 11701, + "source_points": 11594 + } + ], + "heldout_symmetric": { + "evaluated": 7952, + "inliers": 6661, + "inlier_ratio": 0.8376509054325956, + "inlier_rmse_m": 0.10956583416752592, + "median_m": 0.09286190805204038, + "p90_m": 0.3519457305672478, + "p95_m": 0.6303741784816209 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4335.048621956588, + 8157.510996847705, + 9347.496641886986, + 9539.000000000005, + 10640.892047285995, + 13842.097914698064 + ], + "effective_rank": 6, + "scaled_condition_number": 3.1930663579156233, + "weakest_scaled_direction": [ + 0.964193694735429, + -0.1775620596190689, + 0.00907211392937754, + 0.026007140684818703, + 0.133981117015575, + -0.14174843802239048 + ] + }, + "forward_reverse": { + "translation_m": 0.001222821038316072, + "rotation_deg": 0.09207521511761255 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.107791749636883e-15, + "rotation_deg": 1.3643868417777186e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 5, + "lidar_time_i": 1784784149.2434597, + "lidar_time_j": 1784784224.2408776, + "frame_counter_i": 3621, + "frame_counter_j": 4371, + "rtk_translation_m": 5.370771070097231, + "rtk_rotation_deg": 41.431753474126985, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7377607241755659, + -0.6748834541629345, + -0.015538248326307019, + 4.039303684210858 + ], + [ + 0.6750461938138492, + 0.7373886445502595, + 0.02388771872264557, + 3.9981006302936284 + ], + [ + -0.0046636982515908055, + -0.028112456054929163, + 0.9995938874028709, + 0.11263299493156713 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7809, + "backend_objective": 127.01001991640706, + "backend_elapsed_sec": 1.4423731999995653, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9085812850366537, + "inlier_rmse_m": 0.3961198724715249, + "target_points": 5087, + "source_points": 4638 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7766453831041258, + "inlier_rmse_m": 0.19814918375497936, + "target_points": 8554, + "source_points": 8144 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6578215820065706, + "inlier_rmse_m": 0.12753261965570323, + "target_points": 11995, + "source_points": 11871 + } + ], + "heldout_symmetric": { + "evaluated": 8245, + "inliers": 5485, + "inlier_ratio": 0.6652516676773802, + "inlier_rmse_m": 0.12322094568314959, + "median_m": 0.14648034241398247, + "p90_m": 0.975147506162722, + "p95_m": 1.5172482580253346 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3103.694574452784, + 5046.986546739481, + 5811.580279862563, + 7809.000000000002, + 12601.040904103416, + 15472.624178219536 + ], + "effective_rank": 6, + "scaled_condition_number": 4.985227704290952, + "weakest_scaled_direction": [ + 0.723870520577249, + 0.3838510953593598, + -0.01790185340485378, + -0.07665324471152675, + 0.1186541704141166, + -0.5553330510548116 + ] + }, + "forward_reverse": { + "translation_m": 0.005399786589867114, + "rotation_deg": 0.1389350777589359 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0269000349351378e-14, + "rotation_deg": 1.1966888576940126e-13 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 6, + "lidar_time_i": 1784784149.2434597, + "lidar_time_j": 1784784301.6372502, + "frame_counter_i": 3621, + "frame_counter_j": 5145, + "rtk_translation_m": 6.142548765456278, + "rtk_rotation_deg": 97.97753842317456, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.14208037102395846, + -0.9884298843565125, + -0.053099264407963725, + 2.170039415231362 + ], + [ + 0.989564713236412, + -0.1431335074041117, + 0.016567358737454824, + 6.182231813705039 + ], + [ + -0.0239759564362455, + -0.050191261880626434, + 0.9984517969054876, + 0.09208634545734894 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7590, + "backend_objective": 118.46903129923888, + "backend_elapsed_sec": 0.6824606999871321, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8899418479431402, + "inlier_rmse_m": 0.390935617658789, + "target_points": 5087, + "source_points": 4643 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7810807558069564, + "inlier_rmse_m": 0.1984380888165097, + "target_points": 8554, + "source_points": 8309 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6546489563567363, + "inlier_rmse_m": 0.12493425480473774, + "target_points": 11995, + "source_points": 11594 + } + ], + "heldout_symmetric": { + "evaluated": 8146, + "inliers": 5319, + "inlier_ratio": 0.6529585072428186, + "inlier_rmse_m": 0.11878586101480827, + "median_m": 0.14679529080051615, + "p90_m": 1.0979649139379524, + "p95_m": 1.6769030887461873 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2727.9660850560476, + 4535.405391289007, + 5149.977820649118, + 7589.999999999999, + 12172.37502339334, + 14525.884049585706 + ], + "effective_rank": 6, + "scaled_condition_number": 5.324803753668097, + "weakest_scaled_direction": [ + -0.6508853183419137, + -0.5355932196637113, + 0.008407772564635941, + 0.07096211835842292, + -0.07795601759091805, + 0.5275459713211308 + ] + }, + "forward_reverse": { + "translation_m": 0.011377811219747914, + "rotation_deg": 0.20418431358287809 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.902067138807519e-15, + "rotation_deg": 1.589543265306399e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 7, + "lidar_time_i": 1784784149.2434597, + "lidar_time_j": 1784784387.733771, + "frame_counter_i": 3621, + "frame_counter_j": 6006, + "rtk_translation_m": 5.314106070657687, + "rtk_rotation_deg": 123.28910472998356, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.5516002666536794, + -0.8328088032698073, + -0.046547212847822074, + 2.4005277793802224 + ], + [ + 0.8334717346815668, + -0.5525004930146833, + 0.008250618487843116, + 3.9567696951837963 + ], + [ + -0.03258854575597747, + -0.034244742878914346, + 0.9988820171925554, + 0.08075055203991593 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8115, + "backend_objective": 124.48597459940477, + "backend_elapsed_sec": 0.7416901999968104, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9326923076923077, + "inlier_rmse_m": 0.3809512417092888, + "target_points": 5087, + "source_points": 4680 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8172959805115713, + "inlier_rmse_m": 0.19161868927591258, + "target_points": 8554, + "source_points": 8210 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6971649484536082, + "inlier_rmse_m": 0.12385568620067329, + "target_points": 11995, + "source_points": 11640 + } + ], + "heldout_symmetric": { + "evaluated": 8094, + "inliers": 5637, + "inlier_ratio": 0.6964418087472202, + "inlier_rmse_m": 0.11691192595448072, + "median_m": 0.1312825893978457, + "p90_m": 0.86598349894007, + "p95_m": 1.2859474928352328 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3442.045934786842, + 5814.377321586114, + 6615.623105124134, + 8114.999999999995, + 12192.35074779878, + 15195.691233042959 + ], + "effective_rank": 6, + "scaled_condition_number": 4.414726450762486, + "weakest_scaled_direction": [ + -0.6333246944994089, + -0.6175567347871079, + 0.012399209890566157, + 0.10660083882111507, + -0.10043565947726531, + 0.4426270548875275 + ] + }, + "forward_reverse": { + "translation_m": 0.017641796253111963, + "rotation_deg": 0.10886712169052283 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.4124808308577039e-15, + "rotation_deg": 2.426668912087873e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 5, + "j": 6, + "lidar_time_i": 1784784224.2408776, + "lidar_time_j": 1784784301.6372502, + "frame_counter_i": 4371, + "frame_counter_j": 5145, + "rtk_translation_m": 1.9357867378988893, + "rtk_rotation_deg": 56.54578494904757, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5633985778261231, + -0.8255632254917628, + -0.03205313119089148, + 0.10312836671521534 + ], + [ + 0.8261770540030046, + 0.5631414894184164, + 0.017410868287486572, + 2.8741864803455264 + ], + [ + 0.0036766754573328724, + -0.03629081993075041, + 0.9993345077832223, + 0.048237954628261165 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8411, + "backend_objective": 120.86683809372273, + "backend_elapsed_sec": 0.6668355999863707, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.93194055567521, + "inlier_rmse_m": 0.35231182623801116, + "target_points": 4638, + "source_points": 4643 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8376459261042243, + "inlier_rmse_m": 0.1889531925451364, + "target_points": 8144, + "source_points": 8309 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7254614455752976, + "inlier_rmse_m": 0.1198753157248939, + "target_points": 11871, + "source_points": 11594 + } + ], + "heldout_symmetric": { + "evaluated": 8079, + "inliers": 6081, + "inlier_ratio": 0.7526921648718901, + "inlier_rmse_m": 0.10924852668609378, + "median_m": 0.10644907322627564, + "p90_m": 0.7127117267412296, + "p95_m": 1.290046767093283 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3621.1208669955477, + 5438.125007877232, + 6936.408184780728, + 8411.0, + 9674.972518309887, + 11912.770940146951 + ], + "effective_rank": 6, + "scaled_condition_number": 3.289802074469556, + "weakest_scaled_direction": [ + 0.886359167544377, + -0.08683928160690585, + 0.026237898727861694, + 0.02455684625077196, + 0.11842550150273999, + -0.4376188979539416 + ] + }, + "forward_reverse": { + "translation_m": 0.012374747586501101, + "rotation_deg": 0.14461856068326442 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.6556497485417479e-15, + "rotation_deg": 1.9980685391398485e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 5, + "j": 7, + "lidar_time_i": 1784784224.2408776, + "lidar_time_j": 1784784387.733771, + "frame_counter_i": 4371, + "frame_counter_j": 6006, + "rtk_translation_m": 0.19501559913675365, + "rtk_rotation_deg": 81.85735125585654, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.15573393600531066, + -0.987261645238883, + -0.032578904470621506, + -1.2255016856725545 + ], + [ + 0.9877909770551813, + 0.15551469257732836, + 0.009174205194425196, + 1.0764705380743882 + ], + [ + -0.003990842600752482, + -0.03360988296307088, + 0.999427060341345, + -0.007038132046144201 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8671, + "backend_objective": 137.23485431232746, + "backend_elapsed_sec": 1.4784595999808516, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9455128205128205, + "inlier_rmse_m": 0.3235724239457988, + "target_points": 4638, + "source_points": 4680 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8711327649208283, + "inlier_rmse_m": 0.19423813712402987, + "target_points": 8144, + "source_points": 8210 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7449312714776632, + "inlier_rmse_m": 0.1258049182006407, + "target_points": 11871, + "source_points": 11640 + } + ], + "heldout_symmetric": { + "evaluated": 8027, + "inliers": 6288, + "inlier_ratio": 0.7833561729164071, + "inlier_rmse_m": 0.11683079277948674, + "median_m": 0.11489700976495941, + "p90_m": 0.49575175847132263, + "p95_m": 0.9268544801884024 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4110.658396308195, + 5781.451528827495, + 7731.040282131096, + 8671.000000000002, + 9554.997630540438, + 11841.888464841973 + ], + "effective_rank": 6, + "scaled_condition_number": 2.8807765869032655, + "weakest_scaled_direction": [ + 0.9151643725468923, + 0.05960693152033186, + 0.03135220397149887, + 0.0029672211289679565, + 0.14835843535784973, + -0.36867220467327777 + ] + }, + "forward_reverse": { + "translation_m": 0.0136898748124479, + "rotation_deg": 0.2000656277647698 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.1357966319673714e-15, + "rotation_deg": 1.7270876263660686e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 5, + "j": 8, + "lidar_time_i": 1784784224.2408776, + "lidar_time_j": 1784784474.9314597, + "frame_counter_i": 4371, + "frame_counter_j": 6878, + "rtk_translation_m": 1.8038807059856978, + "rtk_rotation_deg": 172.47951556359365, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9891772514494434, + -0.13864765671180998, + -0.048012420301912974, + -2.133772737547501 + ], + [ + 0.13994460673153777, + -0.9898492099457441, + -0.024780004369302243, + 1.887778167007043 + ], + [ + -0.04408936676431938, + -0.03123089589031211, + 0.9985393126363172, + -0.03234445223926235 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8213, + "backend_objective": 123.52383274027166, + "backend_elapsed_sec": 0.8436991999915335, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9001875390706398, + "inlier_rmse_m": 0.36104255626873755, + "target_points": 4638, + "source_points": 4799 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7987623467809116, + "inlier_rmse_m": 0.18742996468547785, + "target_points": 8144, + "source_points": 8403 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7020258141721515, + "inlier_rmse_m": 0.1226378329826847, + "target_points": 11871, + "source_points": 11699 + } + ], + "heldout_symmetric": { + "evaluated": 8091, + "inliers": 5996, + "inlier_ratio": 0.7410703250525275, + "inlier_rmse_m": 0.11436945722491815, + "median_m": 0.11947887817564241, + "p90_m": 0.7985221582320845, + "p95_m": 1.3658547387858935 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3551.0789075684697, + 6545.983138649887, + 7472.8475410968385, + 8213.000000000002, + 10663.106304496083, + 14122.270396839389 + ], + "effective_rank": 6, + "scaled_condition_number": 3.9768956884456648, + "weakest_scaled_direction": [ + 0.8860999039752284, + -0.0720951249513293, + 0.03542904589224521, + 0.02943628694689152, + 0.1505074475845845, + -0.42994772830294414 + ] + }, + "forward_reverse": { + "translation_m": 0.020336999081352437, + "rotation_deg": 0.07548452187379719 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.8161486092845457e-15, + "rotation_deg": 2.342686615842194e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 7, + "lidar_time_i": 1784784301.6372502, + "lidar_time_j": 1784784387.733771, + "frame_counter_i": 5145, + "frame_counter_j": 6006, + "rtk_translation_m": 2.130456053070114, + "rtk_rotation_deg": 25.311566306808988, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.903800983504866, + -0.4278753474410665, + -0.00815286868681444, + -2.2319556406663636 + ], + [ + 0.4278518763228547, + 0.9038375568764107, + -0.004521361154826322, + 0.08411508086415746 + ], + [ + 0.009303447890452421, + 0.0005981904934453193, + 0.9999565430684886, + -0.04186216117454321 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 9432, + "backend_objective": 116.84125775349439, + "backend_elapsed_sec": 0.6598783000081312, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9517094017094017, + "inlier_rmse_m": 0.3052147766589594, + "target_points": 4643, + "source_points": 4680 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8965895249695494, + "inlier_rmse_m": 0.1665854381838512, + "target_points": 8309, + "source_points": 8210 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.8103092783505155, + "inlier_rmse_m": 0.11130026942404483, + "target_points": 11594, + "source_points": 11640 + } + ], + "heldout_symmetric": { + "evaluated": 7928, + "inliers": 6737, + "inlier_ratio": 0.8497729566094854, + "inlier_rmse_m": 0.10415909908074772, + "median_m": 0.08959121987357384, + "p90_m": 0.3467987634497123, + "p95_m": 0.6202156796544128 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4378.264654153876, + 8116.253839815621, + 9076.712606203011, + 9432.0, + 11231.517385223337, + 14780.74183171763 + ], + "effective_rank": 6, + "scaled_condition_number": 3.375936129784756, + "weakest_scaled_direction": [ + 0.44302890658854316, + -0.8611369473587376, + 0.00022113385752086498, + 0.12027512666587031, + 0.061931697641039, + 0.20944415879479658 + ] + }, + "forward_reverse": { + "translation_m": 0.008986805974948919, + "rotation_deg": 0.1309947950641294 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.793620188084545e-15, + "rotation_deg": 1.3926017091562627e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 8, + "lidar_time_i": 1784784301.6372502, + "lidar_time_j": 1784784474.9314597, + "frame_counter_i": 5145, + "frame_counter_j": 6878, + "rtk_translation_m": 0.24494500622098103, + "rtk_rotation_deg": 115.93373061454483, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.44191583004752333, + -0.8958733857158078, + -0.046057311249176024, + -2.078023274740148 + ], + [ + 0.8969926131748409, + -0.4419143850541915, + -0.010766995492992261, + 1.299787069288084 + ], + [ + -0.010707523671635305, + -0.046071173723609034, + 0.9988807716081788, + -0.020962857833613374 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8396, + "backend_objective": 115.63193237238191, + "backend_elapsed_sec": 0.6536257000116166, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9339445717857887, + "inlier_rmse_m": 0.35325124635681787, + "target_points": 4643, + "source_points": 4799 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8342258717124836, + "inlier_rmse_m": 0.18537787669707836, + "target_points": 8309, + "source_points": 8403 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.717668176767245, + "inlier_rmse_m": 0.11735529155507596, + "target_points": 11594, + "source_points": 11699 + } + ], + "heldout_symmetric": { + "evaluated": 7992, + "inliers": 6137, + "inlier_ratio": 0.7678928928928929, + "inlier_rmse_m": 0.11166725079781287, + "median_m": 0.10850260966882336, + "p90_m": 0.5857125674557123, + "p95_m": 0.9484334446688215 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4121.676609665293, + 6636.224746767371, + 7824.919080768352, + 8396.000000000002, + 10498.405365558141, + 13440.460053307019 + ], + "effective_rank": 6, + "scaled_condition_number": 3.2609205733873607, + "weakest_scaled_direction": [ + 0.5601461938756791, + -0.8021211600225457, + 0.020768782846807436, + 0.1331026440671933, + 0.0961672636776285, + 0.12426619543873317 + ] + }, + "forward_reverse": { + "translation_m": 0.010085391730565987, + "rotation_deg": 0.11752836996157842 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.726334887614051e-15, + "rotation_deg": 1.065795996480427e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 9, + "lidar_time_i": 1784784301.6372502, + "lidar_time_j": 1784784549.4274275, + "frame_counter_i": 5145, + "frame_counter_j": 7623, + "rtk_translation_m": 8.025985916230132, + "rtk_rotation_deg": 103.90638727582186, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.23911204026525565, + -0.9709194849860775, + -0.011865322353713376, + -4.886126629411354 + ], + [ + 0.9708400606362625, + -0.23927293328077537, + 0.014766179702001623, + 8.58532881015855 + ], + [ + -0.01717582207537421, + -0.007988558917878884, + 0.999820570933831, + 0.04270840144716096 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6357, + "backend_objective": 108.44204176153727, + "backend_elapsed_sec": 1.2956186999799684, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8377963125548727, + "inlier_rmse_m": 0.43113357705826366, + "target_points": 4643, + "source_points": 4556 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.6966474856142106, + "inlier_rmse_m": 0.21076033048440843, + "target_points": 8309, + "source_points": 7994 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5636637701720163, + "inlier_rmse_m": 0.13060888961028494, + "target_points": 11594, + "source_points": 11278 + } + ], + "heldout_symmetric": { + "evaluated": 8041, + "inliers": 4882, + "inlier_ratio": 0.6071384156199477, + "inlier_rmse_m": 0.12594282886521954, + "median_m": 0.17076642203258252, + "p90_m": 1.1943347502598551, + "p95_m": 1.8834422988645498 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2218.0677970003667, + 2835.5052632079855, + 3304.3564856991784, + 6357.000000000002, + 13356.784939760788, + 15265.848249160888 + ], + "effective_rank": 6, + "scaled_condition_number": 6.882498483502561, + "weakest_scaled_direction": [ + 0.6521439547130807, + 0.05181733797718935, + 0.01464458639605507, + 0.010164027465411772, + 0.0844365907105837, + -0.7513826698828533 + ] + }, + "forward_reverse": { + "translation_m": 0.01655440444551025, + "rotation_deg": 0.4345945520890901 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.5510982866352577e-15, + "rotation_deg": 3.431223765900091e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 7, + "j": 8, + "lidar_time_i": 1784784387.733771, + "lidar_time_j": 1784784474.9314597, + "frame_counter_i": 6006, + "frame_counter_j": 6878, + "rtk_translation_m": 1.9962664218365056, + "rtk_rotation_deg": 90.62216430773583, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.01558276574952197, + -0.9992735336457006, + -0.0347790506890377, + 0.6583296622690518 + ], + [ + 0.9998324688728506, + -0.015906671532669666, + 0.0090560470611042, + 1.027659166905885 + ], + [ + -0.009602687083139947, + -0.034632105855504726, + 0.9993539941606262, + 0.017443352131156144 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 9150, + "backend_objective": 117.33018692584575, + "backend_elapsed_sec": 0.7429393000202253, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.954990623046468, + "inlier_rmse_m": 0.29563110884340815, + "target_points": 4680, + "source_points": 4799 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8907533023920029, + "inlier_rmse_m": 0.175726922895322, + "target_points": 8210, + "source_points": 8403 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7821181297546799, + "inlier_rmse_m": 0.11323855901911818, + "target_points": 11640, + "source_points": 11699 + } + ], + "heldout_symmetric": { + "evaluated": 7940, + "inliers": 6590, + "inlier_ratio": 0.8299748110831234, + "inlier_rmse_m": 0.10748525688830209, + "median_m": 0.09733808799368987, + "p90_m": 0.38497596317607363, + "p95_m": 0.6736313528695768 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4579.939240782556, + 8013.667552238668, + 9150.000000000004, + 9396.223910620382, + 9769.1170780297, + 13772.417375734603 + ], + "effective_rank": 6, + "scaled_condition_number": 3.0071179226782414, + "weakest_scaled_direction": [ + 0.19440723479722805, + -0.9360883204353279, + 0.010869966309410657, + 0.17180760123971459, + 0.03295228977466592, + -0.23499494035054344 + ] + }, + "forward_reverse": { + "translation_m": 0.007106461978852689, + "rotation_deg": 0.10698728473689886 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0702197373587272e-15, + "rotation_deg": 7.565259576796879e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 7, + "j": 9, + "lidar_time_i": 1784784387.733771, + "lidar_time_j": 1784784549.4274275, + "frame_counter_i": 6006, + "frame_counter_j": 7623, + "rtk_translation_m": 7.8811064994361235, + "rtk_rotation_deg": 78.59482096901284, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.19882603733712217, + -0.9799944951381478, + 0.00888799053440953, + 1.235570626865747 + ], + [ + 0.979827302649002, + 0.19896237779350526, + 0.018773097941966906, + 8.79754244391703 + ], + [ + -0.020165908370349192, + 0.004976115118957357, + 0.9997842639379372, + 0.08570864416362214 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6624, + "backend_objective": 112.67723694997159, + "backend_elapsed_sec": 1.017676699993899, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8437225636523266, + "inlier_rmse_m": 0.4138184403407402, + "target_points": 4680, + "source_points": 4556 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7206654991243433, + "inlier_rmse_m": 0.21035189337821336, + "target_points": 8210, + "source_points": 7994 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5873381805284625, + "inlier_rmse_m": 0.13042412521500604, + "target_points": 11640, + "source_points": 11278 + } + ], + "heldout_symmetric": { + "evaluated": 7989, + "inliers": 4944, + "inlier_ratio": 0.6188509200150206, + "inlier_rmse_m": 0.1271320507839345, + "median_m": 0.17331809391203515, + "p90_m": 1.220010525510476, + "p95_m": 1.9166690177024657 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2265.2090757449982, + 3319.305199938711, + 3812.8132788214143, + 6624.000000000002, + 13070.92725801702, + 15215.363236013969 + ], + "effective_rank": 6, + "scaled_condition_number": 6.716979637303383, + "weakest_scaled_direction": [ + 0.49968124377683965, + -0.520786835385394, + 0.016511527979111488, + 0.08075029506904903, + 0.05576052174878799, + -0.6849797443802672 + ] + }, + "forward_reverse": { + "translation_m": 0.026230622734929154, + "rotation_deg": 0.28112746782878123 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.401779625492033e-15, + "rotation_deg": 6.543713954631931e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 7, + "j": 10, + "lidar_time_i": 1784784387.733771, + "lidar_time_j": 1784784614.7244046, + "frame_counter_i": 6006, + "frame_counter_j": 8276, + "rtk_translation_m": 7.620696678413973, + "rtk_rotation_deg": 134.60031955305035, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.7022381922683417, + -0.7102506789938965, + -0.04904583884897706, + -1.9924605167502298 + ], + [ + 0.7111311918834577, + -0.7030589645886992, + -0.0007212779479604502, + 8.490941631100316 + ], + [ + -0.03396982852626379, + -0.0353845347598958, + 0.9987962682397858, + 0.0416088571852517 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6732, + "backend_objective": 120.11915845955133, + "backend_elapsed_sec": 0.8221571999893058, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8522886268239056, + "inlier_rmse_m": 0.4282274765696279, + "target_points": 4680, + "source_points": 5003 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7016801785924098, + "inlier_rmse_m": 0.2080400960929964, + "target_points": 8210, + "source_points": 8511 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5590897765966282, + "inlier_rmse_m": 0.13357773859776764, + "target_points": 11640, + "source_points": 12041 + } + ], + "heldout_symmetric": { + "evaluated": 8077, + "inliers": 4650, + "inlier_ratio": 0.5757088027733069, + "inlier_rmse_m": 0.1313446077529101, + "median_m": 0.1946144416542199, + "p90_m": 1.323593894883393, + "p95_m": 1.901322689331278 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2810.0529980403535, + 3715.4390367725205, + 4388.964530931271, + 6731.999999999997, + 13604.0963800631, + 16173.36075280571 + ], + "effective_rank": 6, + "scaled_condition_number": 5.755535843660075, + "weakest_scaled_direction": [ + 0.526079746387773, + -0.46762447128873164, + 0.05159365970552225, + 0.15052947673163974, + 0.09366896662564102, + -0.6859100158890263 + ] + }, + "forward_reverse": { + "translation_m": 0.012710332356906473, + "rotation_deg": 0.2297418063823675 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.449557262054371e-15, + "rotation_deg": 1.4966378999110743e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 8, + "j": 9, + "lidar_time_i": 1784784474.9314597, + "lidar_time_j": 1784784549.4274275, + "frame_counter_i": 6878, + "frame_counter_j": 7623, + "rtk_translation_m": 7.803713858547152, + "rtk_rotation_deg": 12.027343338722998, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9767096719478493, + 0.2144252194497536, + 0.007748676496584432, + 7.764769934294107 + ], + [ + -0.21393458283489106, + 0.9759706183011247, + -0.041392589677138755, + -0.7085736704797382 + ], + [ + -0.016438095716500987, + 0.03877083281081081, + 0.9991129123038952, + 0.14368801979158632 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6758, + "backend_objective": 106.43104604599638, + "backend_elapsed_sec": 0.5688255999993999, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8733538191395961, + "inlier_rmse_m": 0.4062154576148282, + "target_points": 4799, + "source_points": 4556 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7450587940955716, + "inlier_rmse_m": 0.20931960528713373, + "target_points": 8403, + "source_points": 7994 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5992197198084767, + "inlier_rmse_m": 0.12549460951672864, + "target_points": 11699, + "source_points": 11278 + } + ], + "heldout_symmetric": { + "evaluated": 8053, + "inliers": 5095, + "inlier_ratio": 0.6326834719980131, + "inlier_rmse_m": 0.12084265385763356, + "median_m": 0.15459485205736714, + "p90_m": 1.1334968876463887, + "p95_m": 1.7368550339582725 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2556.5241489846394, + 3586.5887288383406, + 4201.742403851606, + 6758.000000000002, + 12069.008341790019, + 14162.350957366638 + ], + "effective_rank": 6, + "scaled_condition_number": 5.539689880493177, + "weakest_scaled_direction": [ + -0.6342297422054561, + -0.4837597469091066, + 0.011543415834932211, + 0.059361983473782465, + -0.09197546234327802, + -0.5929692742192461 + ] + }, + "forward_reverse": { + "translation_m": 0.02518064403521875, + "rotation_deg": 0.3859647522318924 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.2262814116578437e-15, + "rotation_deg": 3.3478739948903655e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 8, + "j": 10, + "lidar_time_i": 1784784474.9314597, + "lidar_time_j": 1784784614.7244046, + "frame_counter_i": 6878, + "frame_counter_j": 8276, + "rtk_translation_m": 8.062504137991457, + "rtk_rotation_deg": 43.97815524531457, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7225332041091128, + -0.6912638748621069, + -0.010001213448674927, + 7.512466332351234 + ], + [ + 0.6913298199510078, + 0.7223886589673808, + 0.014754844689713971, + 2.526199124741081 + ], + [ + -0.0029747279419654123, + -0.01757500230255533, + 0.9998411225228427, + 0.19664447184321665 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7066, + "backend_objective": 125.5588381486651, + "backend_elapsed_sec": 1.3219921000127215, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8744753148111133, + "inlier_rmse_m": 0.3994120225676832, + "target_points": 4799, + "source_points": 5003 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7402185407120198, + "inlier_rmse_m": 0.21180167093341312, + "target_points": 8403, + "source_points": 8511 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5868283365169006, + "inlier_rmse_m": 0.13330204978659915, + "target_points": 11699, + "source_points": 12041 + } + ], + "heldout_symmetric": { + "evaluated": 8141, + "inliers": 5018, + "inlier_ratio": 0.6163861933423412, + "inlier_rmse_m": 0.12936028463965984, + "median_m": 0.17517692069296223, + "p90_m": 1.0596089970231133, + "p95_m": 1.5959485402144877 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3225.313875628074, + 3951.4723883254887, + 4871.2398926209835, + 7066.000000000002, + 12924.900835175798, + 15446.04718896907 + ], + "effective_rank": 6, + "scaled_condition_number": 4.789005902863088, + "weakest_scaled_direction": [ + -0.5769945052927932, + -0.5491654047534645, + 0.05329096616881885, + 0.11312213827094149, + -0.17372116945323146, + -0.5654017236668927 + ] + }, + "forward_reverse": { + "translation_m": 0.011327540721525892, + "rotation_deg": 0.17059480981566058 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.0621477437872914e-15, + "rotation_deg": 9.30775426804605e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 8, + "j": 11, + "lidar_time_i": 1784784474.9314597, + "lidar_time_j": 1784784682.921899, + "frame_counter_i": 6878, + "frame_counter_j": 8958, + "rtk_translation_m": 11.084531710563947, + "rtk_rotation_deg": 22.606708130954026, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.924292692328189, + -0.38153520935512136, + -0.010672531614110135, + 10.41071960885304 + ], + [ + 0.38163830947455873, + 0.924254362488002, + 0.010299231199356166, + 3.9692817740566793 + ], + [ + 0.005934614571289277, + -0.01359255105718616, + 0.9998900054034195, + 0.29863131976956603 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 5560, + "backend_objective": 101.14364522975083, + "backend_elapsed_sec": 1.552222600003006, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8261874737284574, + "inlier_rmse_m": 0.44743598084381275, + "target_points": 4799, + "source_points": 4758 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.6508780608459065, + "inlier_rmse_m": 0.22455109954890465, + "target_points": 8403, + "source_points": 8086 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.4875482286916871, + "inlier_rmse_m": 0.1348751389206923, + "target_points": 11699, + "source_points": 11404 + } + ], + "heldout_symmetric": { + "evaluated": 7853, + "inliers": 4218, + "inlier_ratio": 0.5371195721380364, + "inlier_rmse_m": 0.13463285672049757, + "median_m": 0.21934760785432297, + "p90_m": 1.3391122728682134, + "p95_m": 2.100876641505108 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2436.5596934848804, + 2988.96338883937, + 3643.7801893253, + 5560.000000000002, + 11937.627619236891, + 14212.460437580443 + ], + "effective_rank": 6, + "scaled_condition_number": 5.833003178860405, + "weakest_scaled_direction": [ + 0.1752035385778211, + 0.5796996149835907, + -0.024718665321678292, + -0.1272035359327248, + 0.07178387083565628, + 0.7818614969267024 + ] + }, + "forward_reverse": { + "translation_m": 0.017887959781482814, + "rotation_deg": 0.14919899299178907 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.32711859681733e-15, + "rotation_deg": 3.683762231671466e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 9, + "j": 10, + "lidar_time_i": 1784784549.4274275, + "lidar_time_j": 1784784614.7244046, + "frame_counter_i": 7623, + "frame_counter_j": 8276, + "rtk_translation_m": 2.04815062353057, + "rtk_rotation_deg": 56.00549858403758, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5584533153530602, + -0.828923943052278, + -0.031858926627231804, + -0.9318923804121199 + ], + [ + 0.8291128187254477, + 0.5565301321611406, + 0.053349281362047245, + 3.1015193784558486 + ], + [ + -0.02649204401926822, + -0.056207727505809865, + 0.9980675643323523, + -0.07350770557984843 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7542, + "backend_objective": 105.97368399665098, + "backend_elapsed_sec": 0.5776144999836106, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8880671597041775, + "inlier_rmse_m": 0.4165543605698942, + "target_points": 4556, + "source_points": 5003 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7399835506990953, + "inlier_rmse_m": 0.1903738892456968, + "target_points": 7994, + "source_points": 8511 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6263599368823187, + "inlier_rmse_m": 0.11853749684886764, + "target_points": 11278, + "source_points": 12041 + } + ], + "heldout_symmetric": { + "evaluated": 8190, + "inliers": 5359, + "inlier_ratio": 0.6543345543345543, + "inlier_rmse_m": 0.10729272360686735, + "median_m": 0.128911595256462, + "p90_m": 1.1228277858893216, + "p95_m": 1.724687313767321 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3708.2521888447404, + 6519.419167758891, + 7541.999999999999, + 7714.627097852169, + 8537.73361183201, + 12529.651399956132 + ], + "effective_rank": 6, + "scaled_condition_number": 3.3788563349731584, + "weakest_scaled_direction": [ + 0.7858561305151, + 0.42928312484744535, + 0.0005463466419317472, + -0.06694940265322938, + 0.12309692561222292, + -0.42250534522960576 + ] + }, + "forward_reverse": { + "translation_m": 0.008725655639009402, + "rotation_deg": 0.02870462611907292 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.122468574731976e-16, + "rotation_deg": 9.360381252683941e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 9, + "j": 11, + "lidar_time_i": 1784784549.4274275, + "lidar_time_j": 1784784682.921899, + "frame_counter_i": 7623, + "frame_counter_j": 8958, + "rtk_translation_m": 4.738677237611319, + "rtk_rotation_deg": 34.634051469677026, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8218352300147945, + -0.5688703070710996, + -0.03119981473284189, + 1.5846974397858378 + ], + [ + 0.5697163907317495, + 0.8202839087499226, + 0.050572158126157965, + 5.125839059211078 + ], + [ + -0.0031762931411466974, + -0.05933702704704953, + 0.9982329529639352, + -0.0122937659517854 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6141, + "backend_objective": 95.83039249845596, + "backend_elapsed_sec": 0.5702792000083718, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8173602353930223, + "inlier_rmse_m": 0.4529145793536717, + "target_points": 4556, + "source_points": 4758 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.6587929755132328, + "inlier_rmse_m": 0.20413053522622102, + "target_points": 7994, + "source_points": 8086 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5384952648193616, + "inlier_rmse_m": 0.12492003141306962, + "target_points": 11278, + "source_points": 11404 + } + ], + "heldout_symmetric": { + "evaluated": 7902, + "inliers": 4598, + "inlier_ratio": 0.5818780055682106, + "inlier_rmse_m": 0.11717687815100752, + "median_m": 0.17181881274828115, + "p90_m": 1.3640782820675088, + "p95_m": 1.8256886182814358 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2987.308869239922, + 5270.382928013541, + 6109.687992263246, + 6141.0, + 7550.115127170244, + 10622.830106455349 + ], + "effective_rank": 6, + "scaled_condition_number": 3.555986532172074, + "weakest_scaled_direction": [ + 0.82326472083412, + 0.36257275472371464, + -0.01104743035998065, + -0.0674841057761342, + 0.1408062494700231, + -0.4077666573203338 + ] + }, + "forward_reverse": { + "translation_m": 0.009813025835682346, + "rotation_deg": 0.0603546019895227 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.7064601008853095e-15, + "rotation_deg": 3.3921116242385096e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 9, + "j": 12, + "lidar_time_i": 1784784549.4274275, + "lidar_time_j": 1784784758.8187964, + "frame_counter_i": 7623, + "frame_counter_j": 9717, + "rtk_translation_m": 7.170741483679294, + "rtk_rotation_deg": 16.35622721712263, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9580757572202011, + -0.2857347836898251, + -0.021129998028052346, + 5.200435725127117 + ], + [ + 0.28643975938877914, + 0.956905887811991, + 0.04778478954691107, + 5.242590741804046 + ], + [ + 0.006565643017648578, + -0.05183391997980557, + 0.9986341357430625, + 0.12606486557808538 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6023, + "backend_objective": 106.40589964909799, + "backend_elapsed_sec": 1.201278900000034, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8284376330353341, + "inlier_rmse_m": 0.4571637917041393, + "target_points": 4556, + "source_points": 4698 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.6582776717557252, + "inlier_rmse_m": 0.21616250289640723, + "target_points": 7994, + "source_points": 8384 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5088282504012841, + "inlier_rmse_m": 0.1329157427168759, + "target_points": 11278, + "source_points": 11837 + } + ], + "heldout_symmetric": { + "evaluated": 8124, + "inliers": 4370, + "inlier_ratio": 0.5379123584441162, + "inlier_rmse_m": 0.12645695585785732, + "median_m": 0.21654109527482085, + "p90_m": 1.3657698365089808, + "p95_m": 1.8184384805335867 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2499.324161804255, + 3493.6656389272193, + 4227.365341588677, + 6023.000000000001, + 10391.865876882504, + 12203.09542123824 + ], + "effective_rank": 6, + "scaled_condition_number": 4.882558096197038, + "weakest_scaled_direction": [ + 0.8684529949213924, + 0.33669660743243707, + -0.03884090022172433, + -0.07119250099549948, + 0.14635044346039885, + -0.32315530341689835 + ] + }, + "forward_reverse": { + "translation_m": 0.008862930161052695, + "rotation_deg": 0.11566409877698863 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.379404155611337e-15, + "rotation_deg": 8.235373850930155e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 10, + "j": 11, + "lidar_time_i": 1784784614.7244046, + "lidar_time_j": 1784784682.921899, + "frame_counter_i": 8276, + "frame_counter_j": 8958, + "rtk_translation_m": 3.2047552083250137, + "rtk_rotation_deg": 21.371447114360556, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.931482062745526, + 0.3637820101007371, + -0.0019534355395409227, + 3.0883468633499653 + ], + [ + -0.363786069496666, + 0.9314793061773601, + -0.0024490413451749332, + -0.963570001891304 + ], + [ + 0.0009286675976662282, + 0.0029918707208973125, + 0.9999950931310025, + 0.07469968440437395 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7809, + "backend_objective": 116.25759369371049, + "backend_elapsed_sec": 1.106898399972124, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.944724674232871, + "inlier_rmse_m": 0.3488954095331405, + "target_points": 5003, + "source_points": 4758 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8314370516942864, + "inlier_rmse_m": 0.1964842527673148, + "target_points": 8511, + "source_points": 8086 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6847597334268678, + "inlier_rmse_m": 0.1220149239079259, + "target_points": 12041, + "source_points": 11404 + } + ], + "heldout_symmetric": { + "evaluated": 7990, + "inliers": 5688, + "inlier_ratio": 0.7118898623279099, + "inlier_rmse_m": 0.1192865608074921, + "median_m": 0.1350085899751497, + "p90_m": 0.6551490182784515, + "p95_m": 0.9276714523779558 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4191.620023684842, + 6709.811345600716, + 7624.357350807386, + 7808.999999999998, + 9811.898184638078, + 13497.869351720376 + ], + "effective_rank": 6, + "scaled_condition_number": 3.2202034715576238, + "weakest_scaled_direction": [ + 0.78482099958494, + -0.5018171566879318, + -0.019004340886612132, + 0.1084231933625081, + 0.15788495341810166, + 0.3085305941342627 + ] + }, + "forward_reverse": { + "translation_m": 0.0029529340190147615, + "rotation_deg": 0.0041769080934441144 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.474576228406686e-16, + "rotation_deg": 6.041141482202727e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 10, + "j": 12, + "lidar_time_i": 1784784614.7244046, + "lidar_time_j": 1784784758.8187964, + "frame_counter_i": 8276, + "frame_counter_j": 9717, + "rtk_translation_m": 6.291813977735496, + "rtk_rotation_deg": 39.64927136691496, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7725349244430632, + 0.6349700249079231, + 0.0016905573587062321, + 5.206427086985336 + ], + [ + -0.6349173465732423, + 0.7725003768317583, + -0.01109643254308647, + -3.9058272224005495 + ], + [ + -0.008351858244928975, + 0.007499017483841231, + 0.9999370036160448, + 0.0917432940137032 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7349, + "backend_objective": 123.06452839523351, + "backend_elapsed_sec": 0.6678230999968946, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8916560238399319, + "inlier_rmse_m": 0.4004831960201719, + "target_points": 5003, + "source_points": 4698 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7641937022900763, + "inlier_rmse_m": 0.20322170691893476, + "target_points": 8511, + "source_points": 8384 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6208498775027457, + "inlier_rmse_m": 0.12940537695397786, + "target_points": 12041, + "source_points": 11837 + } + ], + "heldout_symmetric": { + "evaluated": 8212, + "inliers": 5026, + "inlier_ratio": 0.6120311738918656, + "inlier_rmse_m": 0.1252565212812615, + "median_m": 0.17091345348780562, + "p90_m": 1.1259201953201292, + "p95_m": 1.6658207059378556 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3206.1007214318247, + 4637.048238606179, + 5401.154855203001, + 7348.999999999998, + 12443.071148511113, + 15042.019205814553 + ], + "effective_rank": 6, + "scaled_condition_number": 4.691686416856199, + "weakest_scaled_direction": [ + 0.7981725226133396, + -0.33580151518151236, + -0.04595142021459902, + 0.08763557401342212, + 0.1441799119603311, + 0.46859213894555357 + ] + }, + "forward_reverse": { + "translation_m": 0.005686910809265337, + "rotation_deg": 0.10204044727301474 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.3440693017233997e-15, + "rotation_deg": 2.2591029712435135e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 10, + "j": 13, + "lidar_time_i": 1784784614.7244046, + "lidar_time_j": 1784784836.0155501, + "frame_counter_i": 8276, + "frame_counter_j": 10489, + "rtk_translation_m": 10.199392557022867, + "rtk_rotation_deg": 72.41150002956134, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.29044052113846325, + 0.9568654605959236, + -0.007265947933346569, + 7.2521452254993415 + ], + [ + -0.9564181174458185, + 0.2900487927930956, + -0.03370582176218846, + -7.3844984176363795 + ], + [ + -0.0301444572386759, + 0.016738820681880845, + 0.9994053850064875, + 0.13846147026610514 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6057, + "backend_objective": 109.06885102007745, + "backend_elapsed_sec": 0.778608999971766, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8223443223443223, + "inlier_rmse_m": 0.42401388092595405, + "target_points": 5003, + "source_points": 4914 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.6761310084825636, + "inlier_rmse_m": 0.2130690540910365, + "target_points": 8511, + "source_points": 8488 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5254619588791533, + "inlier_rmse_m": 0.13419044164066332, + "target_points": 12041, + "source_points": 11527 + } + ], + "heldout_symmetric": { + "evaluated": 7945, + "inliers": 4104, + "inlier_ratio": 0.516551290119572, + "inlier_rmse_m": 0.1354903305714049, + "median_m": 0.23583409303692335, + "p90_m": 1.6234411010634366, + "p95_m": 2.5041547750210427 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2163.39843023113, + 3024.3898736020496, + 3497.1996106257666, + 6057.000000000001, + 13911.47804140673, + 15893.501074487602 + ], + "effective_rank": 6, + "scaled_condition_number": 7.346543684414892, + "weakest_scaled_direction": [ + 0.7238547120872566, + -0.24126958037326707, + -0.050054121888334434, + 0.08643763337192334, + 0.1295952290598316, + 0.6253411408180031 + ] + }, + "forward_reverse": { + "translation_m": 0.01356504272158301, + "rotation_deg": 0.3255230434099281 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.8266474299528865e-15, + "rotation_deg": 1.7951954799618946e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 11, + "j": 12, + "lidar_time_i": 1784784682.921899, + "lidar_time_j": 1784784758.8187964, + "frame_counter_i": 8958, + "frame_counter_j": 9717, + "rtk_translation_m": 3.467398797536633, + "rtk_rotation_deg": 18.277824252554396, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9504911597929431, + 0.31073232461248496, + 0.0034608664221481076, + 3.045417875094758 + ], + [ + -0.31069783796454997, + 0.950474939957655, + -0.008015110519942713, + -1.9660465989593203 + ], + [ + -0.00578002072868046, + 0.0065430079791234256, + 0.9999618894772746, + 0.021667324844726197 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7611, + "backend_objective": 120.44152218333895, + "backend_elapsed_sec": 1.0538954999938142, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.921455938697318, + "inlier_rmse_m": 0.37333205934375135, + "target_points": 4758, + "source_points": 4698 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.798425572519084, + "inlier_rmse_m": 0.2043338096839637, + "target_points": 8086, + "source_points": 8384 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6429838641547689, + "inlier_rmse_m": 0.125796123106139, + "target_points": 11404, + "source_points": 11837 + } + ], + "heldout_symmetric": { + "evaluated": 7924, + "inliers": 5155, + "inlier_ratio": 0.650555275113579, + "inlier_rmse_m": 0.12104882943540958, + "median_m": 0.15351410004943652, + "p90_m": 0.933208115012442, + "p95_m": 1.3620912971744101 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2998.6794915842415, + 5608.739992988762, + 6321.129720466805, + 7610.999999999996, + 10814.172496618425, + 13830.652846173398 + ], + "effective_rank": 6, + "scaled_condition_number": 4.612247786063486, + "weakest_scaled_direction": [ + 0.825061005823877, + -0.2380800552946838, + -0.018410677581206063, + 0.044771231521114986, + 0.1167512168766514, + 0.4966064448601905 + ] + }, + "forward_reverse": { + "translation_m": 0.003583199374499245, + "rotation_deg": 0.03300207707174736 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.964831480998304e-15, + "rotation_deg": 5.442356387182279e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 11, + "j": 13, + "lidar_time_i": 1784784682.921899, + "lidar_time_j": 1784784836.0155501, + "frame_counter_i": 8958, + "frame_counter_j": 10489, + "rtk_translation_m": 7.516502113110916, + "rtk_rotation_deg": 51.04005291520078, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6183034305645991, + 0.7859195840033362, + 0.0055924263135183365, + 6.204550896670852 + ], + [ + -0.7853262526498793, + 0.6180863926388387, + -0.035098263968536346, + -4.459590590126785 + ], + [ + -0.031041015623612393, + 0.01730949781859198, + 0.9993682187433837, + 0.05932565678165204 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6486, + "backend_objective": 109.92726224231119, + "backend_elapsed_sec": 2.275462999998126, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8536833536833537, + "inlier_rmse_m": 0.4126230022358423, + "target_points": 4758, + "source_points": 4914 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7132422243166824, + "inlier_rmse_m": 0.21004376743736744, + "target_points": 8086, + "source_points": 8488 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5626789277348834, + "inlier_rmse_m": 0.13018598513278615, + "target_points": 11404, + "source_points": 11527 + } + ], + "heldout_symmetric": { + "evaluated": 7657, + "inliers": 4363, + "inlier_ratio": 0.5698054068172914, + "inlier_rmse_m": 0.12858662743221627, + "median_m": 0.1936224172404975, + "p90_m": 1.4095752781651825, + "p95_m": 2.071172510941281 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2050.4088329164606, + 3916.126929138444, + 4945.45984893723, + 6486.000000000002, + 12668.198251733651, + 15459.63862290608 + ], + "effective_rank": 6, + "scaled_condition_number": 7.539783468898054, + "weakest_scaled_direction": [ + 0.7600553669439282, + 0.010238959021600436, + -0.0176551755056268, + 0.01355739541549533, + 0.10001439011022722, + 0.6416483588977511 + ] + }, + "forward_reverse": { + "translation_m": 0.016001435752891854, + "rotation_deg": 0.11059625579949509 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.9984014443252818e-15, + "rotation_deg": 1.677610469981635e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 11, + "j": 14, + "lidar_time_i": 1784784682.921899, + "lidar_time_j": 1784784921.1126208, + "frame_counter_i": 8958, + "frame_counter_j": 11340, + "rtk_translation_m": 3.767517331528496, + "rtk_rotation_deg": 20.548768889074672, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9420984993444307, + 0.33533365402756454, + -0.001325899502177561, + 3.6279299654891535 + ], + [ + -0.33531475610092154, + 0.9419858861484643, + -0.015053392908939985, + -1.206440330533338 + ], + [ + -0.0037989306321649526, + 0.014626372537741504, + 0.9998858121567864, + 0.05361883461674421 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7413, + "backend_objective": 121.20528002077937, + "backend_elapsed_sec": 1.3571733999997377, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9104951333051207, + "inlier_rmse_m": 0.3699184387178016, + "target_points": 4758, + "source_points": 4726 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7736099384875166, + "inlier_rmse_m": 0.20449916918127523, + "target_points": 8086, + "source_points": 8291 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6238848678673624, + "inlier_rmse_m": 0.12786855858559512, + "target_points": 11404, + "source_points": 11882 + } + ], + "heldout_symmetric": { + "evaluated": 7988, + "inliers": 5129, + "inlier_ratio": 0.6420881321982974, + "inlier_rmse_m": 0.12414062948335584, + "median_m": 0.1606120477261961, + "p90_m": 0.9577784057886718, + "p95_m": 1.4049787773272133 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2875.3219668461825, + 5571.304824971685, + 6518.132957754168, + 7413.0, + 10891.003048123157, + 14239.356476050812 + ], + "effective_rank": 6, + "scaled_condition_number": 4.9522650472668115, + "weakest_scaled_direction": [ + 0.8297488911987154, + -0.12313164559136125, + -0.014093290402182585, + 0.02702851764889075, + 0.12150068882361927, + 0.5297771195731228 + ] + }, + "forward_reverse": { + "translation_m": 0.012369101516230236, + "rotation_deg": 0.018705060406060074 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.2205327837301123e-15, + "rotation_deg": 2.5921922372355474e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 12, + "j": 13, + "lidar_time_i": 1784784758.8187964, + "lidar_time_j": 1784784836.0155501, + "frame_counter_i": 9717, + "frame_counter_j": 10489, + "rtk_translation_m": 4.049286119591895, + "rtk_rotation_deg": 32.762228662646386, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8316930017610544, + 0.5551856829603824, + 0.007457094440977263, + 3.7881102078444724 + ], + [ + -0.5548896669202849, + 0.8315737478805925, + -0.0241362669217927, + -1.3868344031825495 + ], + [ + -0.019601233807672563, + 0.015936099636944832, + 0.9996808652572972, + 0.06767787853020736 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7848, + "backend_objective": 116.2900075398938, + "backend_elapsed_sec": 0.8782197999826167, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.905982905982906, + "inlier_rmse_m": 0.35360175793503157, + "target_points": 4698, + "source_points": 4914 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8124410933081998, + "inlier_rmse_m": 0.19235489312976103, + "target_points": 8384, + "source_points": 8488 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6808362973887395, + "inlier_rmse_m": 0.12172834071077489, + "target_points": 11837, + "source_points": 11527 + } + ], + "heldout_symmetric": { + "evaluated": 7879, + "inliers": 5494, + "inlier_ratio": 0.6972966112450819, + "inlier_rmse_m": 0.11680896213116294, + "median_m": 0.13156173217475128, + "p90_m": 0.8313148549051547, + "p95_m": 1.2148739230962617 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3141.754884667448, + 5542.2348035441155, + 6290.437184548331, + 7847.999999999999, + 10749.612255893424, + 13453.773551694301 + ], + "effective_rank": 6, + "scaled_condition_number": 4.282247993741361, + "weakest_scaled_direction": [ + 0.8546032035420024, + 0.22562426401969735, + -0.014729193713307361, + -0.022761946146888333, + 0.11574593324020838, + 0.4523437626184671 + ] + }, + "forward_reverse": { + "translation_m": 0.011410238767832601, + "rotation_deg": 0.04779713993430858 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.1801832636420706e-15, + "rotation_deg": 2.0478961671665586e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 12, + "j": 14, + "lidar_time_i": 1784784758.8187964, + "lidar_time_j": 1784784921.1126208, + "frame_counter_i": 9717, + "frame_counter_j": 11340, + "rtk_translation_m": 0.97948616772873, + "rtk_rotation_deg": 2.2709446365202806, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9996632542520232, + 0.025943930837066552, + 0.0005390278072598082, + 0.3067349767416293 + ], + [ + -0.025939144761757, + 0.9996351962290823, + -0.007525638117062724, + 0.9020004675970495 + ], + [ + -0.0007340758026969609, + 0.007509121970102925, + 0.999971536704899, + 0.027483902952858734 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 10410, + "backend_objective": 103.39761162728539, + "backend_elapsed_sec": 1.1478916000050958, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9741853575962759, + "inlier_rmse_m": 0.2532774382510327, + "target_points": 4698, + "source_points": 4726 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9261850199010976, + "inlier_rmse_m": 0.13836917396286044, + "target_points": 8384, + "source_points": 8291 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.8761151321326376, + "inlier_rmse_m": 0.099662066674543, + "target_points": 11837, + "source_points": 11882 + } + ], + "heldout_symmetric": { + "evaluated": 8210, + "inliers": 7183, + "inlier_ratio": 0.8749086479902558, + "inlier_rmse_m": 0.09521299965540617, + "median_m": 0.0760050517356585, + "p90_m": 0.31584076913196313, + "p95_m": 0.673397631101223 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 5138.022407507219, + 9805.60705821039, + 10410.0, + 10753.164636145257, + 12219.744983907198, + 17005.28778909972 + ], + "effective_rank": 6, + "scaled_condition_number": 3.309695139564419, + "weakest_scaled_direction": [ + 0.9464821684170598, + 0.19993863080218655, + -0.003268578066919626, + -0.03608973188950048, + 0.17379902717424758, + 0.18076723869201752 + ] + }, + "forward_reverse": { + "translation_m": 0.006159472215773642, + "rotation_deg": 0.014929948455572307 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.9445856682867874e-15, + "rotation_deg": 6.9641562227049605e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 12, + "j": 15, + "lidar_time_i": 1784784758.8187964, + "lidar_time_j": 1784784992.709947, + "frame_counter_i": 9717, + "frame_counter_j": 12056, + "rtk_translation_m": 4.286747470271891, + "rtk_rotation_deg": 25.863710300929224, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8973493412322633, + 0.4413020270750524, + 0.004084199979461093, + 4.163706947306015 + ], + [ + -0.44117658377204255, + 0.8972541055374322, + -0.017271132778489184, + -0.3292117219716087 + ], + [ + -0.011286351104437022, + 0.013696386226731722, + 0.9998425012386079, + 0.09325532492473072 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8094, + "backend_objective": 122.85748927338736, + "backend_elapsed_sec": 0.5855846999911591, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9071414120979162, + "inlier_rmse_m": 0.34639151284733327, + "target_points": 4698, + "source_points": 4943 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8155351249410655, + "inlier_rmse_m": 0.1924532178027488, + "target_points": 8384, + "source_points": 8484 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.691322172873249, + "inlier_rmse_m": 0.1232024141390483, + "target_points": 11837, + "source_points": 11708 + } + ], + "heldout_symmetric": { + "evaluated": 7898, + "inliers": 5546, + "inlier_ratio": 0.7022030893897189, + "inlier_rmse_m": 0.11797995277580095, + "median_m": 0.13317843027114487, + "p90_m": 0.7563323657972744, + "p95_m": 1.1686828731658028 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3318.8016894626558, + 5729.884918603264, + 6491.25484392026, + 8093.999999999997, + 11328.63842981768, + 14195.287398964416 + ], + "effective_rank": 6, + "scaled_condition_number": 4.2772327867721325, + "weakest_scaled_direction": [ + 0.8205546509352113, + 0.3195507628131044, + -0.018395091801162153, + -0.036964783445293935, + 0.1211852610411865, + 0.4562748433817121 + ] + }, + "forward_reverse": { + "translation_m": 0.008495008365045943, + "rotation_deg": 0.102782991447036 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 6.463236069784172e-16, + "rotation_deg": 5.901842100868137e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 14, + "lidar_time_i": 1784784836.0155501, + "lidar_time_j": 1784784921.1126208, + "frame_counter_i": 10489, + "frame_counter_j": 11340, + "rtk_translation_m": 4.006260191078547, + "rtk_rotation_deg": 30.491284026126113, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8458702243136537, + -0.5331846831105824, + -0.014753213746047256, + -4.171321162531942 + ], + [ + 0.5333531564800941, + 0.8458097203519044, + 0.01184598796862743, + -0.03339321688991969 + ], + [ + 0.0061623122516516905, + -0.01788884161991954, + 0.9998209916045998, + -0.11569214825735312 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7798, + "backend_objective": 114.37676008268265, + "backend_elapsed_sec": 1.2714206000091508, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9325010579771477, + "inlier_rmse_m": 0.38250772409200645, + "target_points": 4914, + "source_points": 4726 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8071402725847304, + "inlier_rmse_m": 0.1999047450281883, + "target_points": 8488, + "source_points": 8291 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6562868204006059, + "inlier_rmse_m": 0.12110924025114314, + "target_points": 11527, + "source_points": 11882 + } + ], + "heldout_symmetric": { + "evaluated": 7943, + "inliers": 5525, + "inlier_ratio": 0.6955810147299509, + "inlier_rmse_m": 0.1145595612270532, + "median_m": 0.12784987509132364, + "p90_m": 0.8963798525645535, + "p95_m": 1.297397246398276 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3638.512993457, + 5440.134349762298, + 6741.499013663021, + 7797.999999999997, + 9887.48104214368, + 12190.07328500843 + ], + "effective_rank": 6, + "scaled_condition_number": 3.350289886810732, + "weakest_scaled_direction": [ + 0.693873019765956, + 0.6912207861777041, + 0.019388788721967684, + -0.09152119039784189, + 0.09610465823106085, + -0.15088372491126195 + ] + }, + "forward_reverse": { + "translation_m": 0.010228664633443074, + "rotation_deg": 0.03515966054944097 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.219600661539615e-15, + "rotation_deg": 1.2342067918868074e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 15, + "lidar_time_i": 1784784836.0155501, + "lidar_time_j": 1784784992.709947, + "frame_counter_i": 10489, + "frame_counter_j": 12056, + "rtk_translation_m": 0.9562774815922267, + "rtk_rotation_deg": 6.898518361717157, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9913367441541354, + -0.13128570051939975, + -0.003940117892710185, + -0.27816467224165836 + ], + [ + 0.13129871838452753, + 0.9913375251194534, + 0.003249283092896293, + 1.089325211064333 + ], + [ + 0.003479402313401459, + -0.003738466151743683, + 0.9999869587301498, + 0.005503141095767833 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 9864, + "backend_objective": 123.01458376507152, + "backend_elapsed_sec": 0.7187746000126936, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.987052397329557, + "inlier_rmse_m": 0.2650029276509842, + "target_points": 4914, + "source_points": 4943 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9289250353606789, + "inlier_rmse_m": 0.15504934033296122, + "target_points": 8488, + "source_points": 8484 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.8425008541168432, + "inlier_rmse_m": 0.11167392201666373, + "target_points": 11527, + "source_points": 11708 + } + ], + "heldout_symmetric": { + "evaluated": 7631, + "inliers": 6626, + "inlier_ratio": 0.868300353819945, + "inlier_rmse_m": 0.10454213568084784, + "median_m": 0.08419507912574345, + "p90_m": 0.302121023640418, + "p95_m": 0.5474606388498328 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 5253.598453250472, + 9217.591651478237, + 9864.0, + 9919.974515381253, + 12324.703428703971, + 17041.28492664738 + ], + "effective_rank": 6, + "scaled_condition_number": 3.243735713395398, + "weakest_scaled_direction": [ + -0.5774945177885069, + -0.7830881214237311, + -0.002372059076880627, + 0.1409060715951762, + -0.10436686808495367, + 0.15006826839395646 + ] + }, + "forward_reverse": { + "translation_m": 0.0023750253827712867, + "rotation_deg": 0.010725047644197173 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.243667496954031e-15, + "rotation_deg": 1.0102386058610471e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 16, + "lidar_time_i": 1784784836.0155501, + "lidar_time_j": 1784785067.6067727, + "frame_counter_i": 10489, + "frame_counter_j": 12805, + "rtk_translation_m": 3.565173336606111, + "rtk_rotation_deg": 18.944899794614482, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9489573496703038, + 0.31461803897240476, + 0.02225843794770864, + 3.4146271782161772 + ], + [ + -0.31383617588295293, + 0.9489134395376143, + -0.03271297864853416, + 0.44823850175161317 + ], + [ + -0.03141342410304273, + 0.02405771847149733, + 0.9992169048650393, + 0.07337683715324038 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8363, + "backend_objective": 116.4447665223749, + "backend_elapsed_sec": 0.9975955999980215, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.928635147190009, + "inlier_rmse_m": 0.33947582046875263, + "target_points": 4914, + "source_points": 4484 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8543104530053959, + "inlier_rmse_m": 0.18629629869885217, + "target_points": 8488, + "source_points": 7969 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7487689139582774, + "inlier_rmse_m": 0.11799916628154375, + "target_points": 11527, + "source_points": 11169 + } + ], + "heldout_symmetric": { + "evaluated": 7877, + "inliers": 5723, + "inlier_ratio": 0.7265456392027422, + "inlier_rmse_m": 0.10962529664062398, + "median_m": 0.11054371280254638, + "p90_m": 0.6354952577888515, + "p95_m": 1.0205758997107361 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3766.851570287908, + 6138.72779212131, + 7250.108359264892, + 8363.000000000004, + 10555.423880318049, + 13269.68173490696 + ], + "effective_rank": 6, + "scaled_condition_number": 3.522751424445623, + "weakest_scaled_direction": [ + -0.560200456647656, + -0.7615404390193128, + -0.0011282109237957354, + 0.0919696864388781, + -0.06720185395086006, + -0.30537816367913906 + ] + }, + "forward_reverse": { + "translation_m": 0.008958927594995584, + "rotation_deg": 0.0304143851242741 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.023951298512e-15, + "rotation_deg": 1.1222781979565583e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 14, + "j": 15, + "lidar_time_i": 1784784921.1126208, + "lidar_time_j": 1784784992.709947, + "frame_counter_i": 11340, + "frame_counter_j": 12056, + "rtk_translation_m": 4.019575892829469, + "rtk_rotation_deg": 23.592765664408944, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9085817038105068, + 0.4176909635587484, + 0.0036805518826767522, + 3.8894614691461404 + ], + [ + -0.41762784716535645, + 0.9085455999559572, + -0.011483643703123741, + -1.1296956821139466 + ], + [ + -0.008140563421938684, + 0.008896727602594277, + 0.9999272870889855, + 0.07938515837747213 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8047, + "backend_objective": 123.04066174031752, + "backend_elapsed_sec": 0.7005369999969844, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8885292332591543, + "inlier_rmse_m": 0.3522301956839582, + "target_points": 4726, + "source_points": 4943 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7965582272512965, + "inlier_rmse_m": 0.18813727340916792, + "target_points": 8291, + "source_points": 8484 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6873078237102835, + "inlier_rmse_m": 0.12365376049354522, + "target_points": 11882, + "source_points": 11708 + } + ], + "heldout_symmetric": { + "evaluated": 7962, + "inliers": 5669, + "inlier_ratio": 0.7120070334086913, + "inlier_rmse_m": 0.11868441290330693, + "median_m": 0.1330779467518129, + "p90_m": 0.81031334830583, + "p95_m": 1.3422452040948158 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3062.3520103677665, + 5648.9236594670265, + 6389.000366652995, + 8047.000000000002, + 11135.974376352187, + 14149.88063807102 + ], + "effective_rank": 6, + "scaled_condition_number": 4.620592469502459, + "weakest_scaled_direction": [ + 0.794987329307692, + 0.28380733337029174, + -0.014973167762010391, + -0.029316241889193902, + 0.10975162141484261, + 0.5237551790397356 + ] + }, + "forward_reverse": { + "translation_m": 0.002571958018982041, + "rotation_deg": 0.05506919751152759 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.733642401122889e-15, + "rotation_deg": 1.2219809956695224e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 14, + "j": 16, + "lidar_time_i": 1784784921.1126208, + "lidar_time_j": 1784785067.6067727, + "frame_counter_i": 11340, + "frame_counter_j": 12805, + "rtk_translation_m": 7.5676649485439835, + "rtk_rotation_deg": 49.43618382074059, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.634952027333241, + 0.7725245239434985, + 0.006463968694208926, + 6.661587595072871 + ], + [ + -0.7709793147734765, + 0.634171164388126, + -0.058462213865286085, + -3.640352865203487 + ], + [ + -0.04926275648833796, + 0.03213711506157451, + 0.9982686946201862, + 0.06758619107401062 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6764, + "backend_objective": 108.58480297289505, + "backend_elapsed_sec": 0.789298499992583, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8037466547725245, + "inlier_rmse_m": 0.41549167268224224, + "target_points": 4726, + "source_points": 4484 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7126364663069394, + "inlier_rmse_m": 0.20058439494066638, + "target_points": 8291, + "source_points": 7969 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6056047989972244, + "inlier_rmse_m": 0.12670178237787888, + "target_points": 11882, + "source_points": 11169 + } + ], + "heldout_symmetric": { + "evaluated": 8208, + "inliers": 4858, + "inlier_ratio": 0.5918615984405458, + "inlier_rmse_m": 0.12229328437386527, + "median_m": 0.17682842053697545, + "p90_m": 1.2950395789503548, + "p95_m": 1.9530785060949778 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 1975.4540324646355, + 3599.750324099419, + 4138.859969475179, + 6764.000000000002, + 11985.932016206303, + 14123.527990590419 + ], + "effective_rank": 6, + "scaled_condition_number": 7.149509813179243, + "weakest_scaled_direction": [ + 0.7225842505231805, + 0.2834428657194434, + -0.007798500851411782, + -0.020067005501398918, + 0.06839181386157428, + 0.6264113674255958 + ] + }, + "forward_reverse": { + "translation_m": 0.014273957859022303, + "rotation_deg": 0.25325650727956367 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.9941035183565725e-15, + "rotation_deg": 3.101412868091446e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 14, + "j": 17, + "lidar_time_i": 1784784921.1126208, + "lidar_time_j": 1784785215.9006598, + "frame_counter_i": 11340, + "frame_counter_j": 14288, + "rtk_translation_m": 5.910977627463022, + "rtk_rotation_deg": 0.8461207481731591, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9999829151109813, + 0.00529409933431753, + 0.0024783055464976, + 5.88954102842528 + ], + [ + -0.005300237096573332, + 0.9999828867873494, + 0.0024766144552281623, + 0.516955815245443 + ], + [ + -0.0024651516917889842, + -0.002489707749539244, + 0.9999938621723932, + 0.13876896767640262 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7636, + "backend_objective": 126.1438615368881, + "backend_elapsed_sec": 0.7311048000119627, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.884018456375839, + "inlier_rmse_m": 0.37207003934870925, + "target_points": 4726, + "source_points": 4768 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7725494989000244, + "inlier_rmse_m": 0.19700990533126558, + "target_points": 8291, + "source_points": 8182 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6536551960280774, + "inlier_rmse_m": 0.12852869586058943, + "target_points": 11882, + "source_points": 11682 + } + ], + "heldout_symmetric": { + "evaluated": 8046, + "inliers": 5386, + "inlier_ratio": 0.6694009445687298, + "inlier_rmse_m": 0.12443900216431929, + "median_m": 0.14990803556261834, + "p90_m": 0.8893078182265395, + "p95_m": 1.4156361288783759 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2963.6932124320733, + 4965.495213536636, + 5747.900032842799, + 7635.999999999998, + 12313.890969386013, + 15285.963266669736 + ], + "effective_rank": 6, + "scaled_condition_number": 5.157741429696001, + "weakest_scaled_direction": [ + 0.6651184757858478, + 0.4433951340515224, + -0.030329072793758537, + -0.05889132195018103, + 0.1282361155904706, + 0.5832543411483894 + ] + }, + "forward_reverse": { + "translation_m": 0.017895201000461415, + "rotation_deg": 0.10920228290609475 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.424763686264159e-15, + "rotation_deg": 5.7290601056814575e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 16, + "lidar_time_i": 1784784992.709947, + "lidar_time_j": 1784785067.6067727, + "frame_counter_i": 12056, + "frame_counter_j": 12805, + "rtk_translation_m": 3.7301261399251735, + "rtk_rotation_deg": 25.84341815633164, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.899344491274164, + 0.43664946374658864, + 0.022731736067271795, + 3.5720600394616793 + ], + [ + -0.4355626508439342, + 0.8992317957662932, + -0.04083325449596031, + -1.1210835648002877 + ], + [ + -0.038270918523347304, + 0.0268220672719923, + 0.9989073598200366, + 0.03467327433363931 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8103, + "backend_objective": 115.10097737337574, + "backend_elapsed_sec": 0.7355102000001352, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9125780553077609, + "inlier_rmse_m": 0.35810545737090316, + "target_points": 4943, + "source_points": 4484 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8221859706362153, + "inlier_rmse_m": 0.18174750936776082, + "target_points": 8484, + "source_points": 7969 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7254901960784313, + "inlier_rmse_m": 0.11918362384650298, + "target_points": 11708, + "source_points": 11169 + } + ], + "heldout_symmetric": { + "evaluated": 7896, + "inliers": 5550, + "inlier_ratio": 0.702887537993921, + "inlier_rmse_m": 0.11495230769293868, + "median_m": 0.12764639935061928, + "p90_m": 0.8288317910751664, + "p95_m": 1.2559325090289875 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3881.6517361266197, + 6701.163766997258, + 7672.7397121977065, + 8102.999999999998, + 9901.414246263557, + 13742.172733100482 + ], + "effective_rank": 6, + "scaled_condition_number": 3.540289976352534, + "weakest_scaled_direction": [ + 0.4237980707935003, + 0.7731099251319827, + 0.019408840297256848, + -0.10664566345916048, + 0.04699039508478471, + 0.4568786939742035 + ] + }, + "forward_reverse": { + "translation_m": 0.013545291843393993, + "rotation_deg": 0.033466251783377816 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.393112024019675e-15, + "rotation_deg": 1.1925573850462548e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 17, + "lidar_time_i": 1784784992.709947, + "lidar_time_j": 1784785215.9006598, + "frame_counter_i": 12056, + "frame_counter_j": 14288, + "rtk_translation_m": 2.2049738368271745, + "rtk_rotation_deg": 24.438886412582093, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9108639684885562, + -0.4126548990453869, + -0.006539510923615718, + 1.1338180164985336 + ], + [ + 0.4127060336414471, + 0.9107768630521044, + 0.012618855927291435, + 2.3330790037976663 + ], + [ + 0.000748802526160962, + -0.014192956802958366, + 0.9998989945349315, + 0.04294852548406272 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8407, + "backend_objective": 128.91147136524086, + "backend_elapsed_sec": 0.7574913999997079, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9429530201342282, + "inlier_rmse_m": 0.3380315851516256, + "target_points": 4943, + "source_points": 4768 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8501588853581031, + "inlier_rmse_m": 0.1946211008493029, + "target_points": 8484, + "source_points": 8182 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7196541688067112, + "inlier_rmse_m": 0.1238298249453751, + "target_points": 11708, + "source_points": 11682 + } + ], + "heldout_symmetric": { + "evaluated": 7734, + "inliers": 5746, + "inlier_ratio": 0.7429531936901991, + "inlier_rmse_m": 0.11679524427533879, + "median_m": 0.12330148283366957, + "p90_m": 0.64427149781835, + "p95_m": 1.0354822042207965 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3938.325647314345, + 6262.635126537647, + 7404.541013919073, + 8407.0, + 11062.579084900706, + 13889.152833463806 + ], + "effective_rank": 6, + "scaled_condition_number": 3.526664394280145, + "weakest_scaled_direction": [ + -0.42976677673091224, + -0.8533743062481273, + 0.00860013874048403, + 0.14556615714715207, + -0.07577790738476606, + -0.24504499854779915 + ] + }, + "forward_reverse": { + "translation_m": 0.00989411002791081, + "rotation_deg": 0.07786907370564648 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.5582722720639762e-15, + "rotation_deg": 4.8926578241264104e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 18, + "lidar_time_i": 1784784992.709947, + "lidar_time_j": 1784785296.4990919, + "frame_counter_i": 12056, + "frame_counter_j": 15094, + "rtk_translation_m": 4.7000039832559155, + "rtk_rotation_deg": 3.452521908779401, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9978994945680784, + 0.06471847600639648, + -0.0028491409554944995, + 3.626469146678099 + ], + [ + -0.06472568862427472, + 0.9978999210619623, + -0.002516500872850137, + 2.8934831496969533 + ], + [ + 0.0026802934332227344, + 0.002695627559429288, + 0.9999927747834845, + 0.13855624656070709 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7973, + "backend_objective": 116.7419023547869, + "backend_elapsed_sec": 1.4287633999774698, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9174889775351669, + "inlier_rmse_m": 0.35632509909926824, + "target_points": 4943, + "source_points": 4763 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8240157966185363, + "inlier_rmse_m": 0.18469053885985545, + "target_points": 8484, + "source_points": 8103 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7188711567937968, + "inlier_rmse_m": 0.12100477291289735, + "target_points": 11708, + "source_points": 11091 + } + ], + "heldout_symmetric": { + "evaluated": 7465, + "inliers": 5382, + "inlier_ratio": 0.7209645010046886, + "inlier_rmse_m": 0.11716134583909153, + "median_m": 0.12606695398189235, + "p90_m": 0.8652917735066014, + "p95_m": 1.5501402641436004 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3732.8078478517536, + 5928.628321973292, + 6734.234058310759, + 7972.999999999997, + 12093.773724899498, + 15398.69799344495 + ], + "effective_rank": 6, + "scaled_condition_number": 4.125231895423432, + "weakest_scaled_direction": [ + 0.2834056540616633, + 0.8322009351661683, + -0.0037831621275593945, + -0.14730884306896833, + 0.05221256912814698, + 0.4502027085852247 + ] + }, + "forward_reverse": { + "translation_m": 0.011654729311847106, + "rotation_deg": 0.13683586564190353 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 7.191854738971276e-15, + "rotation_deg": 9.96614732312677e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 16, + "j": 17, + "lidar_time_i": 1784785067.6067727, + "lidar_time_j": 1784785215.9006598, + "frame_counter_i": 12805, + "frame_counter_j": 14288, + "rtk_translation_m": 3.368526196086246, + "rtk_rotation_deg": 50.282304568913744, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6396373047277752, + -0.7668703648512283, + -0.052668414761888424, + -3.693042416723294 + ], + [ + 0.7686336883283444, + 0.638824422288708, + 0.033250724116393064, + 2.046222757634189 + ], + [ + 0.008146874698419515, + -0.06175112145089388, + 0.9980583286723305, + -0.16313654380279113 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6450, + "backend_objective": 94.97025313076063, + "backend_elapsed_sec": 0.7382106000150088, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8586409395973155, + "inlier_rmse_m": 0.4423853047544671, + "target_points": 4484, + "source_points": 4768 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.6912735272549498, + "inlier_rmse_m": 0.20924373323642947, + "target_points": 7969, + "source_points": 8182 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5521314843348741, + "inlier_rmse_m": 0.12134277997817218, + "target_points": 11169, + "source_points": 11682 + } + ], + "heldout_symmetric": { + "evaluated": 7980, + "inliers": 4939, + "inlier_ratio": 0.618922305764411, + "inlier_rmse_m": 0.11254196340939995, + "median_m": 0.14934203444060978, + "p90_m": 1.2292528156499047, + "p95_m": 1.7156496206206349 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2643.044298420247, + 5005.92040619325, + 5640.334155109635, + 6450.000000000002, + 8193.264371358726, + 10753.57510905198 + ], + "effective_rank": 6, + "scaled_condition_number": 4.068632188828396, + "weakest_scaled_direction": [ + -0.08917064780872991, + -0.8793698047617977, + 0.004434951408727184, + 0.10881394524164172, + -0.008740466719060716, + 0.45477555212549964 + ] + }, + "forward_reverse": { + "translation_m": 0.03104786021350874, + "rotation_deg": 0.10375098145235381 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.884194229483362e-15, + "rotation_deg": 1.0842632933293532e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 16, + "j": 18, + "lidar_time_i": 1784785067.6067727, + "lidar_time_j": 1784785296.4990919, + "frame_counter_i": 12805, + "frame_counter_j": 15094, + "rtk_translation_m": 3.5240348999326185, + "rtk_rotation_deg": 22.39089624755224, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9255107551713521, + -0.3764578612653224, + -0.0413439324894626, + -1.7034047301879027 + ], + [ + 0.37755998998954116, + 0.9257009217420918, + 0.022940301762172252, + 3.6393035793561026 + ], + [ + 0.029636059475769874, + -0.03684131074461654, + 0.9988815854751586, + -0.027040447434198877 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6988, + "backend_objective": 98.73024037425444, + "backend_elapsed_sec": 0.6462736999965273, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8744488767583456, + "inlier_rmse_m": 0.3953535087664721, + "target_points": 4484, + "source_points": 4763 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7513266691348883, + "inlier_rmse_m": 0.1932780854547344, + "target_points": 7969, + "source_points": 8103 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.630060409340907, + "inlier_rmse_m": 0.11886353691713382, + "target_points": 11169, + "source_points": 11091 + } + ], + "heldout_symmetric": { + "evaluated": 7711, + "inliers": 5313, + "inlier_ratio": 0.6890156918687589, + "inlier_rmse_m": 0.11084024896736888, + "median_m": 0.12444471284166714, + "p90_m": 1.0390302475893212, + "p95_m": 1.5254214437610027 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3274.5589283480967, + 4881.48997954115, + 5553.592693208326, + 6987.999999999999, + 11825.629543059533, + 14477.372229978067 + ], + "effective_rank": 6, + "scaled_condition_number": 4.42116710884217, + "weakest_scaled_direction": [ + 0.10091257103004869, + -0.919158164984943, + 0.01859955054417381, + 0.15176870935163217, + 0.02370197232904839, + 0.3478842520704622 + ] + }, + "forward_reverse": { + "translation_m": 0.01556225520371614, + "rotation_deg": 0.02495881796886513 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.248030287623391e-15, + "rotation_deg": 5.4937892537477076e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 16, + "j": 19, + "lidar_time_i": 1784785067.6067727, + "lidar_time_j": 1784785363.1952267, + "frame_counter_i": 12805, + "frame_counter_j": 15761, + "rtk_translation_m": 2.146829294717985, + "rtk_rotation_deg": 30.035090485266103, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8685691360844355, + 0.4955592087805267, + -0.002954053885128903, + 0.4401388911120535 + ], + [ + -0.495546354040226, + 0.8684600126783903, + -0.014526437143691045, + 1.4152669373937818 + ], + [ + -0.004633232022795894, + 0.014081085592694576, + 0.9998901220581956, + 0.037017503105767596 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8891, + "backend_objective": 114.86952188432954, + "backend_elapsed_sec": 0.7988309000211302, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.978331780055918, + "inlier_rmse_m": 0.287425493312726, + "target_points": 4484, + "source_points": 4292 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9339195654985128, + "inlier_rmse_m": 0.1810239276670827, + "target_points": 7969, + "source_points": 7733 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.8211877713124596, + "inlier_rmse_m": 0.11366509037828647, + "target_points": 11169, + "source_points": 10827 + } + ], + "heldout_symmetric": { + "evaluated": 8046, + "inliers": 6988, + "inlier_ratio": 0.8685060899826, + "inlier_rmse_m": 0.10135543575024519, + "median_m": 0.07770756094194906, + "p90_m": 0.29270140371814013, + "p95_m": 0.45015599359162717 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4189.031240146661, + 5763.022749834576, + 7791.130024000946, + 8890.999999999998, + 10152.832628687886, + 12232.273807529693 + ], + "effective_rank": 6, + "scaled_condition_number": 2.92007223300188, + "weakest_scaled_direction": [ + -0.2009746556512417, + -0.9576645420155571, + -0.012655654035825718, + 0.1329295172494467, + -0.029933548655592973, + 0.1541472454558819 + ] + }, + "forward_reverse": { + "translation_m": 0.002952251383831446, + "rotation_deg": 0.02753369989560042 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.2538083914528953e-15, + "rotation_deg": 2.916263518797617e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 17, + "j": 18, + "lidar_time_i": 1784785215.9006598, + "lidar_time_j": 1784785296.4990919, + "frame_counter_i": 14288, + "frame_counter_j": 15094, + "rtk_translation_m": 2.640403049812329, + "rtk_rotation_deg": 27.891408321361506, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8823097529107611, + 0.4706687989097939, + -0.0006177793809696017, + 2.499302483644158 + ], + [ + -0.47061942638952536, + 0.8821965909878098, + -0.015701285115615398, + -0.5177217283241621 + ], + [ + -0.006845102142832981, + 0.014144135968647229, + 0.9998765363755441, + 0.07309812657669451 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8535, + "backend_objective": 107.39490738315509, + "backend_elapsed_sec": 0.6916152000194415, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.942053327734621, + "inlier_rmse_m": 0.3099607212229133, + "target_points": 4768, + "source_points": 4763 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8727631741330372, + "inlier_rmse_m": 0.1727315632398436, + "target_points": 8182, + "source_points": 8103 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7695428725994049, + "inlier_rmse_m": 0.11217345102387269, + "target_points": 11682, + "source_points": 11091 + } + ], + "heldout_symmetric": { + "evaluated": 7549, + "inliers": 5811, + "inlier_ratio": 0.7697708305735859, + "inlier_rmse_m": 0.10648049893472207, + "median_m": 0.09912948311211761, + "p90_m": 0.6555595514533777, + "p95_m": 1.192114499552214 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3925.265132527117, + 7516.404611640881, + 8535.0, + 8788.494326388503, + 10592.053298946774, + 14887.833349654953 + ], + "effective_rank": 6, + "scaled_condition_number": 3.7928223564531667, + "weakest_scaled_direction": [ + 0.7950162434941211, + 0.44449821669285194, + 0.006833768980654472, + -0.07787935626043158, + 0.13340898895924408, + 0.38270178347144224 + ] + }, + "forward_reverse": { + "translation_m": 0.010582276181446382, + "rotation_deg": 0.039599051949106026 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.679671031938356e-15, + "rotation_deg": 1.9025066530668517e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 17, + "j": 19, + "lidar_time_i": 1784785215.9006598, + "lidar_time_j": 1784785363.1952267, + "frame_counter_i": 14288, + "frame_counter_j": 15761, + "rtk_translation_m": 3.933985934417215, + "rtk_rotation_deg": 80.31739505417984, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.17422973322544114, + 0.984675015926918, + -0.007688502423202648, + 2.155375638318386 + ], + [ + -0.9824659879480963, + 0.17330202942790318, + -0.06875310263064516, + -3.5856091901133955 + ], + [ + -0.06636702935465323, + 0.019532526858811804, + 0.997604078685099, + -0.019951652785153075 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6803, + "backend_objective": 95.28408937589002, + "backend_elapsed_sec": 1.2986045999859925, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8664958061509785, + "inlier_rmse_m": 0.4133444254263843, + "target_points": 4768, + "source_points": 4292 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7292124660545714, + "inlier_rmse_m": 0.18943921711927933, + "target_points": 8182, + "source_points": 7733 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6283365659924264, + "inlier_rmse_m": 0.11834773713338825, + "target_points": 11682, + "source_points": 10827 + } + ], + "heldout_symmetric": { + "evaluated": 7884, + "inliers": 4962, + "inlier_ratio": 0.6293759512937596, + "inlier_rmse_m": 0.1095449771750205, + "median_m": 0.14106555301981444, + "p90_m": 1.1967793115577627, + "p95_m": 1.7002376870465155 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3198.8238253230834, + 5762.577755613054, + 6802.999999999999, + 7031.384366051658, + 7933.960852513379, + 11670.291127834229 + ], + "effective_rank": 6, + "scaled_condition_number": 3.6483069293931876, + "weakest_scaled_direction": [ + 0.6771581918327142, + 0.5493023358854363, + 0.042156071186760874, + -0.09924876321587665, + 0.08630045490067013, + 0.4697323782440437 + ] + }, + "forward_reverse": { + "translation_m": 0.012240937390583118, + "rotation_deg": 0.060306184678878015 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.1706208825930276e-15, + "rotation_deg": 1.8850753635475668e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 17, + "j": 20, + "lidar_time_i": 1784785215.9006598, + "lidar_time_j": 1784785434.592462, + "frame_counter_i": 14288, + "frame_counter_j": 16475, + "rtk_translation_m": 4.2254212089887, + "rtk_rotation_deg": 152.98392843416656, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.8869705848521764, + 0.4597345174894001, + -0.043901651857027074, + -5.8571420547617326 + ], + [ + -0.4581824230707041, + -0.8879053158145812, + -0.041146291901777106, + -3.0951489672874106 + ], + [ + -0.05789688071083702, + -0.016380585367958427, + 0.998188172453951, + -0.16042162889902042 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6607, + "backend_objective": 108.34420580700518, + "backend_elapsed_sec": 1.0603649000113364, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8320102982192662, + "inlier_rmse_m": 0.40517186021201346, + "target_points": 4768, + "source_points": 4661 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7169148807361666, + "inlier_rmse_m": 0.20417332623539375, + "target_points": 8182, + "source_points": 8259 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5860386730530424, + "inlier_rmse_m": 0.12805622405765335, + "target_points": 11682, + "source_points": 11274 + } + ], + "heldout_symmetric": { + "evaluated": 7713, + "inliers": 4639, + "inlier_ratio": 0.6014520938674964, + "inlier_rmse_m": 0.12300562605352797, + "median_m": 0.1704626644034497, + "p90_m": 1.3821907492869663, + "p95_m": 2.127673607543134 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2693.9673037014763, + 3793.879603747591, + 4645.3080880378075, + 6606.999999999999, + 10838.27374688087, + 12714.036948577783 + ], + "effective_rank": 6, + "scaled_condition_number": 4.719447385686107, + "weakest_scaled_direction": [ + 0.8781087681279518, + 0.31065403159669563, + 0.0653600879378438, + -0.07650136088755265, + 0.1497531467477941, + 0.31602003056099687 + ] + }, + "forward_reverse": { + "translation_m": 1.3272837904090529, + "rotation_deg": 0.4474442011368189 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 6.577266891415849e-09, + "rotation_deg": 1.6959092001245427e-07 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation" + ] + }, + { + "i": 18, + "j": 19, + "lidar_time_i": 1784785296.4990919, + "lidar_time_j": 1784785363.1952267, + "frame_counter_i": 15094, + "frame_counter_j": 15761, + "rtk_translation_m": 2.4460967931915643, + "rtk_rotation_deg": 52.425986732818345, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6167485120774459, + 0.7869701239379373, + 0.017300198824402858, + 1.1466033020612907 + ], + [ + -0.7855738017200135, + 0.6167514879407058, + -0.04991396772537581, + -2.8682149819924376 + ], + [ + -0.04995072473369378, + 0.017193782365508954, + 0.9986036746109772, + -0.05778139705360087 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7134, + "backend_objective": 99.4292817382692, + "backend_elapsed_sec": 1.2040562000183854, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8995806150978565, + "inlier_rmse_m": 0.3762845022246815, + "target_points": 4763, + "source_points": 4292 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7819733609207293, + "inlier_rmse_m": 0.18703209238282328, + "target_points": 8103, + "source_points": 7733 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.658908284843447, + "inlier_rmse_m": 0.11805668891166524, + "target_points": 11091, + "source_points": 10827 + } + ], + "heldout_symmetric": { + "evaluated": 7615, + "inliers": 5199, + "inlier_ratio": 0.6827314510833881, + "inlier_rmse_m": 0.10834806615100012, + "median_m": 0.12048357327824945, + "p90_m": 0.9656513916057085, + "p95_m": 1.504659838869031 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3057.2817621505988, + 5879.408871943106, + 6772.003892718104, + 7133.999999999998, + 8396.035776290852, + 10723.066543061193 + ], + "effective_rank": 6, + "scaled_condition_number": 3.5073857685652805, + "weakest_scaled_direction": [ + 0.4864128078879415, + 0.8321952906595489, + 0.04553803203296789, + -0.12311818357684112, + 0.059719165412243376, + 0.2237306423367302 + ] + }, + "forward_reverse": { + "translation_m": 0.012418496053917759, + "rotation_deg": 0.11905018881098527 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.597186369366252e-15, + "rotation_deg": 8.491408279333536e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 18, + "j": 20, + "lidar_time_i": 1784785296.4990919, + "lidar_time_j": 1784785434.592462, + "frame_counter_i": 15094, + "frame_counter_j": 16475, + "rtk_translation_m": 6.593931011285688, + "rtk_rotation_deg": 125.09252011280485, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.5665187276244886, + 0.8235083028600456, + -0.02984302885596281, + -6.149031223904052 + ], + [ + -0.8222822909141003, + -0.5673034818093925, + -0.04492876112250384, + -6.2084212543412605 + ], + [ + -0.05392926199932333, + -0.0009135904493687485, + 0.9985443405541373, + -0.21105802140089383 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6031, + "backend_objective": 101.72544032171504, + "backend_elapsed_sec": 1.6184766000078525, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8105556747479081, + "inlier_rmse_m": 0.42978163970081584, + "target_points": 4763, + "source_points": 4661 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.6690882673447148, + "inlier_rmse_m": 0.21023759782359572, + "target_points": 8103, + "source_points": 8259 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5349476671988647, + "inlier_rmse_m": 0.12987337450133224, + "target_points": 11091, + "source_points": 11274 + } + ], + "heldout_symmetric": { + "evaluated": 7444, + "inliers": 4285, + "inlier_ratio": 0.5756313809779688, + "inlier_rmse_m": 0.1265759478434112, + "median_m": 0.18860727280502898, + "p90_m": 1.5687308923452958, + "p95_m": 2.4062732751652387 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2442.606361044983, + 2838.1067656928235, + 3633.5068753501264, + 6030.999999999998, + 11508.37951917188, + 13163.438072053988 + ], + "effective_rank": 6, + "scaled_condition_number": 5.389095141151797, + "weakest_scaled_direction": [ + -0.40503394867337683, + -0.8574718824605979, + -0.0840287624243686, + 0.1733613810832198, + -0.10438065274380742, + 0.2295193873699019 + ] + }, + "forward_reverse": { + "translation_m": 0.012917057356045326, + "rotation_deg": 0.24042373011343365 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.332644630809016e-15, + "rotation_deg": 1.9123702764380883e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 18, + "j": 21, + "lidar_time_i": 1784785296.4990919, + "lidar_time_j": 1784785506.389296, + "frame_counter_i": 15094, + "frame_counter_j": 17193, + "rtk_translation_m": 11.793089868757727, + "rtk_rotation_deg": 175.70238585456048, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.99549917434554, + 0.07835894174384257, + -0.05330356579192146, + -11.436192121198863 + ], + [ + -0.0771774577151193, + -0.9967314249010301, + -0.023876905900745996, + -7.920924273201596 + ], + [ + -0.05500030816258748, + -0.01965560641514769, + 0.9982928544462653, + -0.4091353934747035 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 4724, + "backend_objective": 99.80965730760222, + "backend_elapsed_sec": 0.9836230000073556, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.7331449333871619, + "inlier_rmse_m": 0.46898515701750715, + "target_points": 4763, + "source_points": 4954 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.5689108212900952, + "inlier_rmse_m": 0.24011717811992545, + "target_points": 8103, + "source_points": 8511 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.39524765729585004, + "inlier_rmse_m": 0.1453554559514444, + "target_points": 11091, + "source_points": 11952 + } + ], + "heldout_symmetric": { + "evaluated": 7682, + "inliers": 3107, + "inlier_ratio": 0.4044519656339495, + "inlier_rmse_m": 0.14396876383759685, + "median_m": 0.3455490401115615, + "p90_m": 1.9799679700993877, + "p95_m": 3.158641944126311 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 1498.1927272478185, + 1982.6511813688023, + 2425.384370696985, + 4723.999999999999, + 13345.052830383827, + 15044.305038721111 + ], + "effective_rank": 6, + "scaled_condition_number": 10.041635341774429, + "weakest_scaled_direction": [ + -0.25022099172136136, + 0.4827992671208817, + 0.019326645940768324, + -0.0774183565482994, + -0.006682571703724073, + -0.8353936467504306 + ] + }, + "forward_reverse": { + "translation_m": 0.06610149517267662, + "rotation_deg": 0.6118050873537593 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0087767680389479e-14, + "rotation_deg": 4.718792105850687e-15 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_rotation" + ] + }, + { + "i": 19, + "j": 20, + "lidar_time_i": 1784785363.1952267, + "lidar_time_j": 1784785434.592462, + "frame_counter_i": 15761, + "frame_counter_j": 16475, + "rtk_translation_m": 6.650720121741557, + "rtk_rotation_deg": 72.6665333799865, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.2995632277602407, + 0.9534722095606621, + -0.033950230770582464, + -1.8673778110282038 + ], + [ + -0.9538893808486062, + 0.29861017484298136, + -0.030446881359301927, + -7.806720776704809 + ], + [ + -0.018892370897521726, + 0.0415055306646438, + 0.9989596434521851, + -0.11514784259866731 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6449, + "backend_objective": 112.62390511032423, + "backend_elapsed_sec": 0.7281959999818355, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8513194593434885, + "inlier_rmse_m": 0.40697865916910336, + "target_points": 4292, + "source_points": 4661 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7267223634822618, + "inlier_rmse_m": 0.21469325083875807, + "target_points": 7733, + "source_points": 8259 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.57202412630832, + "inlier_rmse_m": 0.13215058880776795, + "target_points": 10827, + "source_points": 11274 + } + ], + "heldout_symmetric": { + "evaluated": 7779, + "inliers": 4850, + "inlier_ratio": 0.6234734541714874, + "inlier_rmse_m": 0.12775305804057488, + "median_m": 0.170675977245648, + "p90_m": 0.9935771645608374, + "p95_m": 1.649768573465828 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2392.0979050100423, + 3933.0839725032315, + 4319.562385462285, + 6448.999999999998, + 11952.794904028282, + 14253.563652472267 + ], + "effective_rank": 6, + "scaled_condition_number": 5.958603794025073, + "weakest_scaled_direction": [ + -0.3292130085735028, + 0.7456663668521551, + 0.017389508926355515, + -0.09447317865484572, + -0.028403619141021665, + -0.5705840185681088 + ] + }, + "forward_reverse": { + "translation_m": 0.009237066767190358, + "rotation_deg": 0.22540488888099894 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.220446049250313e-16, + "rotation_deg": 5.063229629354439e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 19, + "j": 21, + "lidar_time_i": 1784785363.1952267, + "lidar_time_j": 1784785506.389296, + "frame_counter_i": 15761, + "frame_counter_j": 17193, + "rtk_translation_m": 12.053580264031138, + "rtk_rotation_deg": 123.27639912174077, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.549352576208667, + 0.8324274319077399, + -0.07263826553811113, + -3.7596232350865906 + ], + [ + -0.832162592796407, + -0.5528939831444903, + -0.04258711721849981, + -13.00346265213859 + ], + [ + -0.0756119445806231, + 0.037051504829145085, + 0.9964487040618965, + -0.38373689816394135 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 4278, + "backend_objective": 93.73943185262516, + "backend_elapsed_sec": 1.2945770999940578, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.7490916431166734, + "inlier_rmse_m": 0.48850887093859957, + "target_points": 4292, + "source_points": 4954 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.5576313006697216, + "inlier_rmse_m": 0.24703292869390212, + "target_points": 7733, + "source_points": 8511 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.35793172690763053, + "inlier_rmse_m": 0.1480269423285001, + "target_points": 10827, + "source_points": 11952 + } + ], + "heldout_symmetric": { + "evaluated": 8017, + "inliers": 3037, + "inlier_ratio": 0.3788200074840963, + "inlier_rmse_m": 0.14687803396129923, + "median_m": 0.3931050233043033, + "p90_m": 1.8929340554927732, + "p95_m": 2.8623032606456804 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 1275.0791106173986, + 2002.9938343049378, + 2493.689261069071, + 4278.000000000002, + 11351.57572713189, + 12967.64327828981 + ], + "effective_rank": 6, + "scaled_condition_number": 10.170069582593054, + "weakest_scaled_direction": [ + 0.4290773039236958, + -0.5121957049948269, + -0.009551514731244548, + 0.06761011787950263, + 0.04284572421015728, + 0.7396283603851259 + ] + }, + "forward_reverse": { + "translation_m": 0.1645149893124099, + "rotation_deg": 1.1204113986936788 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.124706989126661e-15, + "rotation_deg": 2.2750614619856374e-14 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 19, + "j": 22, + "lidar_time_i": 1784785363.1952267, + "lidar_time_j": 1784785587.5863533, + "frame_counter_i": 15761, + "frame_counter_j": 18005, + "rtk_translation_m": 14.836246959975925, + "rtk_rotation_deg": 128.85294276465592, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.6303671391936169, + 0.7728165394038959, + -0.07342932825951184, + -5.026462229397824 + ], + [ + -0.7726674450137104, + -0.6337429420472728, + -0.036809004621847004, + -15.55395683155031 + ], + [ + -0.07498192609449582, + 0.03353326451531177, + 0.9966209063280314, + -0.4350657660332013 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 3737, + "backend_objective": 86.44641468672715, + "backend_elapsed_sec": 0.9636042999918573, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.7094861660079052, + "inlier_rmse_m": 0.5227833742371985, + "target_points": 4292, + "source_points": 5060 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.4972407449988503, + "inlier_rmse_m": 0.25874220502437517, + "target_points": 7733, + "source_points": 8698 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.30548516308346274, + "inlier_rmse_m": 0.15209395175246385, + "target_points": 10827, + "source_points": 12233 + } + ], + "heldout_symmetric": { + "evaluated": 8130, + "inliers": 2614, + "inlier_ratio": 0.3215252152521525, + "inlier_rmse_m": 0.1505833656059155, + "median_m": 0.5018519231305192, + "p90_m": 2.3960338427586945, + "p95_m": 4.24609726397105 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 869.399108894314, + 1384.0443740461421, + 2202.0687185471406, + 3737.000000000001, + 11669.588540978859, + 13261.903080751388 + ], + "effective_rank": 6, + "scaled_condition_number": 15.25410245430046, + "weakest_scaled_direction": [ + -0.46408136775125053, + 0.28403739646339166, + -0.012190367884641659, + -0.01154261431638178, + -0.05478423592358029, + -0.8370591926478537 + ] + }, + "forward_reverse": { + "translation_m": 0.08605091089946505, + "rotation_deg": 0.48945936193054473 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.2260803654376782e-14, + "rotation_deg": 2.887811979748576e-14 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "heldout_inlier_ratio", + "forward_reverse_translation" + ] + }, + { + "i": 20, + "j": 21, + "lidar_time_i": 1784785434.592462, + "lidar_time_j": 1784785506.389296, + "frame_counter_i": 16475, + "frame_counter_j": 17193, + "rtk_translation_m": 5.40286046809103, + "rtk_rotation_deg": 50.60986574175429, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6303430954662553, + 0.7763163468823693, + 0.000715235089905373, + 4.400478318247196 + ], + [ + -0.7760613002584296, + 0.6301591009886105, + -0.025067223269118456, + -3.3790045559096997 + ], + [ + -0.019910807096017058, + 0.015245884836337513, + 0.9996855119267958, + 0.08410976933572639 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7439, + "backend_objective": 123.23293244918672, + "backend_elapsed_sec": 1.3065648999763653, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9077513120710536, + "inlier_rmse_m": 0.39742858583776913, + "target_points": 4661, + "source_points": 4954 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.767477382211256, + "inlier_rmse_m": 0.20313140621393325, + "target_points": 8259, + "source_points": 8511 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6224062918340026, + "inlier_rmse_m": 0.1287081690276773, + "target_points": 11274, + "source_points": 11952 + } + ], + "heldout_symmetric": { + "evaluated": 7846, + "inliers": 5176, + "inlier_ratio": 0.6596992097884272, + "inlier_rmse_m": 0.12147955429086157, + "median_m": 0.1495751460506765, + "p90_m": 0.9309708721622469, + "p95_m": 1.454348790151935 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3528.592015680104, + 4139.388136318804, + 5354.508591886923, + 7439.000000000002, + 12075.96032696083, + 14403.82811983698 + ], + "effective_rank": 6, + "scaled_condition_number": 4.0820327359553845, + "weakest_scaled_direction": [ + 0.8074375912931642, + -0.5139661399081521, + -0.0530281056863949, + 0.10856962141650259, + 0.18941922121160437, + -0.1827685945204652 + ] + }, + "forward_reverse": { + "translation_m": 0.014725537493637062, + "rotation_deg": 0.1988422472286775 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.7136679897814678e-15, + "rotation_deg": 2.1308218036793923e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 20, + "j": 22, + "lidar_time_i": 1784785434.592462, + "lidar_time_j": 1784785587.5863533, + "frame_counter_i": 16475, + "frame_counter_j": 18005, + "rtk_translation_m": 8.200956565000565, + "rtk_rotation_deg": 56.18640938466938, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5498976142694335, + 0.8351802349875066, + -0.009305316061222561, + 6.445134051540377 + ], + [ + -0.8349275207571369, + 0.5493621558219541, + -0.03312486729023366, + -5.339854544480168 + ], + [ + -0.02255324595538929, + 0.025984549964749144, + 0.9994079018398869, + 0.09419631258178547 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 6708, + "backend_objective": 127.48572540041903, + "backend_elapsed_sec": 1.3334451999980956, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8693675889328063, + "inlier_rmse_m": 0.4243871153600972, + "target_points": 4661, + "source_points": 5060 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7183260519659692, + "inlier_rmse_m": 0.22005739628648716, + "target_points": 8259, + "source_points": 8698 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5483528161530287, + "inlier_rmse_m": 0.13785872347698166, + "target_points": 11274, + "source_points": 12233 + } + ], + "heldout_symmetric": { + "evaluated": 7959, + "inliers": 4568, + "inlier_ratio": 0.5739414499308958, + "inlier_rmse_m": 0.13255415786946786, + "median_m": 0.19925572732689953, + "p90_m": 1.1603230526808797, + "p95_m": 1.6823692816118718 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2917.3968485220435, + 3591.5140230503885, + 4290.69600811845, + 6708.000000000001, + 13063.411638112144, + 15545.309259653664 + ], + "effective_rank": 6, + "scaled_condition_number": 5.328486341352201, + "weakest_scaled_direction": [ + -0.5413503273696024, + -0.38763268014281005, + 0.005638313230374644, + 0.064746601508778, + -0.10113294193278008, + -0.7363619649432789 + ] + }, + "forward_reverse": { + "translation_m": 0.006040617548520927, + "rotation_deg": 0.19706632354687328 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.5135275191586602e-15, + "rotation_deg": 1.4635076473294652e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 20, + "j": 23, + "lidar_time_i": 1784785434.592462, + "lidar_time_j": 1784785681.9825997, + "frame_counter_i": 16475, + "frame_counter_j": 18949, + "rtk_translation_m": 5.175118275082073, + "rtk_rotation_deg": 70.79178325235415, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.322507751768782, + 0.9465658690795198, + 0.001343704870134349, + 4.202327810778941 + ], + [ + -0.9461440127230181, + 0.32240579445474693, + -0.029428062973761566, + -2.321475152586436 + ], + [ + -0.028288818240253918, + 0.008219440110833596, + 0.9995659976043778, + 0.09104259227548182 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7248, + "backend_objective": 119.80416666881655, + "backend_elapsed_sec": 1.7686648000089917, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.906938097216452, + "inlier_rmse_m": 0.39176375407198155, + "target_points": 4661, + "source_points": 4814 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7707491082045185, + "inlier_rmse_m": 0.20302011752598614, + "target_points": 8259, + "source_points": 8410 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6210796915167095, + "inlier_rmse_m": 0.1285662181261835, + "target_points": 11274, + "source_points": 11670 + } + ], + "heldout_symmetric": { + "evaluated": 7804, + "inliers": 5039, + "inlier_ratio": 0.6456945156330087, + "inlier_rmse_m": 0.12075756038041646, + "median_m": 0.15517808632435381, + "p90_m": 0.9630093745757822, + "p95_m": 1.4799107242665825 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3466.4899820586243, + 4396.442579998249, + 5558.437964204887, + 7248.0000000000055, + 11430.044722171817, + 13742.10326409042 + ], + "effective_rank": 6, + "scaled_condition_number": 3.9642702950866386, + "weakest_scaled_direction": [ + 0.9258200373589631, + -0.3108992166063795, + -0.04310100409991908, + 0.06721098854473163, + 0.19950586836742343, + 0.004618494296501815 + ] + }, + "forward_reverse": { + "translation_m": 0.022949011013485506, + "rotation_deg": 0.1911210947924365 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.6022276260193494e-15, + "rotation_deg": 3.128640029315481e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 22, + "lidar_time_i": 1784785506.389296, + "lidar_time_j": 1784785587.5863533, + "frame_counter_i": 17193, + "frame_counter_j": 18005, + "rtk_translation_m": 2.8644847627909416, + "rtk_rotation_deg": 5.57654364291509, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9949972956120353, + 0.09990184864129793, + -4.8608500267821146e-05, + 2.8127749298304954 + ], + [ + -0.09989439805410004, + 0.9949169070895627, + -0.012706581945846273, + 0.35417323668457684 + ], + [ + -0.0012210496075574604, + 0.012647870389464322, + 0.9999192669473208, + 0.0866365210746691 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 9088, + "backend_objective": 132.81604313146903, + "backend_elapsed_sec": 0.6644989000051282, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9349802371541502, + "inlier_rmse_m": 0.3290850481749256, + "target_points": 4954, + "source_points": 5060 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8523798574384917, + "inlier_rmse_m": 0.18222493777602602, + "target_points": 8511, + "source_points": 8698 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7429085261178778, + "inlier_rmse_m": 0.12089020376233393, + "target_points": 11952, + "source_points": 12233 + } + ], + "heldout_symmetric": { + "evaluated": 8197, + "inliers": 6325, + "inlier_ratio": 0.7716237647919971, + "inlier_rmse_m": 0.11632271358541554, + "median_m": 0.12061523540880016, + "p90_m": 0.5638942930862972, + "p95_m": 0.9564969126200213 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 5238.37066645052, + 5960.064716796541, + 8021.911791991109, + 9088.0, + 11435.758522287948, + 14647.540073960481 + ], + "effective_rank": 6, + "scaled_condition_number": 2.79620153032919, + "weakest_scaled_direction": [ + 0.8286342274350785, + 0.49208481699362094, + -0.02217314675461189, + -0.123836994562774, + 0.20318015752027077, + -0.11877888675232023 + ] + }, + "forward_reverse": { + "translation_m": 0.00996357879827298, + "rotation_deg": 0.15332892195322273 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.7510776865858688e-15, + "rotation_deg": 7.420933165871709e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 23, + "lidar_time_i": 1784785506.389296, + "lidar_time_j": 1784785681.9825997, + "frame_counter_i": 17193, + "frame_counter_j": 18949, + "rtk_translation_m": 1.2936223973175418, + "rtk_rotation_deg": 20.18191751059984, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9381092216024289, + 0.34632655331207624, + 0.0030011356954492987, + -0.9422024826829761 + ], + [ + -0.34632017473392956, + 0.9381131769077653, + -0.0024502824900267768, + 0.515992791791233 + ], + [ + -0.0036640028310011433, + 0.0012592787609768446, + 0.9999924946219629, + -0.009944132153914738 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 9972, + "backend_objective": 106.82287065511204, + "backend_elapsed_sec": 0.6348317000083625, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9646863315330286, + "inlier_rmse_m": 0.24999147110283615, + "target_points": 4954, + "source_points": 4814 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9195005945303211, + "inlier_rmse_m": 0.1427462580205043, + "target_points": 8511, + "source_points": 8410 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.8544987146529563, + "inlier_rmse_m": 0.10350015194955625, + "target_points": 11952, + "source_points": 11670 + } + ], + "heldout_symmetric": { + "evaluated": 8042, + "inliers": 6897, + "inlier_ratio": 0.8576224819696593, + "inlier_rmse_m": 0.09865676260631216, + "median_m": 0.07977168507318846, + "p90_m": 0.3447592239536294, + "p95_m": 0.6965109995195521 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 5559.002239993305, + 9325.061412631727, + 9971.999999999996, + 10357.32506975672, + 11703.404533222978, + 16881.550593109147 + ], + "effective_rank": 6, + "scaled_condition_number": 3.0367950693845156, + "weakest_scaled_direction": [ + 0.8351103871037826, + 0.4644264067889887, + 0.010511603766962255, + -0.09979123030130622, + 0.1841294041958525, + -0.2071867106744967 + ] + }, + "forward_reverse": { + "translation_m": 0.0039225733250952055, + "rotation_deg": 0.00898487649368532 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.928739733030706e-15, + "rotation_deg": 9.754520833874925e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 24, + "lidar_time_i": 1784785506.389296, + "lidar_time_j": 1784785815.4779446, + "frame_counter_i": 17193, + "frame_counter_j": 20284, + "rtk_translation_m": 2.3128500583741403, + "rtk_rotation_deg": 54.59467208208593, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5863730584616764, + 0.8099641014896077, + -0.011170971686977796, + -2.421809924402417 + ], + [ + -0.8100055163174597, + 0.5864208373587476, + 0.001290366905073347, + 0.26796640817623507 + ], + [ + 0.007596041441648036, + 0.008291912300412598, + 0.9999367701734039, + -0.0513564309653848 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8408, + "backend_objective": 117.95373727230279, + "backend_elapsed_sec": 0.6464260000211652, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9229920564872022, + "inlier_rmse_m": 0.30096650011851994, + "target_points": 4954, + "source_points": 4532 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8612687602471939, + "inlier_rmse_m": 0.18275950030949215, + "target_points": 8511, + "source_points": 7929 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7487088156723063, + "inlier_rmse_m": 0.11844302792873286, + "target_points": 11952, + "source_points": 11230 + } + ], + "heldout_symmetric": { + "evaluated": 7942, + "inliers": 6128, + "inlier_ratio": 0.7715940569126165, + "inlier_rmse_m": 0.1136150455355286, + "median_m": 0.11068266325131845, + "p90_m": 0.5562501070241405, + "p95_m": 0.9765350057138606 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3943.2395918814473, + 5840.17737729365, + 7904.515121732507, + 8408.000000000002, + 9025.709822314915, + 10915.5112053645 + ], + "effective_rank": 6, + "scaled_condition_number": 2.76815824933335, + "weakest_scaled_direction": [ + 0.967272607196293, + 0.10078787723861277, + 0.018708924279614902, + -0.011742744776234278, + 0.14610462941086985, + -0.179975077528952 + ] + }, + "forward_reverse": { + "translation_m": 0.007475673605589086, + "rotation_deg": 0.042277690012993266 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.265048141851813e-15, + "rotation_deg": 4.275608813106499e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 23, + "lidar_time_i": 1784785587.5863533, + "lidar_time_j": 1784785681.9825997, + "frame_counter_i": 18005, + "frame_counter_j": 18949, + "rtk_translation_m": 3.7194009250537223, + "rtk_rotation_deg": 14.605373867684753, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9680444196649723, + 0.2507479695178774, + 0.003931582145739447, + -3.7524322146059594 + ], + [ + -0.25077356071372225, + 0.9680065077186712, + 0.008719074564636421, + -0.21052314536215322 + ], + [ + -0.0016195068595487717, + -0.009426388330864661, + 0.9999542591541715, + -0.09061951809113535 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8425, + "backend_objective": 119.72122314170635, + "backend_elapsed_sec": 0.6111849000153597, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9266722060656418, + "inlier_rmse_m": 0.3326566134982575, + "target_points": 5060, + "source_points": 4814 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8407847800237812, + "inlier_rmse_m": 0.18437645905040922, + "target_points": 8698, + "source_points": 8410 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.721936589545844, + "inlier_rmse_m": 0.1192066868963147, + "target_points": 12233, + "source_points": 11670 + } + ], + "heldout_symmetric": { + "evaluated": 8155, + "inliers": 6032, + "inlier_ratio": 0.7396689147762109, + "inlier_rmse_m": 0.11702962848624102, + "median_m": 0.12428186412933284, + "p90_m": 0.6834731153650483, + "p95_m": 1.133267609835889 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3956.8261444779464, + 6284.256934054239, + 7344.820627755349, + 8425.0, + 10329.717320870912, + 13511.788614518624 + ], + "effective_rank": 6, + "scaled_condition_number": 3.4148047250889095, + "weakest_scaled_direction": [ + 0.710998161995777, + 0.5253069794287105, + 0.0274124906871681, + -0.07097001746005022, + 0.11930755637458898, + -0.44554652952310314 + ] + }, + "forward_reverse": { + "translation_m": 0.01814015943430581, + "rotation_deg": 0.11847321816106485 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 7.510691584075473e-16, + "rotation_deg": 1.6855623830025184e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 24, + "lidar_time_i": 1784785587.5863533, + "lidar_time_j": 1784785815.4779446, + "frame_counter_i": 18005, + "frame_counter_j": 20284, + "rtk_translation_m": 4.786117710081478, + "rtk_rotation_deg": 49.01812843917083, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6642709142929756, + 0.7473967745444093, + -0.01192534381002899, + -5.197706811864901 + ], + [ + -0.7473119732517021, + 0.6643765226744874, + 0.011342431556021179, + -0.6064792565804605 + ], + [ + 0.01640021521266574, + 0.0013775048343540525, + 0.9998645585385099, + -0.12492443806194173 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7597, + "backend_objective": 113.53567725166101, + "backend_elapsed_sec": 0.6267760999908205, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8921006178287731, + "inlier_rmse_m": 0.3601989247309637, + "target_points": 5060, + "source_points": 4532 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7992180602850296, + "inlier_rmse_m": 0.1946597876180889, + "target_points": 8698, + "source_points": 7929 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6764915405164738, + "inlier_rmse_m": 0.12224894341603466, + "target_points": 12233, + "source_points": 11230 + } + ], + "heldout_symmetric": { + "evaluated": 8055, + "inliers": 5625, + "inlier_ratio": 0.6983240223463687, + "inlier_rmse_m": 0.11898873157361621, + "median_m": 0.1349761973175614, + "p90_m": 0.8567080075359359, + "p95_m": 1.402633720953992 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3486.4343522393056, + 5145.593786430631, + 6124.867060747422, + 7597.000000000004, + 10069.500868055016, + 12667.839263508427 + ], + "effective_rank": 6, + "scaled_condition_number": 3.6334655936865663, + "weakest_scaled_direction": [ + 0.6862262665104412, + 0.5531653158573244, + 0.025217313176956746, + -0.06777062094346989, + 0.1048078471313645, + -0.4548496341829549 + ] + }, + "forward_reverse": { + "translation_m": 0.013438931050857202, + "rotation_deg": 0.08244161259412694 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.535363269142996e-16, + "rotation_deg": 8.919903096252997e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 25, + "lidar_time_i": 1784785587.5863533, + "lidar_time_j": 1784785891.9768085, + "frame_counter_i": 18005, + "frame_counter_j": 21049, + "rtk_translation_m": 2.3747421598149763, + "rtk_rotation_deg": 12.391903814042255, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9770407627777469, + 0.2079734083134367, + -0.04624293789510875, + 0.6795390786788823 + ], + [ + -0.20557320732701825, + 0.9772723215711487, + 0.05175389763313423, + -2.525725593055563 + ], + [ + 0.055955377757290994, + -0.04105935856087716, + 0.997588655095178, + 0.14917236666474296 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8885, + "backend_objective": 128.16450937721874, + "backend_elapsed_sec": 1.1623841999971773, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8974719101123596, + "inlier_rmse_m": 0.3291845730037167, + "target_points": 5060, + "source_points": 4984 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8245857953887151, + "inlier_rmse_m": 0.17924134494338995, + "target_points": 8698, + "source_points": 8631 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7303139898076607, + "inlier_rmse_m": 0.12010336449443608, + "target_points": 12233, + "source_points": 12166 + } + ], + "heldout_symmetric": { + "evaluated": 8315, + "inliers": 6127, + "inlier_ratio": 0.736861094407697, + "inlier_rmse_m": 0.11586394710110075, + "median_m": 0.12060291351780755, + "p90_m": 0.9403605138825243, + "p95_m": 1.6150043046473455 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 5628.530181648795, + 6882.220123450566, + 8885.0, + 9062.01442625923, + 9687.017031439289, + 13412.82712718181 + ], + "effective_rank": 6, + "scaled_condition_number": 2.383007054117407, + "weakest_scaled_direction": [ + -0.46783687640020843, + -0.8195028278974066, + -0.02148447765036452, + 0.2540225470615088, + -0.14893741670344002, + 0.1495739979355733 + ] + }, + "forward_reverse": { + "translation_m": 0.018559552524775386, + "rotation_deg": 0.0645260279790244 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.730402943239876e-15, + "rotation_deg": 1.9294059580880524e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 24, + "lidar_time_i": 1784785681.9825997, + "lidar_time_j": 1784785815.4779446, + "frame_counter_i": 18949, + "frame_counter_j": 20284, + "rtk_translation_m": 1.0880644725336985, + "rtk_rotation_deg": 34.41275457148609, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8305838981930657, + 0.5567195338613541, + -0.013919363477141665, + -1.3014464997509991 + ], + [ + -0.5567640076417144, + 0.8306703286284975, + 0.0008030759370046185, + -0.7464624066983503 + ], + [ + 0.012009490295161249, + 0.007082778651052747, + 0.9999027984706466, + -0.04000695505509844 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8667, + "backend_objective": 123.8123286448374, + "backend_elapsed_sec": 0.6250815000094008, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9613857016769638, + "inlier_rmse_m": 0.29944414365003524, + "target_points": 4814, + "source_points": 4532 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9009963425400429, + "inlier_rmse_m": 0.189097482603213, + "target_points": 8410, + "source_points": 7929 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7717720391807658, + "inlier_rmse_m": 0.11952191631116695, + "target_points": 11670, + "source_points": 11230 + } + ], + "heldout_symmetric": { + "evaluated": 7900, + "inliers": 6204, + "inlier_ratio": 0.7853164556962026, + "inlier_rmse_m": 0.1128725442321241, + "median_m": 0.11066812001662685, + "p90_m": 0.481119677809975, + "p95_m": 0.7373502646771819 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4710.58152330169, + 6485.027623957997, + 8667.0, + 8779.515182045821, + 8941.749215378168, + 11352.13323956887 + ], + "effective_rank": 6, + "scaled_condition_number": 2.409921828847164, + "weakest_scaled_direction": [ + 0.7324147324638411, + 0.6553260418952908, + 0.01879746404287683, + -0.12138367722656418, + 0.13627631288929978, + -0.02139774001111644 + ] + }, + "forward_reverse": { + "translation_m": 0.002195759849115173, + "rotation_deg": 0.032112959181416705 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.3910204087727232e-15, + "rotation_deg": 5.2286455112674205e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 25, + "lidar_time_i": 1784785681.9825997, + "lidar_time_j": 1784785891.9768085, + "frame_counter_i": 18949, + "frame_counter_j": 21049, + "rtk_translation_m": 5.033935954106079, + "rtk_rotation_deg": 2.213470053642494, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9972203977900447, + -0.04367433413881774, + -0.06036580794617759, + 4.882979985646707 + ], + [ + 0.04541318230953327, + 0.9985830854679456, + 0.027739219344483403, + -1.113460366700672 + ], + [ + 0.059068782821258436, + -0.030403518790613045, + 0.9977908122152477, + 0.273657520138239 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7945, + "backend_objective": 130.14939780378864, + "backend_elapsed_sec": 1.1927686000126414, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8715890850722311, + "inlier_rmse_m": 0.3764516463880098, + "target_points": 4814, + "source_points": 4984 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7587765033020507, + "inlier_rmse_m": 0.19610674534834957, + "target_points": 8410, + "source_points": 8631 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6530494821634062, + "inlier_rmse_m": 0.1279894375970588, + "target_points": 11670, + "source_points": 12166 + } + ], + "heldout_symmetric": { + "evaluated": 8160, + "inliers": 5615, + "inlier_ratio": 0.6881127450980392, + "inlier_rmse_m": 0.12303206700403986, + "median_m": 0.14352944759097985, + "p90_m": 1.0073414204808202, + "p95_m": 1.8199687198569776 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4330.355563002327, + 5352.026756576795, + 6958.812549133235, + 7945.000000000004, + 9736.44276676571, + 12715.537950911366 + ], + "effective_rank": 6, + "scaled_condition_number": 2.9363727218037994, + "weakest_scaled_direction": [ + 0.11838027757442754, + -0.8158692313483309, + -0.00249177828490221, + 0.1898261904027668, + 0.029169265485431965, + -0.5324025447438039 + ] + }, + "forward_reverse": { + "translation_m": 0.004939188019100004, + "rotation_deg": 0.12964064637100806 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.1157603309187458e-15, + "rotation_deg": 6.4165896046035994e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 26, + "lidar_time_i": 1784785681.9825997, + "lidar_time_j": 1784785967.8726046, + "frame_counter_i": 18949, + "frame_counter_j": 21808, + "rtk_translation_m": 5.765534437288107, + "rtk_rotation_deg": 40.730927532824346, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7595748228351848, + 0.6482450353218326, + -0.053145674287692256, + 5.459654421401187 + ], + [ + -0.6481308373964457, + 0.7612198406103922, + 0.021697278098228752, + -1.0601937250486408 + ], + [ + 0.05452069451758284, + 0.017964644212612884, + 0.9983510231514942, + 0.3040851537642928 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7771, + "backend_objective": 118.32974902645128, + "backend_elapsed_sec": 0.6451180999865755, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8612804878048781, + "inlier_rmse_m": 0.38777157788430494, + "target_points": 4814, + "source_points": 4592 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7545765194044423, + "inlier_rmse_m": 0.19772997398695177, + "target_points": 8410, + "source_points": 8194 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.648339729684632, + "inlier_rmse_m": 0.12339811262646998, + "target_points": 11670, + "source_points": 11986 + } + ], + "heldout_symmetric": { + "evaluated": 8210, + "inliers": 5626, + "inlier_ratio": 0.6852618757612667, + "inlier_rmse_m": 0.12040544972155913, + "median_m": 0.13906209168376374, + "p90_m": 1.0169604186616972, + "p95_m": 1.9763620072269124 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4089.7416045296422, + 5138.4904664146525, + 6623.150406377983, + 7771.0, + 9672.724665170894, + 12510.546190010848 + ], + "effective_rank": 6, + "scaled_condition_number": 3.0590065093977192, + "weakest_scaled_direction": [ + -0.21773801736288265, + 0.7872800707062773, + 0.0039290737338155265, + -0.17059126033879374, + -0.04991926550767124, + 0.5487909413158989 + ] + }, + "forward_reverse": { + "translation_m": 0.006032445250250899, + "rotation_deg": 0.14039335223024835 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.434197830121313e-15, + "rotation_deg": 1.698246585631573e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 24, + "j": 25, + "lidar_time_i": 1784785815.4779446, + "lidar_time_j": 1784785891.9768085, + "frame_counter_i": 20284, + "frame_counter_j": 21049, + "rtk_translation_m": 6.097212810998921, + "rtk_rotation_deg": 36.62622462512857, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8037633505035409, + -0.5928142183063497, + -0.050356518556728604, + 5.34155522383825 + ], + [ + 0.5936990913280177, + 0.8046802477837873, + 0.003329832264335108, + 3.1299436928178883 + ], + [ + 0.038546923918884125, + -0.03257301644696901, + 0.9987257547775252, + 0.17793036302987872 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7491, + "backend_objective": 122.36297219759622, + "backend_elapsed_sec": 0.8398709000030067, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8451043338683788, + "inlier_rmse_m": 0.40440965092986525, + "target_points": 4532, + "source_points": 4984 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.732591820183061, + "inlier_rmse_m": 0.20281369359927026, + "target_points": 7929, + "source_points": 8631 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6157323688969258, + "inlier_rmse_m": 0.127807138130654, + "target_points": 11230, + "source_points": 12166 + } + ], + "heldout_symmetric": { + "evaluated": 8060, + "inliers": 5462, + "inlier_ratio": 0.677667493796526, + "inlier_rmse_m": 0.12346315805814134, + "median_m": 0.1464769904195533, + "p90_m": 1.0425036798540477, + "p95_m": 1.8241663978789622 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3660.631064840855, + 4613.965978894759, + 5699.640371630539, + 7490.999999999998, + 10536.49658870688, + 13283.15782990778 + ], + "effective_rank": 6, + "scaled_condition_number": 3.6286524357748307, + "weakest_scaled_direction": [ + 0.6563682646761972, + -0.3556356172765252, + -0.003869783403828985, + 0.060244745045807124, + 0.11828323901691135, + -0.6519729133090911 + ] + }, + "forward_reverse": { + "translation_m": 0.02347922689116974, + "rotation_deg": 0.16273859629352566 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.970890786799251e-15, + "rotation_deg": 1.1117016414937514e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 24, + "j": 26, + "lidar_time_i": 1784785815.4779446, + "lidar_time_j": 1784785967.8726046, + "frame_counter_i": 20284, + "frame_counter_j": 21808, + "rtk_translation_m": 6.852918693116795, + "rtk_rotation_deg": 6.318172961338249, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9924792517459847, + 0.11464079518805712, + -0.04292345433885335, + 5.793235167422612 + ], + [ + -0.1147577782487258, + 0.9933934684031152, + -0.00026318329094875066, + 3.5029465859448043 + ], + [ + 0.04260970763976171, + 0.0051870042103603, + 0.9990783291625216, + 0.21982586689000744 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7124, + "backend_objective": 121.5377324853921, + "backend_elapsed_sec": 1.1657464999880176, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8331881533101045, + "inlier_rmse_m": 0.41405807633433495, + "target_points": 4532, + "source_points": 4592 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7206492555528435, + "inlier_rmse_m": 0.2131216310219681, + "target_points": 7929, + "source_points": 8194 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.5943600867678959, + "inlier_rmse_m": 0.1306151667973528, + "target_points": 11230, + "source_points": 11986 + } + ], + "heldout_symmetric": { + "evaluated": 8110, + "inliers": 5296, + "inlier_ratio": 0.6530209617755857, + "inlier_rmse_m": 0.12710147612984257, + "median_m": 0.16093551712195867, + "p90_m": 1.136556474481721, + "p95_m": 2.0736986483914124 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3408.254021328904, + 4110.404962980765, + 5360.4964704143595, + 7124.000000000004, + 9795.973074773803, + 12041.995316044058 + ], + "effective_rank": 6, + "scaled_condition_number": 3.5331859775372005, + "weakest_scaled_direction": [ + 0.8047769771934876, + -0.06863997767047753, + -0.019562763050016686, + -0.0015254440932715278, + 0.14490268040145612, + -0.5711748900112381 + ] + }, + "forward_reverse": { + "translation_m": 0.013311199903818141, + "rotation_deg": 0.18193579850152686 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.8306605131362286e-15, + "rotation_deg": 1.1229881486757472e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 24, + "j": 27, + "lidar_time_i": 1784785815.4779446, + "lidar_time_j": 1784786031.5701303, + "frame_counter_i": 20284, + "frame_counter_j": 22445, + "rtk_translation_m": 7.47982907414204, + "rtk_rotation_deg": 31.60254826458195, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8472033387428138, + 0.5298056220988211, + -0.0394018478692232, + 6.137157336522583 + ], + [ + -0.530542787082115, + 0.8475914881862393, + -0.010631097280009903, + 3.304411515644586 + ], + [ + 0.02776425576473398, + 0.029911067294847195, + 0.999166890041455, + 0.2472402777703364 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7563, + "backend_objective": 120.2223714306218, + "backend_elapsed_sec": 0.7761194000195246, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.847083775185578, + "inlier_rmse_m": 0.3995558643998555, + "target_points": 4532, + "source_points": 4715 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7331007938417128, + "inlier_rmse_m": 0.19693761531375742, + "target_points": 7929, + "source_points": 8314 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6304601533844615, + "inlier_rmse_m": 0.1260798243116474, + "target_points": 11230, + "source_points": 11996 + } + ], + "heldout_symmetric": { + "evaluated": 8120, + "inliers": 5399, + "inlier_ratio": 0.6649014778325123, + "inlier_rmse_m": 0.1248115961442785, + "median_m": 0.15506265295621713, + "p90_m": 1.1670237044609033, + "p95_m": 1.9789037080338905 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3399.509912540717, + 4808.494143252888, + 5652.355733740009, + 7563.0, + 10991.02906448226, + 13938.206713586194 + ], + "effective_rank": 6, + "scaled_condition_number": 4.10006355979974, + "weakest_scaled_direction": [ + 0.6336190232432726, + -0.3833423356919101, + -0.011825054853273481, + 0.057226122269047, + 0.11493195706920405, + -0.6595085831909395 + ] + }, + "forward_reverse": { + "translation_m": 0.017872821205486625, + "rotation_deg": 0.1680556511699705 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.1314069507916044e-15, + "rotation_deg": 6.809027884116031e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 26, + "lidar_time_i": 1784785891.9768085, + "lidar_time_j": 1784785967.8726046, + "frame_counter_i": 21049, + "frame_counter_j": 21808, + "rtk_translation_m": 1.2882746074869595, + "rtk_rotation_deg": 42.944397586466835, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.731376825723403, + 0.681972824686745, + 0.0010025884210163915, + 0.5934045670931157 + ], + [ + -0.681966395137421, + 0.7313750893872982, + -0.003509206034461014, + 0.03104477317046849 + ], + [ + -0.003126451347768677, + 0.0018828203590064386, + 0.9999933401225558, + 0.014299903296172183 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 10692, + "backend_objective": 118.79558962502077, + "backend_elapsed_sec": 0.7246742999996059, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9867160278745645, + "inlier_rmse_m": 0.25413081389620407, + "target_points": 4984, + "source_points": 4592 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9538686844032219, + "inlier_rmse_m": 0.15693498741141237, + "target_points": 8631, + "source_points": 8194 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.8920407141665276, + "inlier_rmse_m": 0.10540729869476612, + "target_points": 12166, + "source_points": 11986 + } + ], + "heldout_symmetric": { + "evaluated": 8370, + "inliers": 7640, + "inlier_ratio": 0.9127837514934289, + "inlier_rmse_m": 0.0958142916589384, + "median_m": 0.07452961120192095, + "p90_m": 0.23108824193102034, + "p95_m": 0.36282615590852785 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 6569.756111954044, + 9497.76721223113, + 10692.0, + 11510.277228558976, + 12273.142000537238, + 19063.89404835365 + ], + "effective_rank": 6, + "scaled_condition_number": 2.9017658682436953, + "weakest_scaled_direction": [ + 0.44312868623079144, + 0.7478136519772935, + -0.0005696502855167559, + -0.20908014531616242, + 0.12356569112011447, + -0.4306139775563361 + ] + }, + "forward_reverse": { + "translation_m": 0.003534148840172682, + "rotation_deg": 0.018440169300173608 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.496569158470144e-15, + "rotation_deg": 1.8805867170009317e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 27, + "lidar_time_i": 1784785891.9768085, + "lidar_time_j": 1784786031.5701303, + "frame_counter_i": 21049, + "frame_counter_j": 22445, + "rtk_translation_m": 1.7666235781584831, + "rtk_rotation_deg": 68.22877288971053, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.36708851294331263, + 0.9301836142143228, + 0.0021136490349218744, + 0.7416208149476917 + ], + [ + -0.9300107062704112, + 0.3670624952425087, + -0.0185798495352678, + -0.33550324753487787 + ], + [ + -0.01805851288109898, + 0.004854733104836471, + 0.9998251455524633, + 0.02666998572913017 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 10013, + "backend_objective": 128.01055636949394, + "backend_elapsed_sec": 1.5921890999889001, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9713679745493107, + "inlier_rmse_m": 0.2637511985043929, + "target_points": 4984, + "source_points": 4715 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9399807553524177, + "inlier_rmse_m": 0.17604025113539679, + "target_points": 8631, + "source_points": 8314 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.8346948982994331, + "inlier_rmse_m": 0.113068279682314, + "target_points": 12166, + "source_points": 11996 + } + ], + "heldout_symmetric": { + "evaluated": 8380, + "inliers": 7132, + "inlier_ratio": 0.8510739856801909, + "inlier_rmse_m": 0.10418150333394147, + "median_m": 0.08815965835882159, + "p90_m": 0.3087305917346343, + "p95_m": 0.4893728235109789 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 6334.468500988184, + 6989.280155724873, + 9593.645454452859, + 10013.0, + 11109.638980418636, + 15001.626672914219 + ], + "effective_rank": 6, + "scaled_condition_number": 2.368253417089997, + "weakest_scaled_direction": [ + -0.5456469190862923, + -0.6892269554539587, + -0.008908771457999964, + 0.17418489298078865, + -0.14332549493413133, + 0.41984961940862864 + ] + }, + "forward_reverse": { + "translation_m": 0.006103232696002816, + "rotation_deg": 0.13366555345652814 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.566190222653667e-15, + "rotation_deg": 1.474615217368706e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 28, + "lidar_time_i": 1784785891.9768085, + "lidar_time_j": 1784786087.9670725, + "frame_counter_i": 21049, + "frame_counter_j": 23009, + "rtk_translation_m": 2.1807182972588706, + "rtk_rotation_deg": 88.09106909546726, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.028118385051409227, + 0.9995814265189842, + -0.006806480762717368, + 0.5747765467375485 + ], + [ + -0.999351215603629, + 0.02795730029194509, + -0.02270544498430636, + -0.0677657674962029 + ], + [ + -0.022505650260546625, + 0.007440505269036634, + 0.999719027821163, + 0.02069302518692709 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 10515, + "backend_objective": 136.50645796897058, + "backend_elapsed_sec": 0.7322920000005979, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9775143090760425, + "inlier_rmse_m": 0.25137481132191286, + "target_points": 4984, + "source_points": 4892 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9514449514449514, + "inlier_rmse_m": 0.1662653992208052, + "target_points": 8631, + "source_points": 8547 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.8669304971555776, + "inlier_rmse_m": 0.11393888375561717, + "target_points": 12166, + "source_points": 12129 + } + ], + "heldout_symmetric": { + "evaluated": 8356, + "inliers": 7398, + "inlier_ratio": 0.8853518429870751, + "inlier_rmse_m": 0.10761251229652005, + "median_m": 0.08437689926059491, + "p90_m": 0.2687123552589268, + "p95_m": 0.42387563524420313 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 6354.728001404782, + 8352.611667850428, + 10290.658370048182, + 10515.000000000004, + 11989.308880041617, + 16759.23581263924 + ], + "effective_rank": 6, + "scaled_condition_number": 2.6372860976794645, + "weakest_scaled_direction": [ + -0.29097247411742877, + -0.8680264798725017, + -0.003223185305474681, + 0.21917173597589112, + -0.07469053714720127, + 0.3289980766396671 + ] + }, + "forward_reverse": { + "translation_m": 0.003483231665912094, + "rotation_deg": 0.0369774420199415 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.545908510953292e-16, + "rotation_deg": 5.1681392389850166e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 27, + "lidar_time_i": 1784785967.8726046, + "lidar_time_j": 1784786031.5701303, + "frame_counter_i": 21808, + "frame_counter_j": 22445, + "rtk_translation_m": 0.6269948654714946, + "rtk_rotation_deg": 25.284375303243706, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9030447341715294, + 0.42954041810275, + 0.0022885150593196235, + 0.367458667773597 + ], + [ + -0.42953215295028935, + 0.9030452918131814, + -0.0033660831739380954, + -0.17366596860429281 + ], + [ + -0.0035125015234641114, + 0.002056732884519408, + 0.9999917160571292, + -0.0010345310597696551 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 10843, + "backend_objective": 106.00675061189676, + "backend_elapsed_sec": 1.7304479999875184, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.984729586426299, + "inlier_rmse_m": 0.2616249667022414, + "target_points": 4592, + "source_points": 4715 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9560981477026702, + "inlier_rmse_m": 0.152325033921002, + "target_points": 8194, + "source_points": 8314 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.9038846282094032, + "inlier_rmse_m": 0.09887626033891524, + "target_points": 11986, + "source_points": 11996 + } + ], + "heldout_symmetric": { + "evaluated": 8430, + "inliers": 7742, + "inlier_ratio": 0.9183867141162515, + "inlier_rmse_m": 0.09074909570650921, + "median_m": 0.06800174940508802, + "p90_m": 0.20945043332245036, + "p95_m": 0.3765781757127126 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 6604.830249080193, + 8840.19173904651, + 10629.947508488453, + 10843.000000000002, + 12770.959493216518, + 18587.52157641432 + ], + "effective_rank": 6, + "scaled_condition_number": 2.8142315359282506, + "weakest_scaled_direction": [ + -0.3384502616878677, + 0.7576369888382872, + 0.0024732199755315904, + -0.19871081248600378, + -0.0870893258711524, + -0.5141604409237267 + ] + }, + "forward_reverse": { + "translation_m": 0.00040199505815422204, + "rotation_deg": 0.011554314408129918 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.143646902843158e-16, + "rotation_deg": 5.18450820282529e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 28, + "lidar_time_i": 1784785967.8726046, + "lidar_time_j": 1784786087.9670725, + "frame_counter_i": 21808, + "frame_counter_j": 23009, + "rtk_translation_m": 0.9431372257108486, + "rtk_rotation_deg": 45.14667150900044, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7023489450850038, + 0.7118285128507452, + 0.0024754051542978926, + 0.059924493613274954 + ], + [ + -0.711609302823476, + 0.7022113024110725, + -0.022616076167906476, + -0.07987586636228974 + ], + [ + -0.01783702534251465, + 0.01412285590243564, + 0.9997411592347739, + 0.004304137267008405 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 10357, + "backend_objective": 140.96465670349417, + "backend_elapsed_sec": 0.6732955999905244, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9899836467702371, + "inlier_rmse_m": 0.24929646828357188, + "target_points": 4592, + "source_points": 4892 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9629109629109629, + "inlier_rmse_m": 0.17553154672561475, + "target_points": 8194, + "source_points": 8547 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.8539038667656031, + "inlier_rmse_m": 0.11666434064962423, + "target_points": 11986, + "source_points": 12129 + } + ], + "heldout_symmetric": { + "evaluated": 8406, + "inliers": 7442, + "inlier_ratio": 0.8853200095170116, + "inlier_rmse_m": 0.10604184939655073, + "median_m": 0.0882151532502487, + "p90_m": 0.2671438287119019, + "p95_m": 0.3725940992291091 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 6321.5011558721235, + 8738.942300486915, + 10356.999999999996, + 10401.191191011756, + 11400.032430282545, + 16792.448489132497 + ], + "effective_rank": 6, + "scaled_condition_number": 2.656402027789519, + "weakest_scaled_direction": [ + 0.37052279261799637, + -0.8228446201478125, + -0.010850438718942732, + 0.18603068824881994, + 0.07875239464157928, + 0.38041096539382 + ] + }, + "forward_reverse": { + "translation_m": 0.007320240476189879, + "rotation_deg": 0.12930335868605478 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.0810630699588005e-15, + "rotation_deg": 1.720036083435983e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 29, + "lidar_time_i": 1784785967.8726046, + "lidar_time_j": 1784786160.8647907, + "frame_counter_i": 21808, + "frame_counter_j": 23738, + "rtk_translation_m": 1.129925637779203, + "rtk_rotation_deg": 87.41573662125148, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.034956863564828515, + 0.9993632171123948, + -0.007153878142224315, + -0.32127950591517335 + ], + [ + -0.9982015526121018, + 0.03456562117527665, + -0.048978344148787725, + -2.022544605994437 + ], + [ + -0.04869987733557226, + 0.008853141562806466, + 0.9987742206484768, + -0.05771150862601452 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8979, + "backend_objective": 126.59537165532059, + "backend_elapsed_sec": 1.1400810000195634, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9229795315467398, + "inlier_rmse_m": 0.34905710552794983, + "target_points": 4592, + "source_points": 4739 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8292448292448292, + "inlier_rmse_m": 0.18142983837507598, + "target_points": 8194, + "source_points": 8316 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7386475814412635, + "inlier_rmse_m": 0.11873942138112017, + "target_points": 11986, + "source_points": 12156 + } + ], + "heldout_symmetric": { + "evaluated": 8483, + "inliers": 6685, + "inlier_ratio": 0.7880466815984911, + "inlier_rmse_m": 0.10871274240898265, + "median_m": 0.09987443726586266, + "p90_m": 0.5989271338106864, + "p95_m": 1.042307189772784 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 5066.11839372448, + 7154.53034017749, + 8539.142280164258, + 8978.999999999998, + 11061.666064302934, + 15765.544963482462 + ], + "effective_rank": 6, + "scaled_condition_number": 3.111957466886604, + "weakest_scaled_direction": [ + 0.20518452270900206, + -0.7823014747731898, + -0.02796516388109131, + 0.1858684214239572, + 0.02885519344463898, + 0.5565446716536907 + ] + }, + "forward_reverse": { + "translation_m": 0.0063952430610542755, + "rotation_deg": 0.039517035902874385 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.7201880167252704e-15, + "rotation_deg": 3.4341887907319502e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 28, + "lidar_time_i": 1784786031.5701303, + "lidar_time_j": 1784786087.9670725, + "frame_counter_i": 22445, + "frame_counter_j": 23009, + "rtk_translation_m": 0.44809323479571145, + "rtk_rotation_deg": 19.862296205756735, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.940129337285168, + 0.3408176479611037, + 0.00040001751423761, + -0.3090525318122643 + ], + [ + -0.34081145984607186, + 0.9401181782377067, + -0.005035849938632279, + -0.06150678590856295 + ], + [ + -0.002092370268317959, + 0.004598019712482603, + 0.9999872400192832, + -0.00046194103304580335 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 10943, + "backend_objective": 95.03463894867873, + "backend_elapsed_sec": 0.5891648000106215, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9656582174979559, + "inlier_rmse_m": 0.23006334615117718, + "target_points": 4715, + "source_points": 4892 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.9468819468819469, + "inlier_rmse_m": 0.13876472207650142, + "target_points": 8314, + "source_points": 8547 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.902217825047407, + "inlier_rmse_m": 0.09319074098486065, + "target_points": 11996, + "source_points": 12129 + } + ], + "heldout_symmetric": { + "evaluated": 8416, + "inliers": 7818, + "inlier_ratio": 0.9289448669201521, + "inlier_rmse_m": 0.0850509551532673, + "median_m": 0.06297352923183072, + "p90_m": 0.19662620313791002, + "p95_m": 0.3419859428441886 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 6436.785156566374, + 9053.997463060621, + 10762.59977378392, + 10942.999999999996, + 13132.612044155389, + 19073.822078919267 + ], + "effective_rank": 6, + "scaled_condition_number": 2.96325286846982, + "weakest_scaled_direction": [ + 0.6501163887984533, + -0.5292009822570725, + 0.009774766482022202, + 0.12960273835377986, + 0.1684877802053284, + 0.5020104117114625 + ] + }, + "forward_reverse": { + "translation_m": 0.005157655135591474, + "rotation_deg": 0.022666807877311387 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.3669411984536294e-15, + "rotation_deg": 1.799536464903132e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 29, + "lidar_time_i": 1784786031.5701303, + "lidar_time_j": 1784786160.8647907, + "frame_counter_i": 22445, + "frame_counter_j": 23738, + "rtk_translation_m": 1.160064136065596, + "rtk_rotation_deg": 62.13136131800778, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.4608780212576795, + 0.8874417535367568, + 0.006211569947420817, + 0.1753206383072172 + ], + [ + -0.8864041682474931, + 0.4606584982758418, + -0.04562234627587741, + -1.959863954140555 + ], + [ + -0.04334858746344002, + 0.01552037518400438, + 0.9989394465727498, + -0.055993036823545034 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8950, + "backend_objective": 116.72392086733629, + "backend_elapsed_sec": 0.6143317999958526, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9052542730533868, + "inlier_rmse_m": 0.3282603185880566, + "target_points": 4715, + "source_points": 4739 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8282828282828283, + "inlier_rmse_m": 0.18031125391494027, + "target_points": 8314, + "source_points": 8316 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7362619282658769, + "inlier_rmse_m": 0.11420060800126593, + "target_points": 11996, + "source_points": 12156 + } + ], + "heldout_symmetric": { + "evaluated": 8493, + "inliers": 6686, + "inlier_ratio": 0.7872365477452019, + "inlier_rmse_m": 0.10455513464835667, + "median_m": 0.09656351181790844, + "p90_m": 0.5837300322156737, + "p95_m": 1.0840981465293762 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 5004.494243501986, + 5878.097736393739, + 7647.053972393816, + 8949.999999999998, + 11392.978253653338, + 14824.12649224894 + ], + "effective_rank": 6, + "scaled_condition_number": 2.9621627623005296, + "weakest_scaled_direction": [ + 0.4626624155505667, + -0.6395297686100232, + -0.023224714791810926, + 0.15106664872262085, + 0.0879311384051886, + 0.5880924752654536 + ] + }, + "forward_reverse": { + "translation_m": 0.011650639607012138, + "rotation_deg": 0.1624719134077532 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0609248831790639e-15, + "rotation_deg": 1.2643853824624548e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 30, + "lidar_time_i": 1784786031.5701303, + "lidar_time_j": 1784786252.6621523, + "frame_counter_i": 22445, + "frame_counter_j": 24656, + "rtk_translation_m": 4.25412615059095, + "rtk_rotation_deg": 152.09392556214777, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.8693419651935, + 0.49328851370887117, + -0.030182607514841687, + 3.5994705600121075 + ], + [ + -0.4929278889355686, + -0.86986433719558, + -0.01892435427747753, + 2.4988644187071802 + ], + [ + -0.03558994047516922, + -0.0015738863327385481, + 0.9993652380480256, + -0.21509551291085394 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 457, + "backend_objective": 11.31425135778671, + "backend_elapsed_sec": 0.8596451999910641, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.36999748301031965, + "inlier_rmse_m": 0.7559109677704624, + "target_points": 4715, + "source_points": 3973 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.10055791710945802, + "inlier_rmse_m": 0.3313478529407446, + "target_points": 8314, + "source_points": 7528 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.04094248342590934, + "inlier_rmse_m": 0.15734567555040377, + "target_points": 11996, + "source_points": 11162 + } + ], + "heldout_symmetric": { + "evaluated": 8576, + "inliers": 411, + "inlier_ratio": 0.04792444029850746, + "inlier_rmse_m": 0.15706827084964883, + "median_m": 1.510041034247014, + "p90_m": 2.642977987575308, + "p95_m": 2.9676196688610803 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 188.0846288115085, + 373.67419174036627, + 430.05727673396564, + 456.99999999999994, + 517.2985481578297, + 641.6523616999016 + ], + "effective_rank": 6, + "scaled_condition_number": 3.4115087753552786, + "weakest_scaled_direction": [ + 0.6752870842984472, + -0.726883511143531, + 0.025130774183960636, + 0.05639725041111904, + 0.04904010731572828, + -0.09700812964281118 + ] + }, + "forward_reverse": { + "translation_m": 2.5641513880069633, + "rotation_deg": 2.874944882076104 + }, + "multistart": { + "runs": 1, + "success_rate": 0.0, + "deltas": [ + { + "translation_m": 2.5647251439453833, + "rotation_deg": 2.8441942793626005 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "heldout_inlier_ratio", + "forward_reverse_translation", + "forward_reverse_rotation", + "multistart_instability" + ] + }, + { + "i": 28, + "j": 29, + "lidar_time_i": 1784786087.9670725, + "lidar_time_j": 1784786160.8647907, + "frame_counter_i": 23009, + "frame_counter_j": 23738, + "rtk_translation_m": 1.5995723610319212, + "rtk_rotation_deg": 42.26906511225104, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7357203674880102, + 0.6771641842998001, + 0.012814381174763, + 1.1089783875774961 + ], + [ + -0.6767172982756025, + 0.7357464343940727, + -0.027034838467685285, + -1.6295389871904071 + ], + [ + -0.027735159596945322, + 0.011218367884765157, + 0.9995523543787656, + -0.01525339546648255 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 9087, + "backend_objective": 125.22406224059179, + "backend_elapsed_sec": 1.980666100018425, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9358514454526271, + "inlier_rmse_m": 0.3247867534470612, + "target_points": 4892, + "source_points": 4739 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8626743626743627, + "inlier_rmse_m": 0.18098084215694493, + "target_points": 8547, + "source_points": 8316 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7475320829220138, + "inlier_rmse_m": 0.1173906831594268, + "target_points": 12129, + "source_points": 12156 + } + ], + "heldout_symmetric": { + "evaluated": 8469, + "inliers": 6776, + "inlier_ratio": 0.8000944621560987, + "inlier_rmse_m": 0.1086547547358129, + "median_m": 0.10176035403550192, + "p90_m": 0.5001289181517845, + "p95_m": 0.9253560005897886 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4855.868729434682, + 7105.390346217539, + 8461.16943375336, + 9087.0, + 11019.618291316021, + 15279.58536408583 + ], + "effective_rank": 6, + "scaled_condition_number": 3.1466224100058553, + "weakest_scaled_direction": [ + 0.7998075151906056, + -0.2596437493269175, + -0.007241923079475405, + 0.05928970424608462, + 0.1683876149490679, + 0.5108531674878579 + ] + }, + "forward_reverse": { + "translation_m": 0.0011394164967304414, + "rotation_deg": 0.02119627748719656 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.5554731959909575e-15, + "rotation_deg": 3.7838126105272676e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 28, + "j": 30, + "lidar_time_i": 1784786087.9670725, + "lidar_time_j": 1784786252.6621523, + "frame_counter_i": 23009, + "frame_counter_j": 24656, + "rtk_translation_m": 4.295353381127667, + "rtk_rotation_deg": 132.23162935639104, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.6533698788903878, + 0.7566387544884615, + -0.024608871670858276, + 2.7778991716424835 + ], + [ + -0.7559861378941994, + -0.6538302043417603, + -0.03148052099673738, + 3.7712844164127466 + ], + [ + -0.03990940579079673, + -0.0019644583386584777, + 0.9992013712124617, + -0.14949593975793155 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 455, + "backend_objective": 11.847117354606477, + "backend_elapsed_sec": 1.2905711999919731, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.35112006040775234, + "inlier_rmse_m": 0.7664749102573049, + "target_points": 4892, + "source_points": 3973 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.10175345377258235, + "inlier_rmse_m": 0.31880175094938373, + "target_points": 8547, + "source_points": 7528 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.04076330406737144, + "inlier_rmse_m": 0.16136176920068357, + "target_points": 12129, + "source_points": 11162 + } + ], + "heldout_symmetric": { + "evaluated": 8552, + "inliers": 360, + "inlier_ratio": 0.042095416276894296, + "inlier_rmse_m": 0.16025490727880456, + "median_m": 1.5565295506022245, + "p90_m": 2.614866368465739, + "p95_m": 2.9080579883218474 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 191.9018716774536, + 387.5185478311202, + 413.48214090728476, + 455.0, + 729.8500445195981, + 888.7030537153191 + ], + "effective_rank": 6, + "scaled_condition_number": 4.631028587407634, + "weakest_scaled_direction": [ + 0.8459470349633543, + -0.510586130810404, + 0.036301421360995886, + 0.05610061406792018, + 0.08517442454844952, + -0.10934195156473282 + ] + }, + "forward_reverse": { + "translation_m": 2.5607552487652696, + "rotation_deg": 2.17230408479254 + }, + "multistart": { + "runs": 1, + "success_rate": 0.0, + "deltas": [ + { + "translation_m": 2.5619449483977585, + "rotation_deg": 2.1577786731375026 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "heldout_inlier_ratio", + "heldout_inlier_rmse", + "forward_reverse_translation", + "forward_reverse_rotation", + "multistart_instability" + ] + }, + { + "i": 28, + "j": 31, + "lidar_time_i": 1784786087.9670725, + "lidar_time_j": 1784786319.6581354, + "frame_counter_i": 23009, + "frame_counter_j": 25326, + "rtk_translation_m": 5.754426930327516, + "rtk_rotation_deg": 158.8421298011293, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9302206964005612, + 0.365347289201367, + -0.03479675647622887, + 2.824392235322527 + ], + [ + -0.36353296356779685, + -0.9302833338581108, + -0.049159975035134175, + 1.7615669777958702 + ], + [ + -0.05033130623844817, + -0.033079858207866235, + 0.9981845934461615, + 0.10255675720015657 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8104, + "backend_objective": 101.47059390369647, + "backend_elapsed_sec": 1.3112240000045858, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8509331443420742, + "inlier_rmse_m": 0.3566197508687418, + "target_points": 4892, + "source_points": 4233 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7776364330237884, + "inlier_rmse_m": 0.17830111444065264, + "target_points": 8547, + "source_points": 7861 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7037165682528655, + "inlier_rmse_m": 0.11189750033140437, + "target_points": 12129, + "source_points": 11516 + } + ], + "heldout_symmetric": { + "evaluated": 8581, + "inliers": 6406, + "inlier_ratio": 0.7465330381074466, + "inlier_rmse_m": 0.1066966653439246, + "median_m": 0.1038479524009454, + "p90_m": 1.0068343104061177, + "p95_m": 1.9557779089473875 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4273.6926928735365, + 5539.132277480686, + 7996.38131785358, + 8104.0, + 8404.053932945493, + 10267.9670841991 + ], + "effective_rank": 6, + "scaled_condition_number": 2.402598366822474, + "weakest_scaled_direction": [ + 0.9139788290624762, + 0.33235359567279144, + -0.008335557504596035, + -0.05843009782010007, + 0.1645390382037056, + 0.15371120494541698 + ] + }, + "forward_reverse": { + "translation_m": 0.00635764905956918, + "rotation_deg": 0.040016615214377715 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.6489874298927905e-15, + "rotation_deg": 2.2669497728165652e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 30, + "lidar_time_i": 1784786160.8647907, + "lidar_time_j": 1784786252.6621523, + "frame_counter_i": 23738, + "frame_counter_j": 24656, + "rtk_translation_m": 4.099530130205247, + "rtk_rotation_deg": 89.96256424413995, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.0017015734686510722, + 0.9997757384508612, + -0.021108705615598577, + -2.6583990253190706 + ], + [ + -0.9989410962918163, + 0.0007288991444849446, + -0.04600168307071181, + 2.5579828648386203 + ], + [ + -0.04597598054453888, + 0.021164628772373715, + 0.9987183124895077, + -0.02331550577672528 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7945, + "backend_objective": 102.88241479434289, + "backend_elapsed_sec": 1.2573650999984238, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8749056128869872, + "inlier_rmse_m": 0.34415015279828515, + "target_points": 4739, + "source_points": 3973 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7978214665249734, + "inlier_rmse_m": 0.17473631458402464, + "target_points": 8316, + "source_points": 7528 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7117900017917936, + "inlier_rmse_m": 0.11379511625114151, + "target_points": 12156, + "source_points": 11162 + } + ], + "heldout_symmetric": { + "evaluated": 8629, + "inliers": 6255, + "inlier_ratio": 0.7248812145092132, + "inlier_rmse_m": 0.10870831469083347, + "median_m": 0.10951188859898933, + "p90_m": 0.9294188799438398, + "p95_m": 2.042546300010314 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3763.8927308442508, + 5432.562954317404, + 7107.705721151835, + 7944.999999999998, + 8832.91034588967, + 11092.652504773385 + ], + "effective_rank": 6, + "scaled_condition_number": 2.9471223804737057, + "weakest_scaled_direction": [ + 0.2918166000853768, + -0.863638115122693, + 0.023612110311937273, + 0.13778695636451369, + 0.057010261827101755, + 0.3823340567759548 + ] + }, + "forward_reverse": { + "translation_m": 0.00465638537716095, + "rotation_deg": 0.12465763189227934 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.983207951185934e-15, + "rotation_deg": 5.129885440253511e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 31, + "lidar_time_i": 1784786160.8647907, + "lidar_time_j": 1784786319.6581354, + "frame_counter_i": 23738, + "frame_counter_j": 25326, + "rtk_translation_m": 4.890018768530818, + "rtk_rotation_deg": 116.57306468887772, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.4370045644919571, + 0.8992031149555768, + -0.021465522760562964, + -1.0336450423483996 + ], + [ + -0.897967497556909, + -0.4375294274743018, + -0.04714205580364749, + 3.656761712508662 + ], + [ + -0.051782081307915145, + -0.0013259518086748945, + 0.9986575278378579, + 0.06093438749413569 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7923, + "backend_objective": 102.43587166334136, + "backend_elapsed_sec": 0.7656470999936573, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8525868178596739, + "inlier_rmse_m": 0.364741045211601, + "target_points": 4739, + "source_points": 4233 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7646609846075563, + "inlier_rmse_m": 0.17892429270763288, + "target_points": 8316, + "source_points": 7861 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6879993053143453, + "inlier_rmse_m": 0.11370543021198332, + "target_points": 12156, + "source_points": 11516 + } + ], + "heldout_symmetric": { + "evaluated": 8658, + "inliers": 6271, + "inlier_ratio": 0.7243012243012243, + "inlier_rmse_m": 0.11138751941762699, + "median_m": 0.11493050218901205, + "p90_m": 1.0537147117058252, + "p95_m": 1.993621193944296 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3702.472769167777, + 5242.628144204906, + 7269.6092761292875, + 7923.0, + 8479.899961048737, + 10235.493865034827 + ], + "effective_rank": 6, + "scaled_condition_number": 2.7645021322697017, + "weakest_scaled_direction": [ + -0.05858390590873623, + 0.9455899033254807, + -0.023407522559643273, + -0.142152099320647, + -0.015870515358267268, + -0.28534304965427404 + ] + }, + "forward_reverse": { + "translation_m": 0.004263906321896464, + "rotation_deg": 0.046637396086304225 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.356610190004922e-15, + "rotation_deg": 1.2233139066312992e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 32, + "lidar_time_i": 1784786160.8647907, + "lidar_time_j": 1784786396.7558627, + "frame_counter_i": 23738, + "frame_counter_j": 26097, + "rtk_translation_m": 4.464737187763289, + "rtk_rotation_deg": 159.39493219688632, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9295919387998384, + 0.36456839178075, + -0.054302072085278145, + -2.8908105269081292 + ], + [ + -0.3628824367250795, + -0.9310367075571268, + -0.0385614613008016, + 3.962757118171067 + ], + [ + -0.06461551233895604, + -0.01614115533604047, + 0.9977796844341897, + 0.015994269907167236 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7213, + "backend_objective": 94.54083773136172, + "backend_elapsed_sec": 0.6597700999991503, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8009293225727562, + "inlier_rmse_m": 0.3953569665736006, + "target_points": 4739, + "source_points": 4089 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7113985448666128, + "inlier_rmse_m": 0.17809313203635674, + "target_points": 8316, + "source_points": 7422 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6609548245212132, + "inlier_rmse_m": 0.1144858352756756, + "target_points": 12156, + "source_points": 10913 + } + ], + "heldout_symmetric": { + "evaluated": 8673, + "inliers": 6033, + "inlier_ratio": 0.6956070563818748, + "inlier_rmse_m": 0.1103354081949904, + "median_m": 0.1202910301149279, + "p90_m": 1.3288598222169319, + "p95_m": 2.302821478219939 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3009.307606564352, + 4717.3040479664405, + 6143.996201614695, + 7213.000000000002, + 8056.716935688335, + 9711.073529388763 + ], + "effective_rank": 6, + "scaled_condition_number": 3.227012588611917, + "weakest_scaled_direction": [ + 0.26335827960407093, + -0.8941869496593108, + 0.03423445494296838, + 0.10967302401686123, + 0.04533049596262965, + 0.3403191026911331 + ] + }, + "forward_reverse": { + "translation_m": 0.011088061861347823, + "rotation_deg": 0.34561739459504637 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.9814160980877515e-15, + "rotation_deg": 4.2365352857005895e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 30, + "j": 31, + "lidar_time_i": 1784786252.6621523, + "lidar_time_j": 1784786319.6581354, + "frame_counter_i": 24656, + "frame_counter_j": 25326, + "rtk_translation_m": 2.3862917603439455, + "rtk_rotation_deg": 26.61050044473775, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8987838272010792, + 0.43839003315083136, + 0.0013456581267806136, + -1.1000232013970885 + ], + [ + -0.43838650132041823, + 0.898783628842838, + -0.0022943374086413304, + 1.623372648657991 + ], + [ + -0.0022152701470032, + 0.0014721949988565216, + 0.9999964626037742, + 0.01227745168444494 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8906, + "backend_objective": 99.50532777016456, + "backend_elapsed_sec": 0.6612015999853611, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9045594141270966, + "inlier_rmse_m": 0.30641925920418384, + "target_points": 3973, + "source_points": 4233 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.855616333799771, + "inlier_rmse_m": 0.1662225543981025, + "target_points": 7528, + "source_points": 7861 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7733588051406739, + "inlier_rmse_m": 0.10570166343988935, + "target_points": 11162, + "source_points": 11516 + } + ], + "heldout_symmetric": { + "evaluated": 8741, + "inliers": 7155, + "inlier_ratio": 0.8185562292643862, + "inlier_rmse_m": 0.0961579573295129, + "median_m": 0.07594019619194607, + "p90_m": 0.45491976817997126, + "p95_m": 0.7769375652135185 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4453.964231396102, + 5543.482099249372, + 7449.354617113133, + 8905.999999999998, + 10373.766159854848, + 12914.528547263404 + ], + "effective_rank": 6, + "scaled_condition_number": 2.899558208444643, + "weakest_scaled_direction": [ + 0.7120457384764026, + -0.49980290696893237, + 0.0196003785835027, + 0.08584793177264372, + 0.10371498741182765, + -0.4740011388793349 + ] + }, + "forward_reverse": { + "translation_m": 0.004999163455591531, + "rotation_deg": 0.0213847958734735 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.9690272995027716e-15, + "rotation_deg": 9.700555871897717e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 30, + "j": 32, + "lidar_time_i": 1784786252.6621523, + "lidar_time_j": 1784786396.7558627, + "frame_counter_i": 24656, + "frame_counter_j": 26097, + "rtk_translation_m": 1.1507634071714652, + "rtk_rotation_deg": 69.43236795274659, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.36387986477157686, + 0.931404752986997, + -0.008753863549936883, + -1.4009527791762526 + ], + [ + -0.9310693701763868, + 0.36344951509615775, + -0.031847729836107265, + -0.23086150164562821 + ], + [ + -0.0264815394787536, + 0.0197392018480942, + 0.9994543971473812, + -0.03210156240484504 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8454, + "backend_objective": 102.00989553236812, + "backend_elapsed_sec": 0.6016227999934927, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9141599413059428, + "inlier_rmse_m": 0.3180386884006071, + "target_points": 3973, + "source_points": 4089 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8654001616814875, + "inlier_rmse_m": 0.18217732603319353, + "target_points": 7528, + "source_points": 7422 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7746724090534225, + "inlier_rmse_m": 0.10984746264689386, + "target_points": 11162, + "source_points": 10913 + } + ], + "heldout_symmetric": { + "evaluated": 8756, + "inliers": 7041, + "inlier_ratio": 0.8041343079031521, + "inlier_rmse_m": 0.099533431536842, + "median_m": 0.08002985449770786, + "p90_m": 0.48043747303466966, + "p95_m": 0.8602355104919983 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4311.887528041993, + 5266.0144157268605, + 7562.045487088288, + 8454.000000000005, + 9295.343551771231, + 11273.933890577873 + ], + "effective_rank": 6, + "scaled_condition_number": 2.6146168742247573, + "weakest_scaled_direction": [ + 0.9521847012693492, + -0.01596727240636242, + 0.03432307538317788, + 0.011993735212950205, + 0.15217478825270542, + -0.26193558657163796 + ] + }, + "forward_reverse": { + "translation_m": 0.003171376495143, + "rotation_deg": 0.02376737774843464 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.4370957682360787e-16, + "rotation_deg": 8.861539215587854e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 30, + "j": 33, + "lidar_time_i": 1784786252.6621523, + "lidar_time_j": 1784786557.4492514, + "frame_counter_i": 24656, + "frame_counter_j": 27704, + "rtk_translation_m": 2.4361832484951105, + "rtk_rotation_deg": 160.7145717128102, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9442498510776686, + 0.32874233840054756, + 0.017907922345713957, + -0.31553262485168 + ], + [ + -0.3291367354105927, + -0.9438784074418034, + -0.027614513727080063, + 2.4439985539052493 + ], + [ + 0.007824841407829687, + -0.031969155573232294, + 0.9994582257147502, + 0.8495727932898036 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 777, + "backend_objective": 15.620004693475606, + "backend_elapsed_sec": 1.232938600005582, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.3087130696044066, + "inlier_rmse_m": 0.7569595846254803, + "target_points": 3973, + "source_points": 3994 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.11655239960822723, + "inlier_rmse_m": 0.3094587368058975, + "target_points": 7528, + "source_points": 7147 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.07430429377450512, + "inlier_rmse_m": 0.1417849291831443, + "target_points": 11162, + "source_points": 10457 + } + ], + "heldout_symmetric": { + "evaluated": 8429, + "inliers": 695, + "inlier_ratio": 0.0824534345711235, + "inlier_rmse_m": 0.13003518012314966, + "median_m": 1.495005480118762, + "p90_m": 2.700641613327596, + "p95_m": 2.9804503927712616 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 110.73146019210188, + 131.53032357331114, + 237.86413986941471, + 776.9999999999998, + 803.0217196499735, + 807.376695516047 + ], + "effective_rank": 6, + "scaled_condition_number": 7.2913036106936, + "weakest_scaled_direction": [ + 0.8148426069139895, + -0.557883765194359, + 0.02239601106756256, + 0.05516123094431681, + 0.0755633556690448, + -0.12467183747415381 + ] + }, + "forward_reverse": { + "translation_m": 1.3743823383381788, + "rotation_deg": 1.9837113244583153 + }, + "multistart": { + "runs": 1, + "success_rate": 0.0, + "deltas": [ + { + "translation_m": 2.74680554853272, + "rotation_deg": 3.515023932230732 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "heldout_inlier_ratio", + "forward_reverse_translation", + "forward_reverse_rotation", + "multistart_instability" + ] + }, + { + "i": 31, + "j": 32, + "lidar_time_i": 1784786319.6581354, + "lidar_time_j": 1784786396.7558627, + "frame_counter_i": 25326, + "frame_counter_j": 26097, + "rtk_translation_m": 1.2514382602180638, + "rtk_rotation_deg": 42.82186750800885, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.73539344737915, + 0.6776240077230559, + 0.00470974618776515, + 0.5446436109045508 + ], + [ + -0.6771417809653044, + 0.7351011785770846, + -0.033245536929295265, + -1.8023941104342365 + ], + [ + -0.025990113946359007, + 0.021259384090927466, + 0.9994361173007157, + -0.038656847052263084 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 8321, + "backend_objective": 104.68954435407265, + "backend_elapsed_sec": 0.6357737999933306, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.9158718513083883, + "inlier_rmse_m": 0.3194253893460661, + "target_points": 4233, + "source_points": 4089 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.8613581244947454, + "inlier_rmse_m": 0.18148424991779427, + "target_points": 7861, + "source_points": 7422 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.7624851095024283, + "inlier_rmse_m": 0.11216668731753437, + "target_points": 11516, + "source_points": 10913 + } + ], + "heldout_symmetric": { + "evaluated": 8785, + "inliers": 7166, + "inlier_ratio": 0.8157085941946499, + "inlier_rmse_m": 0.09925944770258267, + "median_m": 0.07888441155086569, + "p90_m": 0.48392640367799045, + "p95_m": 0.9608094865127568 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3699.3023510760745, + 4727.224613115375, + 6699.125724884189, + 8320.999999999998, + 9608.325626652204, + 11277.475406838334 + ], + "effective_rank": 6, + "scaled_condition_number": 3.0485411400768245, + "weakest_scaled_direction": [ + 0.6926566303503612, + 0.6473051237198294, + 0.04322918919707361, + -0.08602483210067127, + 0.0723860481745139, + 0.2944725704218168 + ] + }, + "forward_reverse": { + "translation_m": 0.004719596234887584, + "rotation_deg": 0.06146741991681224 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0577403687701087e-09, + "rotation_deg": 5.017501916348629e-09 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 31, + "j": 33, + "lidar_time_i": 1784786319.6581354, + "lidar_time_j": 1784786557.4492514, + "frame_counter_i": 25326, + "frame_counter_j": 27704, + "rtk_translation_m": 0.641507519046697, + "rtk_rotation_deg": 134.10407126807203, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.6933790222488846, + 0.7198797992021888, + 0.031600731095929126, + 0.30033073323356396 + ], + [ + -0.7205493390367719, + -0.6923333000902168, + -0.03851300559373108, + 1.1422920118631261 + ], + [ + -0.005846496288579847, + -0.04947399606669754, + 0.9987583001879591, + 1.031248314724261 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 922, + "backend_objective": 17.384443340953343, + "backend_elapsed_sec": 1.071740299987141, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.2789183775663495, + "inlier_rmse_m": 0.7592150008800915, + "target_points": 4233, + "source_points": 3994 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.11837134462012033, + "inlier_rmse_m": 0.288204181433143, + "target_points": 7861, + "source_points": 7147 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.08817060342354403, + "inlier_rmse_m": 0.137314036505466, + "target_points": 11516, + "source_points": 10457 + } + ], + "heldout_symmetric": { + "evaluated": 8458, + "inliers": 771, + "inlier_ratio": 0.0911563017261764, + "inlier_rmse_m": 0.12702324561674966, + "median_m": 1.5446327277209206, + "p90_m": 2.7042136173463582, + "p95_m": 2.99612947209192 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 126.60189343830119, + 156.46318587256008, + 279.85523956074167, + 922.0, + 950.1325558860659, + 954.7661331450001 + ], + "effective_rank": 6, + "scaled_condition_number": 7.541483837366941, + "weakest_scaled_direction": [ + 0.2714300577340671, + -0.9462800437433, + -0.02061021284124718, + 0.09930271056452261, + 0.031533101853772, + -0.13999877449576664 + ] + }, + "forward_reverse": { + "translation_m": 2.816294381538612, + "rotation_deg": 3.333105317420589 + }, + "multistart": { + "runs": 1, + "success_rate": 0.0, + "deltas": [ + { + "translation_m": 2.8150792789684056, + "rotation_deg": 3.358304138889011 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "heldout_inlier_ratio", + "forward_reverse_translation", + "forward_reverse_rotation", + "multistart_instability" + ] + }, + { + "i": 32, + "j": 33, + "lidar_time_i": 1784786396.7558627, + "lidar_time_j": 1784786557.4492514, + "frame_counter_i": 26097, + "frame_counter_j": 27704, + "rtk_translation_m": 1.4370687242949811, + "rtk_rotation_deg": 91.2822037600631, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.02543240520904842, + 0.9995826198764401, + -0.013703240720100419, + -2.551526100664499 + ], + [ + -0.9993201072742216, + -0.0257869658655089, + -0.026350627865156382, + -0.5746587162569765 + ], + [ + -0.026692994637538076, + 0.013023764141035744, + 0.9995588354893767, + -0.06709909389428405 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "open3d", + "backend_converged": null, + "backend_iterations": null, + "backend_num_inliers": 7170, + "backend_objective": 92.68266713845796, + "backend_elapsed_sec": 1.1681094999948982, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "fitness": 0.8375062593890836, + "inlier_rmse_m": 0.35349725672907956, + "target_points": 4089, + "source_points": 3994 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "fitness": 0.7554218553239122, + "inlier_rmse_m": 0.18476958522923292, + "target_points": 7422, + "source_points": 7147 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "fitness": 0.6856651047145452, + "inlier_rmse_m": 0.11369455958156494, + "target_points": 10913, + "source_points": 10457 + } + ], + "heldout_symmetric": { + "evaluated": 8473, + "inliers": 6414, + "inlier_ratio": 0.7569928006609229, + "inlier_rmse_m": 0.10008740880870744, + "median_m": 0.08834857877411445, + "p90_m": 0.9960371547843112, + "p95_m": 2.5088898917980305 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 2731.3996047233045, + 3840.7390248544434, + 5107.964710787966, + 7169.999999999998, + 8585.485028460402, + 9999.939188218461 + ], + "effective_rank": 6, + "scaled_condition_number": 3.6611044282667207, + "weakest_scaled_direction": [ + 0.6024362256505087, + 0.6605258105471334, + 0.052965444184604, + -0.04340562970352462, + 0.07458905967670341, + -0.4364897854863681 + ] + }, + "forward_reverse": { + "translation_m": 2.988193350509204, + "rotation_deg": 2.696443494598379 + }, + "multistart": { + "runs": 1, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.826405982230485e-15, + "rotation_deg": 1.038543983377488e-14 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + } + ] +} \ No newline at end of file diff --git a/results/02_data4_calibration/open3d_gicp/B_refined.npz b/results/02_data4_calibration/open3d_gicp/B_refined.npz new file mode 100644 index 0000000..0d80e89 Binary files /dev/null and b/results/02_data4_calibration/open3d_gicp/B_refined.npz differ diff --git a/results/02_data4_calibration/open3d_gicp/B_refined.refinement.json b/results/02_data4_calibration/open3d_gicp/B_refined.refinement.json new file mode 100644 index 0000000..e66ee06 --- /dev/null +++ b/results/02_data4_calibration/open3d_gicp/B_refined.refinement.json @@ -0,0 +1,1072 @@ +{ + "selection_is_X_independent": true, + "criteria": { + "min_inlier_ratio": 0.7, + "max_inlier_rmse_m": 0.13, + "max_rotation_invariant_error_deg": 0.75, + "reverse_translation_tolerance_m": 0.05, + "reverse_rotation_tolerance_deg": 0.5 + }, + "input_pairs": 87, + "accepted_pairs": 42, + "pairs": [ + { + "i": 0, + "j": 1, + "heldout_inlier_ratio": 0.8061657032755298, + "heldout_inlier_rmse_m": 0.10961296014103376, + "rotation_invariant_error_deg": 0.021953694767613996, + "reverse_translation_m": 0.004225163540003135, + "reverse_rotation_deg": 0.15304490677206398, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 0, + "j": 2, + "heldout_inlier_ratio": 0.7489394523717702, + "heldout_inlier_rmse_m": 0.116305716193008, + "rotation_invariant_error_deg": 0.6722513635970557, + "reverse_translation_m": 0.02073003109723772, + "reverse_rotation_deg": 0.12418344306820694, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 0, + "j": 3, + "heldout_inlier_ratio": 0.6310283235519265, + "heldout_inlier_rmse_m": 0.12470979645173065, + "rotation_invariant_error_deg": 0.31955029067046326, + "reverse_translation_m": 0.02154775870989581, + "reverse_rotation_deg": 0.2539904497958252, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 1, + "j": 2, + "heldout_inlier_ratio": 0.7867383512544803, + "heldout_inlier_rmse_m": 0.11079021393934936, + "rotation_invariant_error_deg": 0.6532823847336076, + "reverse_translation_m": 0.0076823267394430066, + "reverse_rotation_deg": 0.05080433004685343, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 1, + "j": 3, + "heldout_inlier_ratio": 0.6794562317367552, + "heldout_inlier_rmse_m": 0.1190716913809658, + "rotation_invariant_error_deg": 0.28968149037614666, + "reverse_translation_m": 0.024832426027852336, + "reverse_rotation_deg": 0.29364033194785566, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 1, + "j": 4, + "heldout_inlier_ratio": 0.6786112833230006, + "heldout_inlier_rmse_m": 0.11255015823152649, + "rotation_invariant_error_deg": 0.2350920621707786, + "reverse_translation_m": 0.007769137931169012, + "reverse_rotation_deg": 0.07270245476793177, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 2, + "j": 3, + "heldout_inlier_ratio": 0.7586776859504132, + "heldout_inlier_rmse_m": 0.11541610277862563, + "rotation_invariant_error_deg": 0.06385020919199477, + "reverse_translation_m": 0.007879904085793275, + "reverse_rotation_deg": 0.11659483159946175, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 4, + "heldout_inlier_ratio": 0.7854572527608884, + "heldout_inlier_rmse_m": 0.1098649389241601, + "rotation_invariant_error_deg": 0.8714733340458736, + "reverse_translation_m": 0.017042953274278242, + "reverse_rotation_deg": 0.09383247792992147, + "accepted": false, + "rejection_reasons": [ + "rotation_conjugacy_invariant" + ] + }, + { + "i": 2, + "j": 5, + "heldout_inlier_ratio": 0.7074574574574575, + "heldout_inlier_rmse_m": 0.11912871456224478, + "rotation_invariant_error_deg": 0.18237928888538768, + "reverse_translation_m": 0.016641241123247028, + "reverse_rotation_deg": 0.24777402858141082, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 4, + "heldout_inlier_ratio": 0.6974624291697462, + "heldout_inlier_rmse_m": 0.1172763088894914, + "rotation_invariant_error_deg": 0.490243673582313, + "reverse_translation_m": 0.012148721219467648, + "reverse_rotation_deg": 0.2079308684382429, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 3, + "j": 5, + "heldout_inlier_ratio": 0.7962985964476462, + "heldout_inlier_rmse_m": 0.10646082199215777, + "rotation_invariant_error_deg": 0.552273782508431, + "reverse_translation_m": 0.011008298723511818, + "reverse_rotation_deg": 0.08217077610411756, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 6, + "heldout_inlier_ratio": 0.8376509054325956, + "heldout_inlier_rmse_m": 0.10956583416752592, + "rotation_invariant_error_deg": 0.24026261153986894, + "reverse_translation_m": 0.001222821038316072, + "reverse_rotation_deg": 0.09207521511761255, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 5, + "heldout_inlier_ratio": 0.6652516676773802, + "heldout_inlier_rmse_m": 0.12322094568314959, + "rotation_invariant_error_deg": 1.0602492186818964, + "reverse_translation_m": 0.005399786589867114, + "reverse_rotation_deg": 0.1389350777589359, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 4, + "j": 6, + "heldout_inlier_ratio": 0.6529585072428186, + "heldout_inlier_rmse_m": 0.11878586101480827, + "rotation_invariant_error_deg": 0.2660016441779476, + "reverse_translation_m": 0.011377811219747914, + "reverse_rotation_deg": 0.20418431358287809, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 4, + "j": 7, + "heldout_inlier_ratio": 0.6964418087472202, + "heldout_inlier_rmse_m": 0.11691192595448072, + "rotation_invariant_error_deg": 0.25710683125699063, + "reverse_translation_m": 0.017641796253111963, + "reverse_rotation_deg": 0.10886712169052283, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 5, + "j": 6, + "heldout_inlier_ratio": 0.7526921648718901, + "heldout_inlier_rmse_m": 0.10924852668609378, + "rotation_invariant_error_deg": 0.8049600839827704, + "reverse_translation_m": 0.012374747586501101, + "reverse_rotation_deg": 0.14461856068326442, + "accepted": false, + "rejection_reasons": [ + "rotation_conjugacy_invariant" + ] + }, + { + "i": 5, + "j": 7, + "heldout_inlier_ratio": 0.7833561729164071, + "heldout_inlier_rmse_m": 0.11683079277948674, + "rotation_invariant_error_deg": 0.7937418989475873, + "reverse_translation_m": 0.0136898748124479, + "reverse_rotation_deg": 0.2000656277647698, + "accepted": false, + "rejection_reasons": [ + "rotation_conjugacy_invariant" + ] + }, + { + "i": 5, + "j": 8, + "heldout_inlier_ratio": 0.7410703250525275, + "heldout_inlier_rmse_m": 0.11436945722491815, + "rotation_invariant_error_deg": 0.4895932719632867, + "reverse_translation_m": 0.020336999081352437, + "reverse_rotation_deg": 0.07548452187379719, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 7, + "heldout_inlier_ratio": 0.8497729566094854, + "heldout_inlier_rmse_m": 0.10415909908074772, + "rotation_invariant_error_deg": 0.026617733421606005, + "reverse_translation_m": 0.008986805974948919, + "reverse_rotation_deg": 0.1309947950641294, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 8, + "heldout_inlier_ratio": 0.7678928928928929, + "heldout_inlier_rmse_m": 0.11166725079781287, + "rotation_invariant_error_deg": 0.32815442351947866, + "reverse_translation_m": 0.010085391730565987, + "reverse_rotation_deg": 0.11752836996157842, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 9, + "heldout_inlier_ratio": 0.6071384156199477, + "heldout_inlier_rmse_m": 0.12594282886521954, + "rotation_invariant_error_deg": 0.06220808914818576, + "reverse_translation_m": 0.01655440444551025, + "reverse_rotation_deg": 0.4345945520890901, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 7, + "j": 8, + "heldout_inlier_ratio": 0.8299748110831234, + "heldout_inlier_rmse_m": 0.10748525688830209, + "rotation_invariant_error_deg": 0.29848794137559764, + "reverse_translation_m": 0.007106461978852689, + "reverse_rotation_deg": 0.10698728473689886, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 7, + "j": 9, + "heldout_inlier_ratio": 0.6188509200150206, + "heldout_inlier_rmse_m": 0.1271320507839345, + "rotation_invariant_error_deg": 0.060817415136170894, + "reverse_translation_m": 0.026230622734929154, + "reverse_rotation_deg": 0.28112746782878123, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 7, + "j": 10, + "heldout_inlier_ratio": 0.5757088027733069, + "heldout_inlier_rmse_m": 0.1313446077529101, + "rotation_invariant_error_deg": 0.08805329493384306, + "reverse_translation_m": 0.012710332356906473, + "reverse_rotation_deg": 0.2297418063823675, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 8, + "j": 9, + "heldout_inlier_ratio": 0.6326834719980131, + "heldout_inlier_rmse_m": 0.12084265385763356, + "rotation_invariant_error_deg": 0.5779508072572632, + "reverse_translation_m": 0.02518064403521875, + "reverse_rotation_deg": 0.3859647522318924, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 8, + "j": 10, + "heldout_inlier_ratio": 0.6163861933423412, + "heldout_inlier_rmse_m": 0.12936028463965984, + "rotation_invariant_error_deg": 0.22960778579899, + "reverse_translation_m": 0.011327540721525892, + "reverse_rotation_deg": 0.17059480981566058, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 8, + "j": 11, + "heldout_inlier_ratio": 0.5371195721380364, + "heldout_inlier_rmse_m": 0.13463285672049757, + "rotation_invariant_error_deg": 0.1575176157841085, + "reverse_translation_m": 0.017887959781482814, + "reverse_rotation_deg": 0.14919899299178907, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 9, + "j": 10, + "heldout_inlier_ratio": 0.6543345543345543, + "heldout_inlier_rmse_m": 0.10729272360686735, + "rotation_invariant_error_deg": 0.1786491689335179, + "reverse_translation_m": 0.008725655639009402, + "reverse_rotation_deg": 0.02870462611907292, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 9, + "j": 11, + "heldout_inlier_ratio": 0.5818780055682106, + "heldout_inlier_rmse_m": 0.11717687815100752, + "rotation_invariant_error_deg": 0.2635280280577561, + "reverse_translation_m": 0.009813025835682346, + "reverse_rotation_deg": 0.0603546019895227, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 9, + "j": 12, + "heldout_inlier_ratio": 0.5379123584441162, + "heldout_inlier_rmse_m": 0.12645695585785732, + "rotation_invariant_error_deg": 0.5448949372769469, + "reverse_translation_m": 0.008862930161052695, + "reverse_rotation_deg": 0.11566409877698863, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 10, + "j": 11, + "heldout_inlier_ratio": 0.7118898623279099, + "heldout_inlier_rmse_m": 0.1192865608074921, + "rotation_invariant_error_deg": 0.037876295004004135, + "reverse_translation_m": 0.0029529340190147615, + "reverse_rotation_deg": 0.0041769080934441144, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 10, + "j": 12, + "heldout_inlier_ratio": 0.6120311738918656, + "heldout_inlier_rmse_m": 0.1252565212812615, + "rotation_invariant_error_deg": 0.22694248875487233, + "reverse_translation_m": 0.005686910809265337, + "reverse_rotation_deg": 0.10204044727301474, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 10, + "j": 13, + "heldout_inlier_ratio": 0.516551290119572, + "heldout_inlier_rmse_m": 0.1354903305714049, + "rotation_invariant_error_deg": 0.7336960316225429, + "reverse_translation_m": 0.01356504272158301, + "reverse_rotation_deg": 0.3255230434099281, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 11, + "j": 12, + "heldout_inlier_ratio": 0.650555275113579, + "heldout_inlier_rmse_m": 0.12104882943540958, + "rotation_invariant_error_deg": 0.1682852032564881, + "reverse_translation_m": 0.003583199374499245, + "reverse_rotation_deg": 0.03300207707174736, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 11, + "j": 13, + "heldout_inlier_ratio": 0.5698054068172914, + "heldout_inlier_rmse_m": 0.12858662743221627, + "rotation_invariant_error_deg": 0.7985328447718985, + "reverse_translation_m": 0.016001435752891854, + "reverse_rotation_deg": 0.11059625579949509, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 11, + "j": 14, + "heldout_inlier_ratio": 0.6420881321982974, + "heldout_inlier_rmse_m": 0.12414062948335584, + "rotation_invariant_error_deg": 0.9364144322989034, + "reverse_translation_m": 0.012369101516230236, + "reverse_rotation_deg": 0.018705060406060074, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 12, + "j": 13, + "heldout_inlier_ratio": 0.6972966112450819, + "heldout_inlier_rmse_m": 0.11680896213116294, + "rotation_invariant_error_deg": 0.9873386907551591, + "reverse_translation_m": 0.011410238767832601, + "reverse_rotation_deg": 0.04779713993430858, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 12, + "j": 14, + "heldout_inlier_ratio": 0.8749086479902558, + "heldout_inlier_rmse_m": 0.09521299965540617, + "rotation_invariant_error_deg": 0.7228372421050018, + "reverse_translation_m": 0.006159472215773642, + "reverse_rotation_deg": 0.014929948455572307, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 12, + "j": 15, + "heldout_inlier_ratio": 0.7022030893897189, + "heldout_inlier_rmse_m": 0.11797995277580095, + "rotation_invariant_error_deg": 0.3408827465240982, + "reverse_translation_m": 0.008495008365045943, + "reverse_rotation_deg": 0.102782991447036, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 14, + "heldout_inlier_ratio": 0.6955810147299509, + "heldout_inlier_rmse_m": 0.1145595612270532, + "rotation_invariant_error_deg": 1.7562842773469534, + "reverse_translation_m": 0.010228664633443074, + "reverse_rotation_deg": 0.03515966054944097, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 13, + "j": 15, + "heldout_inlier_ratio": 0.868300353819945, + "heldout_inlier_rmse_m": 0.10454213568084784, + "rotation_invariant_error_deg": 0.6514660625063096, + "reverse_translation_m": 0.0023750253827712867, + "reverse_rotation_deg": 0.010725047644197173, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 16, + "heldout_inlier_ratio": 0.7265456392027422, + "heldout_inlier_rmse_m": 0.10962529664062398, + "rotation_invariant_error_deg": 0.4847012071219652, + "reverse_translation_m": 0.008958927594995584, + "reverse_rotation_deg": 0.0304143851242741, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 14, + "j": 15, + "heldout_inlier_ratio": 0.7120070334086913, + "heldout_inlier_rmse_m": 0.11868441290330693, + "rotation_invariant_error_deg": 1.1046128571505598, + "reverse_translation_m": 0.002571958018982041, + "reverse_rotation_deg": 0.05506919751152759, + "accepted": false, + "rejection_reasons": [ + "rotation_conjugacy_invariant" + ] + }, + { + "i": 14, + "j": 16, + "heldout_inlier_ratio": 0.5918615984405458, + "heldout_inlier_rmse_m": 0.12229328437386527, + "rotation_invariant_error_deg": 1.2404842024499416, + "reverse_translation_m": 0.014273957859022303, + "reverse_rotation_deg": 0.25325650727956367, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 14, + "j": 17, + "heldout_inlier_ratio": 0.6694009445687298, + "heldout_inlier_rmse_m": 0.12443900216431929, + "rotation_invariant_error_deg": 0.4822313558358922, + "reverse_translation_m": 0.017895201000461415, + "reverse_rotation_deg": 0.10920228290609475, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 15, + "j": 16, + "heldout_inlier_ratio": 0.702887537993921, + "heldout_inlier_rmse_m": 0.11495230769293868, + "rotation_invariant_error_deg": 0.1634066191652046, + "reverse_translation_m": 0.013545291843393993, + "reverse_rotation_deg": 0.033466251783377816, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 17, + "heldout_inlier_ratio": 0.7429531936901991, + "heldout_inlier_rmse_m": 0.11679524427533879, + "rotation_invariant_error_deg": 0.05085197471169067, + "reverse_translation_m": 0.00989411002791081, + "reverse_rotation_deg": 0.07786907370564648, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 18, + "heldout_inlier_ratio": 0.7209645010046886, + "heldout_inlier_rmse_m": 0.11716134583909153, + "rotation_invariant_error_deg": 0.26477152026834405, + "reverse_translation_m": 0.011654729311847106, + "reverse_rotation_deg": 0.13683586564190353, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 16, + "j": 17, + "heldout_inlier_ratio": 0.618922305764411, + "heldout_inlier_rmse_m": 0.11254196340939995, + "rotation_invariant_error_deg": 0.05549924909793447, + "reverse_translation_m": 0.03104786021350874, + "reverse_rotation_deg": 0.10375098145235381, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 16, + "j": 18, + "heldout_inlier_ratio": 0.6890156918687589, + "heldout_inlier_rmse_m": 0.11084024896736888, + "rotation_invariant_error_deg": 0.06628387310021466, + "reverse_translation_m": 0.01556225520371614, + "reverse_rotation_deg": 0.02495881796886513, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 16, + "j": 19, + "heldout_inlier_ratio": 0.8685060899826, + "heldout_inlier_rmse_m": 0.10135543575024519, + "rotation_invariant_error_deg": 0.3152201090321789, + "reverse_translation_m": 0.002952251383831446, + "reverse_rotation_deg": 0.02753369989560042, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 17, + "j": 18, + "heldout_inlier_ratio": 0.7697708305735859, + "heldout_inlier_rmse_m": 0.10648049893472207, + "rotation_invariant_error_deg": 0.2007356143443637, + "reverse_translation_m": 0.010582276181446382, + "reverse_rotation_deg": 0.039599051949106026, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 17, + "j": 19, + "heldout_inlier_ratio": 0.6293759512937596, + "heldout_inlier_rmse_m": 0.1095449771750205, + "rotation_invariant_error_deg": 0.25455213438723945, + "reverse_translation_m": 0.012240937390583118, + "reverse_rotation_deg": 0.060306184678878015, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 18, + "j": 19, + "heldout_inlier_ratio": 0.6827314510833881, + "heldout_inlier_rmse_m": 0.10834806615100012, + "rotation_invariant_error_deg": 0.45437520989985103, + "reverse_translation_m": 0.012418496053917759, + "reverse_rotation_deg": 0.11905018881098527, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 18, + "j": 20, + "heldout_inlier_ratio": 0.5756313809779688, + "heldout_inlier_rmse_m": 0.1265759478434112, + "rotation_invariant_error_deg": 0.5067750738975718, + "reverse_translation_m": 0.012917057356045326, + "reverse_rotation_deg": 0.24042373011343365, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 19, + "j": 20, + "heldout_inlier_ratio": 0.6234734541714874, + "heldout_inlier_rmse_m": 0.12775305804057488, + "rotation_invariant_error_deg": 0.038058886117724455, + "reverse_translation_m": 0.009237066767190358, + "reverse_rotation_deg": 0.22540488888099894, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 20, + "j": 21, + "heldout_inlier_ratio": 0.6596992097884272, + "heldout_inlier_rmse_m": 0.12147955429086157, + "rotation_invariant_error_deg": 0.33308699073502623, + "reverse_translation_m": 0.014725537493637062, + "reverse_rotation_deg": 0.1988422472286775, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 20, + "j": 22, + "heldout_inlier_ratio": 0.5739414499308958, + "heldout_inlier_rmse_m": 0.13255415786946786, + "rotation_invariant_error_deg": 0.49226728584470436, + "reverse_translation_m": 0.006040617548520927, + "reverse_rotation_deg": 0.19706632354687328, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 20, + "j": 23, + "heldout_inlier_ratio": 0.6456945156330087, + "heldout_inlier_rmse_m": 0.12075756038041646, + "rotation_invariant_error_deg": 0.40978574449533767, + "reverse_translation_m": 0.022949011013485506, + "reverse_rotation_deg": 0.1911210947924365, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 21, + "j": 22, + "heldout_inlier_ratio": 0.7716237647919971, + "heldout_inlier_rmse_m": 0.11632271358541554, + "rotation_invariant_error_deg": 0.2029947674039514, + "reverse_translation_m": 0.00996357879827298, + "reverse_rotation_deg": 0.15332892195322273, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 23, + "heldout_inlier_ratio": 0.8576224819696593, + "heldout_inlier_rmse_m": 0.09865676260631216, + "rotation_invariant_error_deg": 0.08196486868098773, + "reverse_translation_m": 0.0039225733250952055, + "reverse_rotation_deg": 0.00898487649368532, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 24, + "heldout_inlier_ratio": 0.7715940569126165, + "heldout_inlier_rmse_m": 0.1136150455355286, + "rotation_invariant_error_deg": 0.49417528129087884, + "reverse_translation_m": 0.007475673605589086, + "reverse_rotation_deg": 0.042277690012993266, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 23, + "heldout_inlier_ratio": 0.7396689147762109, + "heldout_inlier_rmse_m": 0.11702962848624102, + "rotation_invariant_error_deg": 0.07221906147911383, + "reverse_translation_m": 0.01814015943430581, + "reverse_rotation_deg": 0.11847321816106485, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 24, + "heldout_inlier_ratio": 0.6983240223463687, + "heldout_inlier_rmse_m": 0.11898873157361621, + "rotation_invariant_error_deg": 0.6434012981205939, + "reverse_translation_m": 0.013438931050857202, + "reverse_rotation_deg": 0.08244161259412694, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 22, + "j": 25, + "heldout_inlier_ratio": 0.736861094407697, + "heldout_inlier_rmse_m": 0.11586394710110075, + "rotation_invariant_error_deg": 0.19913456977449506, + "reverse_translation_m": 0.018559552524775386, + "reverse_rotation_deg": 0.0645260279790244, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 24, + "heldout_inlier_ratio": 0.7853164556962026, + "heldout_inlier_rmse_m": 0.1128725442321241, + "rotation_invariant_error_deg": 0.5709657470244167, + "reverse_translation_m": 0.002195759849115173, + "reverse_rotation_deg": 0.032112959181416705, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 25, + "heldout_inlier_ratio": 0.6881127450980392, + "heldout_inlier_rmse_m": 0.12303206700403986, + "rotation_invariant_error_deg": 2.3734594630006525, + "reverse_translation_m": 0.004939188019100004, + "reverse_rotation_deg": 0.12964064637100806, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 23, + "j": 26, + "heldout_inlier_ratio": 0.6852618757612667, + "heldout_inlier_rmse_m": 0.12040544972155913, + "rotation_invariant_error_deg": 0.1574826892383996, + "reverse_translation_m": 0.006032445250250899, + "reverse_rotation_deg": 0.14039335223024835, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 24, + "j": 25, + "heldout_inlier_ratio": 0.677667493796526, + "heldout_inlier_rmse_m": 0.12346315805814134, + "rotation_invariant_error_deg": 0.10001483417661916, + "reverse_translation_m": 0.02347922689116974, + "reverse_rotation_deg": 0.16273859629352566, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 24, + "j": 26, + "heldout_inlier_ratio": 0.6530209617755857, + "heldout_inlier_rmse_m": 0.12710147612984257, + "rotation_invariant_error_deg": 0.7149536911782102, + "reverse_translation_m": 0.013311199903818141, + "reverse_rotation_deg": 0.18193579850152686, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 24, + "j": 27, + "heldout_inlier_ratio": 0.6649014778325123, + "heldout_inlier_rmse_m": 0.1248115961442785, + "rotation_invariant_error_deg": 0.5126580224866935, + "reverse_translation_m": 0.017872821205486625, + "reverse_rotation_deg": 0.1680556511699705, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 25, + "j": 26, + "heldout_inlier_ratio": 0.9127837514934289, + "heldout_inlier_rmse_m": 0.0958142916589384, + "rotation_invariant_error_deg": 0.054012386376783184, + "reverse_translation_m": 0.003534148840172682, + "reverse_rotation_deg": 0.018440169300173608, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 27, + "heldout_inlier_ratio": 0.8510739856801909, + "heldout_inlier_rmse_m": 0.10418150333394147, + "rotation_invariant_error_deg": 0.24124343828054862, + "reverse_translation_m": 0.006103232696002816, + "reverse_rotation_deg": 0.13366555345652814, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 28, + "heldout_inlier_ratio": 0.8853518429870751, + "heldout_inlier_rmse_m": 0.10761251229652005, + "rotation_invariant_error_deg": 0.31032271091986274, + "reverse_translation_m": 0.003483231665912094, + "reverse_rotation_deg": 0.0369774420199415, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 27, + "heldout_inlier_ratio": 0.9183867141162515, + "heldout_inlier_rmse_m": 0.09074909570650921, + "rotation_invariant_error_deg": 0.15492424092203905, + "reverse_translation_m": 0.00040199505815422204, + "reverse_rotation_deg": 0.011554314408129918, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 28, + "heldout_inlier_ratio": 0.8853200095170116, + "heldout_inlier_rmse_m": 0.10604184939655073, + "rotation_invariant_error_deg": 0.2535175622408232, + "reverse_translation_m": 0.007320240476189879, + "reverse_rotation_deg": 0.12930335868605478, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 29, + "heldout_inlier_ratio": 0.7880466815984911, + "heldout_inlier_rmse_m": 0.10871274240898265, + "rotation_invariant_error_deg": 0.6273264323501735, + "reverse_translation_m": 0.0063952430610542755, + "reverse_rotation_deg": 0.039517035902874385, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 28, + "heldout_inlier_ratio": 0.9289448669201521, + "heldout_inlier_rmse_m": 0.0850509551532673, + "rotation_invariant_error_deg": 0.06642597183531862, + "reverse_translation_m": 0.005157655135591474, + "reverse_rotation_deg": 0.022666807877311387, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 29, + "heldout_inlier_ratio": 0.7872365477452019, + "heldout_inlier_rmse_m": 0.10455513464835667, + "rotation_invariant_error_deg": 0.4661735027920457, + "reverse_translation_m": 0.011650639607012138, + "reverse_rotation_deg": 0.1624719134077532, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 28, + "j": 29, + "heldout_inlier_ratio": 0.8000944621560987, + "heldout_inlier_rmse_m": 0.1086547547358129, + "rotation_invariant_error_deg": 0.3806425437120353, + "reverse_translation_m": 0.0011394164967304414, + "reverse_rotation_deg": 0.02119627748719656, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 28, + "j": 31, + "heldout_inlier_ratio": 0.7465330381074466, + "heldout_inlier_rmse_m": 0.1066966653439246, + "rotation_invariant_error_deg": 0.22580828656688823, + "reverse_translation_m": 0.00635764905956918, + "reverse_rotation_deg": 0.040016615214377715, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 30, + "heldout_inlier_ratio": 0.7248812145092132, + "heldout_inlier_rmse_m": 0.10870831469083347, + "rotation_invariant_error_deg": 0.00452548507581696, + "reverse_translation_m": 0.00465638537716095, + "reverse_rotation_deg": 0.12465763189227934, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 31, + "heldout_inlier_ratio": 0.7243012243012243, + "heldout_inlier_rmse_m": 0.11138751941762699, + "rotation_invariant_error_deg": 0.6006586352807659, + "reverse_translation_m": 0.004263906321896464, + "reverse_rotation_deg": 0.046637396086304225, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 32, + "heldout_inlier_ratio": 0.6956070563818748, + "heldout_inlier_rmse_m": 0.1103354081949904, + "rotation_invariant_error_deg": 0.7369667173371113, + "reverse_translation_m": 0.011088061861347823, + "reverse_rotation_deg": 0.34561739459504637, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 30, + "j": 31, + "heldout_inlier_ratio": 0.8185562292643862, + "heldout_inlier_rmse_m": 0.0961579573295129, + "rotation_invariant_error_deg": 0.6089207032237525, + "reverse_translation_m": 0.004999163455591531, + "reverse_rotation_deg": 0.0213847958734735, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 30, + "j": 32, + "heldout_inlier_ratio": 0.8041343079031521, + "heldout_inlier_rmse_m": 0.099533431536842, + "rotation_invariant_error_deg": 0.7410181887106546, + "reverse_translation_m": 0.003171376495143, + "reverse_rotation_deg": 0.02376737774843464, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 31, + "j": 32, + "heldout_inlier_ratio": 0.8157085941946499, + "heldout_inlier_rmse_m": 0.09925944770258267, + "rotation_invariant_error_deg": 0.1261576421595052, + "reverse_translation_m": 0.004719596234887584, + "reverse_rotation_deg": 0.06146741991681224, + "accepted": true, + "rejection_reasons": [] + } + ] +} \ No newline at end of file diff --git a/results/02_data4_calibration/open3d_gicp/extrinsic.json b/results/02_data4_calibration/open3d_gicp/extrinsic.json new file mode 100644 index 0000000..e0fae03 --- /dev/null +++ b/results/02_data4_calibration/open3d_gicp/extrinsic.json @@ -0,0 +1,414 @@ +{ + "schema_version": 2, + "success": true, + "message": "`ftol` termination condition is satisfied.", + "convention": "T_body_lidar maps raw LiDAR points into rear-axle body frame", + "equation": "A_ij X = X B_ij", + "measured_extrinsic_used_as_initial": false, + "translation_m": [ + 1.2975484155117711, + -0.0014693441955134902, + 0.7052088406121522 + ], + "rotation_rpy_deg_xyz": [ + -0.8301548470744382, + 1.3787117674135543, + -0.9873301733452331 + ], + "quaternion_xyzw": [ + -0.007139952974435751, + 0.012092890421885221, + -0.008527968948116832, + 0.9998650192992987 + ], + "matrix_4x4": [ + [ + 0.9995620714937284, + 0.01688095033591077, + 0.02430429482463916, + 1.2975484155117711 + ], + [ + -0.017226321011659856, + 0.9997525896342856, + 0.014071722849138928, + -0.0014693441955134902 + ], + [ + -0.024060737635611132, + -0.014484234025182223, + 0.9996055661455342, + 0.7052088406121522 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "estimation": { + "stations": 34, + "pairs": 42, + "residuals": { + "pairs": 42, + "translation_m": { + "rms": 0.12183423858445137, + "median": 0.060649486998667235, + "p90": 0.11912435755512873, + "p95": 0.3030566180355447, + "max": 0.45978165540815585 + }, + "rotation_deg": { + "rms": 1.0805282705084651, + "median": 0.7524132662595089, + "p90": 1.482445248533153, + "p95": 1.8550286425106393, + "max": 4.3358524167513774 + }, + "per_pair": [ + { + "pair_index": 0, + "translation_m": 0.038624527608401314, + "rotation_deg": 0.8023305035396044 + }, + { + "pair_index": 1, + "translation_m": 0.04180287320767011, + "rotation_deg": 0.6893264946463747 + }, + { + "pair_index": 2, + "translation_m": 0.019127950093528003, + "rotation_deg": 1.0042991942789465 + }, + { + "pair_index": 3, + "translation_m": 0.06137084310587195, + "rotation_deg": 0.3949193126839051 + }, + { + "pair_index": 4, + "translation_m": 0.1071111410675142, + "rotation_deg": 0.29878675978634545 + }, + { + "pair_index": 5, + "translation_m": 0.06364016847596804, + "rotation_deg": 0.5544336747047969 + }, + { + "pair_index": 6, + "translation_m": 0.06293697736756677, + "rotation_deg": 0.5686016770604462 + }, + { + "pair_index": 7, + "translation_m": 0.024970034635953178, + "rotation_deg": 0.5027938164737027 + }, + { + "pair_index": 8, + "translation_m": 0.06609908977135717, + "rotation_deg": 0.769573579451918 + }, + { + "pair_index": 9, + "translation_m": 0.015198604597359418, + "rotation_deg": 0.7395239518119227 + }, + { + "pair_index": 10, + "translation_m": 0.08603113369700931, + "rotation_deg": 0.38160978353264396 + }, + { + "pair_index": 11, + "translation_m": 0.023734833308603348, + "rotation_deg": 0.5279761588421565 + }, + { + "pair_index": 12, + "translation_m": 0.044728554479905425, + "rotation_deg": 0.8691250339782107 + }, + { + "pair_index": 13, + "translation_m": 0.07088160554682986, + "rotation_deg": 0.450151294217732 + }, + { + "pair_index": 14, + "translation_m": 0.08888554602585935, + "rotation_deg": 0.6592285262192215 + }, + { + "pair_index": 15, + "translation_m": 0.05233056995457292, + "rotation_deg": 1.8589142482602727 + }, + { + "pair_index": 16, + "translation_m": 0.12686760514047216, + "rotation_deg": 1.9773175636228766 + }, + { + "pair_index": 17, + "translation_m": 0.06853778836627006, + "rotation_deg": 0.2507622154612463 + }, + { + "pair_index": 18, + "translation_m": 0.0613281598931951, + "rotation_deg": 0.3396141740929532 + }, + { + "pair_index": 19, + "translation_m": 0.03461219125828727, + "rotation_deg": 0.5120113019840405 + }, + { + "pair_index": 20, + "translation_m": 0.003516478473153868, + "rotation_deg": 0.3641614482709119 + }, + { + "pair_index": 21, + "translation_m": 0.059970814104139375, + "rotation_deg": 0.61595189426212 + }, + { + "pair_index": 22, + "translation_m": 0.011156452422652521, + "rotation_deg": 0.39742394993610364 + }, + { + "pair_index": 23, + "translation_m": 0.04780738274324129, + "rotation_deg": 1.7812021332676105 + }, + { + "pair_index": 24, + "translation_m": 0.0580893770008635, + "rotation_deg": 0.879332260016813 + }, + { + "pair_index": 25, + "translation_m": 0.12024661823169551, + "rotation_deg": 4.3358524167513774 + }, + { + "pair_index": 26, + "translation_m": 0.06196910794842297, + "rotation_deg": 1.5238281010443262 + }, + { + "pair_index": 27, + "translation_m": 0.0503874055448458, + "rotation_deg": 0.972956387575872 + }, + { + "pair_index": 28, + "translation_m": 0.01757080571201053, + "rotation_deg": 0.8111658366205472 + }, + { + "pair_index": 29, + "translation_m": 0.032044188496992296, + "rotation_deg": 0.943436351113904 + }, + { + "pair_index": 30, + "translation_m": 0.05418626153418599, + "rotation_deg": 0.5111200883804832 + }, + { + "pair_index": 31, + "translation_m": 0.02622969795541729, + "rotation_deg": 0.26503765103607685 + }, + { + "pair_index": 32, + "translation_m": 0.10034938173040396, + "rotation_deg": 0.8910089412227198 + }, + { + "pair_index": 33, + "translation_m": 0.024232025179701657, + "rotation_deg": 0.2983628682948933 + }, + { + "pair_index": 34, + "translation_m": 0.06450981390919311, + "rotation_deg": 1.1099995759326005 + }, + { + "pair_index": 35, + "translation_m": 0.06841378002467255, + "rotation_deg": 0.765302580707095 + }, + { + "pair_index": 36, + "translation_m": 0.45978165540815585, + "rotation_deg": 0.8318777085643659 + }, + { + "pair_index": 37, + "translation_m": 0.31232972397739145, + "rotation_deg": 0.7893009066081454 + }, + { + "pair_index": 38, + "translation_m": 0.3910017597095041, + "rotation_deg": 0.6583887677988087 + }, + { + "pair_index": 39, + "translation_m": 0.1015358221759577, + "rotation_deg": 0.8428062435042994 + }, + { + "pair_index": 40, + "translation_m": 0.1090240114660279, + "rotation_deg": 0.8418950507797021 + }, + { + "pair_index": 41, + "translation_m": 0.03539906786781987, + "rotation_deg": 0.7658972874383352 + } + ] + } + }, + "ground": { + "planes": 34, + "body_origin_height_above_ground_m": 0.2335, + "formula": "d_lidar - (R_X n_lidar)^T t_X - body_height" + }, + "linearized_one_sigma": { + "translation_m": [ + 0.007068161359903731, + 0.007140938677742994, + 0.00460528013456401 + ], + "rotation_deg": [ + 0.07009913972450056, + 0.0632417549466229, + 0.13781143232539678 + ], + "warning": "conditional local estimate; bootstrap is the primary stability check" + }, + "weighted_jacobian_condition_number": 6.8653146384480275, + "solver_multistart": { + "runs": 12, + "candidates_relative_to_best": [ + { + "cost": 165.05915287927994, + "success": true, + "translation_m": 3.0576433724414325e-08, + "rotation_deg": 1.5435010182701515e-07 + }, + { + "cost": 165.05915287928036, + "success": true, + "translation_m": 3.132972747129673e-08, + "rotation_deg": 1.5835217811052665e-07 + }, + { + "cost": 165.0591528792959, + "success": true, + "translation_m": 5.032571008409966e-08, + "rotation_deg": 6.019987077228086e-07 + }, + { + "cost": 165.0591528792966, + "success": true, + "translation_m": 5.0134365128719625e-08, + "rotation_deg": 6.036593761377996e-07 + }, + { + "cost": 165.059152879271, + "success": true, + "translation_m": 4.0000992845476256e-09, + "rotation_deg": 5.9504483976085874e-08 + }, + { + "cost": 165.0591528792741, + "success": true, + "translation_m": 1.71650324878148e-08, + "rotation_deg": 2.1433774624387286e-07 + }, + { + "cost": 165.059152879271, + "success": true, + "translation_m": 3.8510946546090955e-09, + "rotation_deg": 5.7484467409642816e-08 + }, + { + "cost": 165.05915287927274, + "success": true, + "translation_m": 1.2609667860271796e-08, + "rotation_deg": 1.3972470982253386e-07 + }, + { + "cost": 165.05915287929693, + "success": true, + "translation_m": 5.0359957454032455e-08, + "rotation_deg": 6.053505895170472e-07 + }, + { + "cost": 165.05915287927098, + "success": true, + "translation_m": 0.0, + "rotation_deg": 0.0 + }, + { + "cost": 165.0591528792721, + "success": true, + "translation_m": 1.123025431013551e-08, + "rotation_deg": 3.014422244971439e-08 + }, + { + "cost": 165.0591528792711, + "success": true, + "translation_m": 2.4200230224271075e-09, + "rotation_deg": 6.741856490734345e-08 + } + ] + }, + "bootstrap": { + "runs": 100, + "order": [ + "x_m", + "y_m", + "z_m", + "roll_deg", + "pitch_deg", + "yaw_deg" + ], + "std": [ + 0.0030749822448559927, + 0.0034380377435498433, + 0.0016315909218529902, + 0.07586073216888294, + 0.07187134364073751, + 0.11146702425116647 + ], + "p025": [ + 1.292007464312339, + -0.006797525226093335, + 0.701848741787294, + -0.9789682101604196, + 1.2351532937224006, + -1.211682139162798 + ], + "p975": [ + 1.3029347232892419, + 0.005407572756192536, + 0.7084594772174496, + -0.705679642362121, + 1.5258122853862286, + -0.8045746213351143 + ] + } +} \ No newline at end of file diff --git a/results/02_data4_calibration/small_gicp/B_estimation.npz b/results/02_data4_calibration/small_gicp/B_estimation.npz new file mode 100644 index 0000000..db58307 Binary files /dev/null and b/results/02_data4_calibration/small_gicp/B_estimation.npz differ diff --git a/results/02_data4_calibration/small_gicp/B_quality.csv b/results/02_data4_calibration/small_gicp/B_quality.csv new file mode 100644 index 0000000..c3cc963 --- /dev/null +++ b/results/02_data4_calibration/small_gicp/B_quality.csv @@ -0,0 +1,156 @@ +i,j,rtk_translation_m,rtk_rotation_deg,heldout_inlier_ratio,heldout_inlier_rmse_m,hessian_rank,hessian_condition,reverse_translation_m,reverse_rotation_deg,multistart_success_rate,accepted,rejection_reasons +0,1,1.8477087194158957,24.171297449440786,0.8193962748876044,0.11049677170760565,6,14.01384280930539,0.026680306344951596,0.12400141971813113,1.0,True, +0,2,2.633731568575307,80.09074797031298,0.7525388867463684,0.11492533799497681,6,14.962108606915407,0.0018465318763874656,0.03093450642761156,1.0,True, +0,3,6.923255970100826,79.91583883299243,0.628093901505486,0.12365050970311489,6,23.49058941554809,0.010524333328229862,0.23898233567763014,1.0,True, +0,4,2.952974950373882,130.25781950514033,0.693351593625498,0.11485738628517483,6,16.30512452170669,2.3214755241040135,1.4768350244766943,1.0,False,forward_reverse_translation;forward_reverse_rotation +0,5,8.205074921973447,88.82606603101337,0.6015065913370998,0.12959862169013578,6,26.276485388438196,0.013711901937629547,0.26024107991311357,1.0,True, +1,2,1.7155362084417105,55.91945052087219,0.7981310803891449,0.11167434332282761,6,13.484382276710292,0.050742368484802715,0.5170998105709517,1.0,False,forward_reverse_rotation +1,3,5.885389341942907,55.74454138355163,0.678820988438572,0.12109867185657652,6,27.478714016209608,0.008324315958289934,0.25689852176843175,1.0,True, +1,4,2.3031736807956613,106.08652205569953,0.6772473651580905,0.11157492180388107,6,13.25032679930311,0.00802452890723869,0.011334867255723058,1.0,True, +1,5,7.590375029412286,64.65476858157257,0.618779694923731,0.12786963556791484,6,21.376356908960595,0.012044684321695526,0.5185219918090508,1.0,False,forward_reverse_rotation +1,6,8.114848491620153,8.108983632525,0.6933789087226231,0.12162612003144421,6,23.560279629760274,0.008258211706006158,0.08942722541817279,1.0,True, +2,3,4.339151683168145,0.17490913732054883,0.7609663064208518,0.11583878636897658,6,13.299472485774093,0.00784220284106163,0.01711532312869618,1.0,True, +2,4,0.6150408096900305,50.167071534827386,0.796748976299789,0.11484342359047915,6,12.041666425070249,0.011210942709507262,0.11462542679280045,1.0,True, +2,5,5.894923525501676,8.735318060700383,0.7112112112112112,0.12001317983504071,6,15.619771158055366,0.011298647069299764,0.02158504824207679,1.0,True, +2,6,6.5470565092896145,47.810466888347186,0.7254529329785886,0.11794151013960824,6,22.73936753420594,0.004729020804343234,0.026463705119922912,1.0,True, +2,7,5.848768648120739,73.12203319515616,0.7569187603621987,0.11528530285715083,6,13.439936375510058,0.011994525026310043,0.05882394078371607,1.0,True, +3,4,3.9735035126146885,50.34198067214791,0.6957378664695738,0.11619002437046372,6,17.769677378118345,0.006018969660459514,0.057234124307389854,1.0,True, +3,5,2.3619393178889707,8.910227198020932,0.7989069680784996,0.1077590577814381,6,12.151555874812605,0.01353229173052898,0.06486032517688407,1.0,True, +3,6,2.2300116834828536,47.63555775102664,0.8435613682092555,0.11222309863990207,6,13.914901775514604,0.009512765198853305,0.09743636874085052,1.0,True, +3,7,2.450274232383144,72.94712405783562,0.8651898734177215,0.11184568072686094,6,12.975777248765134,0.010827690226297962,0.12520280777371934,1.0,True, +3,8,1.9936391786054533,163.56928836557165,0.825590155700653,0.10787987267070262,6,12.959410142765178,0.0056088079192386986,0.021536601402145895,1.0,True, +4,5,5.370771070097231,41.431753474126985,0.6652516676773802,0.12444356767629798,6,17.0278455355532,0.003155412913416372,0.05824374716659687,1.0,True, +4,6,6.142548765456278,97.97753842317456,0.6551681807021851,0.12030857820705748,6,24.380739297719824,0.011212969141455763,0.08373658947114908,0.5,True, +4,7,5.314106070657687,123.28910472998356,0.696936001976773,0.11799538994568655,6,16.89426071448657,0.00409529177569414,0.0519770010059835,0.5,True, +4,8,5.8981084980454765,146.08873096228052,0.7129198332924737,0.11349036082807595,6,18.616925126379197,0.01249802665331653,0.04549823831834878,1.0,True, +4,9,3.1650365894055956,158.11607430100375,0.6097234068478128,0.11677937926620108,6,25.94675052408701,0.00616984405743089,0.11548555225177864,0.5,True, +5,6,1.9357867378988893,56.54578494904757,0.7604901596732269,0.11101741624951145,6,16.791344333152654,0.01028641250952863,0.031127073736479716,1.0,True, +5,7,0.19501559913675365,81.85735125585654,0.8092687180764918,0.10777871969807898,6,15.20338641054919,0.010579714886860828,0.03333492483252218,1.0,True, +5,8,1.8038807059856978,172.47951556359365,0.7295760721789643,0.11311887218463837,6,17.053462425193878,0.009759205787181369,0.05935114015788255,1.0,True, +5,9,7.881613621164215,160.45217222486949,0.514987714987715,0.13057312144553648,6,36.76355827214787,0.013423709236357283,0.8456480282562385,1.0,False,forward_reverse_rotation +5,10,7.671857805815354,143.54232919109316,0.5442391832766165,0.13173165083201857,6,26.337222871823027,0.00523999417676037,0.17134499262937464,1.0,True, +6,7,2.130456053070114,25.311566306808988,0.8539354187689203,0.10462253085153163,6,12.502910766598342,0.002843314342407394,0.028424505305675103,1.0,True, +6,8,0.24494500622098103,115.93373061454483,0.7757757757757757,0.1131640002846509,6,15.521747346102597,0.007224674181694773,0.10395594559619498,1.0,True, +6,9,8.025985916230132,103.90638727582186,0.6009202835468226,0.1259448851291812,6,28.795189977892573,0.007975110549369148,0.07338758946554978,1.0,True, +6,10,8.303463402700086,159.91188585985975,0.5363513347275187,0.13083118553166714,6,31.167661263990606,1.7146158775247784,14.688249303878628,1.0,False,forward_reverse_translation;forward_reverse_rotation +6,11,11.328882063792355,138.54043874549896,0.4633337584491774,0.13769942152040132,6,58.377014583638996,0.023339879627157865,0.18888808553225306,1.0,True, +7,8,1.9962664218365056,90.62216430773583,0.8340050377833753,0.11132245152738919,6,16.170350777028464,0.004806949653405585,0.02034039865601464,1.0,True, +7,9,7.8811064994361235,78.59482096901284,0.6160971335586432,0.12637042711002067,6,24.17866477904224,0.012112046262530643,0.5927664140170301,1.0,False,forward_reverse_rotation +7,10,7.620696678413973,134.60031955305035,0.5721183607775164,0.13040415535689726,6,20.571872802604858,0.010507785715791607,0.10324111221368969,1.0,True, +7,11,10.356268683459426,113.22887243868989,0.5179098728976762,0.13593896500168,6,36.18276452817704,0.01570096854689765,0.062213006599939585,1.0,True, +7,12,13.76202076313695,94.9510481861355,0.419173636250156,0.14753718360891266,6,89.28960611274712,0.018245717875293024,0.41212759156893974,1.0,True, +8,9,7.803713858547152,12.027343338722998,0.6407549981373402,0.12189583104066963,6,28.06713348388497,0.025170709673794655,0.14112050756711447,1.0,True, +8,10,8.062504137991457,43.97815524531457,0.6075420709986488,0.12933255373443525,6,20.429632894689156,0.01256038832173067,0.12386976869589704,1.0,True, +8,11,11.084531710563947,22.606708130954026,0.5447599643448364,0.13547919137380177,6,27.72840331379869,0.006462771421800638,0.08629803406158434,1.0,True, +8,12,14.350449135419003,4.328883878399632,0.46489164086687307,0.14530908872417966,6,37.958964738084276,0.00955628888567663,0.1112688142308669,1.0,True, +8,13,18.245302761704593,28.43334478424675,0.37832991803278687,0.15442802982944018,6,101.4897081447731,0.027875630486669568,0.37387837894914167,1.0,True, +9,10,2.04815062353057,56.00549858403758,0.6576312576312576,0.10693844153477818,6,15.957672354569297,0.0038184479242649575,0.016135929192430513,0.5,True, +9,11,4.738677237611319,34.634051469677026,0.5883320678309288,0.11815838246331245,6,21.526672921842792,0.008866435423074387,0.05039949658393549,1.0,True, +9,12,7.170741483679294,16.35622721712263,0.5413589364844904,0.12469816852157387,6,38.0354745717217,0.03403608365914784,0.249719392637206,1.0,True, +9,13,10.733928030180744,16.40600144552375,0.5075728649611811,0.13356609480985904,6,50.3483756147633,0.0053243668825205025,0.1401976908512776,1.0,True, +9,14,7.8912187855633125,14.085282580602351,0.5416463116756228,0.12859551377809317,6,26.721469573230642,0.011377143482081005,0.045883349808202654,1.0,True, +10,11,3.2047552083250137,21.371447114360556,0.7131414267834794,0.12095106901516857,6,13.404202373771971,0.006897671932212844,0.18540056788520093,1.0,True, +10,12,6.291813977735496,39.64927136691496,0.6117876278616659,0.125002241212049,6,19.806559061723195,0.006509808900811586,0.06742381610992963,1.0,True, +10,13,10.199392557022867,72.41150002956134,0.5244808055380743,0.13689263771908436,6,36.18235272080672,0.0046518429660042555,0.17931102925270673,1.0,True, +10,14,6.819808471778838,41.920216003435236,0.5996858385693572,0.12955691635611957,6,17.916357473627098,0.009593578345611205,0.05753783232412823,1.0,True, +10,15,10.561163834622734,65.51298166784417,0.5048970366649924,0.13966622273060364,6,30.173625507677322,0.006074999657630774,0.04867559411570644,1.0,True, +11,12,3.467398797536633,18.277824252554396,0.6508076728924785,0.12017753597340274,6,15.211760062254479,0.016302173123952383,0.05141023051579345,1.0,True, +11,13,7.516502113110916,51.04005291520078,0.5666710199817161,0.12966061077144844,6,26.14207974844453,0.010250004424021303,0.0630753341579125,1.0,True, +11,14,3.767517331528496,20.548768889074672,0.64271407110666,0.12109534664165014,6,14.04589685067402,0.007610676428698485,0.05350102444543152,1.0,True, +11,15,7.712397127778454,44.141534553483616,0.570479416362689,0.12836105648377344,6,18.857231656557765,0.006898635416764969,0.028532809525243653,1.0,True, +11,16,11.0395297023812,69.98495270981527,0.4761423882857864,0.13515636052103228,6,45.4042112112498,0.037021121414326036,0.5129154434742894,1.0,False,forward_reverse_rotation +12,13,4.049286119591895,32.762228662646386,0.7056733087955325,0.11689859246507509,6,14.509757355016381,0.0020816591744367207,0.08889045467662131,1.0,True, +12,14,0.97948616772873,2.2709446365202806,0.8745432399512789,0.09766069029332589,6,11.857488007889668,0.002473515580842477,0.018069288085025077,1.0,True, +12,15,4.286747470271891,25.863710300929224,0.7033426183844012,0.12103901189560114,6,11.859397045728326,0.022780233796594867,0.04927694758545139,1.0,True, +12,16,7.5836501880550475,51.70712845726087,0.5820235756385069,0.12458133956199553,6,32.351864267271,0.00989839849833309,0.03808519306435704,1.0,True, +12,17,6.351478009829798,1.4248238883471207,0.6542219994988725,0.12658997093251892,6,11.229951110937455,0.019742680150836883,0.07899236042083516,1.0,True, +13,14,4.006260191078547,30.491284026126113,0.6984766461034874,0.11406275231178287,6,13.924718120717541,0.012533581961738958,0.10861604448395465,1.0,True, +13,15,0.9562774815922267,6.898518361717157,0.8794391298650243,0.09903209123829654,6,10.514819201987352,0.006638809913641406,0.04266354358349458,1.0,True, +13,16,3.565173336606111,18.944899794614482,0.7273073505141552,0.10958532316684438,6,19.40505650408657,0.005441055528592516,0.12519365495730794,1.0,True, +13,17,2.967150651379281,31.337404774299262,0.7130265716137395,0.11779895987026284,6,12.816390530620689,0.013263327701592687,0.16221305155705806,1.0,True, +13,18,5.249882044431148,3.4459964529377567,0.7019876443728176,0.11940768524727291,6,25.985486690964983,0.008995185113784413,0.05198334813202341,1.0,True, +14,15,4.019575892829469,23.592765664408944,0.7035920622959055,0.12189498753760801,6,10.295943232842452,0.010817230757509965,0.008099442158890762,0.5,True, +14,16,7.5676649485439835,49.43618382074059,0.5923489278752436,0.12241126089476961,6,33.65365690477826,0.003104373432332903,0.13386003286196627,1.0,True, +14,17,5.910977627463022,0.8461207481731591,0.6687795177728063,0.12452036369759786,6,8.95305147071513,0.01159286549234958,0.10132041390926738,1.0,True, +14,18,8.548241724186095,27.045287573188347,0.6196476790536196,0.12845393182350578,6,17.805505225184664,0.010070495463159433,0.13041926369959572,1.0,True, +14,19,9.249254057266956,79.47127430600668,0.5845660749506904,0.12584132662356784,6,30.335272352492872,0.016830803029542436,0.2574761671757917,1.0,True, +15,16,3.7301261399251735,25.84341815633164,0.7032674772036475,0.11602216892855616,6,22.696890954829907,0.0009988867448423883,0.09036168134112703,1.0,True, +15,17,2.2049738368271745,24.438886412582093,0.7489009568140678,0.11923375870790391,6,6.944925131742929,0.02582458487951314,0.095039680889365,1.0,True, +15,18,4.7000039832559155,3.452521908779401,0.7165438713998661,0.11783922962071142,6,19.334165264487982,0.009354386824208725,0.17478401338848865,1.0,True, +15,19,5.238340351181781,55.87850864159773,0.6924358974358974,0.11506895717743916,6,20.41712608461488,0.012497900854287812,0.3255615001296644,1.0,True, +15,20,2.0380809160783224,128.5450420215843,0.6751867872591427,0.11901811643083532,6,27.381712286843808,0.007126007329084919,0.09473387178666172,1.0,True, +16,17,3.368526196086246,50.282304568913744,0.6284461152882206,0.1113618900510703,6,25.184005110635376,0.015370940622322818,0.07520125332617648,1.0,True, +16,18,3.5240348999326185,22.39089624755224,0.6921281286473868,0.10919235768364483,6,39.42922894015919,0.005355462743716769,0.03654303027439279,1.0,True, +16,19,2.146829294717985,30.035090485266103,0.8880188913745961,0.0968346861370537,6,11.70909430755386,0.006745004702225108,0.04851926363283949,1.0,True, +16,20,4.728364693236263,102.70162386525263,0.6307301587301587,0.12362874516637085,6,35.70048091760535,0.007128919591300971,0.10475436005961275,1.0,True, +16,21,10.094336026449797,153.311489607007,0.40465918895599656,0.14174574821871383,6,57.2667389243621,0.01442382622115287,0.2621394134233604,1.0,True, +17,18,2.640403049812329,27.891408321361506,0.7665916015366274,0.11462276561713726,6,9.759321661407776,0.003676908482849856,0.03455537183665902,1.0,True, +17,19,3.933985934417215,80.31739505417984,0.645738203957382,0.11467441399973681,6,29.93502749301381,0.002658154417044598,0.03997293849541112,1.0,True, +17,20,4.2254212089887,152.98392843416656,0.6031375599636977,0.12542519992547976,6,27.708613247812377,4.543486491493239,1.5708713272202308,0.5,False,forward_reverse_translation;forward_reverse_rotation +17,21,9.21529677253323,156.40620582407942,0.4672368255565338,0.13751533766984328,6,32.19730123852794,0.13403735422224766,1.1805230479043929,0.5,False,forward_reverse_translation;forward_reverse_rotation +17,22,11.781237287606983,150.82966218116434,0.4255952380952381,0.1417851723285674,6,38.71155142811069,0.01638337185583796,0.14112774930143776,1.0,True, +18,19,2.4460967931915643,52.425986732818345,0.6999343401181878,0.10876407223187468,6,36.919102980185954,0.0029722527816906422,0.028553700929610463,1.0,True, +18,20,6.593931011285688,125.09252011280485,0.5796614723267061,0.12778176089815,6,32.46060078153023,0.0849644734357879,0.24110896992060843,1.0,False,forward_reverse_translation +18,21,11.793089868757727,175.70238585456048,0.42345743296016664,0.14463219993853524,6,41.677643204951686,0.008594432490503082,0.044791316017877565,1.0,True, +18,22,14.40479158879449,178.72107050256645,0.35586914688903143,0.14801012931814386,6,118.81863294454718,0.05364920712348454,0.15560820359743163,1.0,True, +18,23,11.744734461596845,164.11569663484164,0.3967277486910995,0.14073241205403209,6,67.8157115569044,0.0379980141073483,0.09667096210106078,1.0,True, +19,20,6.650720121741557,72.6665333799865,0.6260444787247719,0.12668491637849374,6,25.97982149253148,0.022781715838261912,0.19834674514582162,1.0,True, +19,21,12.053580264031138,123.27639912174077,0.3952850193339154,0.1421446220617431,6,61.553005632745744,0.01796074748252817,0.16263425635632095,1.0,True, +19,22,14.836246959975925,128.85294276465592,0.3237392373923739,0.15069330869045588,6,75.70505048512227,0.2579934626807855,1.1847082611411373,1.0,False,heldout_inlier_ratio;forward_reverse_translation;forward_reverse_rotation +19,23,11.740810561661805,143.45831663234065,0.37768025078369905,0.1432975121556299,6,38.93505210462392,0.07411982241929344,0.4458370864472602,1.0,True, +19,24,11.093516369446519,177.87107120383473,0.43504761904761907,0.13924446561169374,6,41.93660606132572,0.04258350776081339,0.7879276702809055,0.5,False,forward_reverse_rotation +20,21,5.40286046809103,50.60986574175429,0.6607188376242672,0.12214671257866079,6,14.082798146569438,0.01471691635641488,0.0747935794181239,1.0,True, +20,22,8.200956565000565,56.18640938466938,0.576328684508104,0.13245799460807672,6,16.034011252149995,0.02165175771302933,0.4612076789897289,1.0,True, +20,23,5.175118275082073,70.79178325235415,0.6451819579702717,0.12102263178677423,6,12.511468996120387,0.018249896901851893,0.12115759970382113,1.0,True, +20,24,4.710308396362637,105.20453782384023,0.7383177570093458,0.11441422046802802,6,12.152737785424229,0.009011279667019194,0.06430292411421322,1.0,True, +20,25,8.226491803107123,68.57831319871164,0.6182822702159718,0.12791257682460647,6,29.104161441720954,0.014703530260578728,0.32055535743282454,1.0,True, +21,22,2.8644847627909416,5.57654364291509,0.7740636818348177,0.11564788773425824,6,12.209574213097333,0.0065184199045192235,0.06991965908247275,1.0,True, +21,23,1.2936223973175418,20.18191751059984,0.862223327530465,0.10307116830776755,6,11.124499228103288,0.0026785916987678697,0.01879221122979615,1.0,True, +21,24,2.3128500583741403,54.59467208208593,0.7795265676152102,0.11182158240581822,6,15.934013426145448,0.003491995501356654,0.0374256510953578,1.0,True, +21,25,3.793272903723766,17.968447456957346,0.7340892465252378,0.12002239056891174,6,16.57216298005221,0.037735058311297705,0.2878144229712423,1.0,True, +21,26,4.631707245574304,60.912845043424184,0.7147358216190014,0.11997311573294966,6,17.372315653280065,0.012351932089198563,0.10379217190868555,1.0,True, +22,23,3.7194009250537223,14.605373867684753,0.7408951563458002,0.11726725109752717,6,12.610213323576254,0.009206244303295173,0.09601986001481369,1.0,True, +22,24,4.786117710081478,49.01812843917083,0.6936064556176288,0.11914624513148218,6,13.20338761495324,0.006090737153726605,0.027557138417491776,1.0,True, +22,25,2.3747421598149763,12.391903814042255,0.7356584485868911,0.11474070552638106,6,16.673633938013044,0.0019617091597581428,0.011643770804738128,1.0,True, +22,26,2.381693697571969,55.336301400509086,0.7422594142259414,0.11765221626900083,6,18.880420396501957,0.007814937371704293,0.039342553564881436,1.0,True, +22,27,2.9603952927690247,80.62067670375279,0.7254925373134329,0.11870181965154768,6,21.309389349405485,0.018241823604788005,0.08279236858582419,1.0,True, +23,24,1.0880644725336985,34.41275457148609,0.7884810126582279,0.10662565692629543,6,10.611199681165669,0.001882338148224756,0.020239211377623818,1.0,True, +23,25,5.033935954106079,2.213470053642494,0.6843137254901961,0.12171091934898426,6,15.150809064137142,0.014639828785635214,0.2046006298281892,1.0,True, +23,26,5.765534437288107,40.730927532824346,0.6772228989037758,0.12237954766026346,6,16.382334072569904,0.04518647006837157,0.20367965681897066,1.0,True, +23,27,6.392376191887118,66.01530283606805,0.6637469586374696,0.12340951265232122,6,20.64383986204732,0.010626193556947957,1.1817079481882757,1.0,False,forward_reverse_rotation +23,28,6.631292861991925,85.8775990418248,0.6720351390922401,0.12122778564083748,6,19.20657067904157,0.043540468687755365,0.26051478047218213,1.0,True, +24,25,6.097212810998921,36.62622462512857,0.6764267990074442,0.12367636388755719,6,21.50176872604179,0.035816405766439664,0.2046504337319023,1.0,True, +24,26,6.852918693116795,6.318172961338249,0.6524044389642417,0.12740232296321938,6,21.753053297058692,0.062038641373543625,0.12012273822228971,1.0,True, +24,27,7.47982907414204,31.60254826458195,0.6546798029556651,0.12425657449629145,6,26.295019203914197,0.05403266260962086,0.2126374478532415,1.0,True, +24,28,7.71913193400284,51.4648444703387,0.6614377470355731,0.12010155595807545,6,20.98500095492876,0.049490676797893776,0.25138526875505346,1.0,True, +24,29,7.213852273638132,93.73390958258973,0.6620579958399608,0.12331341986261203,6,28.045882177977884,0.08010108996241684,0.7934458070763889,1.0,False,forward_reverse_translation;forward_reverse_rotation +25,26,1.2882746074869595,42.944397586466835,0.9137395459976105,0.08148336624555251,6,16.56293455758718,0.0032405549728505064,0.006669174585592186,1.0,True, +25,27,1.7666235781584831,68.22877288971053,0.8596658711217183,0.1096145882030974,6,22.188153380460985,0.010624789877375215,0.04475651255674721,1.0,True, +25,28,2.1807182972588706,88.09106909546726,0.8839157491622786,0.10490699814192792,6,16.17217948348072,0.00283419137499405,0.01585308444597649,1.0,True, +25,29,1.118287177357716,130.36013420771832,0.7857227558401518,0.10954358768244267,6,20.132087187715307,0.003247718742817276,0.01654235380830592,1.0,True, +25,30,5.200639419572971,139.6773015481418,0.05061061531235322,0.1582745227634446,6,186.52424080569466,2.4401001990983833,2.63047633237589,0.0,False,heldout_inlier_ratio;forward_reverse_translation;forward_reverse_rotation;multistart_instability +26,27,0.6269948654714946,25.284375303243706,0.9188612099644128,0.07520973241900301,6,20.799051531446562,0.0009920873307779914,0.005485007138529723,1.0,True, +26,28,0.9431372257108486,45.14667150900044,0.9182726623840114,0.07611768518866212,6,21.99541958409829,0.004984978187527545,0.01173507098896779,1.0,True, +26,29,1.129925637779203,87.41573662125148,0.7856890251090416,0.10851393061782179,6,24.280602674778656,0.002586732426991948,0.12205883610743135,1.0,True, +26,30,4.786676837961511,177.3783008654109,0.7634835395750642,0.10495724850674527,6,34.80647378548578,0.008489213184554775,0.021733210949123293,1.0,True, +26,31,5.900105669197046,156.01119868987135,0.7374054682955207,0.1073752166304431,6,38.310555401782544,3.545322953478412,6.459518815762061,1.0,False,forward_reverse_translation;forward_reverse_rotation +27,28,0.44809323479571145,19.862296205756735,0.9281131178707225,0.07220943509634768,6,20.093208902964978,0.0023003913248606234,0.001591751329336308,1.0,True, +27,29,1.160064136065596,62.13136131800778,0.7871188037207112,0.10966659884725236,6,24.009650087098436,0.005134403698947268,0.02434844099203523,1.0,True, +27,30,4.25412615059095,152.09392556214777,0.7922108208955224,0.10147035321534553,6,32.52026042532504,2.795897032209197,3.237329131939042,1.0,False,forward_reverse_translation;forward_reverse_rotation +27,31,5.542871649427442,178.70442600700352,0.7592097617664149,0.10539218018667602,6,48.70669958381899,0.0020939062619997405,0.027400662783563425,1.0,True, +27,32,4.8829350360277,138.47370648510565,0.7480278422273782,0.10408734715846867,6,42.21510199826003,0.004407463145306061,0.03490543724836902,1.0,True, +28,29,1.5995723610319212,42.26906511225104,0.787814381863266,0.10901449493832843,6,25.913625419675043,0.01570175790237609,0.03569660498137675,1.0,True, +28,30,4.295353381127667,132.23162935639104,0.7791159962581852,0.10438560755009844,6,36.501677925790155,0.01170149615735483,0.047047156693309715,1.0,True, +28,31,5.754426930327516,158.8421298011293,0.7449015266285981,0.10668967013687296,6,48.04636971250818,0.024421374377245158,0.6810283060803514,0.5,False,forward_reverse_rotation +28,32,5.013331477001236,158.33600269086247,0.7309213587715216,0.1081318944415262,6,52.23779663520043,0.10324080390042788,0.9479198721286788,1.0,False,forward_reverse_translation;forward_reverse_rotation +28,33,5.317102997899902,67.05379893079937,0.6692465836255895,0.10871806386783629,6,54.67376255043738,0.13259351588266985,0.659391929056215,1.0,False,forward_reverse_translation;forward_reverse_rotation +29,30,4.099530130205247,89.96256424413995,0.7320662880982732,0.10929719051930432,6,30.745355096911158,0.005463604154015333,0.018583483487870766,1.0,True, +29,31,4.890018768530818,116.57306468887772,0.7254562254562255,0.11323336570178015,6,49.09678922599757,0.0050777995851252426,0.07265894091769333,1.0,True, +29,32,4.464737187763289,159.39493219688632,0.695837657096737,0.10999820041072961,6,72.25486343140591,0.011220553177198233,0.14599088546526143,1.0,True, +29,33,4.34670323578768,109.32286404305042,0.6382698298586149,0.11215583949685817,6,72.66655529463955,0.018977478007060265,0.05615608666616428,1.0,True, +30,31,2.3862917603439455,26.61050044473775,0.8286237272623269,0.0964659694513182,6,41.03513305025223,0.018905314487385798,0.08632503464137033,1.0,True, +30,32,1.1507634071714652,69.43236795274659,0.8065326633165829,0.09815063400019142,6,35.25635856167173,0.007341509941520892,0.023973741904832375,1.0,True, +30,33,2.4361832484951105,160.7145717128102,0.6965239055641239,0.10032655671840386,6,47.08947384000088,2.6257249086936962,3.1197630566421646,1.0,False,forward_reverse_translation;forward_reverse_rotation +31,32,1.2514382602180638,42.82186750800885,0.8146841206602162,0.09914628416022417,6,34.33173181492779,0.06936877058296162,0.45703051311645637,1.0,True, +31,33,0.641507519046697,134.10407126807203,0.7551430598250177,0.1003246191461096,6,28.537349904719164,0.005559091155811048,0.0330053182501105,1.0,True, +32,33,1.4370687242949811,91.2822037600631,0.043432078366576185,0.1661924920133195,6,88.4956235178996,0.946171384319174,3.5092968853566924,0.0,False,heldout_inlier_ratio;heldout_inlier_rmse;forward_reverse_translation;forward_reverse_rotation;multistart_instability diff --git a/results/02_data4_calibration/small_gicp/B_quality.json b/results/02_data4_calibration/small_gicp/B_quality.json new file mode 100644 index 0000000..7f661a2 --- /dev/null +++ b/results/02_data4_calibration/small_gicp/B_quality.json @@ -0,0 +1,19969 @@ +{ + "schema_version": 2, + "backend": "small_gicp", + "transform_convention": "B_ij=T_Li_Lj maps station j points into station i", + "raw_point_field": "points_raw", + "measured_extrinsic_used_as_initial": false, + "stations": 34, + "candidate_pairs": 155, + "accepted_pairs": 133, + "parameters": { + "command": "pairs", + "backend": "small_gicp", + "frames": "\\data4_prepared\\frames_all", + "body": "\\data4_prepared\\body_poses_rear_gga_raw_rear_to_front.csv", + "output": "results\\02_data4_calibration\\small_gicp\\B_estimation.npz", + "quality_json": "results\\02_data4_calibration\\small_gicp\\B_quality.json", + "quality_csv": "results\\02_data4_calibration\\small_gicp\\B_quality.csv", + "time_offset": 0.0, + "min_stations": 30, + "min_pairs": 20, + "min_gap": 1, + "max_gap": 5, + "min_translation": 0.5, + "min_rotation": 3.0, + "min_range": 2.0, + "max_range": 50.0, + "z_min": -0.6, + "z_max": 5.0, + "min_roi_points": 1000, + "holdout_fraction": 0.2, + "voxels": [ + 0.3, + 0.15, + 0.08 + ], + "correspondences": [ + 1.2, + 0.5, + 0.25 + ], + "iterations": 60, + "threads": 8, + "evaluation_distance": 0.25, + "min_inlier_ratio": 0.35, + "max_inlier_rmse": 0.16, + "max_hessian_condition": 100000000.0, + "reverse_translation_tolerance": 0.08, + "reverse_rotation_tolerance": 0.5, + "multistart": 2, + "multistart_translation_sigma": 0.3, + "multistart_rotation_sigma": 3.0, + "multistart_translation_tolerance": 0.08, + "multistart_rotation_tolerance": 0.5, + "min_multistart_success": 0.5, + "seed": 20260721 + }, + "accepted_loop_closure": { + "count": 204, + "translation_rms_m": 0.05535585175309386, + "translation_p95_m": 0.1115116379074081, + "rotation_rms_deg": 0.7065238289963304, + "rotation_p95_deg": 1.3657417416649225 + }, + "pairs": [ + { + "i": 0, + "j": 1, + "lidar_time_i": 1784783825.357129, + "lidar_time_j": 1784783905.353819, + "frame_counter_i": 382, + "frame_counter_j": 1182, + "rtk_translation_m": 1.8477087194158957, + "rtk_rotation_deg": 24.171297449440786, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9125981263771286, + 0.4087746109055665, + 0.008244829407349786, + 1.609483991564837 + ], + [ + -0.4088014793696517, + 0.9126215324852639, + 0.0018135350652826935, + -1.2615552121092464 + ], + [ + -0.006783081758140572, + -0.005025527161571208, + 0.9999643663044252, + 0.007918305352787577 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 9148, + "backend_objective": 925.5850309227212, + "backend_elapsed_sec": 0.3304098999942653, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4489, + "objective": 873.2318068011239 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 7401, + "objective": 985.1234245006173 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 9148, + "objective": 925.5850309227212 + } + ], + "heldout_symmetric": { + "evaluated": 7785, + "inliers": 6379, + "inlier_ratio": 0.8193962748876044, + "inlier_rmse_m": 0.11049677170760565, + "median_m": 0.10312860156857301, + "p90_m": 0.43216665589086356, + "p95_m": 0.6431893032606215 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 59129.030987988175, + 141835.53829922067, + 290431.2141896815, + 487284.4491534459, + 526614.1106785885, + 828624.9457322137 + ], + "effective_rank": 6, + "scaled_condition_number": 14.01384280930539, + "weakest_scaled_direction": [ + -0.008611429903847459, + 0.09949068386374309, + 0.0023060514298579486, + -0.46409753819566063, + 0.8753677187089856, + -0.09147109548427051 + ] + }, + "forward_reverse": { + "translation_m": 0.026680306344951596, + "rotation_deg": 0.12400141971813113 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.5257718890254282e-15, + "rotation_deg": 3.066809389089159e-14 + }, + { + "translation_m": 1.1185402273152979e-15, + "rotation_deg": 2.8015561028388492e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 0, + "j": 2, + "lidar_time_i": 1784783825.357129, + "lidar_time_j": 1784783971.0503054, + "frame_counter_i": 382, + "frame_counter_j": 1839, + "rtk_translation_m": 2.633731568575307, + "rtk_rotation_deg": 80.09074797031298, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.18426548423554648, + 0.9828685104373209, + -0.003965162060012078, + 0.12828748804201265 + ], + [ + -0.9821009084969061, + 0.1839583434891191, + -0.04046150504235337, + -3.659471702290386 + ], + [ + -0.03903891454680426, + 0.011349848081003564, + 0.9991732302756845, + -0.07048425573871506 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 8469, + "backend_objective": 932.0956168819439, + "backend_elapsed_sec": 0.23317170000518672, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4338, + "objective": 1043.2254570048926 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6813, + "objective": 719.7150187499116 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 8469, + "objective": 932.0956168819439 + } + ], + "heldout_symmetric": { + "evaluated": 7779, + "inliers": 5854, + "inlier_ratio": 0.7525388867463684, + "inlier_rmse_m": 0.11492533799497681, + "median_m": 0.11888823104171088, + "p90_m": 0.7382134357650539, + "p95_m": 1.1900330298653434 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 53808.45740554642, + 115133.385726355, + 169157.98498104126, + 433349.10199557134, + 587022.6537334354, + 805087.9836723672 + ], + "effective_rank": 6, + "scaled_condition_number": 14.962108606915407, + "weakest_scaled_direction": [ + -0.059301337748371014, + 0.0618270121704139, + 0.0024288157160767144, + -0.9855496669869919, + 0.11838117736011235, + -0.08563073928335065 + ] + }, + "forward_reverse": { + "translation_m": 0.0018465318763874656, + "rotation_deg": 0.03093450642761156 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.6088660122137097e-15, + "rotation_deg": 8.159244233220607e-15 + }, + { + "translation_m": 4.436865193864425e-13, + "rotation_deg": 6.5763507935517475e-12 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 0, + "j": 3, + "lidar_time_i": 1784783825.357129, + "lidar_time_j": 1784784059.7468228, + "frame_counter_i": 382, + "frame_counter_j": 2726, + "rtk_translation_m": 6.923255970100826, + "rtk_rotation_deg": 79.91583883299243, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.18135208754517712, + 0.9833998431724239, + -0.006014049505849529, + 1.00962374311255 + ], + [ + -0.9827591582417957, + 0.18100330257526198, + -0.037712615246437764, + -7.910621242012589 + ], + [ + -0.03599801709655899, + 0.012749623731722724, + 0.9992705288658399, + -0.1131479049251044 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 7200, + "backend_objective": 489.0994289127987, + "backend_elapsed_sec": 0.25339030000031926, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 8, + "num_inliers": 3908, + "objective": 972.5397997428759 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6140, + "objective": 697.6473636258237 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 7200, + "objective": 489.0994289127987 + } + ], + "heldout_symmetric": { + "evaluated": 7838, + "inliers": 4923, + "inlier_ratio": 0.628093901505486, + "inlier_rmse_m": 0.12365050970311489, + "median_m": 0.1611449207266876, + "p90_m": 1.1299369194229054, + "p95_m": 1.6857992321503965 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 27903.088279234078, + 36451.67223560738, + 55909.88534318, + 213105.34497378222, + 343259.1475761004, + 655459.99019328 + ], + "effective_rank": 6, + "scaled_condition_number": 23.49058941554809, + "weakest_scaled_direction": [ + -0.9028878702374442, + 0.25066229932656925, + -0.029953556537140765, + -0.23237919716998515, + -0.051886535740285886, + -0.2537171378852663 + ] + }, + "forward_reverse": { + "translation_m": 0.010524333328229862, + "rotation_deg": 0.23898233567763014 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0403713898150154e-15, + "rotation_deg": 8.952591147592273e-15 + }, + { + "translation_m": 9.155133597044475e-16, + "rotation_deg": 3.38655375367174e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 0, + "j": 4, + "lidar_time_i": 1784783825.357129, + "lidar_time_j": 1784784149.2434597, + "frame_counter_i": 382, + "frame_counter_j": 3621, + "rtk_translation_m": 2.952974950373882, + "rtk_rotation_deg": 130.25781950514033, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.6476475632293136, + 0.7610364930282889, + -0.03709568872976496, + -1.3570028891787609 + ], + [ + -0.7602011277261135, + -0.6486905928097526, + -0.035982776492063835, + -3.8785521354018337 + ], + [ + -0.05144783034373829, + 0.0048960268928340345, + 0.9986636819638464, + -0.08071707267307117 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 8047, + "backend_objective": 960.8982356674691, + "backend_elapsed_sec": 0.2555380999983754, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 8, + "num_inliers": 4415, + "objective": 995.1431994278853 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6643, + "objective": 840.4757049772511 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 8047, + "objective": 960.8982356674691 + } + ], + "heldout_symmetric": { + "evaluated": 8032, + "inliers": 5569, + "inlier_ratio": 0.693351593625498, + "inlier_rmse_m": 0.11485738628517483, + "median_m": 0.13088700168222678, + "p90_m": 0.9218091524208296, + "p95_m": 1.354492368198559 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 45835.24985805154, + 112080.95011365153, + 130484.87191300928, + 298267.3222219178, + 537247.3122031885, + 747349.4564190693 + ], + "effective_rank": 6, + "scaled_condition_number": 16.30512452170669, + "weakest_scaled_direction": [ + -0.07488910133867964, + 0.021173407913573625, + 0.0015875708907936862, + -0.712814688943928, + -0.6927663592165134, + -0.07688159519901616 + ] + }, + "forward_reverse": { + "translation_m": 2.3214755241040135, + "rotation_deg": 1.4768350244766943 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.049271190539746e-15, + "rotation_deg": 3.1066337440483974e-15 + }, + { + "translation_m": 3.4220497415806435e-15, + "rotation_deg": 6.682872246605371e-15 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 0, + "j": 5, + "lidar_time_i": 1784783825.357129, + "lidar_time_j": 1784784224.2408776, + "frame_counter_i": 382, + "frame_counter_j": 4371, + "rtk_translation_m": 8.205074921973447, + "rtk_rotation_deg": 88.82606603101337, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.036498794675990334, + 0.9993158388908494, + -0.005974289001879268, + -0.9369116740785512 + ], + [ + -0.998566739701707, + 0.036235957795985055, + -0.03938809114582146, + -9.529070391608311 + ], + [ + -0.0391446592615627, + 0.0074033441420528695, + 0.9992061279569955, + -0.16997184679236196 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 6879, + "backend_objective": 479.589248694357, + "backend_elapsed_sec": 0.2800021000148263, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 9, + "num_inliers": 3749, + "objective": 860.2201271321458 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5798, + "objective": 613.4067689784008 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 6879, + "objective": 479.589248694357 + } + ], + "heldout_symmetric": { + "evaluated": 7965, + "inliers": 4791, + "inlier_ratio": 0.6015065913370998, + "inlier_rmse_m": 0.12959862169013578, + "median_m": 0.1773042442214013, + "p90_m": 1.44613985908007, + "p95_m": 2.1131854564918497 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 23277.98079913783, + 28610.078849637262, + 57734.907609341, + 134391.82333810086, + 263732.67635003163, + 611663.52234089 + ], + "effective_rank": 6, + "scaled_condition_number": 26.276485388438196, + "weakest_scaled_direction": [ + 0.03440417940301551, + -0.03973336609902496, + -0.003749411924063033, + 0.9933037360980752, + 0.029214457834631016, + 0.09857868570489119 + ] + }, + "forward_reverse": { + "translation_m": 0.013711901937629547, + "rotation_deg": 0.26024107991311357 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.2411577700731207e-06, + "rotation_deg": 7.1051812670707434e-06 + }, + { + "translation_m": 1.9173458420030423e-15, + "rotation_deg": 8.145138298268245e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 1, + "j": 2, + "lidar_time_i": 1784783905.353819, + "lidar_time_j": 1784783971.0503054, + "frame_counter_i": 1182, + "frame_counter_j": 1839, + "rtk_translation_m": 1.7155362084417105, + "rtk_rotation_deg": 55.91945052087219, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5702640432133582, + 0.8214463514480748, + -0.0049812358506465225, + -0.37347182826086966 + ], + [ + -0.8212044239585355, + 0.5699234492621486, + -0.028470266104582403, + -2.7846446470414015 + ], + [ + -0.02054787309877627, + 0.02032618197749117, + 0.9995822283520919, + -0.07351763499455538 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 8899, + "backend_objective": 1260.3771436689235, + "backend_elapsed_sec": 0.26640120000229217, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 4399, + "objective": 880.1341652279585 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 7046, + "objective": 677.9067358195165 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 8899, + "objective": 1260.3771436689235 + } + ], + "heldout_symmetric": { + "evaluated": 7812, + "inliers": 6235, + "inlier_ratio": 0.7981310803891449, + "inlier_rmse_m": 0.11167434332282761, + "median_m": 0.1043961904931863, + "p90_m": 0.5248354583355893, + "p95_m": 0.9460018103722176 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 64352.74081211555, + 116243.33514861012, + 160172.27419490964, + 308032.32191253814, + 601454.5575800784, + 867756.9576646221 + ], + "effective_rank": 6, + "scaled_condition_number": 13.484382276710292, + "weakest_scaled_direction": [ + 0.1086331200310428, + -0.06937800909820407, + 0.008673188306079476, + 0.9747630788842918, + -0.11910044305060002, + 0.13770380314161215 + ] + }, + "forward_reverse": { + "translation_m": 0.050742368484802715, + "rotation_deg": 0.5170998105709517 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.4533775614978635e-15, + "rotation_deg": 9.930467138941337e-15 + }, + { + "translation_m": 8.158149256099716e-16, + "rotation_deg": 9.682187128603608e-15 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_rotation" + ] + }, + { + "i": 1, + "j": 3, + "lidar_time_i": 1784783905.353819, + "lidar_time_j": 1784784059.7468228, + "frame_counter_i": 1182, + "frame_counter_j": 2726, + "rtk_translation_m": 5.885389341942907, + "rtk_rotation_deg": 55.74454138355163, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5679059602473382, + 0.8229875260128184, + -0.013204254725284094, + 2.178453117101531 + ], + [ + -0.822632379122666, + 0.5669779216577895, + -0.04256765405324437, + -6.298543416126213 + ], + [ + -0.027546127396267456, + 0.035036671929786406, + 0.9990063275503078, + -0.09666259763547998 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 7574, + "backend_objective": 498.08704089773306, + "backend_elapsed_sec": 0.27526229998329654, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4019, + "objective": 965.371478113488 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6347, + "objective": 638.3568163916656 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 7574, + "objective": 498.08704089773306 + } + ], + "heldout_symmetric": { + "evaluated": 7871, + "inliers": 5343, + "inlier_ratio": 0.678820988438572, + "inlier_rmse_m": 0.12109867185657652, + "median_m": 0.14152252448187463, + "p90_m": 0.9536360823088159, + "p95_m": 1.4646456349434764 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 24172.660580993655, + 39751.5424180105, + 64123.59619526433, + 131861.61042681473, + 350849.4900439128, + 664233.6271160279 + ], + "effective_rank": 6, + "scaled_condition_number": 27.478714016209608, + "weakest_scaled_direction": [ + 0.9721701864047402, + -0.21163208276291448, + 0.029842064473668113, + 0.012010927412879307, + 0.07578244896854729, + -0.057612493872120314 + ] + }, + "forward_reverse": { + "translation_m": 0.008324315958289934, + "rotation_deg": 0.25689852176843175 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.431499025786612e-15, + "rotation_deg": 7.54032382181622e-15 + }, + { + "translation_m": 3.955826839503363e-15, + "rotation_deg": 3.196236133011314e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 1, + "j": 4, + "lidar_time_i": 1784783905.353819, + "lidar_time_j": 1784784149.2434597, + "frame_counter_i": 1182, + "frame_counter_j": 3621, + "rtk_translation_m": 2.3031736807956613, + "rtk_rotation_deg": 106.08652205569953, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.27957983069531067, + 0.9596739975938705, + -0.029341721329572322, + -1.6355702478603278 + ], + [ + -0.9583541849572967, + -0.2807884725114551, + -0.05210652434695195, + -3.597897620216403 + ], + [ + -0.05824409363374912, + 0.013551828175004483, + 0.9982103853947311, + -0.1300981939324638 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 9, + "backend_num_inliers": 7721, + "backend_objective": 718.945055188074, + "backend_elapsed_sec": 0.41765899999882095, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 14, + "num_inliers": 4284, + "objective": 765.9840185836492 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6397, + "objective": 568.3772079008166 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 9, + "num_inliers": 7721, + "objective": 718.945055188074 + } + ], + "heldout_symmetric": { + "evaluated": 8065, + "inliers": 5462, + "inlier_ratio": 0.6772473651580905, + "inlier_rmse_m": 0.11157492180388107, + "median_m": 0.12762272560377705, + "p90_m": 1.0355962798332152, + "p95_m": 1.5582970551014323 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 53134.399566846485, + 66206.64566640113, + 70397.39517738722, + 203946.5430779024, + 477063.3338727754, + 704048.1585454656 + ], + "effective_rank": 6, + "scaled_condition_number": 13.25032679930311, + "weakest_scaled_direction": [ + -0.40453888738313803, + -0.04859784536243417, + -0.021436218321679558, + -0.5853066174884034, + -0.620437690736912, + -0.32557681428863744 + ] + }, + "forward_reverse": { + "translation_m": 0.00802452890723869, + "rotation_deg": 0.011334867255723058 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.677370212168891e-15, + "rotation_deg": 3.057866681311417e-14 + }, + { + "translation_m": 4.308824046522781e-16, + "rotation_deg": 3.5665276927786675e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 1, + "j": 5, + "lidar_time_i": 1784783905.353819, + "lidar_time_j": 1784784224.2408776, + "frame_counter_i": 1182, + "frame_counter_j": 4371, + "rtk_translation_m": 7.590375029412286, + "rtk_rotation_deg": 64.65476858157257, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.4423345137417773, + 0.896725798967955, + -0.014933834675282106, + 1.0663469844514077 + ], + [ + -0.8966018964058622, + 0.4417590085102047, + -0.030887177946391366, + -8.583916327023964 + ], + [ + -0.02110017332243524, + 0.027052169328242327, + 0.9994113081311411, + -0.12449407001223341 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 6831, + "backend_objective": 583.3387582515709, + "backend_elapsed_sec": 0.27231629999005236, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 8, + "num_inliers": 3734, + "objective": 1042.8123042748869 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 5761, + "objective": 739.6838060038175 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 6831, + "objective": 583.3387582515709 + } + ], + "heldout_symmetric": { + "evaluated": 7998, + "inliers": 4949, + "inlier_ratio": 0.618779694923731, + "inlier_rmse_m": 0.12786963556791484, + "median_m": 0.17137278288043206, + "p90_m": 1.1870386003170634, + "p95_m": 1.8889136574723122 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 28238.0852289698, + 34433.743997983, + 59904.435028640124, + 132278.82902109658, + 289188.16053904744, + 603627.3882801067 + ], + "effective_rank": 6, + "scaled_condition_number": 21.376356908960595, + "weakest_scaled_direction": [ + -0.11184647134105985, + 0.05115259084667171, + -0.007005960913332743, + -0.9859540039802402, + -0.03194138366606826, + -0.10816258990398264 + ] + }, + "forward_reverse": { + "translation_m": 0.012044684321695526, + "rotation_deg": 0.5185219918090508 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.978448892181099e-15, + "rotation_deg": 9.644804243470644e-15 + }, + { + "translation_m": 3.538792391074002e-07, + "rotation_deg": 2.84679803629782e-06 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_rotation" + ] + }, + { + "i": 1, + "j": 6, + "lidar_time_i": 1784783905.353819, + "lidar_time_j": 1784784301.6372502, + "frame_counter_i": 1182, + "frame_counter_j": 5145, + "rtk_translation_m": 8.114848491620153, + "rtk_rotation_deg": 8.108983632525, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9901859095753072, + 0.13975165667857892, + 0.0011571232063867275, + 3.680765954212872 + ], + [ + -0.13975270128876133, + 0.9901860499066577, + 0.0008769565238640183, + -7.405411158982142 + ], + [ + -0.0010232111299423143, + -0.0010300610870567503, + 0.9999989460060147, + -0.049129888185824706 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 7635, + "backend_objective": 504.61016521511675, + "backend_elapsed_sec": 0.27115309998043813, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4120, + "objective": 940.9675105216816 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6457, + "objective": 599.8576761580636 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 7635, + "objective": 504.61016521511675 + } + ], + "heldout_symmetric": { + "evaluated": 7899, + "inliers": 5477, + "inlier_ratio": 0.6933789087226231, + "inlier_rmse_m": 0.12162612003144421, + "median_m": 0.13882579038985704, + "p90_m": 0.7789919311960801, + "p95_m": 1.3197768971341812 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 29392.501781799183, + 34476.17420216574, + 70679.52345490734, + 256351.0032776257, + 334389.3632440969, + 692495.5609974158 + ], + "effective_rank": 6, + "scaled_condition_number": 23.560279629760274, + "weakest_scaled_direction": [ + 0.5559722097702826, + -0.7852706399029713, + 0.0012960432067103916, + 0.1596355437191486, + -0.10341517697640891, + 0.19510263630705632 + ] + }, + "forward_reverse": { + "translation_m": 0.008258211706006158, + "rotation_deg": 0.08942722541817279 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 8.899114524108741e-16, + "rotation_deg": 2.394549914859817e-15 + }, + { + "translation_m": 9.586729210015212e-16, + "rotation_deg": 4.1137391856819014e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 3, + "lidar_time_i": 1784783971.0503054, + "lidar_time_j": 1784784059.7468228, + "frame_counter_i": 1839, + "frame_counter_j": 2726, + "rtk_translation_m": 4.339151683168145, + "rtk_rotation_deg": 0.17490913732054883, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9999942699015206, + 0.0033852635401801128, + -1.2445459718489256e-05, + 4.333063289815064 + ], + [ + -0.0033852786535696648, + 0.9999930922990801, + -0.00153467995421118, + 0.08489590026183398 + ], + [ + 7.250077654139208e-06, + 0.0015347132916930235, + 0.9999988223005811, + 0.07295896317659771 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 8587, + "backend_objective": 856.0715475024649, + "backend_elapsed_sec": 0.21810389999882318, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 3, + "num_inliers": 4309, + "objective": 1092.9351938432587 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 7052, + "objective": 788.8250774559538 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 8587, + "objective": 856.0715475024649 + } + ], + "heldout_symmetric": { + "evaluated": 7865, + "inliers": 5985, + "inlier_ratio": 0.7609663064208518, + "inlier_rmse_m": 0.11583878636897658, + "median_m": 0.11597829185554752, + "p90_m": 0.5973270988674076, + "p95_m": 0.9803465040544063 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 60122.366066792594, + 66116.53641011147, + 171595.85762173674, + 449428.6277738331, + 522163.18503998395, + 799595.7532849461 + ], + "effective_rank": 6, + "scaled_condition_number": 13.299472485774093, + "weakest_scaled_direction": [ + -0.2849548318491117, + 0.06824523530051936, + 0.006234854987810354, + -0.9503829447306366, + 0.09048009226723176, + -0.05186588007871201 + ] + }, + "forward_reverse": { + "translation_m": 0.00784220284106163, + "rotation_deg": 0.01711532312869618 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.836601059614785e-16, + "rotation_deg": 3.41063218999891e-15 + }, + { + "translation_m": 2.37502359079444e-13, + "rotation_deg": 5.522506562167771e-12 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 4, + "lidar_time_i": 1784783971.0503054, + "lidar_time_j": 1784784149.2434597, + "frame_counter_i": 1839, + "frame_counter_j": 3621, + "rtk_translation_m": 0.6150408096900305, + "rtk_rotation_deg": 50.167071534827386, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6290828243794595, + 0.7773266084656674, + -0.004259558900319325, + -0.07621676503688517 + ], + [ + -0.777260708762794, + 0.6289331938752699, + -0.01757351004813966, + -1.5068897974764908 + ], + [ + -0.010981378980880044, + 0.014365981105223549, + 0.9998365005852522, + -0.06346997696192133 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 13, + "backend_num_inliers": 9254, + "backend_objective": 2072.3958582293526, + "backend_elapsed_sec": 0.3460661999997683, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4723, + "objective": 813.4360858542922 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 7492, + "objective": 690.7974819308214 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 13, + "num_inliers": 9254, + "objective": 2072.3958582293526 + } + ], + "heldout_symmetric": { + "evaluated": 8059, + "inliers": 6421, + "inlier_ratio": 0.796748976299789, + "inlier_rmse_m": 0.11484342359047915, + "median_m": 0.11118234619542774, + "p90_m": 0.47119981023226915, + "p95_m": 0.7568246620211112 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 72652.97771722807, + 265442.77925389394, + 338966.21054632735, + 531116.4377634256, + 646142.3713620297, + 874862.9224589223 + ], + "effective_rank": 6, + "scaled_condition_number": 12.041666425070249, + "weakest_scaled_direction": [ + -0.05150819311963626, + 0.0048259818320180725, + 0.004054125957658555, + -0.7192534425710625, + -0.6927756416048727, + 0.0066011932450483505 + ] + }, + "forward_reverse": { + "translation_m": 0.011210942709507262, + "rotation_deg": 0.11462542679280045 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.2159359137519293e-16, + "rotation_deg": 1.8073954534709845e-14 + }, + { + "translation_m": 3.2159359137519293e-16, + "rotation_deg": 7.124131932641092e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 5, + "lidar_time_i": 1784783971.0503054, + "lidar_time_j": 1784784224.2408776, + "frame_counter_i": 1839, + "frame_counter_j": 4371, + "rtk_translation_m": 5.894923525501676, + "rtk_rotation_deg": 8.735318060700383, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9889080800989196, + 0.14849643879107052, + 0.0031010935877352173, + 5.576686585894074 + ], + [ + -0.14849080684774918, + 0.9889118161680467, + -0.0019748733936760057, + -2.128406640853887 + ], + [ + -0.0033599697579784374, + 0.0014924843672253902, + 0.9999932415239812, + 0.0893816263911876 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 7992, + "backend_objective": 818.2560074086199, + "backend_elapsed_sec": 0.3050091000040993, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4103, + "objective": 875.0728423878306 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6483, + "objective": 770.6464926720075 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 7992, + "objective": 818.2560074086199 + } + ], + "heldout_symmetric": { + "evaluated": 7992, + "inliers": 5684, + "inlier_ratio": 0.7112112112112112, + "inlier_rmse_m": 0.12001317983504071, + "median_m": 0.13295490000749227, + "p90_m": 0.7598164437148195, + "p95_m": 1.2751449641484631 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 43664.47319558568, + 72543.82818908544, + 146201.22719238102, + 301046.72712777543, + 426999.7180266239, + 682029.0790520908 + ], + "effective_rank": 6, + "scaled_condition_number": 15.619771158055366, + "weakest_scaled_direction": [ + -0.06912375615627211, + 0.025181210662304124, + -0.004005521569876777, + -0.9964863566115368, + -0.03260316362698907, + -0.02288544449991913 + ] + }, + "forward_reverse": { + "translation_m": 0.011298647069299764, + "rotation_deg": 0.02158504824207679 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.2884146304124796e-07, + "rotation_deg": 9.728381509807967e-07 + }, + { + "translation_m": 3.888257972851056e-16, + "rotation_deg": 6.00787833770186e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 6, + "lidar_time_i": 1784783971.0503054, + "lidar_time_j": 1784784301.6372502, + "frame_counter_i": 1839, + "frame_counter_j": 5145, + "rtk_translation_m": 6.5470565092896145, + "rtk_rotation_deg": 47.810466888347186, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.679607543043412, + -0.7331071876051084, + -0.02621905643278578, + 6.106807104650168 + ], + [ + 0.733558982397586, + 0.6794003353205805, + 0.017504391166282395, + 0.7002711803942592 + ], + [ + 0.004980640753570885, + -0.03112934062924716, + 0.9995029551580485, + 0.11411103758893074 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 8220, + "backend_objective": 814.9787693610598, + "backend_elapsed_sec": 0.23136229999363422, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 4254, + "objective": 947.8982151389088 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6874, + "objective": 693.1863685911549 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 8220, + "objective": 814.9787693610598 + } + ], + "heldout_symmetric": { + "evaluated": 7893, + "inliers": 5726, + "inlier_ratio": 0.7254529329785886, + "inlier_rmse_m": 0.11794151013960824, + "median_m": 0.12559233854459917, + "p90_m": 0.690575598333221, + "p95_m": 1.233371965878733 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 33462.004282357586, + 45754.60231662486, + 119903.75846890768, + 284155.69505675446, + 455801.7573525642, + 760904.8138077022 + ], + "effective_rank": 6, + "scaled_condition_number": 22.73936753420594, + "weakest_scaled_direction": [ + -0.5757045971727006, + 0.8083689469310571, + 0.0031816263247047873, + -0.058901349073318544, + -0.05104603613026958, + 0.09496669394294326 + ] + }, + "forward_reverse": { + "translation_m": 0.004729020804343234, + "rotation_deg": 0.026463705119922912 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.1102230246251565e-16, + "rotation_deg": 1.1877367235973417e-14 + }, + { + "translation_m": 2.0469737016526324e-15, + "rotation_deg": 2.3599702469516848e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 7, + "lidar_time_i": 1784783971.0503054, + "lidar_time_j": 1784784387.733771, + "frame_counter_i": 1839, + "frame_counter_j": 6006, + "rtk_translation_m": 5.848768648120739, + "rtk_rotation_deg": 73.12203319515616, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.3006040225830624, + -0.9533810275890214, + -0.026492222258313082, + 4.516991468811158 + ], + [ + 0.9537490189394499, + 0.3004829439382328, + 0.008532835065217377, + -0.877901707004186 + ], + [ + -0.000174582127080686, + -0.027831935533034088, + 0.9996126014039471, + 0.07024498912604761 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 8602, + "backend_objective": 1069.0019960130649, + "backend_elapsed_sec": 0.28784810000797734, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4404, + "objective": 1580.9634624997295 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 7053, + "objective": 853.7741832339575 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 8602, + "objective": 1069.0019960130649 + } + ], + "heldout_symmetric": { + "evaluated": 7841, + "inliers": 5935, + "inlier_ratio": 0.7569187603621987, + "inlier_rmse_m": 0.11528530285715083, + "median_m": 0.11929042652918181, + "p90_m": 0.5949135774640592, + "p95_m": 1.0173779799268166 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 55965.556518478406, + 79682.01027441541, + 191552.95561020085, + 508354.9613065142, + 552170.9303599342, + 752173.518828362 + ], + "effective_rank": 6, + "scaled_condition_number": 13.439936375510058, + "weakest_scaled_direction": [ + -0.042623718185682676, + 0.0406623692919027, + 0.011640945315802658, + 0.176259184710576, + -0.9807109261989321, + 0.059439530642041626 + ] + }, + "forward_reverse": { + "translation_m": 0.011994525026310043, + "rotation_deg": 0.05882394078371607 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 7.929792726436376e-16, + "rotation_deg": 5.5004508349214495e-15 + }, + { + "translation_m": 5.7642290025260994e-15, + "rotation_deg": 3.473191958692075e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 4, + "lidar_time_i": 1784784059.7468228, + "lidar_time_j": 1784784149.2434597, + "frame_counter_i": 2726, + "frame_counter_j": 3621, + "rtk_translation_m": 3.9735035126146885, + "rtk_rotation_deg": 50.34198067214791, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6317826050962754, + 0.7751274010635448, + -0.005315262762812435, + -4.392524912649905 + ], + [ + -0.7749169413246866, + 0.6314148152680543, + -0.028619313548737965, + -1.6018978130059436 + ], + [ + -0.018827478475773568, + 0.02220007163238442, + 0.999576251655551, + -0.11203743690185429 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 7746, + "backend_objective": 764.2179390458136, + "backend_elapsed_sec": 0.29167679999955, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4500, + "objective": 930.7151403888046 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6659, + "objective": 669.8774540091324 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 7746, + "objective": 764.2179390458136 + } + ], + "heldout_symmetric": { + "evaluated": 8118, + "inliers": 5648, + "inlier_ratio": 0.6957378664695738, + "inlier_rmse_m": 0.11619002437046372, + "median_m": 0.1306868403333145, + "p90_m": 0.8673560181965742, + "p95_m": 1.321002184414254 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 43822.80846199571, + 48057.061925362636, + 122675.43469925378, + 245703.9302869912, + 649349.6183279632, + 778717.1681727384 + ], + "effective_rank": 6, + "scaled_condition_number": 17.769677378118345, + "weakest_scaled_direction": [ + 0.4275526555866418, + 0.33255436336907923, + 0.011680211870989552, + -0.6096467399635787, + -0.5219889368925024, + -0.24965635775854209 + ] + }, + "forward_reverse": { + "translation_m": 0.006018969660459514, + "rotation_deg": 0.057234124307389854 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.88411095042053e-15, + "rotation_deg": 4.1321581381786235e-15 + }, + { + "translation_m": 9.535363269142996e-16, + "rotation_deg": 5.299246052064489e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 5, + "lidar_time_i": 1784784059.7468228, + "lidar_time_j": 1784784224.2408776, + "frame_counter_i": 2726, + "frame_counter_j": 4371, + "rtk_translation_m": 2.3619393178889707, + "rtk_rotation_deg": 8.910227198020932, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9893982103948105, + 0.14520885224472682, + -0.002360190101662168, + 1.2315298807919002 + ], + [ + -0.14521711564298428, + 0.989392442510526, + -0.0038189039511107126, + -2.2059485326979678 + ], + [ + 0.0017806155898990599, + 0.004121156733831111, + 0.9999899226868719, + -0.04251477640004765 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 9081, + "backend_objective": 1099.02857099634, + "backend_elapsed_sec": 0.2541962999966927, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4292, + "objective": 786.4461680914845 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7015, + "objective": 673.9496249417359 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 9081, + "objective": 1099.02857099634 + } + ], + "heldout_symmetric": { + "evaluated": 8051, + "inliers": 6432, + "inlier_ratio": 0.7989069680784996, + "inlier_rmse_m": 0.1077590577814381, + "median_m": 0.0992503950794747, + "p90_m": 0.497401795766372, + "p95_m": 0.7191295322528828 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 63669.100211894445, + 122628.58457622542, + 312225.14596344164, + 512488.84409043816, + 588006.4146637795, + 773678.6287238784 + ], + "effective_rank": 6, + "scaled_condition_number": 12.151555874812605, + "weakest_scaled_direction": [ + 0.027307597765790118, + -0.0461349678648937, + -0.0030753359845690697, + 0.9981276090766803, + 0.02864736034558914, + -0.006083329437762221 + ] + }, + "forward_reverse": { + "translation_m": 0.01353229173052898, + "rotation_deg": 0.06486032517688407 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.3784667683267003e-15, + "rotation_deg": 5.235678387664452e-15 + }, + { + "translation_m": 1.3847223016301615e-15, + "rotation_deg": 4.449207215945554e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 6, + "lidar_time_i": 1784784059.7468228, + "lidar_time_j": 1784784301.6372502, + "frame_counter_i": 2726, + "frame_counter_j": 5145, + "rtk_translation_m": 2.2300116834828536, + "rtk_rotation_deg": 47.63555775102664, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.67709207194386, + -0.7354856262118965, + -0.024641829202908194, + 1.7745705825908622 + ], + [ + 0.7357999079681138, + 0.6771694618675113, + 0.006325768584300728, + 0.6277320504546843 + ], + [ + 0.01203418235226848, + -0.022414583417047322, + 0.9996763300715655, + 0.051454602337922074 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 7, + "backend_num_inliers": 9640, + "backend_objective": 1324.5318215061093, + "backend_elapsed_sec": 0.28068219998385757, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4385, + "objective": 850.2055960686419 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7544, + "objective": 944.528287827637 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 7, + "num_inliers": 9640, + "objective": 1324.5318215061093 + } + ], + "heldout_symmetric": { + "evaluated": 7952, + "inliers": 6708, + "inlier_ratio": 0.8435613682092555, + "inlier_rmse_m": 0.11222309863990207, + "median_m": 0.09985002373567062, + "p90_m": 0.3472719337003683, + "p95_m": 0.6263514571056615 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 66093.02239897958, + 75656.89005478329, + 234043.8065575262, + 426965.29563004465, + 666843.604976733, + 919677.9147286874 + ], + "effective_rank": 6, + "scaled_condition_number": 13.914901775514604, + "weakest_scaled_direction": [ + -0.06747562450273357, + -0.08028438637478795, + -0.01014254984946794, + 0.5823576455471786, + -0.8058988638203852, + 0.01688727481567722 + ] + }, + "forward_reverse": { + "translation_m": 0.009512765198853305, + "rotation_deg": 0.09743636874085052 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 7.499464594287265e-16, + "rotation_deg": 1.1388783981579358e-14 + }, + { + "translation_m": 7.411310411386368e-16, + "rotation_deg": 2.2093305098138265e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 7, + "lidar_time_i": 1784784059.7468228, + "lidar_time_j": 1784784387.733771, + "frame_counter_i": 2726, + "frame_counter_j": 6006, + "rtk_translation_m": 2.450274232383144, + "rtk_rotation_deg": 72.94712405783562, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.29750555994608924, + -0.954356501241259, + -0.026345973880412904, + 0.18064584180701715 + ], + [ + 0.9547059445146591, + 0.2972376618624461, + 0.013650343545833549, + -0.9662070068219294 + ], + [ + -0.005196278431439895, + -0.029213710977717827, + 0.9995596819506946, + 0.0526388063859415 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 9707, + "backend_objective": 1925.8736714572685, + "backend_elapsed_sec": 0.26173430000199005, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4478, + "objective": 901.8597500613186 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7536, + "objective": 906.9466459753235 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 9707, + "objective": 1925.8736714572685 + } + ], + "heldout_symmetric": { + "evaluated": 7900, + "inliers": 6835, + "inlier_ratio": 0.8651898734177215, + "inlier_rmse_m": 0.11184568072686094, + "median_m": 0.09777937779985399, + "p90_m": 0.30794231021079616, + "p95_m": 0.5884625201365746 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 68960.67232667019, + 134669.02712657556, + 239610.41123137888, + 402189.01429493976, + 810013.9197832796, + 894818.3230359544 + ], + "effective_rank": 6, + "scaled_condition_number": 12.975777248765134, + "weakest_scaled_direction": [ + -0.07341355859242478, + -0.016624375753157422, + -0.014165459083398455, + 0.18433866396576204, + -0.9797054408146324, + 0.01816385201700405 + ] + }, + "forward_reverse": { + "translation_m": 0.010827690226297962, + "rotation_deg": 0.12520280777371934 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 8.428971209373367e-16, + "rotation_deg": 7.468673804681556e-15 + }, + { + "translation_m": 6.886305980398687e-16, + "rotation_deg": 4.907815366160238e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 8, + "lidar_time_i": 1784784059.7468228, + "lidar_time_j": 1784784474.9314597, + "frame_counter_i": 2726, + "frame_counter_j": 6878, + "rtk_translation_m": 1.9936391786054533, + "rtk_rotation_deg": 163.56928836557165, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9584723349348874, + -0.2809125906691351, + -0.0491823095027087, + -0.6000371984860277 + ], + [ + 0.28213214547205395, + -0.9591717928748923, + -0.01977180428036556, + -0.03071934600768833 + ], + [ + -0.04162013522084039, + -0.03282663791374737, + 0.9985940998160759, + -0.031271634276991124 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 9352, + "backend_objective": 1390.9125260940514, + "backend_elapsed_sec": 0.2632891999965068, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 11, + "num_inliers": 4350, + "objective": 731.216867716811 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 7289, + "objective": 972.051009810749 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 9352, + "objective": 1390.9125260940514 + } + ], + "heldout_symmetric": { + "evaluated": 7964, + "inliers": 6575, + "inlier_ratio": 0.825590155700653, + "inlier_rmse_m": 0.10787987267070262, + "median_m": 0.09740790038508482, + "p90_m": 0.4161748314222322, + "p95_m": 0.8411795615121116 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 73425.87460077305, + 111589.29592121772, + 209223.73122451387, + 450215.0745205711, + 922500.2501722764, + 951556.0240426623 + ], + "effective_rank": 6, + "scaled_condition_number": 12.959410142765178, + "weakest_scaled_direction": [ + -0.04892400816475284, + 0.08106406285957779, + -0.0011096859706196036, + -0.9801047124872695, + -0.17395946256606523, + -0.012910680803605518 + ] + }, + "forward_reverse": { + "translation_m": 0.0056088079192386986, + "rotation_deg": 0.021536601402145895 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 8.650741990671528e-16, + "rotation_deg": 3.5054248032768868e-15 + }, + { + "translation_m": 9.350958321038125e-16, + "rotation_deg": 1.200625963401235e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 5, + "lidar_time_i": 1784784149.2434597, + "lidar_time_j": 1784784224.2408776, + "frame_counter_i": 3621, + "frame_counter_j": 4371, + "rtk_translation_m": 5.370771070097231, + "rtk_rotation_deg": 41.431753474126985, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7374659969389349, + -0.6752644377386929, + -0.012721732755800672, + 4.019843316779792 + ], + [ + 0.675383271270438, + 0.7373017858395939, + 0.015604918640872895, + 3.9859783604748 + ], + [ + -0.0011576903321611819, + -0.02010014236748322, + 0.9997973014716045, + 0.09109239938318082 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 7645, + "backend_objective": 1056.9446442627448, + "backend_elapsed_sec": 0.2659155000001192, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 4090, + "objective": 858.9660576080098 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6283, + "objective": 721.2220380460718 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 7645, + "objective": 1056.9446442627448 + } + ], + "heldout_symmetric": { + "evaluated": 8245, + "inliers": 5485, + "inlier_ratio": 0.6652516676773802, + "inlier_rmse_m": 0.12444356767629798, + "median_m": 0.1507694842440363, + "p90_m": 0.9728378708380272, + "p95_m": 1.5110915609833526 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 38052.42667159524, + 85012.15121452378, + 159271.63518174115, + 302194.9536642637, + 485374.66931093106, + 647950.8436168886 + ], + "effective_rank": 6, + "scaled_condition_number": 17.0278455355532, + "weakest_scaled_direction": [ + -0.002403626452954274, + -0.021700868900574353, + -0.002374023859786528, + 0.9993912833974224, + 0.019256749864934933, + 0.01907614042305581 + ] + }, + "forward_reverse": { + "translation_m": 0.003155412913416372, + "rotation_deg": 0.05824374716659687 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 6.26712627438548e-07, + "rotation_deg": 3.535739034654156e-06 + }, + { + "translation_m": 6.267126280294208e-07, + "rotation_deg": 3.53573904247501e-06 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 6, + "lidar_time_i": 1784784149.2434597, + "lidar_time_j": 1784784301.6372502, + "frame_counter_i": 3621, + "frame_counter_j": 5145, + "rtk_translation_m": 6.142548765456278, + "rtk_rotation_deg": 97.97753842317456, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.14229570842138864, + -0.9882693919755955, + -0.05545755357967844, + 2.1761112016551567 + ], + [ + 0.9895389699740372, + -0.14337618163308116, + 0.015996794773976683, + 6.189580459141358 + ], + [ + -0.02376043491980259, + -0.05260113520168032, + 0.9983328915286303, + 0.1279515644779054 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 7592, + "backend_objective": 598.5505091587456, + "backend_elapsed_sec": 0.3208908000087831, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 33, + "num_inliers": 4058, + "objective": 962.4915677611875 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6373, + "objective": 643.3430473354808 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 7592, + "objective": 598.5505091587456 + } + ], + "heldout_symmetric": { + "evaluated": 8146, + "inliers": 5337, + "inlier_ratio": 0.6551681807021851, + "inlier_rmse_m": 0.12030857820705748, + "median_m": 0.14646410705918078, + "p90_m": 1.1055559769962546, + "p95_m": 1.6731341122978325 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 33023.60306441301, + 37755.00907861605, + 65103.603795172334, + 169801.5569909478, + 443927.4351391484, + 805139.856984835 + ], + "effective_rank": 6, + "scaled_condition_number": 24.380739297719824, + "weakest_scaled_direction": [ + -0.02318604817580618, + -0.11064884812677978, + -0.014082402317942269, + 0.5740007998299039, + -0.8046677893199408, + 0.1002684204959461 + ] + }, + "forward_reverse": { + "translation_m": 0.011212969141455763, + "rotation_deg": 0.08373658947114908 + }, + "multistart": { + "runs": 2, + "success_rate": 0.5, + "deltas": [ + { + "translation_m": 2.749658739313112e-15, + "rotation_deg": 2.2280720281219955e-14 + }, + { + "translation_m": 3.9394491319598717, + "rotation_deg": 14.745371348057061 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 7, + "lidar_time_i": 1784784149.2434597, + "lidar_time_j": 1784784387.733771, + "frame_counter_i": 3621, + "frame_counter_j": 6006, + "rtk_translation_m": 5.314106070657687, + "rtk_rotation_deg": 123.28910472998356, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.551778422493324, + -0.8326271560469253, + -0.0476717052766947, + 2.399423296507796 + ], + [ + 0.8333280707624733, + -0.5527167714067429, + 0.008276296575140195, + 3.9557143537357122 + ], + [ + -0.03324002030794837, + -0.03515948831986747, + 0.9988287698254449, + 0.11782839969184788 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 8120, + "backend_objective": 911.3269054429245, + "backend_elapsed_sec": 0.2587496999767609, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 14, + "num_inliers": 4340, + "objective": 1168.9548284196028 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6693, + "objective": 667.6622157295589 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 8120, + "objective": 911.3269054429245 + } + ], + "heldout_symmetric": { + "evaluated": 8094, + "inliers": 5641, + "inlier_ratio": 0.696936001976773, + "inlier_rmse_m": 0.11799538994568655, + "median_m": 0.13117582233595904, + "p90_m": 0.8734065520860324, + "p95_m": 1.3047221742601938 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 44815.362013424856, + 81485.57205402893, + 149068.71423976633, + 283990.86435743235, + 594300.7090449224, + 757122.4098688973 + ], + "effective_rank": 6, + "scaled_condition_number": 16.89426071448657, + "weakest_scaled_direction": [ + 0.06594166242816017, + -0.06458643039461481, + 0.010881795535945824, + -0.168340367826165, + 0.9805634427395648, + -0.03897091240772168 + ] + }, + "forward_reverse": { + "translation_m": 0.00409529177569414, + "rotation_deg": 0.0519770010059835 + }, + "multistart": { + "runs": 2, + "success_rate": 0.5, + "deltas": [ + { + "translation_m": 2.0708381084068963e-05, + "rotation_deg": 2.448970877648878e-05 + }, + { + "translation_m": 4.150540892490724, + "rotation_deg": 14.444443118813961 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 8, + "lidar_time_i": 1784784149.2434597, + "lidar_time_j": 1784784474.9314597, + "frame_counter_i": 3621, + "frame_counter_j": 6878, + "rtk_translation_m": 5.8981084980454765, + "rtk_rotation_deg": 146.08873096228052, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.8230585501363342, + 0.5664886127873069, + -0.04080777658471567, + 1.1763627337508966 + ], + [ + -0.5656853135574051, + -0.824067644281984, + -0.030209992932839415, + 3.9319938046451908 + ], + [ + -0.05074198530739072, + -0.0017802330900263054, + 0.998710209068281, + 0.05831095285049873 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 8126, + "backend_objective": 1395.105996665611, + "backend_elapsed_sec": 0.29162850001011975, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 11, + "num_inliers": 4239, + "objective": 1045.507242743976 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6636, + "objective": 683.7631380532132 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 8126, + "objective": 1395.105996665611 + } + ], + "heldout_symmetric": { + "evaluated": 8158, + "inliers": 5816, + "inlier_ratio": 0.7129198332924737, + "inlier_rmse_m": 0.11349036082807595, + "median_m": 0.12174384310683242, + "p90_m": 0.7662109101628424, + "p95_m": 1.27093399641272 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 43854.08277708816, + 147424.1769120334, + 165074.9461661054, + 461930.31112894457, + 587030.0288614861, + 816428.1755470857 + ], + "effective_rank": 6, + "scaled_condition_number": 18.616925126379197, + "weakest_scaled_direction": [ + 0.008525273930728508, + 0.07037188777655633, + 0.0029364544939218615, + -0.9842591433276218, + -0.16146055329769937, + 0.011442152548863415 + ] + }, + "forward_reverse": { + "translation_m": 0.01249802665331653, + "rotation_deg": 0.04549823831834878 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0565363201361521e-15, + "rotation_deg": 3.688480629111411e-15 + }, + { + "translation_m": 1.1567783389051904e-15, + "rotation_deg": 4.004855127086144e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 9, + "lidar_time_i": 1784784149.2434597, + "lidar_time_j": 1784784549.4274275, + "frame_counter_i": 3621, + "frame_counter_j": 7623, + "rtk_translation_m": 3.1650365894055956, + "rtk_rotation_deg": 158.11607430100375, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9245775344317981, + 0.37492570835562733, + -0.06772810375353527, + -5.619191303355375 + ], + [ + -0.3762742140238945, + -0.9264746043425068, + 0.007907172003650162, + 0.10900839528480788 + ], + [ + -0.059783766063366495, + 0.03279513260265325, + 0.9976724816255362, + -0.1753923001723502 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 13, + "backend_num_inliers": 6479, + "backend_objective": 579.3974892880387, + "backend_elapsed_sec": 0.3270135000057053, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 13, + "num_inliers": 3621, + "objective": 894.7035123523374 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5371, + "objective": 405.9383838926391 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 13, + "num_inliers": 6479, + "objective": 579.3974892880387 + } + ], + "heldout_symmetric": { + "evaluated": 8207, + "inliers": 5004, + "inlier_ratio": 0.6097234068478128, + "inlier_rmse_m": 0.11677937926620108, + "median_m": 0.16010401355984838, + "p90_m": 1.4432517724797858, + "p95_m": 2.024006149456596 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 28502.594796980742, + 34954.04382772704, + 72559.5090223596, + 93660.34393608902, + 384177.170504467, + 739549.7164863998 + ], + "effective_rank": 6, + "scaled_condition_number": 25.94675052408701, + "weakest_scaled_direction": [ + 0.7532750218769544, + 0.019100684498135678, + 0.021577140405260743, + 0.288207459563672, + 0.16037921728186152, + -0.568296840740664 + ] + }, + "forward_reverse": { + "translation_m": 0.00616984405743089, + "rotation_deg": 0.11548555225177864 + }, + "multistart": { + "runs": 2, + "success_rate": 0.5, + "deltas": [ + { + "translation_m": 3.684743678573239, + "rotation_deg": 8.917021605976972 + }, + { + "translation_m": 7.327682229021407e-16, + "rotation_deg": 2.7284661037734292e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 5, + "j": 6, + "lidar_time_i": 1784784224.2408776, + "lidar_time_j": 1784784301.6372502, + "frame_counter_i": 4371, + "frame_counter_j": 5145, + "rtk_translation_m": 1.9357867378988893, + "rtk_rotation_deg": 56.54578494904757, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5633453878228181, + -0.8258046721041434, + -0.02624152338809676, + 0.123729406077843 + ], + [ + 0.8262070981271508, + 0.5632389159328265, + 0.011989769936393205, + 2.877432713421258 + ], + [ + 0.004879039154610243, + -0.028435314483638965, + 0.9995837272920881, + 0.09881861794523908 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 8550, + "backend_objective": 1190.9493477572096, + "backend_elapsed_sec": 0.2862141999939922, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4238, + "objective": 1014.755055819071 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 6853, + "objective": 872.9701826168684 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 8550, + "objective": 1190.9493477572096 + } + ], + "heldout_symmetric": { + "evaluated": 8079, + "inliers": 6144, + "inlier_ratio": 0.7604901596732269, + "inlier_rmse_m": 0.11101741624951145, + "median_m": 0.1098746279102792, + "p90_m": 0.6999629104990043, + "p95_m": 1.2865591824571803 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 48399.23367949531, + 63739.6105463391, + 183676.69309251418, + 213768.82216003287, + 473447.78057423956, + 812688.1981731247 + ], + "effective_rank": 6, + "scaled_condition_number": 16.791344333152654, + "weakest_scaled_direction": [ + -0.08980395369145808, + -0.04103955313972449, + -0.03088420242237186, + 0.5755629976571488, + -0.8111072995478653, + 0.01137345014904398 + ] + }, + "forward_reverse": { + "translation_m": 0.01028641250952863, + "rotation_deg": 0.031127073736479716 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.828670879282072e-16, + "rotation_deg": 1.762878204908289e-14 + }, + { + "translation_m": 1.1322097734007351e-15, + "rotation_deg": 3.785341145175467e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 5, + "j": 7, + "lidar_time_i": 1784784224.2408776, + "lidar_time_j": 1784784387.733771, + "frame_counter_i": 4371, + "frame_counter_j": 6006, + "rtk_translation_m": 0.19501559913675365, + "rtk_rotation_deg": 81.85735125585654, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.1555886146242255, + -0.9875503789153085, + -0.023161003940796943, + -1.2124291651011598 + ], + [ + 0.9878123237292821, + 0.1556477784433822, + -0.0007629902985765479, + 1.0841654619680714 + ], + [ + 0.004358450168371444, + -0.02276001251913443, + 0.9997314568134081, + 0.025125772210571946 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 9069, + "backend_objective": 1560.896240171915, + "backend_elapsed_sec": 0.28599299999768846, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 8, + "num_inliers": 4399, + "objective": 982.6352876946811 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 7186, + "objective": 1034.0781039114954 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 9069, + "objective": 1560.896240171915 + } + ], + "heldout_symmetric": { + "evaluated": 8027, + "inliers": 6496, + "inlier_ratio": 0.8092687180764918, + "inlier_rmse_m": 0.10777871969807898, + "median_m": 0.09896862680977196, + "p90_m": 0.5028552845289067, + "p95_m": 0.9027651744908558 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 58304.9798973356, + 122521.56729192781, + 313784.5960502238, + 428531.57400996145, + 649057.5496280706, + 886433.1390384957 + ], + "effective_rank": 6, + "scaled_condition_number": 15.20338641054919, + "weakest_scaled_direction": [ + -0.07106918665679612, + -0.009478504710697777, + -0.017555608793906902, + 0.18019014046939646, + -0.9806403872882102, + -0.020665753146522137 + ] + }, + "forward_reverse": { + "translation_m": 0.010579714886860828, + "rotation_deg": 0.03333492483252218 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 0.00020624130376430415, + "rotation_deg": 0.0012803364903162873 + }, + { + "translation_m": 0.00020624130376367875, + "rotation_deg": 0.0012803364903171586 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 5, + "j": 8, + "lidar_time_i": 1784784224.2408776, + "lidar_time_j": 1784784474.9314597, + "frame_counter_i": 4371, + "frame_counter_j": 6878, + "rtk_translation_m": 1.8038807059856978, + "rtk_rotation_deg": 172.47951556359365, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.989043789356313, + -0.13824265003616112, + -0.051781777168087864, + -2.127120411843897 + ], + [ + 0.1399077673482785, + -0.9897091205461781, + -0.030027876104239497, + 1.8903823432013909 + ], + [ + -0.047097763973738764, + -0.036943557201372136, + 0.9982068794643641, + -0.05425103705640133 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 8167, + "backend_objective": 911.0549254504226, + "backend_elapsed_sec": 0.39979839997249655, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 13, + "num_inliers": 4185, + "objective": 990.3528848304294 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6647, + "objective": 739.1754678887037 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 8167, + "objective": 911.0549254504226 + } + ], + "heldout_symmetric": { + "evaluated": 8091, + "inliers": 5903, + "inlier_ratio": 0.7295760721789643, + "inlier_rmse_m": 0.11311887218463837, + "median_m": 0.1191035473389751, + "p90_m": 0.8208300037591001, + "p95_m": 1.3956153630557229 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 43843.61449220036, + 72080.001103961, + 156100.69687134246, + 244088.09168319812, + 548300.927810985, + 747685.4323274246 + ], + "effective_rank": 6, + "scaled_condition_number": 17.053462425193878, + "weakest_scaled_direction": [ + 0.08955216039964135, + -0.07466934828288518, + 0.012579064266736778, + 0.9768816758948728, + 0.17817914185739156, + 0.014179239920658575 + ] + }, + "forward_reverse": { + "translation_m": 0.009759205787181369, + "rotation_deg": 0.05935114015788255 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.281202090555001e-16, + "rotation_deg": 4.827670870689668e-15 + }, + { + "translation_m": 7.102651377905854e-07, + "rotation_deg": 2.5601660870277687e-06 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 5, + "j": 9, + "lidar_time_i": 1784784224.2408776, + "lidar_time_j": 1784784549.4274275, + "frame_counter_i": 4371, + "frame_counter_j": 7623, + "rtk_translation_m": 7.881613621164215, + "rtk_rotation_deg": 160.45217222486949, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.935144645130155, + -0.3486484848767959, + -0.06283889462355961, + -9.741602292759962 + ], + [ + 0.34846385695356036, + -0.9372141946978932, + 0.014230026487268855, + 3.66811733618357 + ], + [ + -0.06385478119486813, + -0.008589950517594196, + 0.9979222312728888, + -0.2770624000724965 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 5548, + "backend_objective": 430.6958553724255, + "backend_elapsed_sec": 0.37327330000698566, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 15, + "num_inliers": 3565, + "objective": 1021.7625342165487 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 5015, + "objective": 560.8323333383298 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 5548, + "objective": 430.6958553724255 + } + ], + "heldout_symmetric": { + "evaluated": 8140, + "inliers": 4192, + "inlier_ratio": 0.514987714987715, + "inlier_rmse_m": 0.13057312144553648, + "median_m": 0.2372434596641945, + "p90_m": 1.6330972938281554, + "p95_m": 2.609032762991326 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 16689.387754071493, + 21711.291631547363, + 43013.95749940708, + 76472.2653266211, + 250776.93482799002, + 613561.2792232784 + ], + "effective_rank": 6, + "scaled_condition_number": 36.76355827214787, + "weakest_scaled_direction": [ + 0.6453018415031739, + 0.22710962037942833, + 0.022800493863631806, + 0.4858979583141081, + 0.23517105842851208, + -0.4899843247973277 + ] + }, + "forward_reverse": { + "translation_m": 0.013423709236357283, + "rotation_deg": 0.8456480282562385 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 8.482940736268976e-05, + "rotation_deg": 0.0028185092825386508 + }, + { + "translation_m": 5.113269112482064e-06, + "rotation_deg": 1.1019559180956556e-05 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_rotation" + ] + }, + { + "i": 5, + "j": 10, + "lidar_time_i": 1784784224.2408776, + "lidar_time_j": 1784784614.7244046, + "frame_counter_i": 4371, + "frame_counter_j": 8276, + "rtk_translation_m": 7.671857805815354, + "rtk_rotation_deg": 143.54232919109316, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.8102224662916406, + 0.584630388816484, + -0.041795497228493836, + -9.91223605454469 + ], + [ + -0.5828986823978723, + -0.8111835906903282, + -0.04701391553115116, + 0.439643191413919 + ], + [ + -0.0613895852332592, + -0.013729190327023234, + 0.998019452795311, + -0.2327682687560738 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 6242, + "backend_objective": 459.54726521698797, + "backend_elapsed_sec": 0.7127776000124868, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 20, + "num_inliers": 3943, + "objective": 1737.3754506655084 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": false, + "iterations": 59, + "num_inliers": 5509, + "objective": 649.7054411431354 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 6242, + "objective": 459.54726521698797 + } + ], + "heldout_symmetric": { + "evaluated": 8228, + "inliers": 4478, + "inlier_ratio": 0.5442391832766165, + "inlier_rmse_m": 0.13173165083201857, + "median_m": 0.21318490235964233, + "p90_m": 1.7031669990975942, + "p95_m": 2.4625418073761773 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 23843.846922270168, + 31566.52141650056, + 46612.5091334634, + 77075.53779336283, + 268920.7635411925, + 627980.7105134609 + ], + "effective_rank": 6, + "scaled_condition_number": 26.337222871823027, + "weakest_scaled_direction": [ + -0.039136354401498145, + -0.04141233640357178, + -0.0011318194785625462, + 0.8232989865454154, + -0.5605664462660774, + -0.06852825122778679 + ] + }, + "forward_reverse": { + "translation_m": 0.00523999417676037, + "rotation_deg": 0.17134499262937464 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 8.493957768041548e-07, + "rotation_deg": 1.6379535954423843e-06 + }, + { + "translation_m": 1.0057327710640516e-15, + "rotation_deg": 2.981354146035955e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 7, + "lidar_time_i": 1784784301.6372502, + "lidar_time_j": 1784784387.733771, + "frame_counter_i": 5145, + "frame_counter_j": 6006, + "rtk_translation_m": 2.130456053070114, + "rtk_rotation_deg": 25.311566306808988, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.903816336210661, + -0.4278967661815101, + -0.0045152951336126295, + -2.238117232394065 + ], + [ + 0.42787476180112083, + 0.9038236542245877, + -0.005098066079151287, + 0.08983993299489049 + ], + [ + 0.006262476536612753, + 0.0026757345756621017, + 0.9999768106471816, + -0.04295472992242238 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 9528, + "backend_objective": 967.9119598478012, + "backend_elapsed_sec": 0.22638690000167117, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4417, + "objective": 907.9839605449163 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7396, + "objective": 598.4407511552671 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 9528, + "objective": 967.9119598478012 + } + ], + "heldout_symmetric": { + "evaluated": 7928, + "inliers": 6770, + "inlier_ratio": 0.8539354187689203, + "inlier_rmse_m": 0.10462253085153163, + "median_m": 0.09089497611222586, + "p90_m": 0.34589342958747005, + "p95_m": 0.6093985534408818 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 67533.4761572415, + 75784.2925666808, + 254733.81929713167, + 520339.422211383, + 678526.7038856247, + 844365.0261521871 + ], + "effective_rank": 6, + "scaled_condition_number": 12.502910766598342, + "weakest_scaled_direction": [ + -0.04916099685404092, + -0.020925498702230427, + -0.0009383292158298141, + 0.189497561190563, + -0.9804246414553831, + 0.0016236257497808974 + ] + }, + "forward_reverse": { + "translation_m": 0.002843314342407394, + "rotation_deg": 0.028424505305675103 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.3520108268424918e-05, + "rotation_deg": 0.00024038284434075026 + }, + { + "translation_m": 7.588439123779458e-14, + "rotation_deg": 1.788188916214634e-12 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 8, + "lidar_time_i": 1784784301.6372502, + "lidar_time_j": 1784784474.9314597, + "frame_counter_i": 5145, + "frame_counter_j": 6878, + "rtk_translation_m": 0.24494500622098103, + "rtk_rotation_deg": 115.93373061454483, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.4417415919170311, + -0.8960836883888302, + -0.043570510372002415, + -2.0801537079611045 + ], + [ + 0.8970195349329632, + -0.44196345584787117, + -0.004925204935534324, + 1.296659718225676 + ], + [ + -0.014843177532361237, + -0.04125926681942602, + 0.9990382139749538, + -0.060069474061796 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 8509, + "backend_objective": 798.712662343223, + "backend_elapsed_sec": 0.2860050000017509, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4350, + "objective": 1063.7956670653055 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6913, + "objective": 677.9644992233723 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 8509, + "objective": 798.712662343223 + } + ], + "heldout_symmetric": { + "evaluated": 7992, + "inliers": 6200, + "inlier_ratio": 0.7757757757757757, + "inlier_rmse_m": 0.1131640002846509, + "median_m": 0.10815997691749255, + "p90_m": 0.5778816662633676, + "p95_m": 0.9477012148061267 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 53837.05517196205, + 63412.648740112454, + 156742.37273516264, + 321227.1632565483, + 704113.8368888075, + 835645.168237381 + ], + "effective_rank": 6, + "scaled_condition_number": 15.521747346102597, + "weakest_scaled_direction": [ + 0.1336094425880643, + -0.051201145853172314, + 0.006609490973777755, + 0.9734041540341579, + 0.17720534798243429, + 0.02378847828605677 + ] + }, + "forward_reverse": { + "translation_m": 0.007224674181694773, + "rotation_deg": 0.10395594559619498 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.2713088951712972e-15, + "rotation_deg": 1.2535080635125873e-15 + }, + { + "translation_m": 2.7184882531662156e-15, + "rotation_deg": 4.268472857957785e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 9, + "lidar_time_i": 1784784301.6372502, + "lidar_time_j": 1784784549.4274275, + "frame_counter_i": 5145, + "frame_counter_j": 7623, + "rtk_translation_m": 8.025985916230132, + "rtk_rotation_deg": 103.90638727582186, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.23933357401741576, + -0.9709359548600442, + 0.0016768744928121674, + -4.888304363513462 + ], + [ + 0.9707892049528275, + -0.23926651269745547, + 0.017884503030732156, + 8.574670623379882 + ], + [ + -0.01696348711521479, + 0.005908253685553226, + 0.9998386533052618, + 0.09313031290403795 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 6221, + "backend_objective": 632.1522892990403, + "backend_elapsed_sec": 0.27332659999956377, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 12, + "num_inliers": 3733, + "objective": 1053.3640164002381 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5493, + "objective": 554.7744093376959 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 6221, + "objective": 632.1522892990403 + } + ], + "heldout_symmetric": { + "evaluated": 8041, + "inliers": 4832, + "inlier_ratio": 0.6009202835468226, + "inlier_rmse_m": 0.1259448851291812, + "median_m": 0.17414727637283134, + "p90_m": 1.1907502106432875, + "p95_m": 1.8639725078609017 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 22861.98250361814, + 26337.171411235602, + 53943.12212662387, + 163054.33254127414, + 247957.03602520522, + 658315.1294629404 + ], + "effective_rank": 6, + "scaled_condition_number": 28.795189977892573, + "weakest_scaled_direction": [ + 0.37740074542762864, + 0.1117288849914091, + 0.02018633881794456, + 0.8201500150733184, + 0.34898400702905, + -0.2241471859014914 + ] + }, + "forward_reverse": { + "translation_m": 0.007975110549369148, + "rotation_deg": 0.07338758946554978 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.39188966358397e-16, + "rotation_deg": 1.6768013629861905e-14 + }, + { + "translation_m": 8.899114524108741e-16, + "rotation_deg": 1.3688984843834901e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 10, + "lidar_time_i": 1784784301.6372502, + "lidar_time_j": 1784784614.7244046, + "frame_counter_i": 5145, + "frame_counter_j": 8276, + "rtk_translation_m": 8.303463402700086, + "rtk_rotation_deg": 159.91188585985975, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9386504575160534, + -0.3412675181111925, + -0.04971719709650229, + -7.676787596102102 + ], + [ + 0.3427907075780171, + -0.9390518733119324, + -0.02600211582761954, + 6.9295262521925745 + ], + [ + -0.03781334953515751, + -0.04144949108948617, + 0.9984248045222804, + -0.014729886776682672 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 6042, + "backend_objective": 421.7166624929832, + "backend_elapsed_sec": 0.3282193000195548, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 17, + "num_inliers": 3999, + "objective": 1316.0904703785436 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5531, + "objective": 703.9032624697284 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 6042, + "objective": 421.7166624929832 + } + ], + "heldout_symmetric": { + "evaluated": 8129, + "inliers": 4360, + "inlier_ratio": 0.5363513347275187, + "inlier_rmse_m": 0.13083118553166714, + "median_m": 0.21935723463379142, + "p90_m": 1.6653789510194081, + "p95_m": 2.322035390231559 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 20109.104728678132, + 21323.193111517587, + 42816.04753689338, + 97743.45923404122, + 238392.02166191582, + 626753.7645055518 + ], + "effective_rank": 6, + "scaled_condition_number": 31.167661263990606, + "weakest_scaled_direction": [ + -0.6553017924210387, + 0.3914158782408808, + -0.0008046946753143494, + -0.5605846166082455, + 0.31733093897426073, + 0.049178108636606585 + ] + }, + "forward_reverse": { + "translation_m": 1.7146158775247784, + "rotation_deg": 14.688249303878628 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.7324799859770865e-15, + "rotation_deg": 4.077222334994345e-14 + }, + { + "translation_m": 4.432905188312947e-15, + "rotation_deg": 4.5554237104872835e-14 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 6, + "j": 11, + "lidar_time_i": 1784784301.6372502, + "lidar_time_j": 1784784682.921899, + "frame_counter_i": 5145, + "frame_counter_j": 8958, + "rtk_translation_m": 11.328882063792355, + "rtk_rotation_deg": 138.54043874549896, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.7506504661534054, + -0.6587274700724787, + -0.05100978176376703, + -10.25490447137044 + ], + [ + 0.6603256958564974, + -0.7505832779969291, + -0.02438684446617117, + 8.88686075020083 + ], + [ + -0.02222280484790427, + -0.05198906580518948, + 0.9984003625707457, + -0.027423987565750433 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 7, + "backend_num_inliers": 4745, + "backend_objective": 303.62057820395694, + "backend_elapsed_sec": 0.39190260000759736, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 15, + "num_inliers": 3612, + "objective": 1298.241906433932 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 4495, + "objective": 566.4614808703178 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 7, + "num_inliers": 4745, + "objective": 303.62057820395694 + } + ], + "heldout_symmetric": { + "evaluated": 7841, + "inliers": 3633, + "inlier_ratio": 0.4633337584491774, + "inlier_rmse_m": 0.13769942152040132, + "median_m": 0.28909135050969004, + "p90_m": 1.99746033667199, + "p95_m": 2.682341573042235 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 9886.936957579832, + 16725.091120622805, + 27443.236334426467, + 57611.55488206106, + 176884.1961096952, + 577169.8629601572 + ], + "effective_rank": 6, + "scaled_condition_number": 58.377014583638996, + "weakest_scaled_direction": [ + 0.9175892817389134, + -0.09240989109957376, + -0.000575180334206903, + 0.18140715432267251, + 0.02132241852270542, + 0.3407738107033831 + ] + }, + "forward_reverse": { + "translation_m": 0.023339879627157865, + "rotation_deg": 0.18888808553225306 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.112343365827712e-15, + "rotation_deg": 1.4889738300726686e-14 + }, + { + "translation_m": 2.1795197195325206e-15, + "rotation_deg": 1.1923503179419012e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 7, + "j": 8, + "lidar_time_i": 1784784387.733771, + "lidar_time_j": 1784784474.9314597, + "frame_counter_i": 6006, + "frame_counter_j": 6878, + "rtk_translation_m": 1.9962664218365056, + "rtk_rotation_deg": 90.62216430773583, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.015575129246330722, + -0.998947724407544, + -0.04313767784605076, + 0.6650746067001984 + ], + [ + 0.9998751093195618, + -0.015676198192909677, + 0.002005635413113796, + 1.0297315594440202 + ], + [ + -0.002679759719417803, + -0.04310105232133182, + 0.9990671239594668, + 0.021464738545207192 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 9, + "backend_num_inliers": 9269, + "backend_objective": 1211.8424907334938, + "backend_elapsed_sec": 0.5779362000175752, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 4449, + "objective": 725.2848772368529 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 7399, + "objective": 918.7144988456685 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 9, + "num_inliers": 9269, + "objective": 1211.8424907334938 + } + ], + "heldout_symmetric": { + "evaluated": 7940, + "inliers": 6622, + "inlier_ratio": 0.8340050377833753, + "inlier_rmse_m": 0.11132245152738919, + "median_m": 0.10235115239145279, + "p90_m": 0.38695471193159847, + "p95_m": 0.7071362834784134 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 56892.708551191885, + 159705.36847593202, + 216350.72338471992, + 396516.6641602697, + 859499.768491504, + 919975.0539280197 + ], + "effective_rank": 6, + "scaled_condition_number": 16.170350777028464, + "weakest_scaled_direction": [ + -0.031887616577349676, + 0.0978563998797459, + -0.019655922821621086, + -0.9798608488407152, + -0.169964623682212, + -0.0023860459631844843 + ] + }, + "forward_reverse": { + "translation_m": 0.004806949653405585, + "rotation_deg": 0.02034039865601464 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.2530543612044369e-15, + "rotation_deg": 3.634283176409649e-15 + }, + { + "translation_m": 8.007811261798586e-16, + "rotation_deg": 7.058683289809877e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 7, + "j": 9, + "lidar_time_i": 1784784387.733771, + "lidar_time_j": 1784784549.4274275, + "frame_counter_i": 6006, + "frame_counter_j": 7623, + "rtk_translation_m": 7.8811064994361235, + "rtk_rotation_deg": 78.59482096901284, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.1987460112662474, + -0.9800239171286769, + 0.0072900522303022165, + 1.232593111217831 + ], + [ + 0.9798240623423039, + 0.1988545643140699, + 0.020041684222784073, + 8.81379910842588 + ], + [ + -0.021090990037952423, + 0.003159763792646276, + 0.9997725671531473, + 0.05893003624333094 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 6563, + "backend_objective": 579.0289537400707, + "backend_elapsed_sec": 0.33615809999173507, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 3732, + "objective": 1035.3979929388902 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5690, + "objective": 641.7015263772731 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 6563, + "objective": 579.0289537400707 + } + ], + "heldout_symmetric": { + "evaluated": 7989, + "inliers": 4922, + "inlier_ratio": 0.6160971335586432, + "inlier_rmse_m": 0.12637042711002067, + "median_m": 0.17161346512353012, + "p90_m": 1.2286319173668765, + "p95_m": 1.912245360708687 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 26448.731670219793, + 28519.307971584632, + 56345.57086135047, + 162736.02196619354, + 312472.10544495506, + 639495.0168850824 + ], + "effective_rank": 6, + "scaled_condition_number": 24.17866477904224, + "weakest_scaled_direction": [ + -0.5499601899624774, + -0.06252867361524048, + -0.018988035468898386, + -0.7156176371642422, + -0.31921783589049624, + 0.2815400141547218 + ] + }, + "forward_reverse": { + "translation_m": 0.012112046262530643, + "rotation_deg": 0.5927664140170301 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.125882886419572e-15, + "rotation_deg": 2.2093607401731488e-13 + }, + { + "translation_m": 5.688265343916739e-14, + "rotation_deg": 1.4124558378794116e-12 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_rotation" + ] + }, + { + "i": 7, + "j": 10, + "lidar_time_i": 1784784387.733771, + "lidar_time_j": 1784784614.7244046, + "frame_counter_i": 6006, + "frame_counter_j": 8276, + "rtk_translation_m": 7.620696678413973, + "rtk_rotation_deg": 134.60031955305035, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.7021951307608287, + -0.7103295416361552, + -0.04851742588752914, + -1.9924158672542818 + ], + [ + 0.7110990662865663, + -0.7030891198748863, + 0.001951266238155456, + 8.492405615922873 + ], + [ + -0.03549811631841692, + -0.03313052659599889, + 0.9988204302802964, + 0.05513288958260977 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 6733, + "backend_objective": 507.4437443751415, + "backend_elapsed_sec": 0.3288567999843508, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 11, + "num_inliers": 4218, + "objective": 1268.9921617749187 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5953, + "objective": 564.4925870205415 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 6733, + "objective": 507.4437443751415 + } + ], + "heldout_symmetric": { + "evaluated": 8077, + "inliers": 4621, + "inlier_ratio": 0.5721183607775164, + "inlier_rmse_m": 0.13040415535689726, + "median_m": 0.19470962492307675, + "p90_m": 1.3294493585805893, + "p95_m": 1.9149484669944727 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 31214.11671303788, + 36779.35561015317, + 64147.10865950941, + 95570.78320399583, + 369800.4899921501, + 642132.8386662777 + ], + "effective_rank": 6, + "scaled_condition_number": 20.571872802604858, + "weakest_scaled_direction": [ + -0.01506726367338361, + 0.151262929506742, + 0.002769142492144822, + -0.8157435900050348, + 0.5496934778839169, + 0.09635513120677543 + ] + }, + "forward_reverse": { + "translation_m": 0.010507785715791607, + "rotation_deg": 0.10324111221368969 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.440892098500626e-16, + "rotation_deg": 7.396663432446125e-15 + }, + { + "translation_m": 2.8000135031123616e-15, + "rotation_deg": 1.529851387921262e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 7, + "j": 11, + "lidar_time_i": 1784784387.733771, + "lidar_time_j": 1784784682.921899, + "frame_counter_i": 6006, + "frame_counter_j": 8958, + "rtk_translation_m": 10.356268683459426, + "rtk_rotation_deg": 113.22887243868989, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.3958821146862112, + -0.9172372745097772, + -0.044194270233249754, + -3.4838146346579677 + ], + [ + 0.9181699573312505, + -0.3961808801824617, + -0.0021539805430749333, + 11.372971737118831 + ], + [ + -0.01553321363735332, + -0.04143057358673409, + 0.9990206338441513, + 0.05245460282842453 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 5454, + "backend_objective": 431.2874040786367, + "backend_elapsed_sec": 0.4485889000061434, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 9, + "num_inliers": 3851, + "objective": 1191.5832359732697 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5217, + "objective": 610.6771379474781 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 5454, + "objective": 431.2874040786367 + } + ], + "heldout_symmetric": { + "evaluated": 7789, + "inliers": 4034, + "inlier_ratio": 0.5179098728976762, + "inlier_rmse_m": 0.13593896500168, + "median_m": 0.23308466036992806, + "p90_m": 1.5903235951488612, + "p95_m": 2.35130130918032 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 17600.616225415997, + 27686.44606155642, + 46608.027700594444, + 73075.6451347259, + 299010.4103784413, + 636838.9524350392 + ], + "effective_rank": 6, + "scaled_condition_number": 36.18276452817704, + "weakest_scaled_direction": [ + 0.12021964803006051, + -0.06152608364791256, + -0.009060896325285917, + 0.9676254882221084, + -0.2115491017015165, + -0.025051337857858708 + ] + }, + "forward_reverse": { + "translation_m": 0.01570096854689765, + "rotation_deg": 0.062213006599939585 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.440892098500626e-16, + "rotation_deg": 2.3191600509986052e-15 + }, + { + "translation_m": 3.916684464318413e-15, + "rotation_deg": 4.9138628136762796e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 7, + "j": 12, + "lidar_time_i": 1784784387.733771, + "lidar_time_j": 1784784758.8187964, + "frame_counter_i": 6006, + "frame_counter_j": 9717, + "rtk_translation_m": 13.76202076313695, + "rtk_rotation_deg": 94.9510481861355, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.09105685096653844, + -0.9948838238547816, + -0.04375873540386313, + -2.882347543007339 + ], + [ + 0.995665170951414, + -0.09178905356754663, + 0.01502121830829222, + 14.942363422798389 + ], + [ + -0.01896094001754452, + -0.04220126392967105, + 0.9989291947262279, + 0.047133237746127675 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 11, + "backend_num_inliers": 4892, + "backend_objective": 308.71653537220755, + "backend_elapsed_sec": 0.414707299991278, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 12, + "num_inliers": 3543, + "objective": 1486.4483684820311 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 6, + "num_inliers": 4885, + "objective": 824.5120965570165 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 11, + "num_inliers": 4892, + "objective": 308.71653537220755 + } + ], + "heldout_symmetric": { + "evaluated": 8011, + "inliers": 3358, + "inlier_ratio": 0.419173636250156, + "inlier_rmse_m": 0.14753718360891266, + "median_m": 0.32493234801462306, + "p90_m": 1.8294809048516345, + "p95_m": 2.8849842982348815 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 6448.9037381029, + 12970.81955992246, + 19982.864476873714, + 37484.66857646037, + 241967.7689235441, + 575820.0746342305 + ], + "effective_rank": 6, + "scaled_condition_number": 89.28960611274712, + "weakest_scaled_direction": [ + 0.9264290241280293, + 0.15832099245514938, + 0.006538034766120178, + -0.07409119321316872, + 0.05915070649239118, + 0.3280741832456509 + ] + }, + "forward_reverse": { + "translation_m": 0.018245717875293024, + "rotation_deg": 0.41212759156893974 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.985994439185401e-15, + "rotation_deg": 2.7685093616410986e-14 + }, + { + "translation_m": 1.2412670766236366e-15, + "rotation_deg": 2.9368517486974605e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 8, + "j": 9, + "lidar_time_i": 1784784474.9314597, + "lidar_time_j": 1784784549.4274275, + "frame_counter_i": 6878, + "frame_counter_j": 7623, + "rtk_translation_m": 7.803713858547152, + "rtk_rotation_deg": 12.027343338722998, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9767614712966242, + 0.21427395168652957, + 0.004868451405968611, + 7.766978515767815 + ], + [ + -0.2139069629591747, + 0.9760106497080835, + -0.0405835293436424, + -0.7070571255107969 + ], + [ + -0.013447653625660153, + 0.03859903217754081, + 0.999164288456569, + 0.12803808425669047 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 6804, + "backend_objective": 531.6935692491993, + "backend_elapsed_sec": 0.2675932999991346, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 3880, + "objective": 1018.048380404935 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5890, + "objective": 628.0580165416324 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 6804, + "objective": 531.6935692491993 + } + ], + "heldout_symmetric": { + "evaluated": 8053, + "inliers": 5160, + "inlier_ratio": 0.6407549981373402, + "inlier_rmse_m": 0.12189583104066963, + "median_m": 0.15419497180015548, + "p90_m": 1.1291169201957723, + "p95_m": 1.7319093677442594 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 24102.672656024908, + 28132.24412747677, + 60991.30839574281, + 126216.67179941971, + 312060.103447803, + 676492.9307550354 + ], + "effective_rank": 6, + "scaled_condition_number": 28.06713348388497, + "weakest_scaled_direction": [ + 0.6462448740678424, + 0.1405828012021304, + 0.01738749021676203, + 0.6466690564364066, + 0.29873514167101284, + -0.23426088130460485 + ] + }, + "forward_reverse": { + "translation_m": 0.025170709673794655, + "rotation_deg": 0.14112050756711447 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 6.938893903907228e-16, + "rotation_deg": 9.647521844476607e-15 + }, + { + "translation_m": 1.0068810866857322e-15, + "rotation_deg": 1.4503947531494247e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 8, + "j": 10, + "lidar_time_i": 1784784474.9314597, + "lidar_time_j": 1784784614.7244046, + "frame_counter_i": 6878, + "frame_counter_j": 8276, + "rtk_translation_m": 8.062504137991457, + "rtk_rotation_deg": 43.97815524531457, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7227614730011143, + -0.6909633900050299, + -0.013617885959897949, + 7.504727299229808 + ], + [ + 0.6910846376839269, + 0.7224870681747577, + 0.020358287686297997, + 2.5189109601011483 + ], + [ + -0.004228084972517256, + -0.024125297780546298, + 0.9997000016527283, + 0.24205873956103108 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 7010, + "backend_objective": 812.9622128843123, + "backend_elapsed_sec": 0.2784631999966223, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4331, + "objective": 1255.0369765197802 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6260, + "objective": 727.8061185566299 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 7010, + "objective": 812.9622128843123 + } + ], + "heldout_symmetric": { + "evaluated": 8141, + "inliers": 4946, + "inlier_ratio": 0.6075420709986488, + "inlier_rmse_m": 0.12933255373443525, + "median_m": 0.1773875611131982, + "p90_m": 1.0586313554558715, + "p95_m": 1.5992170956790337 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 30435.712422955603, + 52010.38323259794, + 133772.92953285715, + 158835.34324193356, + 343687.89863201004, + 621790.4316893131 + ], + "effective_rank": 6, + "scaled_condition_number": 20.429632894689156, + "weakest_scaled_direction": [ + -0.03512224446332845, + 0.09088531156333027, + 0.012075344276156075, + -0.8199771153633209, + 0.5619352444233221, + 0.04718882814666677 + ] + }, + "forward_reverse": { + "translation_m": 0.01256038832173067, + "rotation_deg": 0.12386976869589704 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.6023110072162766e-08, + "rotation_deg": 2.0998959129808942e-08 + }, + { + "translation_m": 2.6023109930632802e-08, + "rotation_deg": 2.0998958826595784e-08 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 8, + "j": 11, + "lidar_time_i": 1784784474.9314597, + "lidar_time_j": 1784784682.921899, + "frame_counter_i": 6878, + "frame_counter_j": 8958, + "rtk_translation_m": 11.084531710563947, + "rtk_rotation_deg": 22.606708130954026, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9243899349067348, + -0.38120141047961975, + -0.013738009006799418, + 10.405956760445594 + ], + [ + 0.3813336258467257, + 0.9243963821216479, + 0.00871748352433042, + 3.96946634435529 + ], + [ + 0.009376248808132398, + -0.013297118814084123, + 0.9998676275335311, + 0.2888452351987371 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 5606, + "backend_objective": 378.5080329085616, + "backend_elapsed_sec": 0.2886214999889489, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 3910, + "objective": 1056.2927355913773 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5256, + "objective": 548.4385197355723 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 5606, + "objective": 378.5080329085616 + } + ], + "heldout_symmetric": { + "evaluated": 7853, + "inliers": 4278, + "inlier_ratio": 0.5447599643448364, + "inlier_rmse_m": 0.13547919137380177, + "median_m": 0.21351278265947216, + "p90_m": 1.3398476713241319, + "p95_m": 2.091862477817637 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 22774.38438022873, + 28226.403973158238, + 56159.97681521618, + 69727.78054387387, + 249511.41633860112, + 631497.3153184594 + ], + "effective_rank": 6, + "scaled_condition_number": 27.72840331379869, + "weakest_scaled_direction": [ + 0.34269641788326166, + -0.2690626197573097, + -0.025245826519742637, + 0.8753625298150922, + -0.17049792995682203, + -0.11915543352616999 + ] + }, + "forward_reverse": { + "translation_m": 0.006462771421800638, + "rotation_deg": 0.08629803406158434 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.9301603260928013e-15, + "rotation_deg": 2.6444228144193955e-14 + }, + { + "translation_m": 4.723897861430799e-14, + "rotation_deg": 5.544805625423182e-13 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 8, + "j": 12, + "lidar_time_i": 1784784474.9314597, + "lidar_time_j": 1784784758.8187964, + "frame_counter_i": 6878, + "frame_counter_j": 9717, + "rtk_translation_m": 14.350449135419003, + "rtk_rotation_deg": 4.328883878399632, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9971754663480695, + -0.07507512775379334, + -0.002194198318704511, + 13.966714483921436 + ], + [ + 0.0750908502042479, + 0.9971423273214032, + 0.008279086885561782, + 3.3035957215894984 + ], + [ + 0.0015663745124994213, + -0.008420466543314511, + 0.9999633204343442, + 0.35012164117541633 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 5236, + "backend_objective": 329.7824719483567, + "backend_elapsed_sec": 0.29968260001624003, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3713, + "objective": 1199.9425263214039 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5038, + "objective": 579.3374261002559 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 5236, + "objective": 329.7824719483567 + } + ], + "heldout_symmetric": { + "evaluated": 8075, + "inliers": 3754, + "inlier_ratio": 0.46489164086687307, + "inlier_rmse_m": 0.14530908872417966, + "median_m": 0.27951538979919144, + "p90_m": 1.5491108102474644, + "p95_m": 2.3089813172626723 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 13901.219791369556, + 18966.638816699935, + 37841.70941568832, + 55816.59050224912, + 208073.3462936252, + 527675.9118769562 + ], + "effective_rank": 6, + "scaled_condition_number": 37.958964738084276, + "weakest_scaled_direction": [ + 0.8638632830539, + -0.06878739138695336, + 0.0030384305954635244, + 0.2851460604957918, + 0.10986761218753847, + -0.3944871644210632 + ] + }, + "forward_reverse": { + "translation_m": 0.00955628888567663, + "rotation_deg": 0.1112688142308669 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.9506627632986034e-15, + "rotation_deg": 1.0915323608264886e-14 + }, + { + "translation_m": 4.1143762843750484e-14, + "rotation_deg": 9.496717164332357e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 8, + "j": 13, + "lidar_time_i": 1784784474.9314597, + "lidar_time_j": 1784784836.0155501, + "frame_counter_i": 6878, + "frame_counter_j": 10489, + "rtk_translation_m": 18.245302761704593, + "rtk_rotation_deg": 28.43334478424675, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8712576472135323, + 0.49077303725774324, + 0.007206807389507719, + 17.83885631550189 + ], + [ + -0.4906422418999359, + 0.8712393520770557, + -0.014566463392218697, + 2.209227555174436 + ], + [ + -0.013427681681681741, + 0.009155178488797421, + 0.9998679313146781, + 0.40031079935476305 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 9, + "backend_num_inliers": 4165, + "backend_objective": 244.0998723263817, + "backend_elapsed_sec": 0.34662629998638295, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 3507, + "objective": 1026.1259780030157 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 4554, + "objective": 629.4667804436332 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 9, + "num_inliers": 4165, + "objective": 244.0998723263817 + } + ], + "heldout_symmetric": { + "evaluated": 7808, + "inliers": 2954, + "inlier_ratio": 0.37832991803278687, + "inlier_rmse_m": 0.15442802982944018, + "median_m": 0.36929693670247854, + "p90_m": 2.0301112771069065, + "p95_m": 3.356620420845132 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4639.456002589504, + 11142.092649894259, + 23773.516018542028, + 82142.44887617574, + 177056.34888126588, + 470857.0356533245 + ], + "effective_rank": 6, + "scaled_condition_number": 101.4897081447731, + "weakest_scaled_direction": [ + -0.6711792299500938, + -0.6200237845756325, + -0.004781401182955758, + 0.03916221952861478, + -0.05688790086673817, + 0.4003700455121542 + ] + }, + "forward_reverse": { + "translation_m": 0.027875630486669568, + "rotation_deg": 0.37387837894914167 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.5146000066436358e-15, + "rotation_deg": 1.2002448938568858e-14 + }, + { + "translation_m": 2.5989654674417885e-15, + "rotation_deg": 1.110672134964334e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 9, + "j": 10, + "lidar_time_i": 1784784549.4274275, + "lidar_time_j": 1784784614.7244046, + "frame_counter_i": 7623, + "frame_counter_j": 8276, + "rtk_translation_m": 2.04815062353057, + "rtk_rotation_deg": 56.00549858403758, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5585402611504936, + -0.8287865031991155, + -0.033848320326429454, + -0.9276587446874038 + ], + [ + 0.8291802818257895, + 0.5567829749179408, + 0.04952553960162207, + 3.1024518072851404 + ], + [ + -0.022199930298152856, + -0.05572836761030748, + 0.9981991345108691, + -0.0918601778786096 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7538, + "backend_objective": 608.0118186215705, + "backend_elapsed_sec": 0.2677478000114206, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 4357, + "objective": 1324.6661052053641 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6291, + "objective": 557.40269090636 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7538, + "objective": 608.0118186215705 + } + ], + "heldout_symmetric": { + "evaluated": 8190, + "inliers": 5386, + "inlier_ratio": 0.6576312576312576, + "inlier_rmse_m": 0.10693844153477818, + "median_m": 0.1288778907124714, + "p90_m": 1.1136753409311773, + "p95_m": 1.7213657641802305 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 47269.46473083048, + 69995.82165520151, + 146112.1985207452, + 235663.1375590507, + 454973.5441271389, + 754310.6305504619 + ], + "effective_rank": 6, + "scaled_condition_number": 15.957672354569297, + "weakest_scaled_direction": [ + 0.3979511773838894, + -0.5358952868515874, + -0.015695037907353385, + 0.44537251442255593, + -0.21518509078866688, + -0.556366307241301 + ] + }, + "forward_reverse": { + "translation_m": 0.0038184479242649575, + "rotation_deg": 0.016135929192430513 + }, + "multistart": { + "runs": 2, + "success_rate": 0.5, + "deltas": [ + { + "translation_m": 1.2870479187534012e-15, + "rotation_deg": 3.168114144539765e-15 + }, + { + "translation_m": 2.5836590661309904, + "rotation_deg": 6.858156244423453 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 9, + "j": 11, + "lidar_time_i": 1784784549.4274275, + "lidar_time_j": 1784784682.921899, + "frame_counter_i": 7623, + "frame_counter_j": 8958, + "rtk_translation_m": 4.738677237611319, + "rtk_rotation_deg": 34.634051469677026, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8218592794898043, + -0.5689630135783226, + -0.028782180187980497, + 1.5818050327821167 + ], + [ + 0.5696826609555828, + 0.8205324215915045, + 0.04677831681182805, + 5.127115738614646 + ], + [ + -0.0029984200950525243, + -0.05484190274830656, + 0.9984905483678247, + 0.018282150203836847 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 6186, + "backend_objective": 608.7584534468984, + "backend_elapsed_sec": 0.35689550000824966, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 3870, + "objective": 1072.1342193992616 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5326, + "objective": 755.9554540091757 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 6186, + "objective": 608.7584534468984 + } + ], + "heldout_symmetric": { + "evaluated": 7902, + "inliers": 4649, + "inlier_ratio": 0.5883320678309288, + "inlier_rmse_m": 0.11815838246331245, + "median_m": 0.1732761356088094, + "p90_m": 1.3501275015012313, + "p95_m": 1.810297568884802 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 35779.64456052172, + 55099.034207127086, + 90158.88514826825, + 121972.77920522196, + 341810.39286721504, + 770216.7057141428 + ], + "effective_rank": 6, + "scaled_condition_number": 21.526672921842792, + "weakest_scaled_direction": [ + 0.8136834885680856, + -0.24928441973477838, + -0.011353846441186583, + 0.3132175219694385, + 0.018744214916075416, + -0.42094059796919014 + ] + }, + "forward_reverse": { + "translation_m": 0.008866435423074387, + "rotation_deg": 0.05039949658393549 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.163336342344337e-16, + "rotation_deg": 9.948813902605265e-15 + }, + { + "translation_m": 1.2755491433176288e-15, + "rotation_deg": 1.5746131234065862e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 9, + "j": 12, + "lidar_time_i": 1784784549.4274275, + "lidar_time_j": 1784784758.8187964, + "frame_counter_i": 7623, + "frame_counter_j": 9717, + "rtk_translation_m": 7.170741483679294, + "rtk_rotation_deg": 16.35622721712263, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9580389060611738, + -0.28583494628803124, + -0.021443832531232578, + 5.206220344183419 + ], + [ + 0.2865026035134924, + 0.9572030750268492, + 0.04096988331853636, + 5.2485799740167325 + ], + [ + 0.008815478041475866, + -0.04539445604544996, + 0.9989302431637751, + 0.10583336091245205 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 6103, + "backend_objective": 518.2601822681988, + "backend_elapsed_sec": 0.5235329999995884, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 3867, + "objective": 1426.300059188684 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5492, + "objective": 809.5194505361512 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 6103, + "objective": 518.2601822681988 + } + ], + "heldout_symmetric": { + "evaluated": 8124, + "inliers": 4398, + "inlier_ratio": 0.5413589364844904, + "inlier_rmse_m": 0.12469816852157387, + "median_m": 0.2078334752819168, + "p90_m": 1.360876011490024, + "p95_m": 1.787772302528427 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 18767.9434067404, + 28114.456016397115, + 43095.188369482436, + 150800.6730324435, + 361897.92464180023, + 713847.6342105864 + ], + "effective_rank": 6, + "scaled_condition_number": 38.0354745717217, + "weakest_scaled_direction": [ + 0.9449892265376355, + 0.10758356523122609, + 0.0032027873352404126, + 0.1374104131483723, + 0.08634815676563548, + -0.2628179114040674 + ] + }, + "forward_reverse": { + "translation_m": 0.03403608365914784, + "rotation_deg": 0.249719392637206 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.51548375191671e-11, + "rotation_deg": 2.2703385960631228e-10 + }, + { + "translation_m": 2.5175287103637324e-11, + "rotation_deg": 2.271749122594669e-10 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 9, + "j": 13, + "lidar_time_i": 1784784549.4274275, + "lidar_time_j": 1784784836.0155501, + "frame_counter_i": 7623, + "frame_counter_j": 10489, + "rtk_translation_m": 10.733928030180744, + "rtk_rotation_deg": 16.40600144552375, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.955934795551706, + 0.29354415476489515, + -0.004527235015012502, + 9.205828284047165 + ], + [ + -0.29341936681268177, + 0.9558097619542706, + 0.018242097800575154, + 4.998375280144739 + ], + [ + 0.009682036602018515, + -0.016109877599909873, + 0.99982334940276, + 0.2662011583595962 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 5507, + "backend_objective": 471.20211599619284, + "backend_elapsed_sec": 0.26943060001940466, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3824, + "objective": 1680.1148512546545 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5301, + "objective": 863.2255987553363 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 5507, + "objective": 471.20211599619284 + } + ], + "heldout_symmetric": { + "evaluated": 7857, + "inliers": 3988, + "inlier_ratio": 0.5075728649611811, + "inlier_rmse_m": 0.13356609480985904, + "median_m": 0.2438814670298096, + "p90_m": 1.4852497542840035, + "p95_m": 2.008081893939577 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 13201.515080585677, + 42100.58061144254, + 48810.58011128647, + 140947.2209097996, + 310776.03761790437, + 664674.8399612899 + ], + "effective_rank": 6, + "scaled_condition_number": 50.3483756147633, + "weakest_scaled_direction": [ + -0.6866129556117017, + -0.5403756410791841, + 0.0040646757872530494, + 0.020668719932248943, + -0.05020145580139912, + 0.4833145062761431 + ] + }, + "forward_reverse": { + "translation_m": 0.0053243668825205025, + "rotation_deg": 0.1401976908512776 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.305364597889227e-16, + "rotation_deg": 1.1451146831523094e-14 + }, + { + "translation_m": 2.5852944279136686e-15, + "rotation_deg": 3.019679426825962e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 9, + "j": 14, + "lidar_time_i": 1784784549.4274275, + "lidar_time_j": 1784784921.1126208, + "frame_counter_i": 7623, + "frame_counter_j": 11340, + "rtk_translation_m": 7.8912187855633125, + "rtk_rotation_deg": 14.085282580602351, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9651200333834665, + -0.2612146485288876, + -0.017613306215091305, + 5.2377577927151835 + ], + [ + 0.26167847043212705, + 0.9645721295320843, + 0.03354079668466707, + 6.202530412241703 + ], + [ + 0.008227956866627133, + -0.036979917845631725, + 0.9992821355362713, + 0.10190679759281068 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 5857, + "backend_objective": 534.3183532132553, + "backend_elapsed_sec": 0.2981466999917757, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3826, + "objective": 1175.7687093888226 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5279, + "objective": 675.5257952928124 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 5857, + "objective": 534.3183532132553 + } + ], + "heldout_symmetric": { + "evaluated": 8188, + "inliers": 4435, + "inlier_ratio": 0.5416463116756228, + "inlier_rmse_m": 0.12859551377809317, + "median_m": 0.21150959547510495, + "p90_m": 1.4240677020622226, + "p95_m": 1.8723492575115726 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 24277.66112889738, + 35313.23773507953, + 51232.650421287224, + 168805.43646907425, + 339402.4806427054, + 648734.7831650357 + ], + "effective_rank": 6, + "scaled_condition_number": 26.721469573230642, + "weakest_scaled_direction": [ + 0.9523961335282563, + 0.1421400273058059, + -0.0005115147650476002, + 0.1791691525240432, + 0.10073141745058144, + -0.17461143190750852 + ] + }, + "forward_reverse": { + "translation_m": 0.011377143482081005, + "rotation_deg": 0.045883349808202654 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.6039333325912283e-07, + "rotation_deg": 1.3581863004148793e-07 + }, + { + "translation_m": 3.210061615366513e-15, + "rotation_deg": 2.035897884802707e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 10, + "j": 11, + "lidar_time_i": 1784784614.7244046, + "lidar_time_j": 1784784682.921899, + "frame_counter_i": 8276, + "frame_counter_j": 8958, + "rtk_translation_m": 3.2047552083250137, + "rtk_rotation_deg": 21.371447114360556, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9314508413496043, + 0.3637994932255433, + -0.007018466923255387, + 3.107744093458173 + ], + [ + -0.3638593544726402, + 0.9313840680347846, + -0.011405611501804977, + -0.968187162602047 + ], + [ + 0.002387532590065103, + 0.013177501273546255, + 0.9999103225531363, + 0.06717614584206823 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 20, + "backend_num_inliers": 7917, + "backend_objective": 1960.5329712839716, + "backend_elapsed_sec": 0.4523613000055775, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4483, + "objective": 1070.74752037691 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6707, + "objective": 914.6379742618799 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 20, + "num_inliers": 7917, + "objective": 1960.5329712839716 + } + ], + "heldout_symmetric": { + "evaluated": 7990, + "inliers": 5698, + "inlier_ratio": 0.7131414267834794, + "inlier_rmse_m": 0.12095106901516857, + "median_m": 0.13597985016316375, + "p90_m": 0.654815430759017, + "p95_m": 0.937070744846754 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 66427.5644095764, + 196624.74014773467, + 295181.1551861929, + 372275.52242307784, + 550663.422299847, + 890408.5165427345 + ], + "effective_rank": 6, + "scaled_condition_number": 13.404202373771971, + "weakest_scaled_direction": [ + 0.011031775994603218, + -0.07488398699455912, + -0.033085995958195405, + 0.9686527638067878, + -0.23254012851851713, + -0.02851170075111955 + ] + }, + "forward_reverse": { + "translation_m": 0.006897671932212844, + "rotation_deg": 0.18540056788520093 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.6240489487473085e-15, + "rotation_deg": 9.805240141345259e-15 + }, + { + "translation_m": 7.550332863779066e-16, + "rotation_deg": 5.6161527533700886e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 10, + "j": 12, + "lidar_time_i": 1784784614.7244046, + "lidar_time_j": 1784784758.8187964, + "frame_counter_i": 8276, + "frame_counter_j": 9717, + "rtk_translation_m": 6.291813977735496, + "rtk_rotation_deg": 39.64927136691496, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7725759805259751, + 0.6349211688524118, + 0.001209817100048753, + 5.212004145895133 + ], + [ + -0.6348336094634592, + 0.7724984845669595, + -0.015244003324179146, + -3.903948906740347 + ], + [ + -0.01061332228496872, + 0.011009118258904356, + 0.9998830715164829, + 0.0723992199053718 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 7260, + "backend_objective": 723.6829923932979, + "backend_elapsed_sec": 0.29579410000587814, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4141, + "objective": 1364.6826341533097 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 6331, + "objective": 774.0528055588874 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 7260, + "objective": 723.6829923932979 + } + ], + "heldout_symmetric": { + "evaluated": 8212, + "inliers": 5024, + "inlier_ratio": 0.6117876278616659, + "inlier_rmse_m": 0.125002241212049, + "median_m": 0.17043150415444092, + "p90_m": 1.126473701003775, + "p95_m": 1.6731491720771163 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 40394.41642674513, + 65179.81419804479, + 131734.4440523064, + 206960.24969306024, + 516706.69312906166, + 800074.394720169 + ], + "effective_rank": 6, + "scaled_condition_number": 19.806559061723195, + "weakest_scaled_direction": [ + 0.11782910246444485, + -0.08462088371949368, + -0.005297509306259454, + 0.9832693418338864, + 0.08390749755120346, + -0.07119324624117172 + ] + }, + "forward_reverse": { + "translation_m": 0.006509808900811586, + "rotation_deg": 0.06742381610992963 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.630824789273724e-16, + "rotation_deg": 1.2559680439502817e-14 + }, + { + "translation_m": 2.728670952130552e-15, + "rotation_deg": 6.729029131328503e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 10, + "j": 13, + "lidar_time_i": 1784784614.7244046, + "lidar_time_j": 1784784836.0155501, + "frame_counter_i": 8276, + "frame_counter_j": 10489, + "rtk_translation_m": 10.199392557022867, + "rtk_rotation_deg": 72.41150002956134, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.29025882947499887, + 0.9568820341303022, + -0.011250985310564758, + 7.251141950911897 + ], + [ + -0.9565681268131608, + 0.2897921782619427, + -0.03158974807369129, + -7.380728726628164 + ], + [ + -0.026967214853675838, + 0.01993153724260905, + 0.9994375934225119, + 0.10814934062978022 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 6056, + "backend_objective": 356.4176913882986, + "backend_elapsed_sec": 0.2953964000043925, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 3970, + "objective": 1284.3243327120063 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5714, + "objective": 678.1439980278099 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 6056, + "objective": 356.4176913882986 + } + ], + "heldout_symmetric": { + "evaluated": 7945, + "inliers": 4167, + "inlier_ratio": 0.5244808055380743, + "inlier_rmse_m": 0.13689263771908436, + "median_m": 0.2339437735126918, + "p90_m": 1.6217423638751356, + "p95_m": 2.480595414697209 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 18361.276664261397, + 22007.958244877147, + 46300.312308999855, + 72554.1464969259, + 434920.79812304565, + 664354.1886706232 + ], + "effective_rank": 6, + "scaled_condition_number": 36.18235272080672, + "weakest_scaled_direction": [ + 0.8555229864862803, + 0.3006792949355037, + -0.013761971452608485, + 0.011123215109815534, + 0.07883475263508956, + -0.41369595743130916 + ] + }, + "forward_reverse": { + "translation_m": 0.0046518429660042555, + "rotation_deg": 0.17931102925270673 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.0137621733714643e-15, + "rotation_deg": 6.4525742777465674e-15 + }, + { + "translation_m": 1.790180836524724e-15, + "rotation_deg": 3.1094093509920868e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 10, + "j": 14, + "lidar_time_i": 1784784614.7244046, + "lidar_time_j": 1784784921.1126208, + "frame_counter_i": 8276, + "frame_counter_j": 11340, + "rtk_translation_m": 6.819808471778838, + "rtk_rotation_deg": 41.920216003435236, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7557460696051378, + 0.6548477476846684, + -0.004722883515703205, + 6.02645109837871 + ], + [ + -0.6547843528290462, + 0.7555205759810366, + -0.021121329492490282, + -3.4042988172869557 + ], + [ + -0.010263019372187593, + 0.019054831975101296, + 0.9997657644727428, + 0.1059899428415869 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 7036, + "backend_objective": 791.3687289870281, + "backend_elapsed_sec": 0.23039960002643056, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4164, + "objective": 1052.0659014095324 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6153, + "objective": 843.4670180931835 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 7036, + "objective": 791.3687289870281 + } + ], + "heldout_symmetric": { + "evaluated": 8276, + "inliers": 4963, + "inlier_ratio": 0.5996858385693572, + "inlier_rmse_m": 0.12955691635611957, + "median_m": 0.18147170016897698, + "p90_m": 1.1277348193756978, + "p95_m": 1.645515420506277 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 41783.89606331603, + 72609.2001619175, + 129223.05732286548, + 207488.88832643736, + 501543.9834986491, + 748615.21851125 + ], + "effective_rank": 6, + "scaled_condition_number": 17.916357473627098, + "weakest_scaled_direction": [ + -0.01511216788533129, + 0.06474776254351719, + 0.005948136339408654, + -0.993105182982255, + -0.09531389081921925, + 0.014188976431979035 + ] + }, + "forward_reverse": { + "translation_m": 0.009593578345611205, + "rotation_deg": 0.05753783232412823 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.9022190146023508e-15, + "rotation_deg": 1.159149537339861e-14 + }, + { + "translation_m": 3.344633236840599e-15, + "rotation_deg": 2.451781459681271e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 10, + "j": 15, + "lidar_time_i": 1784784614.7244046, + "lidar_time_j": 1784784992.709947, + "frame_counter_i": 8276, + "frame_counter_j": 12056, + "rtk_translation_m": 10.561163834622734, + "rtk_rotation_deg": 65.51298166784417, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.4133663127260252, + 0.9105534311559065, + -0.004554175391352016, + 8.211959145727498 + ], + [ + -0.9104277322865137, + 0.4132121256621924, + -0.019418637680553828, + -6.8047147554839045 + ], + [ + -0.01579986667430266, + 0.012173258230156863, + 0.9998010682116402, + 0.18389997201377958 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 5931, + "backend_objective": 425.51722908662924, + "backend_elapsed_sec": 0.2832541999814566, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3963, + "objective": 1154.8125012038524 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 5627, + "objective": 627.1119434215982 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 5931, + "objective": 425.51722908662924 + } + ], + "heldout_symmetric": { + "evaluated": 7964, + "inliers": 4021, + "inlier_ratio": 0.5048970366649924, + "inlier_rmse_m": 0.13966622273060364, + "median_m": 0.2466352059576603, + "p90_m": 1.6997910547185842, + "p95_m": 2.6288511706828523 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 22858.51135498755, + 39550.79447777227, + 49627.11391869356, + 92977.77775930591, + 386248.5604290127, + 689724.161288384 + ], + "effective_rank": 6, + "scaled_condition_number": 30.173625507677322, + "weakest_scaled_direction": [ + 0.702592645405361, + 0.6965539434222758, + -0.001442226562302501, + -0.10542621618514535, + 0.005892964191415783, + -0.10012334603696395 + ] + }, + "forward_reverse": { + "translation_m": 0.006074999657630774, + "rotation_deg": 0.04867559411570644 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.0658801409477063e-15, + "rotation_deg": 1.0723263109506197e-14 + }, + { + "translation_m": 2.1988302645701685e-15, + "rotation_deg": 6.936570407277658e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 11, + "j": 12, + "lidar_time_i": 1784784682.921899, + "lidar_time_j": 1784784758.8187964, + "frame_counter_i": 8958, + "frame_counter_j": 9717, + "rtk_translation_m": 3.467398797536633, + "rtk_rotation_deg": 18.277824252554396, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9504433935004358, + 0.3108699288544366, + -0.004152479429601264, + 3.0412510252823077 + ], + [ + -0.3108962362764304, + 0.9503946957064814, + -0.009667090675907373, + -1.9624152454246937 + ], + [ + 0.0009412866332746023, + 0.010479012693164157, + 0.9999446506044473, + 0.006938928443856374 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 23, + "backend_num_inliers": 7693, + "backend_objective": 1427.8710136436068, + "backend_elapsed_sec": 0.47855639999033883, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4290, + "objective": 999.096582002139 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6651, + "objective": 1132.2989015074832 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 23, + "num_inliers": 7693, + "objective": 1427.8710136436068 + } + ], + "heldout_symmetric": { + "evaluated": 7924, + "inliers": 5157, + "inlier_ratio": 0.6508076728924785, + "inlier_rmse_m": 0.12017753597340274, + "median_m": 0.14671480883966115, + "p90_m": 0.9401828007833469, + "p95_m": 1.367934426813996 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 57131.84333195028, + 133675.67515040856, + 237033.47281957857, + 305488.1079948467, + 593318.576170641, + 869075.8926799411 + ], + "effective_rank": 6, + "scaled_condition_number": 15.211760062254479, + "weakest_scaled_direction": [ + 0.016444278146483127, + -0.08117415124435234, + -0.01654078390099138, + 0.9922263848513138, + 0.08181679085150644, + -0.04073768885927197 + ] + }, + "forward_reverse": { + "translation_m": 0.016302173123952383, + "rotation_deg": 0.05141023051579345 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.8682029553238323e-15, + "rotation_deg": 9.733100321856565e-15 + }, + { + "translation_m": 6.555349938080652e-16, + "rotation_deg": 1.8754138480784483e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 11, + "j": 13, + "lidar_time_i": 1784784682.921899, + "lidar_time_j": 1784784836.0155501, + "frame_counter_i": 8958, + "frame_counter_j": 10489, + "rtk_translation_m": 7.516502113110916, + "rtk_rotation_deg": 51.04005291520078, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6182391429232594, + 0.7859851720259684, + 0.0027697495957383633, + 6.214282032960136 + ], + [ + -0.7852674802296215, + 0.6178180190544496, + -0.04069250330781977, + -4.45825153979771 + ], + [ + -0.03369490542107991, + 0.022982704082515897, + 0.9991678781174462, + 0.07675188590804839 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 7, + "backend_num_inliers": 6443, + "backend_objective": 472.097100200573, + "backend_elapsed_sec": 0.30156139997416176, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4113, + "objective": 1062.5361846990106 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6018, + "objective": 693.7424421423952 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 7, + "num_inliers": 6443, + "objective": 472.097100200573 + } + ], + "heldout_symmetric": { + "evaluated": 7657, + "inliers": 4339, + "inlier_ratio": 0.5666710199817161, + "inlier_rmse_m": 0.12966061077144844, + "median_m": 0.19703442801383284, + "p90_m": 1.4197259223628946, + "p95_m": 2.079747901535407 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 29590.291689393558, + 54337.624830687884, + 67341.03074587212, + 135527.10863196754, + 443725.93536806316, + 773551.7651238618 + ], + "effective_rank": 6, + "scaled_condition_number": 26.14207974844453, + "weakest_scaled_direction": [ + 0.666766807633356, + 0.615172649289733, + -0.0022160018858633558, + -0.05392610294968842, + 0.04492081364211016, + -0.41479370904379287 + ] + }, + "forward_reverse": { + "translation_m": 0.010250004424021303, + "rotation_deg": 0.0630753341579125 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.7798229048217483e-15, + "rotation_deg": 2.2026197310775185e-14 + }, + { + "translation_m": 5.551115123125783e-16, + "rotation_deg": 1.4908859356854676e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 11, + "j": 14, + "lidar_time_i": 1784784682.921899, + "lidar_time_j": 1784784921.1126208, + "frame_counter_i": 8958, + "frame_counter_j": 11340, + "rtk_translation_m": 3.767517331528496, + "rtk_rotation_deg": 20.548768889074672, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.942026925919612, + 0.3355237071803427, + -0.0030187352328095727, + 3.6069602953031183 + ], + [ + -0.33553665317259207, + 0.9419695375826291, + -0.010418476093145685, + -1.206369087684881 + ], + [ + -0.0006520890906079957, + 0.010827381323624107, + 0.9999411695662349, + 0.07924499098366505 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 10, + "backend_num_inliers": 7408, + "backend_objective": 1459.8703284439798, + "backend_elapsed_sec": 0.3203974000061862, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4275, + "objective": 1064.8857923542525 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6347, + "objective": 928.3262646342594 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 10, + "num_inliers": 7408, + "objective": 1459.8703284439798 + } + ], + "heldout_symmetric": { + "evaluated": 7988, + "inliers": 5134, + "inlier_ratio": 0.64271407110666, + "inlier_rmse_m": 0.12109534664165014, + "median_m": 0.15504103975148426, + "p90_m": 0.9524874908970329, + "p95_m": 1.41090815960974 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 61505.82455169954, + 143556.04669624314, + 250928.05845858628, + 375812.23863406415, + 573922.2693983567, + 863904.4673688253 + ], + "effective_rank": 6, + "scaled_condition_number": 14.04589685067402, + "weakest_scaled_direction": [ + 0.01180305193261193, + 0.09185640342475676, + 0.019835137835105623, + -0.9903338151215791, + -0.09689871093297722, + 0.029651827401897906 + ] + }, + "forward_reverse": { + "translation_m": 0.007610676428698485, + "rotation_deg": 0.05350102444543152 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.985625923664639e-13, + "rotation_deg": 2.8826369385899637e-12 + }, + { + "translation_m": 2.8617366805038644e-07, + "rotation_deg": 1.5337474030764892e-07 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 11, + "j": 15, + "lidar_time_i": 1784784682.921899, + "lidar_time_j": 1784784992.709947, + "frame_counter_i": 8958, + "frame_counter_j": 12056, + "rtk_translation_m": 7.712397127778454, + "rtk_rotation_deg": 44.141534553483616, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.716094201727167, + 0.6979874068050286, + 0.004761742782103645, + 6.894343637585203 + ], + [ + -0.6976885985463354, + 0.715959274117259, + -0.02515824445261516, + -3.5712566539558304 + ], + [ + -0.02096935171105586, + 0.014693459329868349, + 0.9996721405249523, + 0.10646586545710361 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 6629, + "backend_objective": 596.9478996131159, + "backend_elapsed_sec": 0.2352178000146523, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4100, + "objective": 1009.2812485827473 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5942, + "objective": 742.3828834104637 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 6629, + "objective": 596.9478996131159 + } + ], + "heldout_symmetric": { + "evaluated": 7676, + "inliers": 4379, + "inlier_ratio": 0.570479416362689, + "inlier_rmse_m": 0.12836105648377344, + "median_m": 0.19583855766353528, + "p90_m": 1.4560376428526856, + "p95_m": 2.062279090391627 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 38049.27132401841, + 63332.56476827506, + 71744.68145153238, + 188411.65734390708, + 503547.31521629175, + 717503.9237202356 + ], + "effective_rank": 6, + "scaled_condition_number": 18.857231656557765, + "weakest_scaled_direction": [ + 0.7673350045286186, + 0.4242982572414473, + 0.005601452564885276, + -0.06830701461078995, + 0.047533100756362544, + -0.4735096192724549 + ] + }, + "forward_reverse": { + "translation_m": 0.006898635416764969, + "rotation_deg": 0.028532809525243653 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.131015977260606e-11, + "rotation_deg": 6.110649119113154e-11 + }, + { + "translation_m": 3.794401387868872e-15, + "rotation_deg": 5.500759727794842e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 11, + "j": 16, + "lidar_time_i": 1784784682.921899, + "lidar_time_j": 1784785067.6067727, + "frame_counter_i": 8958, + "frame_counter_j": 12805, + "rtk_translation_m": 11.0395297023812, + "rtk_rotation_deg": 69.98495270981527, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.33997459216691417, + 0.9404220709679335, + -0.004858509784271119, + 8.665326582789657 + ], + [ + -0.9385271305567985, + 0.33895161243540245, + -0.06541123478626168, + -6.8664357105870675 + ], + [ + -0.05986736915685403, + 0.026798001116207656, + 0.9978465639798603, + -0.023810029264402142 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 5353, + "backend_objective": 334.0375475607748, + "backend_elapsed_sec": 0.2557258000015281, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 8, + "num_inliers": 3397, + "objective": 1004.791683813135 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 4966, + "objective": 579.5436701602518 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 5353, + "objective": 334.0375475607748 + } + ], + "heldout_symmetric": { + "evaluated": 7922, + "inliers": 3772, + "inlier_ratio": 0.4761423882857864, + "inlier_rmse_m": 0.13515636052103228, + "median_m": 0.27440520801976354, + "p90_m": 1.7053159063617707, + "p95_m": 2.47427889172865 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 10127.045516353472, + 24223.753044945723, + 52985.03994164588, + 77287.00801523344, + 338167.59849025833, + 459810.51357045333 + ], + "effective_rank": 6, + "scaled_condition_number": 45.4042112112498, + "weakest_scaled_direction": [ + 0.3754067618118904, + 0.8534683468201325, + 0.0033299375093265252, + -0.020975171147207282, + 0.04313620589694269, + -0.3582593552363523 + ] + }, + "forward_reverse": { + "translation_m": 0.037021121414326036, + "rotation_deg": 0.5129154434742894 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.217454592664719e-15, + "rotation_deg": 1.2677297387073151e-14 + }, + { + "translation_m": 1.807312143953211e-15, + "rotation_deg": 2.5212748876285697e-15 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_rotation" + ] + }, + { + "i": 12, + "j": 13, + "lidar_time_i": 1784784758.8187964, + "lidar_time_j": 1784784836.0155501, + "frame_counter_i": 9717, + "frame_counter_j": 10489, + "rtk_translation_m": 4.049286119591895, + "rtk_rotation_deg": 32.762228662646386, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8316727394710671, + 0.5552590632983242, + 0.0027976857848656515, + 3.7890687060066965 + ], + [ + -0.5550814798447131, + 0.8315155678841479, + -0.021596552958877947, + -1.3906575724641173 + ], + [ + -0.014318001050583175, + 0.016408320796838335, + 0.9997628528078737, + 0.11008740201136429 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 7953, + "backend_objective": 869.6936700072964, + "backend_elapsed_sec": 0.5297750000027008, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": false, + "iterations": 59, + "num_inliers": 4370, + "objective": 962.2433630772165 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6858, + "objective": 821.9086325078015 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 7953, + "objective": 869.6936700072964 + } + ], + "heldout_symmetric": { + "evaluated": 7879, + "inliers": 5560, + "inlier_ratio": 0.7056733087955325, + "inlier_rmse_m": 0.11689859246507509, + "median_m": 0.12986412584869617, + "p90_m": 0.832358221560291, + "p95_m": 1.2013856283425157 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 57100.09669312741, + 70309.95131630609, + 120136.47232763257, + 230672.1520484908, + 626073.0789463806, + 828508.547965252 + ], + "effective_rank": 6, + "scaled_condition_number": 14.509757355016381, + "weakest_scaled_direction": [ + -0.6854969296403723, + -0.5748624669478345, + 0.00775359846363909, + 0.04562986047685622, + -0.0556223085124074, + 0.4408980152912356 + ] + }, + "forward_reverse": { + "translation_m": 0.0020816591744367207, + "rotation_deg": 0.08889045467662131 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.4365173483345e-13, + "rotation_deg": 1.1223558095281077e-11 + }, + { + "translation_m": 1.1959046253703445e-14, + "rotation_deg": 1.6420504838174178e-13 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 12, + "j": 14, + "lidar_time_i": 1784784758.8187964, + "lidar_time_j": 1784784921.1126208, + "frame_counter_i": 9717, + "frame_counter_j": 11340, + "rtk_translation_m": 0.97948616772873, + "rtk_rotation_deg": 2.2709446365202806, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9996581263228405, + 0.02610659396280804, + -0.0014409123394368004, + 0.30889730725744324 + ], + [ + -0.026122075707762333, + 0.9995862066640262, + -0.012043778798241984, + 0.9063295399378696 + ], + [ + 0.0011258940566494396, + 0.01207730096851634, + 0.9999264328758839, + 0.006439480993300663 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 10372, + "backend_objective": 1198.5516746258368, + "backend_elapsed_sec": 0.21869030001107603, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 3, + "num_inliers": 4568, + "objective": 795.9998919658881 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7631, + "objective": 637.9132618321958 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 10372, + "objective": 1198.5516746258368 + } + ], + "heldout_symmetric": { + "evaluated": 8210, + "inliers": 7180, + "inlier_ratio": 0.8745432399512789, + "inlier_rmse_m": 0.09766069029332589, + "median_m": 0.08197666179497584, + "p90_m": 0.3146202596650354, + "p95_m": 0.672829810365911 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 109114.22823551347, + 359789.4940437043, + 459655.61713220185, + 844519.4260670365, + 970171.191170407, + 1293820.6527927371 + ], + "effective_rank": 6, + "scaled_condition_number": 11.857488007889668, + "weakest_scaled_direction": [ + -0.003601391110131631, + 0.11329322266653565, + 0.013475728477684981, + -0.9873747958599314, + -0.10269021557784694, + 0.03893343739040223 + ] + }, + "forward_reverse": { + "translation_m": 0.002473515580842477, + "rotation_deg": 0.018069288085025077 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.889675394751205e-07, + "rotation_deg": 3.918435456343839e-07 + }, + { + "translation_m": 9.889675395902287e-07, + "rotation_deg": 3.9184354761591926e-07 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 12, + "j": 15, + "lidar_time_i": 1784784758.8187964, + "lidar_time_j": 1784784992.709947, + "frame_counter_i": 9717, + "frame_counter_j": 12056, + "rtk_translation_m": 4.286747470271891, + "rtk_rotation_deg": 25.863710300929224, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8972862712213516, + 0.441420931836251, + -0.004990833046564667, + 4.169157063684358 + ], + [ + -0.44144650095283283, + 0.897184424089816, + -0.013604997873056782, + -0.3321808532165975 + ], + [ + -0.0015278331661443911, + 0.014410763596735278, + 0.9998949922958784, + 0.1295301488733824 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 8050, + "backend_objective": 1077.6421379499968, + "backend_elapsed_sec": 0.2883843000163324, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4390, + "objective": 807.5217644124835 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 8, + "num_inliers": 6848, + "objective": 1073.9983012769767 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 8050, + "objective": 1077.6421379499968 + } + ], + "heldout_symmetric": { + "evaluated": 7898, + "inliers": 5555, + "inlier_ratio": 0.7033426183844012, + "inlier_rmse_m": 0.12103901189560114, + "median_m": 0.13437732506016573, + "p90_m": 0.7657373090860967, + "p95_m": 1.1689393422349994 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 64933.51746675845, + 73612.68072860739, + 115393.72227781739, + 302897.5851089768, + 659714.9901210441, + 770072.3652140237 + ], + "effective_rank": 6, + "scaled_condition_number": 11.859397045728326, + "weakest_scaled_direction": [ + -0.7011289510728151, + -0.5219313719608661, + -0.009393314541797756, + 0.2600295997417285, + 0.06395736258760248, + 0.40523038583193016 + ] + }, + "forward_reverse": { + "translation_m": 0.022780233796594867, + "rotation_deg": 0.04927694758545139 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.6272671962866384e-15, + "rotation_deg": 1.289339939708841e-14 + }, + { + "translation_m": 6.463236069784172e-16, + "rotation_deg": 3.4338493613969134e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 12, + "j": 16, + "lidar_time_i": 1784784758.8187964, + "lidar_time_j": 1784785067.6067727, + "frame_counter_i": 9717, + "frame_counter_j": 12805, + "rtk_translation_m": 7.5836501880550475, + "rtk_rotation_deg": 51.70712845726087, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6146203489219709, + 0.7888162783528037, + 0.0032719560918860312, + 6.874101640514283 + ], + [ + -0.7867989688670807, + 0.61333493294241, + -0.0690481181657285, + -2.908082059139103 + ], + [ + -0.05647308456896194, + 0.03986400680015121, + 0.9976079649246516, + 0.062062628879110515 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 6703, + "backend_objective": 409.69494126831563, + "backend_elapsed_sec": 0.2799302999919746, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3727, + "objective": 1444.9177421282147 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 8, + "num_inliers": 5693, + "objective": 557.4885047395345 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 6703, + "objective": 409.69494126831563 + } + ], + "heldout_symmetric": { + "evaluated": 8144, + "inliers": 4740, + "inlier_ratio": 0.5820235756385069, + "inlier_rmse_m": 0.12458133956199553, + "median_m": 0.18601408084225746, + "p90_m": 1.194987294606242, + "p95_m": 1.8480348406894138 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 18364.402130109076, + 50475.82362826073, + 72295.18416243164, + 85622.68251926747, + 399729.3199221288, + 594122.6450628712 + ], + "effective_rank": 6, + "scaled_condition_number": 32.351864267271, + "weakest_scaled_direction": [ + -0.4363491064464678, + -0.7313957369241603, + -0.0007090641582729063, + 0.0036630210635555348, + -0.045485057920586804, + 0.5220889984698033 + ] + }, + "forward_reverse": { + "translation_m": 0.00989839849833309, + "rotation_deg": 0.03808519306435704 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.7064176995603496e-15, + "rotation_deg": 3.337593529060993e-14 + }, + { + "translation_m": 1.3732700395566711e-15, + "rotation_deg": 2.974763671380339e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 12, + "j": 17, + "lidar_time_i": 1784784758.8187964, + "lidar_time_j": 1784785215.9006598, + "frame_counter_i": 9717, + "frame_counter_j": 14288, + "rtk_translation_m": 6.351478009829798, + "rtk_rotation_deg": 1.4248238883471207, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9994930132691149, + 0.03176504947624508, + -0.002167500402989367, + 6.214675156608227 + ], + [ + -0.031777216054501095, + 0.9994779687978029, + -0.0058308170648675, + 1.2668750661132342 + ], + [ + 0.0019811527075957814, + 0.005896738046589404, + 0.9999806515699989, + 0.168039175109176 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 7418, + "backend_objective": 794.1740626832127, + "backend_elapsed_sec": 0.30334379998384975, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4110, + "objective": 1000.8154301262603 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 6282, + "objective": 952.1492925664304 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 7418, + "objective": 794.1740626832127 + } + ], + "heldout_symmetric": { + "evaluated": 7982, + "inliers": 5222, + "inlier_ratio": 0.6542219994988725, + "inlier_rmse_m": 0.12658997093251892, + "median_m": 0.1569803781567281, + "p90_m": 0.9639560015701379, + "p95_m": 1.4863364576008102 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 58399.48050163931, + 73088.6637050867, + 110601.33854849968, + 181423.41026453133, + 533909.1279579732, + 655823.3109375546 + ], + "effective_rank": 6, + "scaled_condition_number": 11.229951110937455, + "weakest_scaled_direction": [ + 0.8981188066549503, + 0.06658162660065642, + -0.020771352105241295, + 0.12506204124973389, + 0.10764458161261564, + -0.4016094831444013 + ] + }, + "forward_reverse": { + "translation_m": 0.019742680150836883, + "rotation_deg": 0.07899236042083516 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.47711785560036e-08, + "rotation_deg": 7.434739841825308e-08 + }, + { + "translation_m": 4.163798909574513e-15, + "rotation_deg": 7.626668552228922e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 14, + "lidar_time_i": 1784784836.0155501, + "lidar_time_j": 1784784921.1126208, + "frame_counter_i": 10489, + "frame_counter_j": 11340, + "rtk_translation_m": 4.006260191078547, + "rtk_rotation_deg": 30.491284026126113, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8458419211807263, + -0.5333682309069453, + -0.00835312112295205, + -4.163012048475338 + ], + [ + 0.5334336026840818, + 0.8457437194742415, + 0.012890015413359665, + -0.02563827897866835 + ], + [ + 0.00018947501035742524, + -0.015358750895558125, + 0.9998820294765522, + -0.12498525406937654 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 7969, + "backend_objective": 927.1435594183387, + "backend_elapsed_sec": 0.2421326999901794, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4371, + "objective": 898.8586398352164 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6619, + "objective": 1040.935285233254 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 7969, + "objective": 927.1435594183387 + } + ], + "heldout_symmetric": { + "evaluated": 7943, + "inliers": 5548, + "inlier_ratio": 0.6984766461034874, + "inlier_rmse_m": 0.11406275231178287, + "median_m": 0.12602217998844806, + "p90_m": 0.903519338084722, + "p95_m": 1.2994502303492355 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 50804.88184126566, + 65956.17290397525, + 85728.84407798086, + 229995.28112754674, + 650389.4248986854, + 707443.6587959855 + ], + "effective_rank": 6, + "scaled_condition_number": 13.924718120717541, + "weakest_scaled_direction": [ + 0.7793258965377641, + 0.38266690749821086, + 0.007168629255221333, + -0.2360058333543049, + 0.036974014982615655, + 0.43485625726758553 + ] + }, + "forward_reverse": { + "translation_m": 0.012533581961738958, + "rotation_deg": 0.10861604448395465 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.811417634492977e-15, + "rotation_deg": 2.555001865261242e-14 + }, + { + "translation_m": 3.213209896484438e-15, + "rotation_deg": 1.4494936274853144e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 15, + "lidar_time_i": 1784784836.0155501, + "lidar_time_j": 1784784992.709947, + "frame_counter_i": 10489, + "frame_counter_j": 12056, + "rtk_translation_m": 0.9562774815922267, + "rtk_rotation_deg": 6.898518361717157, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9913539248889289, + -0.13121463619117796, + 0.0003389049016727283, + -0.284327351271054 + ], + [ + 0.13121452196401232, + 0.9913389575266908, + -0.00546081639047433, + 1.0919146226885657 + ], + [ + 0.00038056940405798226, + 0.005458071006458768, + 0.9999850322018909, + -0.016932016341550456 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 10084, + "backend_objective": 1638.7163254148252, + "backend_elapsed_sec": 0.22533139999723062, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 3, + "num_inliers": 4787, + "objective": 819.4918491535332 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7838, + "objective": 907.68020938366 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 10084, + "objective": 1638.7163254148252 + } + ], + "heldout_symmetric": { + "evaluated": 7631, + "inliers": 6711, + "inlier_ratio": 0.8794391298650243, + "inlier_rmse_m": 0.09903209123829654, + "median_m": 0.0794929932661052, + "p90_m": 0.2843674999851667, + "p95_m": 0.553116797826763 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 133310.850116709, + 175848.0556674358, + 230524.304184143, + 890824.1160299031, + 949801.0613552652, + 1401739.4866404298 + ], + "effective_rank": 6, + "scaled_condition_number": 10.514819201987352, + "weakest_scaled_direction": [ + 0.6678512120762216, + 0.24626612198557973, + -0.002692070337053267, + -0.016863926230058553, + 0.08457369218430565, + -0.6970533745920943 + ] + }, + "forward_reverse": { + "translation_m": 0.006638809913641406, + "rotation_deg": 0.04266354358349458 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.053575702315565e-15, + "rotation_deg": 7.241464937813613e-15 + }, + { + "translation_m": 9.436959485696706e-16, + "rotation_deg": 7.257507082768534e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 16, + "lidar_time_i": 1784784836.0155501, + "lidar_time_j": 1784785067.6067727, + "frame_counter_i": 10489, + "frame_counter_j": 12805, + "rtk_translation_m": 3.565173336606111, + "rtk_rotation_deg": 18.944899794614482, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9489251511944998, + 0.31464278140628316, + 0.023258923866203304, + 3.4130945373445862 + ], + [ + -0.31369495630964817, + 0.9488023328035168, + -0.03700821060918089, + 0.4494671051487981 + ], + [ + -0.03371248754369525, + 0.027821814741736783, + 0.9990442506756612, + 0.04584407398787109 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 10, + "backend_num_inliers": 8310, + "backend_objective": 890.4256617264003, + "backend_elapsed_sec": 0.3422549999959301, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4122, + "objective": 901.2164938557783 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6697, + "objective": 1062.8376030689396 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 10, + "num_inliers": 8310, + "objective": 890.4256617264003 + } + ], + "heldout_symmetric": { + "evaluated": 7877, + "inliers": 5729, + "inlier_ratio": 0.7273073505141552, + "inlier_rmse_m": 0.10958532316684438, + "median_m": 0.11088671307791485, + "p90_m": 0.6526082260217301, + "p95_m": 1.0313552461224216 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 50138.26586802238, + 75062.54890217083, + 130722.92080997657, + 299118.1598858921, + 768567.2732860111, + 972935.8821858894 + ], + "effective_rank": 6, + "scaled_condition_number": 19.40505650408657, + "weakest_scaled_direction": [ + -0.38672167429684523, + -0.6532940659090329, + -0.0024710847024261564, + 0.024890199464270537, + -0.02032408794266449, + 0.6500880811377863 + ] + }, + "forward_reverse": { + "translation_m": 0.005441055528592516, + "rotation_deg": 0.12519365495730794 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.4049503905841223e-15, + "rotation_deg": 3.70702022880602e-15 + }, + { + "translation_m": 2.8522145930998398e-15, + "rotation_deg": 3.402144189154636e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 17, + "lidar_time_i": 1784784836.0155501, + "lidar_time_j": 1784785215.9006598, + "frame_counter_i": 10489, + "frame_counter_j": 14288, + "rtk_translation_m": 2.967150651379281, + "rtk_rotation_deg": 31.337404774299262, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8489495177179236, + -0.528332223669453, + -0.012238374033990258, + 0.5419932722823791 + ], + [ + 0.5284484316622716, + 0.8489084395372175, + 0.00983444742587709, + 3.556042865317767 + ], + [ + 0.005193403526593496, + -0.014816298963579038, + 0.9998767453265581, + 0.0404797123576018 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 11, + "backend_num_inliers": 7967, + "backend_objective": 1111.9187402346486, + "backend_elapsed_sec": 0.29831579999881797, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4309, + "objective": 920.5379342221945 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6597, + "objective": 1098.5312376041902 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 11, + "num_inliers": 7967, + "objective": 1111.9187402346486 + } + ], + "heldout_symmetric": { + "evaluated": 7715, + "inliers": 5501, + "inlier_ratio": 0.7130265716137395, + "inlier_rmse_m": 0.11779895987026284, + "median_m": 0.13060126881310336, + "p90_m": 0.7839507232547154, + "p95_m": 1.2257874058501432 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 59654.597100181374, + 127705.55415331507, + 154997.31781970174, + 484842.7934717072, + 664238.141275342, + 764556.613382757 + ], + "effective_rank": 6, + "scaled_condition_number": 12.816390530620689, + "weakest_scaled_direction": [ + -0.825518074746113, + -0.28261208492193335, + -0.003827921662312285, + 0.039473874928980246, + -0.09616863988319821, + 0.4773144358181554 + ] + }, + "forward_reverse": { + "translation_m": 0.013263327701592687, + "rotation_deg": 0.16221305155705806 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.094764613337708e-15, + "rotation_deg": 1.9179512446675555e-14 + }, + { + "translation_m": 1.3340734093775516e-15, + "rotation_deg": 1.990236080151568e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 18, + "lidar_time_i": 1784784836.0155501, + "lidar_time_j": 1784785296.4990919, + "frame_counter_i": 10489, + "frame_counter_j": 15094, + "rtk_translation_m": 5.249882044431148, + "rtk_rotation_deg": 3.4459964529377567, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9977571417147861, + -0.0667962881856638, + -0.004352245599464723, + 2.936043866868282 + ], + [ + 0.0667959258106268, + 0.9977666320230834, + -0.00022872782023320318, + 4.434809149161473 + ], + [ + 0.004357803602911574, + -6.24974580249391e-05, + 0.9999905027758146, + 0.11203964846465073 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7543, + "backend_objective": 841.8866254288604, + "backend_elapsed_sec": 0.2504865999799222, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4277, + "objective": 793.0656724866166 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 6560, + "objective": 958.332626200767 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7543, + "objective": 841.8866254288604 + } + ], + "heldout_symmetric": { + "evaluated": 7446, + "inliers": 5227, + "inlier_ratio": 0.7019876443728176, + "inlier_rmse_m": 0.11940768524727291, + "median_m": 0.13180635915653727, + "p90_m": 0.857866015488963, + "p95_m": 1.5608407355086427 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 33811.95297915407, + 74476.92295847525, + 139856.87652361512, + 336907.90021488024, + 602828.555566902, + 878620.0541353419 + ], + "effective_rank": 6, + "scaled_condition_number": 25.985486690964983, + "weakest_scaled_direction": [ + 0.5771258940496528, + 0.6404774288226794, + -0.0027055542924389717, + -0.05116004191354056, + 0.055856331158730524, + -0.500968827316571 + ] + }, + "forward_reverse": { + "translation_m": 0.008995185113784413, + "rotation_deg": 0.05198334813202341 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.264917572290597e-16, + "rotation_deg": 3.2565984009314428e-15 + }, + { + "translation_m": 4.742874840267547e-16, + "rotation_deg": 5.494358663589623e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 14, + "j": 15, + "lidar_time_i": 1784784921.1126208, + "lidar_time_j": 1784784992.709947, + "frame_counter_i": 11340, + "frame_counter_j": 12056, + "rtk_translation_m": 4.019575892829469, + "rtk_rotation_deg": 23.592765664408944, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9085170701592518, + 0.41783878252876905, + -0.002735880868219632, + 3.8911482014585665 + ], + [ + -0.4178475701601259, + 0.9085031190204823, + -0.005048845544674135, + -1.1353852142585041 + ], + [ + 0.00037595282648356077, + 0.005730143534967087, + 0.9999835119213423, + 0.16406336153145454 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7966, + "backend_objective": 902.9205965703671, + "backend_elapsed_sec": 0.2668874000082724, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4290, + "objective": 958.6151327290297 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 6698, + "objective": 1275.2840755374373 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7966, + "objective": 902.9205965703671 + } + ], + "heldout_symmetric": { + "evaluated": 7962, + "inliers": 5602, + "inlier_ratio": 0.7035920622959055, + "inlier_rmse_m": 0.12189498753760801, + "median_m": 0.13573370144706748, + "p90_m": 0.810941644922927, + "p95_m": 1.3610394034846007 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 68945.42428668191, + 77582.4108575915, + 116985.42825515481, + 197764.31044804805, + 616820.4872774186, + 709858.1746199143 + ], + "effective_rank": 6, + "scaled_condition_number": 10.295943232842452, + "weakest_scaled_direction": [ + -0.08533000640036743, + -0.29768613088104035, + -0.009596037934023782, + 0.8292050077175325, + 0.46520946393242857, + 0.0029805014053541678 + ] + }, + "forward_reverse": { + "translation_m": 0.010817230757509965, + "rotation_deg": 0.008099442158890762 + }, + "multistart": { + "runs": 2, + "success_rate": 0.5, + "deltas": [ + { + "translation_m": 2.0905310879782476e-15, + "rotation_deg": 1.611090055341308e-14 + }, + { + "translation_m": 0.08606585746770694, + "rotation_deg": 0.8387443181814452 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 14, + "j": 16, + "lidar_time_i": 1784784921.1126208, + "lidar_time_j": 1784785067.6067727, + "frame_counter_i": 11340, + "frame_counter_j": 12805, + "rtk_translation_m": 7.5676649485439835, + "rtk_rotation_deg": 49.43618382074059, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6349122470255462, + 0.7725608831825928, + 0.006010021056944039, + 6.655705349267587 + ], + [ + -0.7709997280782875, + 0.6340888682829757, + -0.059082369813874124, + -3.6396657145186144 + ], + [ + -0.049455615254281604, + 0.032878395577472457, + 0.9982350190331288, + 0.06220101301599634 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 6708, + "backend_objective": 387.4594836405733, + "backend_elapsed_sec": 0.24329849999048747, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3600, + "objective": 1289.3156658433 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 5585, + "objective": 460.5022697437489 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 6708, + "objective": 387.4594836405733 + } + ], + "heldout_symmetric": { + "evaluated": 8208, + "inliers": 4862, + "inlier_ratio": 0.5923489278752436, + "inlier_rmse_m": 0.12241126089476961, + "median_m": 0.17858216608738586, + "p90_m": 1.2951310482418497, + "p95_m": 1.9536327645697338 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 18839.99127827367, + 44246.580454990275, + 71798.78942804766, + 81252.29609650953, + 400147.1512237064, + 634034.6025680369 + ], + "effective_rank": 6, + "scaled_condition_number": 33.65365690477826, + "weakest_scaled_direction": [ + 0.42183630237970215, + 0.7931639495655218, + -0.005825229284865469, + -0.010288172641256362, + 0.04591388166329985, + -0.43668892679152543 + ] + }, + "forward_reverse": { + "translation_m": 0.003104373432332903, + "rotation_deg": 0.13386003286196627 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.7499872543679206e-07, + "rotation_deg": 3.650840534413396e-07 + }, + { + "translation_m": 3.74998724994446e-07, + "rotation_deg": 3.650840466010599e-07 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 14, + "j": 17, + "lidar_time_i": 1784784921.1126208, + "lidar_time_j": 1784785215.9006598, + "frame_counter_i": 11340, + "frame_counter_j": 14288, + "rtk_translation_m": 5.910977627463022, + "rtk_rotation_deg": 0.8461207481731591, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9999810311615547, + 0.005256007544014506, + 0.0032111838581707084, + 5.886999225033465 + ], + [ + -0.005263753844837616, + 0.9999832455873373, + 0.0024086178766968913, + 0.5172458084494828 + ], + [ + -0.003198470342940645, + -0.0024254750693934388, + 0.9999919433966221, + 0.14574668511076191 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7592, + "backend_objective": 978.1514630810549, + "backend_elapsed_sec": 0.23258599999826401, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4104, + "objective": 1018.089983840903 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6315, + "objective": 795.6756085182283 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7592, + "objective": 978.1514630810549 + } + ], + "heldout_symmetric": { + "evaluated": 8046, + "inliers": 5381, + "inlier_ratio": 0.6687795177728063, + "inlier_rmse_m": 0.12452036369759786, + "median_m": 0.1504837039015933, + "p90_m": 0.8884399853069347, + "p95_m": 1.4154431558457168 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 78482.02592436179, + 85000.72426497057, + 140118.92499435777, + 200075.4481312525, + 527280.7777253377, + 702653.6176268102 + ], + "effective_rank": 6, + "scaled_condition_number": 8.95305147071513, + "weakest_scaled_direction": [ + 0.6682663506337039, + -0.12573044567191893, + -0.04161918367411972, + 0.6728833238532822, + 0.1486228302734804, + -0.24702038376176852 + ] + }, + "forward_reverse": { + "translation_m": 0.01159286549234958, + "rotation_deg": 0.10132041390926738 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 6.637438791077969e-07, + "rotation_deg": 4.734803485491884e-07 + }, + { + "translation_m": 2.190454440024561e-08, + "rotation_deg": 1.5774695801797192e-07 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 14, + "j": 18, + "lidar_time_i": 1784784921.1126208, + "lidar_time_j": 1784785296.4990919, + "frame_counter_i": 11340, + "frame_counter_j": 15094, + "rtk_translation_m": 8.548241724186095, + "rtk_rotation_deg": 27.045287573188347, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8796843299610488, + 0.47554326950822207, + 0.003752125585852792, + 8.386652041996692 + ], + [ + -0.4754753480973043, + 0.8796510895953867, + -0.011711273431879549, + -0.01463790464529569 + ], + [ + -0.008869778617794907, + 0.00851818050287543, + 0.9999243809549762, + 0.18329554143287938 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7035, + "backend_objective": 678.2874870199292, + "backend_elapsed_sec": 0.21809029998257756, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 3921, + "objective": 1152.3067795625525 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 5991, + "objective": 616.5435255495543 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7035, + "objective": 678.2874870199292 + } + ], + "heldout_symmetric": { + "evaluated": 7777, + "inliers": 4819, + "inlier_ratio": 0.6196476790536196, + "inlier_rmse_m": 0.12845393182350578, + "median_m": 0.1731602947244192, + "p90_m": 1.2571440001147722, + "p95_m": 1.9928971214320321 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 40431.25205982152, + 75564.08180304668, + 90949.10875347017, + 123277.63194673136, + 432859.04912703205, + 719898.8698119103 + ], + "effective_rank": 6, + "scaled_condition_number": 17.805505225184664, + "weakest_scaled_direction": [ + -0.6794571416531119, + -0.7022532493594741, + 0.0012572727446779881, + 0.006708870553632756, + -0.0765369796544835, + 0.19817635451070353 + ] + }, + "forward_reverse": { + "translation_m": 0.010070495463159433, + "rotation_deg": 0.13041926369959572 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0547118733938987e-15, + "rotation_deg": 7.049615762303467e-15 + }, + { + "translation_m": 1.6014269617894046e-15, + "rotation_deg": 1.226560617416122e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 14, + "j": 19, + "lidar_time_i": 1784784921.1126208, + "lidar_time_j": 1784785363.1952267, + "frame_counter_i": 11340, + "frame_counter_j": 15761, + "rtk_translation_m": 9.249254057266956, + "rtk_rotation_deg": 79.47127430600668, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.16864462120307008, + 0.9856558183330172, + -0.006449769417807938, + 8.028845027944058 + ], + [ + -0.9841353949736018, + 0.1680114525860001, + -0.0570059309203547, + -3.086991614382891 + ], + [ + -0.05510459236240697, + 0.015961189999874656, + 0.9983530058623359, + 0.12073617114424255 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 6469, + "backend_objective": 441.0332153778222, + "backend_elapsed_sec": 0.22742700000526384, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 8, + "num_inliers": 3355, + "objective": 718.9129117928787 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5297, + "objective": 547.1775931939246 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 6469, + "objective": 441.0332153778222 + } + ], + "heldout_symmetric": { + "evaluated": 8112, + "inliers": 4742, + "inlier_ratio": 0.5845660749506904, + "inlier_rmse_m": 0.12584132662356784, + "median_m": 0.18632614571820721, + "p90_m": 1.2545048509935826, + "p95_m": 1.7995966868342481 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 20396.428174903343, + 39202.1818399841, + 72169.12531908663, + 84188.99712048641, + 347318.5542943997, + 618731.203703752 + ], + "effective_rank": 6, + "scaled_condition_number": 30.335272352492872, + "weakest_scaled_direction": [ + -0.008377089592741012, + -0.8800967663169411, + 0.012677412919848172, + 0.028982638826861546, + -0.03291253049716893, + 0.4725204349792536 + ] + }, + "forward_reverse": { + "translation_m": 0.016830803029542436, + "rotation_deg": 0.2574761671757917 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.485749680535094e-16, + "rotation_deg": 4.7858488900142276e-15 + }, + { + "translation_m": 3.824646945720487e-08, + "rotation_deg": 2.990864239737409e-07 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 16, + "lidar_time_i": 1784784992.709947, + "lidar_time_j": 1784785067.6067727, + "frame_counter_i": 12056, + "frame_counter_j": 12805, + "rtk_translation_m": 3.7301261399251735, + "rtk_rotation_deg": 25.84341815633164, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8992976777543386, + 0.43674267702152464, + 0.022793000103672113, + 3.5719600246891323 + ], + [ + -0.435676317216372, + 0.8992027959867313, + -0.04025516496580931, + -1.1219973503743492 + ], + [ + -0.03807667793325846, + 0.026271006027889867, + 0.9989294273570327, + 0.013785246908084234 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 8047, + "backend_objective": 677.6641874672224, + "backend_elapsed_sec": 0.46031090000178665, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4045, + "objective": 944.0731860097742 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6516, + "objective": 703.732504367553 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 8047, + "objective": 677.6641874672224 + } + ], + "heldout_symmetric": { + "evaluated": 7896, + "inliers": 5553, + "inlier_ratio": 0.7032674772036475, + "inlier_rmse_m": 0.11602216892855616, + "median_m": 0.12856434316622817, + "p90_m": 0.8237440138060417, + "p95_m": 1.249103905675259 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 46006.88661431607, + 89386.44791066805, + 126549.715838319, + 258894.6678202254, + 761451.6775041186, + 1044213.2886563556 + ], + "effective_rank": 6, + "scaled_condition_number": 22.696890954829907, + "weakest_scaled_direction": [ + 0.2762530279556851, + 0.7885899512178404, + 0.009052518246365292, + -0.03752590959284089, + 0.015068193732708488, + -0.5478074122753568 + ] + }, + "forward_reverse": { + "translation_m": 0.0009988867448423883, + "rotation_deg": 0.09036168134112703 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.496487509300926e-07, + "rotation_deg": 1.8603225390632326e-06 + }, + { + "translation_m": 5.5689195279226995e-15, + "rotation_deg": 1.444178934938382e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 17, + "lidar_time_i": 1784784992.709947, + "lidar_time_j": 1784785215.9006598, + "frame_counter_i": 12056, + "frame_counter_j": 14288, + "rtk_translation_m": 2.2049738368271745, + "rtk_rotation_deg": 24.438886412582093, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9108869875354506, + -0.4125846265933177, + -0.007669539584862537, + 1.137127467449205 + ], + [ + 0.41264758822687425, + 0.9108292929501547, + 0.010581447654499285, + 2.337090897611843 + ], + [ + 0.0026198986879852415, + -0.01280331999027499, + 0.9999146019176293, + 0.0014113832191833349 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 8481, + "backend_objective": 1411.3543687050185, + "backend_elapsed_sec": 0.32633010001154616, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4406, + "objective": 1048.0658041408024 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6942, + "objective": 1184.8493873034854 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 8481, + "objective": 1411.3543687050185 + } + ], + "heldout_symmetric": { + "evaluated": 7734, + "inliers": 5792, + "inlier_ratio": 0.7489009568140678, + "inlier_rmse_m": 0.11923375870790391, + "median_m": 0.12228074153052311, + "p90_m": 0.6399208318778252, + "p95_m": 1.0259624076068736 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 116187.99654779934, + 139885.37269974177, + 161757.95725716965, + 550664.2422881951, + 751625.9731662428, + 806916.9372316723 + ], + "effective_rank": 6, + "scaled_condition_number": 6.944925131742929, + "weakest_scaled_direction": [ + 0.8512941529709663, + 0.39602818804055295, + 0.007439589220697924, + -0.19259023763953056, + 0.09563504495527503, + -0.26864015047892764 + ] + }, + "forward_reverse": { + "translation_m": 0.02582458487951314, + "rotation_deg": 0.095039680889365 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.715952546737407e-14, + "rotation_deg": 7.886538886890109e-13 + }, + { + "translation_m": 1.088109979028084e-07, + "rotation_deg": 4.773299735272517e-07 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 18, + "lidar_time_i": 1784784992.709947, + "lidar_time_j": 1784785296.4990919, + "frame_counter_i": 12056, + "frame_counter_j": 15094, + "rtk_translation_m": 4.7000039832559155, + "rtk_rotation_deg": 3.452521908779401, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9979119148987198, + 0.06458109882961766, + -0.0010448813947702214, + 3.625977126782013 + ], + [ + -0.06457946758945692, + 0.9979114005357889, + 0.001526121411667174, + 2.8920498347958117 + ], + [ + 0.0011412576537618143, + -0.0014554568561163375, + 0.9999982895866913, + 0.12402487360318108 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 8033, + "backend_objective": 1109.9035314686819, + "backend_elapsed_sec": 0.2834294000058435, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4322, + "objective": 1072.150891932064 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6681, + "objective": 1042.5162725642767 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 8033, + "objective": 1109.9035314686819 + } + ], + "heldout_symmetric": { + "evaluated": 7465, + "inliers": 5349, + "inlier_ratio": 0.7165438713998661, + "inlier_rmse_m": 0.11783922962071142, + "median_m": 0.13030031278079807, + "p90_m": 0.8690573063958871, + "p95_m": 1.5526475747415203 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 51927.807327871626, + 86642.60862666558, + 155545.85956133596, + 373029.6265212382, + 789682.7347752531, + 1003980.8086995601 + ], + "effective_rank": 6, + "scaled_condition_number": 19.334165264487982, + "weakest_scaled_direction": [ + -0.5802503351084414, + -0.6445267211977116, + -0.008012710232842335, + 0.07662723130540065, + -0.04869576731771482, + 0.48947690488030343 + ] + }, + "forward_reverse": { + "translation_m": 0.009354386824208725, + "rotation_deg": 0.17478401338848865 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.198774900268694e-14, + "rotation_deg": 9.175874595023294e-12 + }, + { + "translation_m": 1.5265566588595902e-16, + "rotation_deg": 1.6705760377223011e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 19, + "lidar_time_i": 1784784992.709947, + "lidar_time_j": 1784785363.1952267, + "frame_counter_i": 12056, + "frame_counter_j": 15761, + "rtk_translation_m": 5.238340351181781, + "rtk_rotation_deg": 55.87850864159773, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5645701896065889, + 0.8253654397768558, + 0.005691382041061125, + 4.587045087231857 + ], + [ + -0.8243392754522068, + 0.5641884597246338, + -0.046434263862749445, + -0.046454652733170926 + ], + [ + -0.04153624868124346, + 0.021523771405184824, + 0.9989051342895319, + 0.08465923636290916 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 7699, + "backend_objective": 767.9166797724031, + "backend_elapsed_sec": 0.2584838999900967, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3854, + "objective": 1076.8824304773595 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6216, + "objective": 769.177723471952 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 7699, + "objective": 767.9166797724031 + } + ], + "heldout_symmetric": { + "evaluated": 7800, + "inliers": 5401, + "inlier_ratio": 0.6924358974358974, + "inlier_rmse_m": 0.11506895717743916, + "median_m": 0.1289445617051141, + "p90_m": 0.8453403966703839, + "p95_m": 1.3063421797625605 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 44233.04006452315, + 51153.742344676786, + 124036.93051460973, + 241430.67313910907, + 709925.1177656525, + 903111.5561031906 + ], + "effective_rank": 6, + "scaled_condition_number": 20.41712608461488, + "weakest_scaled_direction": [ + 0.06573189305138759, + -0.7784808250314448, + 0.008064223538009183, + 0.03451032811327412, + 0.024686991637438926, + 0.6227210300691461 + ] + }, + "forward_reverse": { + "translation_m": 0.012497900854287812, + "rotation_deg": 0.3255615001296644 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.279719709729456e-15, + "rotation_deg": 6.057362871732031e-15 + }, + { + "translation_m": 1.023951298512e-15, + "rotation_deg": 7.257282718757611e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 20, + "lidar_time_i": 1784784992.709947, + "lidar_time_j": 1784785434.592462, + "frame_counter_i": 12056, + "frame_counter_j": 16475, + "rtk_translation_m": 2.0380809160783224, + "rtk_rotation_deg": 128.5450420215843, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.6180248070205486, + 0.7853863257460557, + -0.03483758370389297, + -2.9183118830256083 + ], + [ + -0.7835683183308679, + -0.6189776875497679, + -0.05373372147618209, + -2.894884817530272 + ], + [ + -0.06376541707969742, + -0.005911145968243088, + 0.9979474084028651, + -0.1432165250889545 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 7352, + "backend_objective": 583.297661455954, + "backend_elapsed_sec": 0.574083099985728, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": false, + "iterations": 59, + "num_inliers": 4086, + "objective": 883.4481821360966 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 8, + "num_inliers": 6296, + "objective": 603.2673124443803 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 7352, + "objective": 583.297661455954 + } + ], + "heldout_symmetric": { + "evaluated": 7629, + "inliers": 5151, + "inlier_ratio": 0.6751867872591427, + "inlier_rmse_m": 0.11901811643083532, + "median_m": 0.14159789712511092, + "p90_m": 1.0382608333446528, + "p95_m": 1.821192338489586 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 24123.63768676933, + 38534.47857860633, + 74192.33144082606, + 304072.57505885523, + 604766.940623593, + 660546.5064511801 + ], + "effective_rank": 6, + "scaled_condition_number": 27.381712286843808, + "weakest_scaled_direction": [ + 0.8702933981126788, + -0.2707296754933225, + 0.03355380132624614, + -0.0011379634830684894, + 0.07150849524573777, + 0.4037997357256773 + ] + }, + "forward_reverse": { + "translation_m": 0.007126007329084919, + "rotation_deg": 0.09473387178666172 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 8.815927141515099e-07, + "rotation_deg": 7.01362978167917e-06 + }, + { + "translation_m": 3.857226206275732e-15, + "rotation_deg": 1.2674795752764449e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 16, + "j": 17, + "lidar_time_i": 1784785067.6067727, + "lidar_time_j": 1784785215.9006598, + "frame_counter_i": 12805, + "frame_counter_j": 14288, + "rtk_translation_m": 3.368526196086246, + "rtk_rotation_deg": 50.282304568913744, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6394669809345536, + -0.7673958414205374, + -0.04675043170830751, + -3.696317013339254 + ], + [ + 0.7687927199496203, + 0.6387607379184163, + 0.03069973039597831, + 2.048292343528662 + ], + [ + 0.006303494817397596, + -0.055572855463669635, + 0.9984347368199389, + -0.1872402600565715 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 6460, + "backend_objective": 537.9167698023417, + "backend_elapsed_sec": 0.2466442000004463, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3991, + "objective": 1215.4056887644454 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 5641, + "objective": 582.2921483368284 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 6460, + "objective": 537.9167698023417 + } + ], + "heldout_symmetric": { + "evaluated": 7980, + "inliers": 5015, + "inlier_ratio": 0.6284461152882206, + "inlier_rmse_m": 0.1113618900510703, + "median_m": 0.144408219715569, + "p90_m": 1.1991709577636944, + "p95_m": 1.7133251503963587 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 22632.024033943286, + 51169.81471120535, + 101486.72079659617, + 212358.80836223956, + 404083.44617557, + 569965.0089348503 + ], + "effective_rank": 6, + "scaled_condition_number": 25.184005110635376, + "weakest_scaled_direction": [ + 0.7976249939076281, + 0.29447002675707135, + 0.011870781607846525, + -0.00500893768036564, + 0.07710372421815591, + -0.5205485407092886 + ] + }, + "forward_reverse": { + "translation_m": 0.015370940622322818, + "rotation_deg": 0.07520125332617648 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.1743442292980627e-15, + "rotation_deg": 4.6184430945386335e-15 + }, + { + "translation_m": 7.008488945675242e-15, + "rotation_deg": 5.806321477459788e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 16, + "j": 18, + "lidar_time_i": 1784785067.6067727, + "lidar_time_j": 1784785296.4990919, + "frame_counter_i": 12805, + "frame_counter_j": 15094, + "rtk_translation_m": 3.5240348999326185, + "rtk_rotation_deg": 22.39089624755224, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9255542303464891, + -0.37658036896538655, + -0.03919939282198775, + -1.7046279048583803 + ], + [ + 0.3777114391060465, + 0.9255319342048977, + 0.02692039255622169, + 3.633427584849505 + ], + [ + 0.026142598496676897, + -0.03972234228787535, + 0.9988687101251127, + -0.06558745181347346 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 6968, + "backend_objective": 523.1707509471478, + "backend_elapsed_sec": 0.22624720001476817, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4121, + "objective": 1018.0747415048886 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6101, + "objective": 671.6853579970308 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 6968, + "objective": 523.1707509471478 + } + ], + "heldout_symmetric": { + "evaluated": 7711, + "inliers": 5337, + "inlier_ratio": 0.6921281286473868, + "inlier_rmse_m": 0.10919235768364483, + "median_m": 0.12047214706280118, + "p90_m": 1.043079207156195, + "p95_m": 1.5481102788596193 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 29120.049026715784, + 60387.51926125168, + 145352.913746165, + 297167.32794772723, + 585893.0897598492, + 1148181.0798230364 + ], + "effective_rank": 6, + "scaled_condition_number": 39.42922894015919, + "weakest_scaled_direction": [ + -0.5523616474072939, + -0.425660064296291, + -0.0113183500735427, + 0.028772987244752694, + -0.05542125155791058, + 0.7139205944425184 + ] + }, + "forward_reverse": { + "translation_m": 0.005355462743716769, + "rotation_deg": 0.03654303027439279 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.826392801036703e-15, + "rotation_deg": 4.094903114022454e-15 + }, + { + "translation_m": 5.03754139627894e-15, + "rotation_deg": 1.5331683708932568e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 16, + "j": 19, + "lidar_time_i": 1784785067.6067727, + "lidar_time_j": 1784785363.1952267, + "frame_counter_i": 12805, + "frame_counter_j": 15761, + "rtk_translation_m": 2.146829294717985, + "rtk_rotation_deg": 30.035090485266103, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8684801522066371, + 0.4956975347175394, + -0.005116570930846743, + 0.4366470307130142 + ], + [ + -0.4957238908605204, + 0.8684384244754766, + -0.008516274106638735, + 1.4052579477847364 + ], + [ + 0.00022193071826193039, + 0.009932621482070235, + 0.9999506456707004, + 0.03001666405700953 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 9165, + "backend_objective": 1083.0467328585598, + "backend_elapsed_sec": 0.22576579998712987, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4137, + "objective": 628.5904983483101 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 7105, + "objective": 731.1875091234955 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 9165, + "objective": 1083.0467328585598 + } + ], + "heldout_symmetric": { + "evaluated": 8046, + "inliers": 7145, + "inlier_ratio": 0.8880188913745961, + "inlier_rmse_m": 0.0968346861370537, + "median_m": 0.07327330233977344, + "p90_m": 0.27608481806151036, + "p95_m": 0.4577456992353155 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 126380.21761596165, + 151352.82425205142, + 254232.47885422912, + 569669.4774072361, + 828900.8291876996, + 1479797.8866744747 + ], + "effective_rank": 6, + "scaled_condition_number": 11.70909430755386, + "weakest_scaled_direction": [ + -0.1016208027551598, + -0.694125913481962, + -0.05326251190352323, + 0.005523485332426906, + -0.21833356557136124, + 0.6762584408054617 + ] + }, + "forward_reverse": { + "translation_m": 0.006745004702225108, + "rotation_deg": 0.04851926363283949 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 6.410219892462108e-16, + "rotation_deg": 3.6574997703043804e-15 + }, + { + "translation_m": 1.3280732962197467e-15, + "rotation_deg": 5.326978507324993e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 16, + "j": 20, + "lidar_time_i": 1784785067.6067727, + "lidar_time_j": 1784785434.592462, + "frame_counter_i": 12805, + "frame_counter_j": 16475, + "rtk_translation_m": 4.728364693236263, + "rtk_rotation_deg": 102.70162386525263, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.21255684919093382, + 0.9759059311703469, + -0.049266615152274276, + -5.055551407751126 + ], + [ + -0.976722894802377, + -0.2136822895360795, + -0.01876874815978336, + -4.447241576850858 + ], + [ + -0.028843935773205966, + 0.044130404996542215, + 0.9986093003392027, + -0.20611839197809104 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 6554, + "backend_objective": 426.5789434001036, + "backend_elapsed_sec": 0.21484369999961928, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 10, + "num_inliers": 3938, + "objective": 1050.4660865507365 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5931, + "objective": 611.5231853974067 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 6554, + "objective": 426.5789434001036 + } + ], + "heldout_symmetric": { + "evaluated": 7875, + "inliers": 4967, + "inlier_ratio": 0.6307301587301587, + "inlier_rmse_m": 0.12362874516637085, + "median_m": 0.16231191866763003, + "p90_m": 1.1140320549033425, + "p95_m": 1.788569027355814 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 14237.517771017796, + 47249.74092295492, + 72921.91702690597, + 150177.7990673665, + 435241.0965762853, + 508286.2314982878 + ], + "effective_rank": 6, + "scaled_condition_number": 35.70048091760535, + "weakest_scaled_direction": [ + 0.8310814266371664, + -0.3059721702444007, + 0.025914629425142315, + 0.01150043826748368, + 0.06204267849468339, + 0.4593817271956763 + ] + }, + "forward_reverse": { + "translation_m": 0.007128919591300971, + "rotation_deg": 0.10475436005961275 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.699381867227797e-07, + "rotation_deg": 4.039327925839266e-06 + }, + { + "translation_m": 2.470662620641947e-12, + "rotation_deg": 5.6053474906106605e-11 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 16, + "j": 21, + "lidar_time_i": 1784785067.6067727, + "lidar_time_j": 1784785506.389296, + "frame_counter_i": 12805, + "frame_counter_j": 17193, + "rtk_translation_m": 10.094336026449797, + "rtk_rotation_deg": 153.311489607007, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.8899984345917292, + 0.4494142546077488, + -0.0770039880761356, + -9.274713964325178 + ], + [ + -0.4491512976198232, + -0.8931926093274017, + -0.021681201289020256, + -8.008563415626913 + ], + [ + -0.07852323395464522, + 0.015290205959001577, + 0.9967950197162088, + -0.43062149481783685 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 4644, + "backend_objective": 266.9854804589645, + "backend_elapsed_sec": 0.42213180000544526, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": false, + "iterations": 59, + "num_inliers": 3710, + "objective": 1440.2026338509213 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 4866, + "objective": 663.1837238321684 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 4644, + "objective": 266.9854804589645 + } + ], + "heldout_symmetric": { + "evaluated": 8113, + "inliers": 3283, + "inlier_ratio": 0.40465918895599656, + "inlier_rmse_m": 0.14174574821871383, + "median_m": 0.3669682112816362, + "p90_m": 1.9181229457011237, + "p95_m": 2.7584674923427643 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 6427.858596617149, + 13985.619800098873, + 35674.316533521705, + 62318.95281829014, + 238260.65846745667, + 368102.50009519083 + ], + "effective_rank": 6, + "scaled_condition_number": 57.2667389243621, + "weakest_scaled_direction": [ + 0.7752852060782287, + 0.6043573613745785, + 0.03703808362227075, + -0.03503243337133707, + 0.05774669529164447, + -0.16658708576946268 + ] + }, + "forward_reverse": { + "translation_m": 0.01442382622115287, + "rotation_deg": 0.2621394134233604 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.2203492502216944e-14, + "rotation_deg": 4.354630933060622e-14 + }, + { + "translation_m": 2.939518572217377e-14, + "rotation_deg": 2.4348951708484345e-13 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 17, + "j": 18, + "lidar_time_i": 1784785215.9006598, + "lidar_time_j": 1784785296.4990919, + "frame_counter_i": 14288, + "frame_counter_j": 15094, + "rtk_translation_m": 2.640403049812329, + "rtk_rotation_deg": 27.891408321361506, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8821126233718427, + 0.4709554229763278, + -0.008849251789510982, + 2.500926515503556 + ], + [ + -0.4710229621929244, + 0.8820806066082816, + -0.008436381485460649, + -0.5222544407418006 + ], + [ + 0.0038325937756464863, + 0.01161003939499183, + 0.9999252563117895, + 0.04293224683626978 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 8617, + "backend_objective": 1317.2217546929442, + "backend_elapsed_sec": 0.25503369999933057, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 3, + "num_inliers": 4424, + "objective": 1069.9385022645633 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 7103, + "objective": 1010.8939072081614 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 8617, + "objective": 1317.2217546929442 + } + ], + "heldout_symmetric": { + "evaluated": 7549, + "inliers": 5787, + "inlier_ratio": 0.7665916015366274, + "inlier_rmse_m": 0.11462276561713726, + "median_m": 0.11638049974670785, + "p90_m": 0.6517230395135248, + "p95_m": 1.210865366025621 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 96737.16299721874, + 162610.0927309627, + 190431.88317359178, + 529282.7623180376, + 791892.8412374883, + 944089.0903018916 + ], + "effective_rank": 6, + "scaled_condition_number": 9.759321661407776, + "weakest_scaled_direction": [ + 0.2441706927299802, + 0.9602157593336332, + 0.014180686947731067, + -0.12929711377254885, + 0.001880332584737895, + 0.03799996284532291 + ] + }, + "forward_reverse": { + "translation_m": 0.003676908482849856, + "rotation_deg": 0.03455537183665902 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.2587378679787436e-15, + "rotation_deg": 1.832521574973854e-14 + }, + { + "translation_m": 3.405182206613905e-15, + "rotation_deg": 1.9263324707288285e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 17, + "j": 19, + "lidar_time_i": 1784785215.9006598, + "lidar_time_j": 1784785363.1952267, + "frame_counter_i": 14288, + "frame_counter_j": 15761, + "rtk_translation_m": 3.933985934417215, + "rtk_rotation_deg": 80.31739505417984, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.17433313879018336, + 0.9846576725072801, + -0.0075647003978484536, + 2.158481899696832 + ], + [ + -0.9829774024435192, + 0.1735729128490779, + -0.060231803978295306, + -3.588729462494236 + ], + [ + -0.057994680833297806, + 0.017936328989871783, + 0.9981557519232213, + -0.003959482536303557 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 6960, + "backend_objective": 568.2084337728777, + "backend_elapsed_sec": 0.2961113000055775, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 11, + "num_inliers": 3664, + "objective": 1188.626559403166 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 5600, + "objective": 768.2176232624398 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 6960, + "objective": 568.2084337728777 + } + ], + "heldout_symmetric": { + "evaluated": 7884, + "inliers": 5091, + "inlier_ratio": 0.645738203957382, + "inlier_rmse_m": 0.11467441399973681, + "median_m": 0.1424969488981438, + "p90_m": 1.1563110283160816, + "p95_m": 1.6860533643071316 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 23477.999398523185, + 67432.60435223405, + 111974.20719092335, + 224362.4931759635, + 649756.4959692091, + 702814.5574757532 + ], + "effective_rank": 6, + "scaled_condition_number": 29.93502749301381, + "weakest_scaled_direction": [ + 0.03569074629600905, + 0.6540375458939782, + -0.002276503189076741, + -0.01612970227444498, + 0.005582808503203056, + -0.7554234188035219 + ] + }, + "forward_reverse": { + "translation_m": 0.002658154417044598, + "rotation_deg": 0.03997293849541112 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.7039753472859274e-15, + "rotation_deg": 9.028376365212535e-15 + }, + { + "translation_m": 2.199705978597706e-15, + "rotation_deg": 1.0576740161774684e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 17, + "j": 20, + "lidar_time_i": 1784785215.9006598, + "lidar_time_j": 1784785434.592462, + "frame_counter_i": 14288, + "frame_counter_j": 16475, + "rtk_translation_m": 4.2254212089887, + "rtk_rotation_deg": 152.98392843416656, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.8869973550800798, + 0.45975890230703426, + -0.04309807223500989, + -5.8560656703750675 + ], + [ + -0.4585108341705753, + -0.8879608049383231, + -0.03596420222233985, + -3.0970809320084833 + ], + [ + -0.054804261049180514, + -0.01213921919716247, + 0.9984233232092168, + -0.2329802954475424 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 6743, + "backend_objective": 630.7807590489808, + "backend_elapsed_sec": 0.31770300000789575, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 27, + "num_inliers": 3814, + "objective": 980.2204783566035 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5796, + "objective": 601.1886655813404 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 6743, + "objective": 630.7807590489808 + } + ], + "heldout_symmetric": { + "evaluated": 7713, + "inliers": 4652, + "inlier_ratio": 0.6031375599636977, + "inlier_rmse_m": 0.12542519992547976, + "median_m": 0.17369890124477222, + "p90_m": 1.3877890152054178, + "p95_m": 2.1095538861223706 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 22030.239685809873, + 26229.146719298635, + 66937.17777341149, + 262446.80811170733, + 504101.36223162885, + 610427.3912107134 + ], + "effective_rank": 6, + "scaled_condition_number": 27.708613247812377, + "weakest_scaled_direction": [ + -0.568622896024287, + 0.37650276530424115, + -0.015065236395297448, + -0.06793616776914607, + -0.03526809952239235, + -0.7272052989029216 + ] + }, + "forward_reverse": { + "translation_m": 4.543486491493239, + "rotation_deg": 1.5708713272202308 + }, + "multistart": { + "runs": 2, + "success_rate": 0.5, + "deltas": [ + { + "translation_m": 1.1041175742106086e-13, + "rotation_deg": 7.327186306207946e-13 + }, + { + "translation_m": 3.5629109797698155, + "rotation_deg": 0.7266053758533794 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 17, + "j": 21, + "lidar_time_i": 1784785215.9006598, + "lidar_time_j": 1784785506.389296, + "frame_counter_i": 14288, + "frame_counter_j": 17193, + "rtk_translation_m": 9.21529677253323, + "rtk_rotation_deg": 156.40620582407942, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9151318253834027, + -0.3995264803035694, + -0.05396604216247167, + -11.308982310340763 + ], + [ + 0.40100232961028565, + -0.9158678003722953, + -0.019578148235549323, + -2.1111386203048705 + ], + [ + -0.04160377167473093, + -0.03955709515942306, + 0.9983508213073148, + -0.28945080053379657 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 5521, + "backend_objective": 412.39735088646603, + "backend_elapsed_sec": 0.5441636999894399, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": false, + "iterations": 59, + "num_inliers": 3758, + "objective": 1410.90156779346 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 13, + "num_inliers": 5250, + "objective": 552.8338948409191 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 5521, + "objective": 412.39735088646603 + } + ], + "heldout_symmetric": { + "evaluated": 7951, + "inliers": 3715, + "inlier_ratio": 0.4672368255565338, + "inlier_rmse_m": 0.13751533766984328, + "median_m": 0.2863154262775397, + "p90_m": 1.989361641345888, + "p95_m": 2.71513748136762 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 15519.484227508612, + 21750.496583081116, + 36296.8425998792, + 108337.58185766022, + 268548.4717962843, + 499685.5087396779 + ], + "effective_rank": 6, + "scaled_condition_number": 32.19730123852794, + "weakest_scaled_direction": [ + 0.7355741974444044, + 0.30989265236888863, + 0.0089945150864042, + 0.2032295736860753, + 0.19849117610835296, + 0.5311452119210485 + ] + }, + "forward_reverse": { + "translation_m": 0.13403735422224766, + "rotation_deg": 1.1805230479043929 + }, + "multistart": { + "runs": 2, + "success_rate": 0.5, + "deltas": [ + { + "translation_m": 3.7176907667312227, + "rotation_deg": 2.8903628220292714 + }, + { + "translation_m": 3.919323152907419e-14, + "rotation_deg": 6.28433014295275e-14 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 17, + "j": 22, + "lidar_time_i": 1784785215.9006598, + "lidar_time_j": 1784785587.5863533, + "frame_counter_i": 14288, + "frame_counter_j": 18005, + "rtk_translation_m": 11.781237287606983, + "rtk_rotation_deg": 150.82966218116434, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.8701350250990675, + -0.49013823166962983, + -0.05127915708759895, + -13.99322835862824 + ], + [ + 0.4912419575208388, + -0.8709550715863977, + -0.010890475151596912, + -1.2970885678492468 + ], + [ + -0.03932400369927414, + -0.03466665737710628, + 0.9986249774561812, + -0.36101056978091484 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 5105, + "backend_objective": 349.5813579032026, + "backend_elapsed_sec": 0.3263374999805819, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 21, + "num_inliers": 3684, + "objective": 1155.3356770548876 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 6, + "num_inliers": 5097, + "objective": 701.6824075488568 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 5105, + "objective": 349.5813579032026 + } + ], + "heldout_symmetric": { + "evaluated": 8064, + "inliers": 3432, + "inlier_ratio": 0.4255952380952381, + "inlier_rmse_m": 0.1417851723285674, + "median_m": 0.3390866943734385, + "p90_m": 2.5694914759158456, + "p95_m": 3.9910709733047884 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 14048.172337682869, + 15598.961862664391, + 22489.957863774205, + 37693.657216505664, + 188687.10583927447, + 543826.5459211724 + ], + "effective_rank": 6, + "scaled_condition_number": 38.71155142811069, + "weakest_scaled_direction": [ + 0.4427333807811441, + -0.25130733404807826, + 0.019336061627937585, + 0.21434114242231578, + 0.20402480365691325, + 0.8080158713010044 + ] + }, + "forward_reverse": { + "translation_m": 0.01638337185583796, + "rotation_deg": 0.14112774930143776 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.5176617391872307e-15, + "rotation_deg": 5.359716204636941e-15 + }, + { + "translation_m": 2.124706989126661e-15, + "rotation_deg": 1.0397409141450136e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 18, + "j": 19, + "lidar_time_i": 1784785296.4990919, + "lidar_time_j": 1784785363.1952267, + "frame_counter_i": 15094, + "frame_counter_j": 15761, + "rtk_translation_m": 2.4460967931915643, + "rtk_rotation_deg": 52.425986732818345, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6166688866180832, + 0.7870446185827106, + 0.01674074780914908, + 1.1454955481033229 + ], + [ + -0.7858715871994714, + 0.6167166851253691, + -0.0454574385613675, + -2.8705686978806395 + ], + [ + -0.04610133088965668, + 0.014876109974466376, + 0.9988259951774527, + -0.04184207404053203 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7415, + "backend_objective": 799.4553602033754, + "backend_elapsed_sec": 0.21126290000393055, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 3802, + "objective": 1034.3148554981492 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5965, + "objective": 622.4256041837552 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7415, + "objective": 799.4553602033754 + } + ], + "heldout_symmetric": { + "evaluated": 7615, + "inliers": 5330, + "inlier_ratio": 0.6999343401181878, + "inlier_rmse_m": 0.10876407223187468, + "median_m": 0.11703481718257248, + "p90_m": 0.9369166823507337, + "p95_m": 1.488940077417306 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 27806.40747883796, + 63162.65728278912, + 127946.39824729276, + 337060.43119514745, + 672163.7730502074, + 1026587.6212202314 + ], + "effective_rank": 6, + "scaled_condition_number": 36.919102980185954, + "weakest_scaled_direction": [ + 0.06751866246552198, + -0.6961557436422777, + 0.002943196657429115, + 0.01995829931269076, + 0.004154402336585817, + 0.7144117549676384 + ] + }, + "forward_reverse": { + "translation_m": 0.0029722527816906422, + "rotation_deg": 0.028553700929610463 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.8209011484034673e-15, + "rotation_deg": 1.6226628286617997e-15 + }, + { + "translation_m": 4.074519445727608e-15, + "rotation_deg": 7.471594471095906e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 18, + "j": 20, + "lidar_time_i": 1784785296.4990919, + "lidar_time_j": 1784785434.592462, + "frame_counter_i": 15094, + "frame_counter_j": 16475, + "rtk_translation_m": 6.593931011285688, + "rtk_rotation_deg": 125.09252011280485, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.5665450812951606, + 0.8237522552072852, + -0.02142178566720975, + -6.155007566423961 + ], + [ + -0.8224464628865413, + -0.5668759885765905, + -0.047259171181158625, + -6.207814488981458 + ], + [ + -0.051073344766881905, + -0.009156179128061163, + 0.9986529316224421, + -0.23463190286292565 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 6120, + "backend_objective": 550.8066595708967, + "backend_elapsed_sec": 0.24520800000755116, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 13, + "num_inliers": 3725, + "objective": 1212.0411610575825 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5461, + "objective": 567.7029098951957 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 6120, + "objective": 550.8066595708967 + } + ], + "heldout_symmetric": { + "evaluated": 7444, + "inliers": 4315, + "inlier_ratio": 0.5796614723267061, + "inlier_rmse_m": 0.12778176089815, + "median_m": 0.1858521954540106, + "p90_m": 1.566677341196506, + "p95_m": 2.3871834573107855 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 16318.001547284653, + 23145.929877441456, + 53033.59884601272, + 199909.77739597834, + 362669.24723638385, + 529692.1337787998 + ], + "effective_rank": 6, + "scaled_condition_number": 32.46060078153023, + "weakest_scaled_direction": [ + 0.9897729590346724, + -0.10339858328094514, + 0.03434421736284127, + 0.017559966896857158, + 0.07161301626330527, + 0.055153610373471065 + ] + }, + "forward_reverse": { + "translation_m": 0.0849644734357879, + "rotation_deg": 0.24110896992060843 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 6.041286520114393e-15, + "rotation_deg": 5.288948761910844e-15 + }, + { + "translation_m": 2.6929057097562602e-11, + "rotation_deg": 3.7322772955810407e-10 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation" + ] + }, + { + "i": 18, + "j": 21, + "lidar_time_i": 1784785296.4990919, + "lidar_time_j": 1784785506.389296, + "frame_counter_i": 15094, + "frame_counter_j": 17193, + "rtk_translation_m": 11.793089868757727, + "rtk_rotation_deg": 175.70238585456048, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9961177296562256, + 0.0785002189081896, + -0.039839481621793654, + -11.443770192304987 + ], + [ + -0.07723563659408468, + -0.9964879577117396, + -0.0323482082253917, + -7.918746736866754 + ], + [ + -0.04223890510457652, + -0.029145596011286475, + 0.9986823364457358, + -0.28275947355445386 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 7, + "backend_num_inliers": 4812, + "backend_objective": 303.5010508955818, + "backend_elapsed_sec": 0.3329832000017632, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 15, + "num_inliers": 3582, + "objective": 1112.007109025967 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 6, + "num_inliers": 4890, + "objective": 587.7227975932129 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 7, + "num_inliers": 4812, + "objective": 303.5010508955818 + } + ], + "heldout_symmetric": { + "evaluated": 7682, + "inliers": 3253, + "inlier_ratio": 0.42345743296016664, + "inlier_rmse_m": 0.14463219993853524, + "median_m": 0.33236555424021896, + "p90_m": 1.9556612977696193, + "p95_m": 3.111894915346001 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 10554.468165159922, + 12367.895205400244, + 36653.41374055748, + 82348.74780435071, + 230599.68720145605, + 439885.3584055563 + ], + "effective_rank": 6, + "scaled_condition_number": 41.677643204951686, + "weakest_scaled_direction": [ + -0.5380529269838565, + -0.6726144877068561, + -0.02253687127809677, + 0.04962128492547805, + -0.04536400214628976, + 0.5030514123979367 + ] + }, + "forward_reverse": { + "translation_m": 0.008594432490503082, + "rotation_deg": 0.044791316017877565 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.094764613337708e-15, + "rotation_deg": 1.0850074083207034e-14 + }, + { + "translation_m": 2.5219419200973697e-15, + "rotation_deg": 3.567475227851567e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 18, + "j": 22, + "lidar_time_i": 1784785296.4990919, + "lidar_time_j": 1784785587.5863533, + "frame_counter_i": 15094, + "frame_counter_j": 18005, + "rtk_translation_m": 14.40479158879449, + "rtk_rotation_deg": 178.72107050256645, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9985448119288007, + -0.02217005479007189, + -0.049160423520143985, + -14.18395117061842 + ], + [ + 0.022748053897618154, + -0.9996781639247944, + -0.0112291858931195, + -8.473655911181039 + ], + [ + -0.04889565025588451, + -0.012331149279624516, + 0.9987277697868918, + -0.45196697392102686 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 14, + "backend_num_inliers": 4248, + "backend_objective": 261.62895305298275, + "backend_elapsed_sec": 0.40820580002036877, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 20, + "num_inliers": 3515, + "objective": 1142.1154564057774 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 10, + "num_inliers": 4552, + "objective": 557.5256266392594 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 14, + "num_inliers": 4248, + "objective": 261.62895305298275 + } + ], + "heldout_symmetric": { + "evaluated": 7795, + "inliers": 2774, + "inlier_ratio": 0.35586914688903143, + "inlier_rmse_m": 0.14801012931814386, + "median_m": 0.4291732063241244, + "p90_m": 2.883860679836218, + "p95_m": 5.831619224817732 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 3825.3604013611125, + 8017.646726456478, + 18185.60160817907, + 21361.11637166481, + 165888.14582796325, + 454524.0934099317 + ], + "effective_rank": 6, + "scaled_condition_number": 118.81863294454718, + "weakest_scaled_direction": [ + 0.2827821147678944, + -0.6470253074097836, + 0.017550741587884274, + 0.06502437057249673, + 0.0529843601183894, + 0.7028861838326909 + ] + }, + "forward_reverse": { + "translation_m": 0.05364920712348454, + "rotation_deg": 0.15560820359743163 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.4273359795629357e-15, + "rotation_deg": 2.4002476230081362e-14 + }, + { + "translation_m": 1.1102230246251565e-16, + "rotation_deg": 1.0995617218356242e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 18, + "j": 23, + "lidar_time_i": 1784785296.4990919, + "lidar_time_j": 1784785681.9825997, + "frame_counter_i": 15094, + "frame_counter_j": 18949, + "rtk_translation_m": 11.744734461596845, + "rtk_rotation_deg": 164.11569663484164, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9611999073835812, + -0.27111190076755987, + -0.05092224767227162, + -10.437033352185441 + ], + [ + 0.27281571676242383, + -0.9615969895960386, + -0.030046868176919674, + -8.345739046028372 + ], + [ + -0.040820616521563276, + -0.04277343640668627, + 0.9982505248707674, + -0.35411708595409863 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 9, + "backend_num_inliers": 4613, + "backend_objective": 310.71837780126924, + "backend_elapsed_sec": 0.3484112999867648, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 12, + "num_inliers": 3511, + "objective": 1040.5534591113503 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 6, + "num_inliers": 4771, + "objective": 509.6926430777731 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 9, + "num_inliers": 4613, + "objective": 310.71837780126924 + } + ], + "heldout_symmetric": { + "evaluated": 7640, + "inliers": 3031, + "inlier_ratio": 0.3967277486910995, + "inlier_rmse_m": 0.14073241205403209, + "median_m": 0.35988623853274004, + "p90_m": 2.248437852410559, + "p95_m": 3.1450616113852243 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 6572.262342046283, + 9565.160177215175, + 29583.698664866857, + 114171.3232614246, + 211996.89197156896, + 445702.64726451575 + ], + "effective_rank": 6, + "scaled_condition_number": 67.8157115569044, + "weakest_scaled_direction": [ + 0.001952230904167986, + -0.6289463080696699, + -0.030064534159027205, + 0.08347421334419525, + 0.05857579976379546, + 0.7701427046557209 + ] + }, + "forward_reverse": { + "translation_m": 0.0379980141073483, + "rotation_deg": 0.09667096210106078 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.925929145204076e-15, + "rotation_deg": 2.0315620965726475e-14 + }, + { + "translation_m": 2.9546328455357126e-15, + "rotation_deg": 1.0144710744580045e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 19, + "j": 20, + "lidar_time_i": 1784785363.1952267, + "lidar_time_j": 1784785434.592462, + "frame_counter_i": 15761, + "frame_counter_j": 16475, + "rtk_translation_m": 6.650720121741557, + "rtk_rotation_deg": 72.6665333799865, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.2995923077860652, + 0.9535876114371953, + -0.030250891374051663, + -1.8692525432729097 + ], + [ + -0.9538656422857977, + 0.2987264613179423, + -0.03004725902910414, + -7.805629127268184 + ], + [ + -0.019615952235914183, + 0.037857213605402694, + 0.9990906094023274, + -0.1319386642456338 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 6489, + "backend_objective": 569.4999740060804, + "backend_elapsed_sec": 0.23349149999557994, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3924, + "objective": 1013.1238717514323 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 5901, + "objective": 609.5218769434994 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 6489, + "objective": 569.4999740060804 + } + ], + "heldout_symmetric": { + "evaluated": 7779, + "inliers": 4870, + "inlier_ratio": 0.6260444787247719, + "inlier_rmse_m": 0.12668491637849374, + "median_m": 0.16690116061994517, + "p90_m": 0.9919220276627585, + "p95_m": 1.6480707039030054 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 18712.055963797415, + 62228.326497031216, + 77714.40815168971, + 214006.9347111848, + 394739.3877876983, + 486135.873697716 + ], + "effective_rank": 6, + "scaled_condition_number": 25.97982149253148, + "weakest_scaled_direction": [ + 0.7915814532828056, + -0.26319498492498683, + 0.03428877964504143, + -0.009154876029483082, + 0.06927540668896554, + 0.545956581233741 + ] + }, + "forward_reverse": { + "translation_m": 0.022781715838261912, + "rotation_deg": 0.19834674514582162 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.4875916307951376e-12, + "rotation_deg": 2.2492564362621704e-11 + }, + { + "translation_m": 1.4879061046170573e-12, + "rotation_deg": 2.2490123134142957e-11 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 19, + "j": 21, + "lidar_time_i": 1784785363.1952267, + "lidar_time_j": 1784785506.389296, + "frame_counter_i": 15761, + "frame_counter_j": 17193, + "rtk_translation_m": 12.053580264031138, + "rtk_rotation_deg": 123.27639912174077, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.5506805388687266, + 0.8328007923203508, + -0.0565135773230177, + -3.7747388734195635 + ], + [ + -0.83236569739092, + -0.5529471237507978, + -0.037640724523414125, + -13.014171294621576 + ], + [ + -0.06259624524024228, + 0.026311948736566334, + 0.9976920323604409, + -0.23227395154899766 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 7, + "backend_num_inliers": 4457, + "backend_objective": 279.6845936317817, + "backend_elapsed_sec": 0.3453620000218507, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 10, + "num_inliers": 3677, + "objective": 1198.257620374833 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 4844, + "objective": 692.5596682301618 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 7, + "num_inliers": 4457, + "objective": 279.6845936317817 + } + ], + "heldout_symmetric": { + "evaluated": 8017, + "inliers": 3169, + "inlier_ratio": 0.3952850193339154, + "inlier_rmse_m": 0.1421446220617431, + "median_m": 0.3734448025882331, + "p90_m": 1.8906380817841777, + "p95_m": 2.796117220715787 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 5961.432446850127, + 7392.873845035771, + 36921.54359593741, + 57983.82739755071, + 231812.44608797968, + 366944.0849801991 + ], + "effective_rank": 6, + "scaled_condition_number": 61.553005632745744, + "weakest_scaled_direction": [ + 0.6544201355899028, + 0.6710714556634665, + 0.024834101230549098, + -0.015050640102952574, + 0.05417436451595685, + -0.34295666111924955 + ] + }, + "forward_reverse": { + "translation_m": 0.01796074748252817, + "rotation_deg": 0.16263425635632095 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.155133597044475e-16, + "rotation_deg": 1.508692995972905e-14 + }, + { + "translation_m": 1.0190492755571723e-15, + "rotation_deg": 8.464297521149338e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 19, + "j": 22, + "lidar_time_i": 1784785363.1952267, + "lidar_time_j": 1784785587.5863533, + "frame_counter_i": 15761, + "frame_counter_j": 18005, + "rtk_translation_m": 14.836246959975925, + "rtk_rotation_deg": 128.85294276465592, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.6300543055212069, + 0.7726255258633034, + -0.07798313201355275, + -5.011518345998407 + ], + [ + -0.7728530103686385, + -0.6336728752027377, + -0.034013403187997525, + -15.51780072680438 + ], + [ + -0.07569541900486976, + 0.03883920721062266, + 0.9963742868645936, + -0.4688497170840485 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 10, + "backend_num_inliers": 3711, + "backend_objective": 230.81169182278836, + "backend_elapsed_sec": 0.2870293999731075, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 16, + "num_inliers": 3512, + "objective": 1404.7905509820691 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 8, + "num_inliers": 4328, + "objective": 610.2056432940487 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 10, + "num_inliers": 3711, + "objective": 230.81169182278836 + } + ], + "heldout_symmetric": { + "evaluated": 8130, + "inliers": 2632, + "inlier_ratio": 0.3237392373923739, + "inlier_rmse_m": 0.15069330869045588, + "median_m": 0.4880827578091864, + "p90_m": 2.409953622425376, + "p95_m": 4.2140066762316835 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 4348.489322610439, + 7293.397334272058, + 16095.643565138025, + 19392.35856061217, + 129209.23229107982, + 329202.6037022384 + ], + "effective_rank": 6, + "scaled_condition_number": 75.70505048512227, + "weakest_scaled_direction": [ + -0.31482124557625646, + 0.552278987893098, + -0.020435105741246334, + -0.10511361044350188, + -0.10096259062519468, + -0.7577701455670542 + ] + }, + "forward_reverse": { + "translation_m": 0.2579934626807855, + "rotation_deg": 1.1847082611411373 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.7012244807939757e-14, + "rotation_deg": 1.3759039323068125e-13 + }, + { + "translation_m": 2.8268641583721086e-14, + "rotation_deg": 9.032318668758963e-14 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "heldout_inlier_ratio", + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 19, + "j": 23, + "lidar_time_i": 1784785363.1952267, + "lidar_time_j": 1784785681.9825997, + "frame_counter_i": 15761, + "frame_counter_j": 18949, + "rtk_translation_m": 11.740810561661805, + "rtk_rotation_deg": 143.45831663234065, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.8041368954414141, + 0.5908300063778916, + -0.06545041599062035, + -2.8143887657091415 + ], + [ + -0.5894167084970622, + -0.8067777007499145, + -0.04120297704256744, + -12.499189000825016 + ], + [ + -0.07714789131488636, + 0.005444734721000917, + 0.9970047932329532, + -0.21876169270707282 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 4562, + "backend_objective": 247.01928672257793, + "backend_elapsed_sec": 0.22123629998532124, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 12, + "num_inliers": 3594, + "objective": 1044.6290847344687 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 4734, + "objective": 643.1780536798803 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 4562, + "objective": 247.01928672257793 + } + ], + "heldout_symmetric": { + "evaluated": 7975, + "inliers": 3012, + "inlier_ratio": 0.37768025078369905, + "inlier_rmse_m": 0.1432975121556299, + "median_m": 0.3957613098519592, + "p90_m": 2.0120282675938332, + "p95_m": 2.8069058800432365 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 8948.659512505583, + 12776.907093470927, + 38534.553728192295, + 77386.50643427821, + 239329.48071703356, + 348416.52438594337 + ], + "effective_rank": 6, + "scaled_condition_number": 38.93505210462392, + "weakest_scaled_direction": [ + 0.5476120626836286, + 0.7713750454006084, + 0.021983266633209132, + -0.009106692833661608, + 0.0939585253531646, + 0.3093657508254854 + ] + }, + "forward_reverse": { + "translation_m": 0.07411982241929344, + "rotation_deg": 0.4458370864472602 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 8.965351675814767e-15, + "rotation_deg": 5.322498974963192e-15 + }, + { + "translation_m": 2.6296119242823513e-15, + "rotation_deg": 2.6416453477886153e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 19, + "j": 24, + "lidar_time_i": 1784785363.1952267, + "lidar_time_j": 1784785815.4779446, + "frame_counter_i": 15761, + "frame_counter_j": 20284, + "rtk_translation_m": 11.093516369446519, + "rtk_rotation_deg": 177.87107120383473, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9974791691815873, + 0.04249524157580704, + -0.056828351130612985, + -2.205717647384636 + ], + [ + -0.040733265709239935, + -0.9986634841878906, + -0.03181267694431082, + -11.137262226130922 + ], + [ + -0.05810428653267238, + -0.029417678241432176, + 0.9978769924662122, + -0.2111400023477513 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 15, + "backend_num_inliers": 4985, + "backend_objective": 346.50606556509143, + "backend_elapsed_sec": 0.3630827000015415, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 11, + "num_inliers": 3492, + "objective": 929.9849476190784 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 4872, + "objective": 629.1355433019529 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 15, + "num_inliers": 4985, + "objective": 346.50606556509143 + } + ], + "heldout_symmetric": { + "evaluated": 7875, + "inliers": 3426, + "inlier_ratio": 0.43504761904761907, + "inlier_rmse_m": 0.13924446561169374, + "median_m": 0.3216392154668307, + "p90_m": 1.6412986649403454, + "p95_m": 2.578177518818419 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 8616.426171309877, + 22139.86015376056, + 45947.311781646065, + 57613.47300891338, + 275544.0074778941, + 361343.67000271933 + ], + "effective_rank": 6, + "scaled_condition_number": 41.93660606132572, + "weakest_scaled_direction": [ + 0.07175289648514459, + 0.9749666186854877, + 0.03312925170474936, + -0.0668038916444731, + 0.06827920222720169, + 0.18457859459003498 + ] + }, + "forward_reverse": { + "translation_m": 0.04258350776081339, + "rotation_deg": 0.7879276702809055 + }, + "multistart": { + "runs": 2, + "success_rate": 0.5, + "deltas": [ + { + "translation_m": 1.8610729195778454e-15, + "rotation_deg": 1.703632180535041e-15 + }, + { + "translation_m": 0.44098324221774876, + "rotation_deg": 5.762337921680544 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_rotation" + ] + }, + { + "i": 20, + "j": 21, + "lidar_time_i": 1784785434.592462, + "lidar_time_j": 1784785506.389296, + "frame_counter_i": 16475, + "frame_counter_j": 17193, + "rtk_translation_m": 5.40286046809103, + "rtk_rotation_deg": 50.60986574175429, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6301981813065091, + 0.7764268692428195, + 0.003401322648986552, + 4.39863388696172 + ], + [ + -0.7761873138414891, + 0.6301021429851937, + -0.02246203991182845, + -3.38202078990369 + ], + [ + -0.019583312015658712, + 0.01151547321044341, + 0.9997419105785438, + 0.08505435361015698 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 7432, + "backend_objective": 841.7889014088194, + "backend_elapsed_sec": 0.2433473999844864, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4419, + "objective": 1021.5747377426837 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6575, + "objective": 678.6038158007818 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 7432, + "objective": 841.7889014088194 + } + ], + "heldout_symmetric": { + "evaluated": 7846, + "inliers": 5184, + "inlier_ratio": 0.6607188376242672, + "inlier_rmse_m": 0.12214671257866079, + "median_m": 0.15023898240221245, + "p90_m": 0.9374078882444975, + "p95_m": 1.4616253051790022 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 44340.727888143774, + 50672.870391665434, + 118270.52282821866, + 293841.55674556154, + 476187.42673343327, + 624441.520520691 + ], + "effective_rank": 6, + "scaled_condition_number": 14.082798146569438, + "weakest_scaled_direction": [ + 0.17746322243169121, + 0.03155905325372502, + -0.011873699009488163, + 0.8336479203850031, + 0.5022823792752309, + 0.14182172760579959 + ] + }, + "forward_reverse": { + "translation_m": 0.01471691635641488, + "rotation_deg": 0.0747935794181239 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.534554168259711e-06, + "rotation_deg": 4.5311436364444247e-05 + }, + { + "translation_m": 5.534554168333668e-06, + "rotation_deg": 4.531143636222666e-05 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 20, + "j": 22, + "lidar_time_i": 1784785434.592462, + "lidar_time_j": 1784785587.5863533, + "frame_counter_i": 16475, + "frame_counter_j": 18005, + "rtk_translation_m": 8.200956565000565, + "rtk_rotation_deg": 56.18640938466938, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5496172539019083, + 0.835387051591116, + -0.007024830761537297, + 6.450441857741791 + ], + [ + -0.8351490077183537, + 0.5492089812922016, + -0.029927074281191027, + -5.343962062450511 + ], + [ + -0.021142590200218452, + 0.022315216823633896, + 0.9995273993131655, + 0.11285970042172674 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 6757, + "backend_objective": 573.3125481864666, + "backend_elapsed_sec": 0.22552869998617098, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4312, + "objective": 1004.7367361664083 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6214, + "objective": 734.9190580921559 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 6757, + "objective": 573.3125481864666 + } + ], + "heldout_symmetric": { + "evaluated": 7959, + "inliers": 4587, + "inlier_ratio": 0.576328684508104, + "inlier_rmse_m": 0.13245799460807672, + "median_m": 0.19975022791929564, + "p90_m": 1.1478644508327356, + "p95_m": 1.6805524465089412 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 34413.76904378472, + 35089.02863964063, + 67064.133147841, + 142382.57268090028, + 410896.55246784317, + 551790.7600769354 + ], + "effective_rank": 6, + "scaled_condition_number": 16.034011252149995, + "weakest_scaled_direction": [ + -0.5413592306245072, + -0.2686398625801602, + -0.0202596609897498, + -0.605727566710206, + -0.5106932382176763, + -0.08147935415312677 + ] + }, + "forward_reverse": { + "translation_m": 0.02165175771302933, + "rotation_deg": 0.4612076789897289 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 6.713178136967715e-15, + "rotation_deg": 1.5032960692226754e-13 + }, + { + "translation_m": 1.7684718691806487e-07, + "rotation_deg": 2.614237323819308e-06 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 20, + "j": 23, + "lidar_time_i": 1784785434.592462, + "lidar_time_j": 1784785681.9825997, + "frame_counter_i": 16475, + "frame_counter_j": 18949, + "rtk_translation_m": 5.175118275082073, + "rtk_rotation_deg": 70.79178325235415, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.32256721290178414, + 0.9465460797646612, + 0.0009550093859780853, + 4.208259377594814 + ], + [ + -0.945994895560604, + 0.32241349198423586, + -0.033811207606571476, + -2.3193859738621594 + ], + [ + -0.032311773923120214, + 0.010002952998147617, + 0.9994277813815551, + 0.10775047283783244 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 7359, + "backend_objective": 845.5633979281702, + "backend_elapsed_sec": 0.23695839999709278, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 4338, + "objective": 911.2596131666338 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6516, + "objective": 691.1437643500954 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 7359, + "objective": 845.5633979281702 + } + ], + "heldout_symmetric": { + "evaluated": 7804, + "inliers": 5035, + "inlier_ratio": 0.6451819579702717, + "inlier_rmse_m": 0.12102263178677423, + "median_m": 0.1559895039044221, + "p90_m": 0.9688366245734089, + "p95_m": 1.49426709179214 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 53027.85303585267, + 56080.75777160752, + 143070.11462165575, + 383136.57859657257, + 443255.2922774473, + 663456.339188899 + ], + "effective_rank": 6, + "scaled_condition_number": 12.511468996120387, + "weakest_scaled_direction": [ + -0.3103954872435256, + -0.24401868710361824, + 0.012355200029402224, + -0.5414145041653489, + -0.7117003300369048, + -0.21049903985544594 + ] + }, + "forward_reverse": { + "translation_m": 0.018249896901851893, + "rotation_deg": 0.12115759970382113 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.662158620367905e-15, + "rotation_deg": 2.3042195393728068e-14 + }, + { + "translation_m": 1.8563065093075665e-15, + "rotation_deg": 1.2622973743528364e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 20, + "j": 24, + "lidar_time_i": 1784785434.592462, + "lidar_time_j": 1784785815.4779446, + "frame_counter_i": 16475, + "frame_counter_j": 20284, + "rtk_translation_m": 4.710308396362637, + "rtk_rotation_deg": 105.20453782384023, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.2589411585105461, + 0.9658790687160898, + -0.00520586643649611, + 3.08192906684004 + ], + [ + -0.9657761472795204, + -0.2589899145061792, + -0.014165363744281992, + -1.3317978172202731 + ], + [ + -0.01503029524467048, + 0.001359705931623316, + 0.9998861142273341, + 0.05855535952942754 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7947, + "backend_objective": 828.765715422846, + "backend_elapsed_sec": 0.24634510002215393, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 4198, + "objective": 1453.863410541216 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6665, + "objective": 955.5540696139832 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7947, + "objective": 828.765715422846 + } + ], + "heldout_symmetric": { + "evaluated": 7704, + "inliers": 5688, + "inlier_ratio": 0.7383177570093458, + "inlier_rmse_m": 0.11441422046802802, + "median_m": 0.1206966324210205, + "p90_m": 0.6821797692450176, + "p95_m": 1.129705958523537 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 62496.01731270753, + 70194.43621434887, + 183680.88832673497, + 374325.9260408858, + 609173.5954095792, + 759497.7110346676 + ], + "effective_rank": 6, + "scaled_condition_number": 12.152737785424229, + "weakest_scaled_direction": [ + 0.21789141672528795, + 0.7454163621037097, + -0.0009605891814390714, + -0.031064774376616564, + 0.40307076050369756, + 0.48316228817431883 + ] + }, + "forward_reverse": { + "translation_m": 0.009011279667019194, + "rotation_deg": 0.06430292411421322 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.943432665244099e-15, + "rotation_deg": 1.4991032967055917e-14 + }, + { + "translation_m": 1.996087139617986e-15, + "rotation_deg": 3.4847052261658093e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 20, + "j": 25, + "lidar_time_i": 1784785434.592462, + "lidar_time_j": 1784785891.9768085, + "frame_counter_i": 16475, + "frame_counter_j": 21049, + "rtk_translation_m": 8.226491803107123, + "rtk_rotation_deg": 68.57831319871164, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.36472487616827326, + 0.9310705876163026, + 0.009128284607280327, + 4.718091568740359 + ], + [ + -0.9306796876858751, + 0.36423685356907465, + 0.03415894364618221, + -7.302169850498349 + ], + [ + 0.028479530069164212, + -0.020954125558804243, + 0.9993747250101462, + 0.1831713409168159 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7051, + "backend_objective": 481.92528333929243, + "backend_elapsed_sec": 0.2588349000143353, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 10, + "num_inliers": 4061, + "objective": 790.7661291518403 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6106, + "objective": 628.5696545826204 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7051, + "objective": 481.92528333929243 + } + ], + "heldout_symmetric": { + "evaluated": 7964, + "inliers": 4924, + "inlier_ratio": 0.6182822702159718, + "inlier_rmse_m": 0.12791257682460647, + "median_m": 0.1698836970918688, + "p90_m": 1.1685966238925811, + "p95_m": 1.8448430432547474 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 20350.618460298832, + 37569.96463500192, + 48033.61600525111, + 108559.9013833798, + 526742.970578636, + 592287.6851074039 + ], + "effective_rank": 6, + "scaled_condition_number": 29.104161441720954, + "weakest_scaled_direction": [ + -0.42556444577949426, + -0.569911161738633, + -0.017271094605284174, + 0.09315786156407158, + -0.04019256455762905, + 0.6953445549426117 + ] + }, + "forward_reverse": { + "translation_m": 0.014703530260578728, + "rotation_deg": 0.32055535743282454 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.40619762898109e-16, + "rotation_deg": 4.5170095684232995e-15 + }, + { + "translation_m": 3.591668609095541e-15, + "rotation_deg": 2.3570729087321212e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 22, + "lidar_time_i": 1784785506.389296, + "lidar_time_j": 1784785587.5863533, + "frame_counter_i": 17193, + "frame_counter_j": 18005, + "rtk_translation_m": 2.8644847627909416, + "rtk_rotation_deg": 5.57654364291509, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9949871489467763, + 0.10000253475913753, + 0.00025782263898075465, + 2.814440047729085 + ], + [ + -0.09999491339360277, + 0.9949372219711345, + -0.010046971273306804, + 0.35486864144369806 + ], + [ + -0.0012612399341716996, + 0.009970826350321912, + 0.9999494946724657, + 0.09487990842832685 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 9146, + "backend_objective": 1703.409723975221, + "backend_elapsed_sec": 0.24805360002210364, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4644, + "objective": 868.2820515524207 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 7403, + "objective": 778.2783448452358 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 9146, + "objective": 1703.409723975221 + } + ], + "heldout_symmetric": { + "evaluated": 8197, + "inliers": 6345, + "inlier_ratio": 0.7740636818348177, + "inlier_rmse_m": 0.11564788773425824, + "median_m": 0.11881922766695734, + "p90_m": 0.5710791007457086, + "p95_m": 0.9594951467730475 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 68955.61191477656, + 276543.8285017942, + 369434.1645927724, + 415426.7061479706, + 561199.6486688191, + 841918.661083003 + ], + "effective_rank": 6, + "scaled_condition_number": 12.209574213097333, + "weakest_scaled_direction": [ + -0.06746522435169258, + 0.05416703526780531, + -0.032449063001995834, + -0.804900283074206, + -0.5853715569081089, + -0.03061223242111958 + ] + }, + "forward_reverse": { + "translation_m": 0.0065184199045192235, + "rotation_deg": 0.06991965908247275 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.516639917446636e-14, + "rotation_deg": 4.623659557428911e-13 + }, + { + "translation_m": 1.787650848661936e-15, + "rotation_deg": 1.4331825293103942e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 23, + "lidar_time_i": 1784785506.389296, + "lidar_time_j": 1784785681.9825997, + "frame_counter_i": 17193, + "frame_counter_j": 18949, + "rtk_translation_m": 1.2936223973175418, + "rtk_rotation_deg": 20.18191751059984, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9381685004700115, + 0.34605724063899157, + 0.009178830381697225, + -0.9318953948390342 + ], + [ + -0.34596327975609076, + 0.9381901784637574, + -0.01042104095341573, + 0.5294051243001446 + ], + [ + -0.012217765190818047, + 0.006601154101425794, + 0.9999035708398443, + -0.002502879994889205 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 10022, + "backend_objective": 1419.0499751223717, + "backend_elapsed_sec": 0.2134786999959033, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4616, + "objective": 750.6539590039605 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7746, + "objective": 821.9219639122146 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 10022, + "objective": 1419.0499751223717 + } + ], + "heldout_symmetric": { + "evaluated": 8042, + "inliers": 6934, + "inlier_ratio": 0.862223327530465, + "inlier_rmse_m": 0.10307116830776755, + "median_m": 0.08939175565884207, + "p90_m": 0.3514120568530705, + "p95_m": 0.7088981381611085 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 102715.79092682658, + 307631.7472744465, + 574725.5516161988, + 712149.1897057669, + 831554.8125380467, + 1142661.736879501 + ], + "effective_rank": 6, + "scaled_condition_number": 11.124499228103288, + "weakest_scaled_direction": [ + -0.060378503544198714, + 0.025478424004135802, + 0.012984605396990187, + -0.6274958356377294, + -0.7743238586147251, + -0.04699174906325607 + ] + }, + "forward_reverse": { + "translation_m": 0.0026785916987678697, + "rotation_deg": 0.01879221122979615 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.3452156777087964e-06, + "rotation_deg": 5.457411412584476e-06 + }, + { + "translation_m": 2.5383669873575945e-15, + "rotation_deg": 1.6919296846028982e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 24, + "lidar_time_i": 1784785506.389296, + "lidar_time_j": 1784785815.4779446, + "frame_counter_i": 17193, + "frame_counter_j": 20284, + "rtk_translation_m": 2.3128500583741403, + "rtk_rotation_deg": 54.59467208208593, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5864769751762654, + 0.8099460332920043, + -0.005672807298438478, + -2.4096154798797964 + ], + [ + -0.8099295559471344, + 0.5865026229977585, + 0.00536540958615149, + 0.2727395222292259 + ], + [ + 0.00767280857158529, + 0.0014478851115300648, + 0.9999695153540072, + -0.022944430739222105 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 7, + "backend_num_inliers": 8464, + "backend_objective": 1162.7767389441092, + "backend_elapsed_sec": 0.27223569998750463, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4148, + "objective": 828.1952790032508 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6865, + "objective": 856.3185305879489 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 7, + "num_inliers": 8464, + "objective": 1162.7767389441092 + } + ], + "heldout_symmetric": { + "evaluated": 7942, + "inliers": 6191, + "inlier_ratio": 0.7795265676152102, + "inlier_rmse_m": 0.11182158240581822, + "median_m": 0.10716354058076344, + "p90_m": 0.5589406319578444, + "p95_m": 0.9607006134986359 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 56693.42014747004, + 124209.97002507027, + 247427.18293520404, + 438330.3972872241, + 546318.6584470777, + 903353.7178038924 + ], + "effective_rank": 6, + "scaled_condition_number": 15.934013426145448, + "weakest_scaled_direction": [ + 0.05656715636850258, + 0.023812998671804544, + -0.0002796892755809372, + 0.09536096170819146, + 0.9923286670814698, + 0.04922522888670723 + ] + }, + "forward_reverse": { + "translation_m": 0.003491995501356654, + "rotation_deg": 0.0374256510953578 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.0132990584074992e-15, + "rotation_deg": 1.693025760075907e-14 + }, + { + "translation_m": 9.332106938114179e-16, + "rotation_deg": 8.987715771713424e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 25, + "lidar_time_i": 1784785506.389296, + "lidar_time_j": 1784785891.9768085, + "frame_counter_i": 17193, + "frame_counter_j": 21049, + "rtk_translation_m": 3.793272903723766, + "rtk_rotation_deg": 17.968447456957346, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.951465406759142, + 0.30462790245371113, + -0.0437655205305701, + 3.246246284934705 + ], + [ + -0.3028280168284787, + 0.952061916961844, + 0.043281618438653205, + -2.2236041536135907 + ], + [ + 0.054852274012936325, + -0.02792753690518858, + 0.9981038426526663, + 0.23152263166160567 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 8544, + "backend_objective": 1186.7914632066486, + "backend_elapsed_sec": 0.3494078000076115, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4390, + "objective": 755.102608609444 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6990, + "objective": 722.0196792328461 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 8544, + "objective": 1186.7914632066486 + } + ], + "heldout_symmetric": { + "evaluated": 8202, + "inliers": 6021, + "inlier_ratio": 0.7340892465252378, + "inlier_rmse_m": 0.12002239056891174, + "median_m": 0.13187868486785037, + "p90_m": 0.8441743066590516, + "p95_m": 1.5635195490658773 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 45161.41165401633, + 88495.6665623439, + 230087.91200777455, + 375657.3807349393, + 498970.7377792786, + 748422.2743395879 + ], + "effective_rank": 6, + "scaled_condition_number": 16.57216298005221, + "weakest_scaled_direction": [ + -0.05711903308571431, + 0.09722996092931892, + -0.0006718660563098488, + -0.6676512451049326, + -0.7327792842646098, + -0.06752506805267046 + ] + }, + "forward_reverse": { + "translation_m": 0.037735058311297705, + "rotation_deg": 0.2878144229712423 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.4124810357301033e-15, + "rotation_deg": 1.5421625325312505e-14 + }, + { + "translation_m": 1.3666101008105044e-15, + "rotation_deg": 4.390810401501978e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 26, + "lidar_time_i": 1784785506.389296, + "lidar_time_j": 1784785967.8726046, + "frame_counter_i": 17193, + "frame_counter_j": 21808, + "rtk_translation_m": 4.631707245574304, + "rtk_rotation_deg": 60.912845043424184, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.48806176319002476, + 0.8716863242937033, + -0.044256833948862984, + 3.8161629787833466 + ], + [ + -0.8709224865092036, + 0.4897124551924127, + 0.04093572671940675, + -2.3729744624638465 + ], + [ + 0.05735623596847181, + 0.018565108907630003, + 0.9981811453472647, + 0.26506900488783713 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 8240, + "backend_objective": 1120.634646080745, + "backend_elapsed_sec": 0.27241249999497086, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 3989, + "objective": 831.3073148022323 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6491, + "objective": 641.9008184249741 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 8240, + "objective": 1120.634646080745 + } + ], + "heldout_symmetric": { + "evaluated": 8252, + "inliers": 5898, + "inlier_ratio": 0.7147358216190014, + "inlier_rmse_m": 0.11997311573294966, + "median_m": 0.13518689601537945, + "p90_m": 0.8557175690024953, + "p95_m": 1.67161649650294 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 41965.89761056792, + 47466.75249187217, + 201336.8816755612, + 390732.0326679377, + 517025.81420962076, + 729044.8199640175 + ], + "effective_rank": 6, + "scaled_condition_number": 17.372315653280065, + "weakest_scaled_direction": [ + 0.07669344992623661, + -0.37363991694573523, + 0.0056503294265457605, + 0.03227063945328418, + 0.8000863050351066, + 0.46184403352767633 + ] + }, + "forward_reverse": { + "translation_m": 0.012351932089198563, + "rotation_deg": 0.10379217190868555 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.341259198934301e-13, + "rotation_deg": 2.913456283126336e-13 + }, + { + "translation_m": 2.610684629078812e-15, + "rotation_deg": 3.4668416835300865e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 23, + "lidar_time_i": 1784785587.5863533, + "lidar_time_j": 1784785681.9825997, + "frame_counter_i": 18005, + "frame_counter_j": 18949, + "rtk_translation_m": 3.7194009250537223, + "rtk_rotation_deg": 14.605373867684753, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9680180899465552, + 0.25084012572879505, + 0.004495426630019777, + -3.74300761383286 + ], + [ + -0.25086900490704056, + 0.9679895115926125, + 0.007813310671311182, + -0.20412154694927875 + ], + [ + -0.002391633996843435, + -0.008691189277507354, + 0.9999593708325196, + -0.09262483651087947 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 8546, + "backend_objective": 1321.8517754886582, + "backend_elapsed_sec": 0.2790126999898348, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4420, + "objective": 890.1276923712095 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 7052, + "objective": 954.3336913888552 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 8546, + "objective": 1321.8517754886582 + } + ], + "heldout_symmetric": { + "evaluated": 8155, + "inliers": 6042, + "inlier_ratio": 0.7408951563458002, + "inlier_rmse_m": 0.11726725109752717, + "median_m": 0.12207350159014241, + "p90_m": 0.6851390412082611, + "p95_m": 1.131610394473617 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 68439.22404216403, + 162544.12904499072, + 218614.58984913744, + 442226.72856045084, + 481438.1708275909, + 863033.2148717172 + ], + "effective_rank": 6, + "scaled_condition_number": 12.610213323576254, + "weakest_scaled_direction": [ + 0.06875318882715073, + -0.021343991953650457, + 0.016940565304647288, + 0.6313478605987582, + 0.7719555035339748, + 0.0038768236634954827 + ] + }, + "forward_reverse": { + "translation_m": 0.009206244303295173, + "rotation_deg": 0.09601986001481369 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 8.934752161915345e-16, + "rotation_deg": 6.411728736501268e-15 + }, + { + "translation_m": 9.884453757227279e-16, + "rotation_deg": 2.291306414268005e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 24, + "lidar_time_i": 1784785587.5863533, + "lidar_time_j": 1784785815.4779446, + "frame_counter_i": 18005, + "frame_counter_j": 20284, + "rtk_translation_m": 4.786117710081478, + "rtk_rotation_deg": 49.01812843917083, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6643152165229396, + 0.7473343175313717, + -0.013293266566204139, + -5.200984531085628 + ], + [ + -0.7472249118018555, + 0.6644467550042417, + 0.012862384967113366, + -0.6124991489851265 + ], + [ + 0.01844516952454416, + 0.0013883818830611348, + 0.9998289094224855, + -0.15699990301925867 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 7534, + "backend_objective": 618.9411290844438, + "backend_elapsed_sec": 0.25701590001699515, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 3998, + "objective": 996.4306885899134 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6380, + "objective": 682.3145767044045 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 7534, + "objective": 618.9411290844438 + } + ], + "heldout_symmetric": { + "evaluated": 8055, + "inliers": 5587, + "inlier_ratio": 0.6936064556176288, + "inlier_rmse_m": 0.11914624513148218, + "median_m": 0.13621627379182125, + "p90_m": 0.8600601835813493, + "p95_m": 1.4045143272867981 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 56117.95752548433, + 62076.38713793777, + 102296.54126853116, + 288394.2705411583, + 377278.4721379689, + 740947.1453684517 + ], + "effective_rank": 6, + "scaled_condition_number": 13.20338761495324, + "weakest_scaled_direction": [ + 0.051016174699036056, + 0.2576350362613466, + -0.006718040289728429, + 0.06708912698257481, + 0.9359724157154417, + 0.22456867992859963 + ] + }, + "forward_reverse": { + "translation_m": 0.006090737153726605, + "rotation_deg": 0.027557138417491776 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.6300346472626374e-15, + "rotation_deg": 5.074464279426559e-15 + }, + { + "translation_m": 1.6014269617894046e-15, + "rotation_deg": 1.39393558216266e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 25, + "lidar_time_i": 1784785587.5863533, + "lidar_time_j": 1784785891.9768085, + "frame_counter_i": 18005, + "frame_counter_j": 21049, + "rtk_translation_m": 2.3747421598149763, + "rtk_rotation_deg": 12.391903814042255, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9771017898243449, + 0.20760605418763642, + -0.046602774452827594, + 0.6836770732221749 + ], + [ + -0.2055983985569553, + 0.9776271779696655, + 0.044434214361043896, + -2.5190907519197667 + ], + [ + 0.05478495078829861, + -0.033835294585802284, + 0.9979247376467901, + 0.10890575315662965 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 9018, + "backend_objective": 1603.7263974893467, + "backend_elapsed_sec": 0.26418170001124963, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4428, + "objective": 998.9648775940758 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 7152, + "objective": 717.1052366493561 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 9018, + "objective": 1603.7263974893467 + } + ], + "heldout_symmetric": { + "evaluated": 8315, + "inliers": 6117, + "inlier_ratio": 0.7356584485868911, + "inlier_rmse_m": 0.11474070552638106, + "median_m": 0.12015080430215148, + "p90_m": 0.9353497010889523, + "p95_m": 1.5992612501748902 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 54421.15021016208, + 105983.75421454485, + 323054.79131014243, + 540615.0260132273, + 618302.5566564435, + 907398.3370898641 + ], + "effective_rank": 6, + "scaled_condition_number": 16.673633938013044, + "weakest_scaled_direction": [ + -0.07770890679458517, + 0.08356725539232165, + -0.02570066281607597, + -0.6620003139006165, + -0.7396449243682165, + -0.0315956613100559 + ] + }, + "forward_reverse": { + "translation_m": 0.0019617091597581428, + "rotation_deg": 0.011643770804738128 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.265271247595879e-15, + "rotation_deg": 2.1839510489416722e-14 + }, + { + "translation_m": 2.125986957094651e-15, + "rotation_deg": 3.950350296474579e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 26, + "lidar_time_i": 1784785587.5863533, + "lidar_time_j": 1784785967.8726046, + "frame_counter_i": 18005, + "frame_counter_j": 21808, + "rtk_translation_m": 2.381693697571969, + "rtk_rotation_deg": 55.336301400509086, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.5729894523948887, + 0.8181138146333831, + -0.048712151976887726, + 1.2636919366293835 + ], + [ + -0.8170731700272349, + 0.5748682225294421, + 0.04379453787272056, + -2.6134549480717517 + ], + [ + 0.06383198466169512, + 0.014707584161026707, + 0.9978522759919404, + 0.1600384835630653 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 8745, + "backend_objective": 1826.9341443186427, + "backend_elapsed_sec": 0.2684796999965329, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 4056, + "objective": 829.8679409775192 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6785, + "objective": 714.5244543941843 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 8745, + "objective": 1826.9341443186427 + } + ], + "heldout_symmetric": { + "evaluated": 8365, + "inliers": 6209, + "inlier_ratio": 0.7422594142259414, + "inlier_rmse_m": 0.11765221626900083, + "median_m": 0.12426046302590078, + "p90_m": 0.8632155686173443, + "p95_m": 1.6150154051765333 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 48759.960513395155, + 96351.33626100888, + 270164.12934271694, + 535278.7746145609, + 648762.17835789, + 920608.5530097359 + ], + "effective_rank": 6, + "scaled_condition_number": 18.880420396501957, + "weakest_scaled_direction": [ + 0.11387940859658063, + -0.014809023085159412, + 0.008417701523074536, + -0.020948786288663663, + 0.9921603932721736, + 0.04382028992443755 + ] + }, + "forward_reverse": { + "translation_m": 0.007814937371704293, + "rotation_deg": 0.039342553564881436 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.029911119502192e-15, + "rotation_deg": 2.2738102941910025e-14 + }, + { + "translation_m": 2.1719098162331255e-15, + "rotation_deg": 1.8576185042140407e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 27, + "lidar_time_i": 1784785587.5863533, + "lidar_time_j": 1784786031.5701303, + "frame_counter_i": 18005, + "frame_counter_j": 22445, + "rtk_translation_m": 2.9603952927690247, + "rtk_rotation_deg": 80.62067670375279, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.166012302825228, + 0.9847987229204278, + -0.05110176753263577, + 1.3366643458092826 + ], + [ + -0.9849490568659734, + 0.16812033224592798, + 0.04013613414802536, + -3.010834914800446 + ], + [ + 0.04811725978787924, + 0.04366954567903789, + 0.9978866168511793, + 0.1758600044300586 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 7, + "backend_num_inliers": 8761, + "backend_objective": 1810.797605209733, + "backend_elapsed_sec": 0.3246029000147246, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 9, + "num_inliers": 4206, + "objective": 777.5638769913432 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6933, + "objective": 617.3102988788305 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 7, + "num_inliers": 8761, + "objective": 1810.797605209733 + } + ], + "heldout_symmetric": { + "evaluated": 8375, + "inliers": 6076, + "inlier_ratio": 0.7254925373134329, + "inlier_rmse_m": 0.11870181965154768, + "median_m": 0.1292959264142726, + "p90_m": 0.9590407195444435, + "p95_m": 1.745903598461009 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 46053.05169249938, + 72111.06913739193, + 211058.3910644258, + 471445.30077424535, + 650959.6040704789, + 981362.4092437666 + ], + "effective_rank": 6, + "scaled_condition_number": 21.309389349405485, + "weakest_scaled_direction": [ + -0.11948805473642278, + -0.01662055490082298, + -0.008890942173840347, + 0.441601531324688, + -0.8876742358497826, + -0.04888610863579474 + ] + }, + "forward_reverse": { + "translation_m": 0.018241823604788005, + "rotation_deg": 0.08279236858582419 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0165297388272475e-05, + "rotation_deg": 0.00012138995368309731 + }, + { + "translation_m": 1.0165297388157148e-05, + "rotation_deg": 0.00012138995368611443 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 24, + "lidar_time_i": 1784785681.9825997, + "lidar_time_j": 1784785815.4779446, + "frame_counter_i": 18949, + "frame_counter_j": 20284, + "rtk_translation_m": 1.0880644725336985, + "rtk_rotation_deg": 34.41275457148609, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8303653571829605, + 0.5568321890913183, + -0.020767445249372744, + -1.2980342252265529 + ], + [ + -0.5567965397742828, + 0.8306104219770264, + 0.007996261534747364, + -0.7542815474137368 + ], + [ + 0.021702232276906368, + 0.004923423089373753, + 0.9997523558458277, + -0.03658754448586632 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 13, + "backend_num_inliers": 8752, + "backend_objective": 1203.4446402887475, + "backend_elapsed_sec": 0.31242710002698004, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4329, + "objective": 1028.7337646496203 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 7143, + "objective": 962.5315953290091 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 13, + "num_inliers": 8752, + "objective": 1203.4446402887475 + } + ], + "heldout_symmetric": { + "evaluated": 7900, + "inliers": 6229, + "inlier_ratio": 0.7884810126582279, + "inlier_rmse_m": 0.10662565692629543, + "median_m": 0.1000611786088326, + "p90_m": 0.49960811562268803, + "p95_m": 0.75562531444527 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 88273.0773263409, + 146323.25466768251, + 301214.910506251, + 509707.2676784679, + 581465.7340907096, + 936683.2499807811 + ], + "effective_rank": 6, + "scaled_condition_number": 10.611199681165669, + "weakest_scaled_direction": [ + 0.10439883076038171, + 0.06970668489684709, + -0.02623880712496699, + 0.08206972040851741, + 0.9844977668795604, + 0.087075227352228 + ] + }, + "forward_reverse": { + "translation_m": 0.001882338148224756, + "rotation_deg": 0.020239211377623818 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.545131356005381e-15, + "rotation_deg": 2.0474535646795735e-14 + }, + { + "translation_m": 1.6667795129466248e-15, + "rotation_deg": 7.782331236869249e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 25, + "lidar_time_i": 1784785681.9825997, + "lidar_time_j": 1784785891.9768085, + "frame_counter_i": 18949, + "frame_counter_j": 21049, + "rtk_translation_m": 5.033935954106079, + "rtk_rotation_deg": 2.213470053642494, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.997169096259311, + -0.04382697823854911, + -0.06109819509500086, + 4.877568649812088 + ], + [ + 0.045471268891624554, + 0.9986327846324579, + 0.025786142840836017, + -1.1221910117378027 + ], + [ + 0.05988453198259647, + -0.02849135721056768, + 0.9977986196590599, + 0.24009968082344962 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 7951, + "backend_objective": 1006.816765698991, + "backend_elapsed_sec": 0.20475340000120923, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4289, + "objective": 794.1021285457281 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6627, + "objective": 631.1319767631088 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 7951, + "objective": 1006.816765698991 + } + ], + "heldout_symmetric": { + "evaluated": 8160, + "inliers": 5584, + "inlier_ratio": 0.6843137254901961, + "inlier_rmse_m": 0.12171091934898426, + "median_m": 0.1421381414415025, + "p90_m": 1.0090705835968712, + "p95_m": 1.809914444995154 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 47597.81661202595, + 62200.586561324024, + 160526.5811565719, + 249100.31357856502, + 444442.7526783774, + 721145.4313586202 + ], + "effective_rank": 6, + "scaled_condition_number": 15.150809064137142, + "weakest_scaled_direction": [ + -0.07037591046685365, + 0.1140198174964063, + -0.019874373237302987, + -0.663823642849381, + -0.730267830000611, + -0.08774274552832399 + ] + }, + "forward_reverse": { + "translation_m": 0.014639828785635214, + "rotation_deg": 0.2046006298281892 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.554447978966673e-16, + "rotation_deg": 3.745587311483929e-15 + }, + { + "translation_m": 1.4980298966309074e-15, + "rotation_deg": 1.855039326368436e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 26, + "lidar_time_i": 1784785681.9825997, + "lidar_time_j": 1784785967.8726046, + "frame_counter_i": 18949, + "frame_counter_j": 21808, + "rtk_translation_m": 5.765534437288107, + "rtk_rotation_deg": 40.730927532824346, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.758987705420829, + 0.6479688173745616, + -0.06382847899046681, + 5.465829429150644 + ], + [ + -0.6479656640797263, + 0.7613050131592317, + 0.02356215423811409, + -1.063367937083716 + ], + [ + 0.06386048225423888, + 0.023475277396298837, + 0.9976826901161628, + 0.32681663990174287 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 7675, + "backend_objective": 941.0360150849585, + "backend_elapsed_sec": 0.20812529997783713, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 3909, + "objective": 814.1334582930003 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6239, + "objective": 773.7425694523753 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 7675, + "objective": 941.0360150849585 + } + ], + "heldout_symmetric": { + "evaluated": 8210, + "inliers": 5560, + "inlier_ratio": 0.6772228989037758, + "inlier_rmse_m": 0.12237954766026346, + "median_m": 0.14526492257361953, + "p90_m": 1.0306268199294264, + "p95_m": 2.005669170226921 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 42800.662748925846, + 50922.16795289156, + 123953.48099214467, + 229550.53710970332, + 436690.36093104834, + 701174.7556803013 + ], + "effective_rank": 6, + "scaled_condition_number": 16.382334072569904, + "weakest_scaled_direction": [ + -0.11074299337222478, + 0.11658102555223537, + -0.02291305551563881, + 0.005584858487071339, + -0.9700013384338984, + -0.18079286097412775 + ] + }, + "forward_reverse": { + "translation_m": 0.04518647006837157, + "rotation_deg": 0.20367965681897066 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.897961898453677e-15, + "rotation_deg": 5.0009294443592034e-15 + }, + { + "translation_m": 1.9868029630580076e-15, + "rotation_deg": 1.241119903764046e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 27, + "lidar_time_i": 1784785681.9825997, + "lidar_time_j": 1784786031.5701303, + "frame_counter_i": 18949, + "frame_counter_j": 22445, + "rtk_translation_m": 6.392376191887118, + "rtk_rotation_deg": 66.01530283606805, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.4078233430078444, + 0.9105921303916975, + -0.06709763756358932, + 5.632662344665416 + ], + [ + -0.9125328661541443, + 0.40898422649271754, + 0.0039586195391688415, + -1.421559241441168 + ], + [ + 0.03104656319801524, + 0.059614382063914104, + 0.9977385611294818, + 0.3729145284645733 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 9, + "backend_num_inliers": 7658, + "backend_objective": 917.1304259230158, + "backend_elapsed_sec": 0.29475150001235306, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 10, + "num_inliers": 4032, + "objective": 864.9119736691032 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 6245, + "objective": 634.8644050424682 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 9, + "num_inliers": 7658, + "objective": 917.1304259230158 + } + ], + "heldout_symmetric": { + "evaluated": 8220, + "inliers": 5456, + "inlier_ratio": 0.6637469586374696, + "inlier_rmse_m": 0.12340951265232122, + "median_m": 0.1525519977909689, + "p90_m": 1.1085815159634709, + "p95_m": 1.9974762679862905 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 36105.88521990672, + 48551.60355914683, + 88084.75813595018, + 196396.53562698688, + 424563.6450545413, + 745364.1125572154 + ], + "effective_rank": 6, + "scaled_condition_number": 20.64383986204732, + "weakest_scaled_direction": [ + -0.16486183891091427, + -0.024234837848935986, + -0.015867627903740262, + 0.43326911405518564, + -0.8776033093223075, + -0.11862449731157747 + ] + }, + "forward_reverse": { + "translation_m": 0.010626193556947957, + "rotation_deg": 1.1817079481882757 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.2334947784230958e-15, + "rotation_deg": 1.682681774252422e-14 + }, + { + "translation_m": 1.3355895042104052e-15, + "rotation_deg": 1.0551690582431039e-14 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_rotation" + ] + }, + { + "i": 23, + "j": 28, + "lidar_time_i": 1784785681.9825997, + "lidar_time_j": 1784786087.9670725, + "frame_counter_i": 18949, + "frame_counter_j": 23009, + "rtk_translation_m": 6.631292861991925, + "rtk_rotation_deg": 85.8775990418248, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.07341209989437938, + 0.9950252891905618, + -0.06734491413861542, + 5.455047042241046 + ], + [ + -0.9972948325711798, + 0.0734944681127941, + -0.0012570137790975325, + -1.15646420109295 + ], + [ + 0.0036987181456562828, + 0.0672550148915107, + 0.9977289624221707, + 0.35030091842333066 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 7810, + "backend_objective": 1093.1406190591376, + "backend_elapsed_sec": 0.20620700001018122, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 10, + "num_inliers": 4109, + "objective": 821.4602934406256 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6413, + "objective": 727.5235818224951 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 7810, + "objective": 1093.1406190591376 + } + ], + "heldout_symmetric": { + "evaluated": 8196, + "inliers": 5508, + "inlier_ratio": 0.6720351390922401, + "inlier_rmse_m": 0.12122778564083748, + "median_m": 0.14439614877545376, + "p90_m": 1.1594785140716684, + "p95_m": 2.1256666818127967 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 38197.772408036675, + 67929.00079207728, + 124599.25696091478, + 217050.83145009523, + 455685.1258229141, + 733648.2155369003 + ], + "effective_rank": 6, + "scaled_condition_number": 19.20657067904157, + "weakest_scaled_direction": [ + -0.09092733851373148, + -0.09802132467259564, + -0.0170459577706576, + 0.7193665897423116, + -0.6791246999693235, + -0.055989515072139596 + ] + }, + "forward_reverse": { + "translation_m": 0.043540468687755365, + "rotation_deg": 0.26051478047218213 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.036560719766055e-16, + "rotation_deg": 1.6436786224923144e-14 + }, + { + "translation_m": 1.0310738718936457e-15, + "rotation_deg": 1.8968023343932963e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 24, + "j": 25, + "lidar_time_i": 1784785815.4779446, + "lidar_time_j": 1784785891.9768085, + "frame_counter_i": 20284, + "frame_counter_j": 21049, + "rtk_translation_m": 6.097212810998921, + "rtk_rotation_deg": 36.62622462512857, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8037124558199666, + -0.5924638785865632, + -0.05507123505065437, + 5.345160572627923 + ], + [ + 0.5936485267807685, + 0.8046965329251224, + 0.0067019809989590584, + 3.127250227813652 + ], + [ + 0.04034495025230932, + -0.038079423163350556, + 0.9984599353607962, + 0.14626802878837603 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7546, + "backend_objective": 744.3471485297614, + "backend_elapsed_sec": 0.1916874999878928, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 8, + "num_inliers": 4184, + "objective": 974.9759764826157 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6381, + "objective": 678.7033236838013 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7546, + "objective": 744.3471485297614 + } + ], + "heldout_symmetric": { + "evaluated": 8060, + "inliers": 5452, + "inlier_ratio": 0.6764267990074442, + "inlier_rmse_m": 0.12367636388755719, + "median_m": 0.14535752910830638, + "p90_m": 1.048725272468773, + "p95_m": 1.8248716260513014 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 33258.99560449283, + 45622.66683737021, + 99853.21573369135, + 160709.2102426493, + 437514.98672329, + 715127.2315482453 + ], + "effective_rank": 6, + "scaled_condition_number": 21.50176872604179, + "weakest_scaled_direction": [ + 0.02843675660529166, + -0.07973190361574795, + 0.010765985098256993, + 0.665961301970352, + 0.7346630855210788, + 0.09738564080523619 + ] + }, + "forward_reverse": { + "translation_m": 0.035816405766439664, + "rotation_deg": 0.2046504337319023 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.1487589816380692e-15, + "rotation_deg": 5.0505687259519916e-15 + }, + { + "translation_m": 2.7982245767451807e-15, + "rotation_deg": 1.4399710112546548e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 24, + "j": 26, + "lidar_time_i": 1784785815.4779446, + "lidar_time_j": 1784785967.8726046, + "frame_counter_i": 20284, + "frame_counter_j": 21808, + "rtk_translation_m": 6.852918693116795, + "rtk_rotation_deg": 6.318172961338249, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9922333814200585, + 0.1145048283550542, + -0.04859589570217054, + 5.7958564074555134 + ], + [ + -0.11540687172177772, + 0.9931866524713916, + -0.01617180608542132, + 3.501191269655094 + ], + [ + 0.04641304509628526, + 0.021654506137312367, + 0.9986875946004533, + 0.2429726836024844 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 9, + "backend_num_inliers": 7180, + "backend_objective": 634.0063034620212, + "backend_elapsed_sec": 0.2115021999925375, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3830, + "objective": 931.0323149935704 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5986, + "objective": 657.0876311994764 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 9, + "num_inliers": 7180, + "objective": 634.0063034620212 + } + ], + "heldout_symmetric": { + "evaluated": 8110, + "inliers": 5291, + "inlier_ratio": 0.6524044389642417, + "inlier_rmse_m": 0.12740232296321938, + "median_m": 0.15791696390449692, + "p90_m": 1.1066659206443412, + "p95_m": 2.08872769310626 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 31584.723366238362, + 33646.81946362579, + 73798.39401154751, + 132207.01992072415, + 409364.83410575794, + 687064.1707586381 + ], + "effective_rank": 6, + "scaled_condition_number": 21.753053297058692, + "weakest_scaled_direction": [ + -0.046195805414765076, + -0.5601719258781283, + 0.004586770107849211, + 0.0501183307260803, + 0.5698624200757814, + 0.5973251189014677 + ] + }, + "forward_reverse": { + "translation_m": 0.062038641373543625, + "rotation_deg": 0.12012273822228971 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.078422011876594e-05, + "rotation_deg": 3.1647042461211275e-05 + }, + { + "translation_m": 1.2573000033218179e-15, + "rotation_deg": 2.549416660096853e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 24, + "j": 27, + "lidar_time_i": 1784785815.4779446, + "lidar_time_j": 1784786031.5701303, + "frame_counter_i": 20284, + "frame_counter_j": 22445, + "rtk_translation_m": 7.47982907414204, + "rtk_rotation_deg": 31.60254826458195, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8469031354259337, + 0.5296003181474226, + -0.047734497209786515, + 6.140728351631223 + ], + [ + -0.5307811203783928, + 0.8473601697476236, + -0.015879073497414676, + 3.293700223912932 + ], + [ + 0.03203874928238506, + 0.038784607042329104, + 0.9987338348133569, + 0.2654960125568915 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 7516, + "backend_objective": 667.5930873704444, + "backend_elapsed_sec": 0.16507250000722706, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 9, + "num_inliers": 3944, + "objective": 840.9891240548365 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6154, + "objective": 637.1289635887817 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 7516, + "objective": 667.5930873704444 + } + ], + "heldout_symmetric": { + "evaluated": 8120, + "inliers": 5316, + "inlier_ratio": 0.6546798029556651, + "inlier_rmse_m": 0.12425657449629145, + "median_m": 0.15393896893285075, + "p90_m": 1.1516355610045623, + "p95_m": 1.999530546617408 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 29335.1476785254, + 32313.826658165886, + 107029.28681584133, + 158666.61917858713, + 445316.62183766696, + 771368.2715564844 + ], + "effective_rank": 6, + "scaled_condition_number": 26.295019203914197, + "weakest_scaled_direction": [ + -0.1901538352460994, + 0.34454765285068956, + -0.005218285199444599, + 0.32011626871378823, + -0.736610180760505, + -0.4472496165013398 + ] + }, + "forward_reverse": { + "translation_m": 0.05403266260962086, + "rotation_deg": 0.2126374478532415 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.996003610813204e-16, + "rotation_deg": 4.605446524171273e-15 + }, + { + "translation_m": 2.288783399261119e-15, + "rotation_deg": 2.1217215993856023e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 24, + "j": 28, + "lidar_time_i": 1784785815.4779446, + "lidar_time_j": 1784786087.9670725, + "frame_counter_i": 20284, + "frame_counter_j": 23009, + "rtk_translation_m": 7.71913193400284, + "rtk_rotation_deg": 51.4648444703387, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.6160692063343178, + 0.786448366038456, + -0.0442459101166126, + 5.842808758980054 + ], + [ + -0.7875915532957185, + 0.6159152148196876, + -0.018654579353494398, + 3.4060790395905705 + ], + [ + 0.012580865782675654, + 0.04634021697253352, + 0.9988464877583022, + 0.21870910666448412 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7575, + "backend_objective": 785.6163933136946, + "backend_elapsed_sec": 0.16993790000560693, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 9, + "num_inliers": 4061, + "objective": 816.6265355431033 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6273, + "objective": 547.7619565695693 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7575, + "objective": 785.6163933136946 + } + ], + "heldout_symmetric": { + "evaluated": 8096, + "inliers": 5355, + "inlier_ratio": 0.6614377470355731, + "inlier_rmse_m": 0.12010155595807545, + "median_m": 0.14361824572049778, + "p90_m": 1.1692406179640422, + "p95_m": 2.1281260879298185 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 37137.90476536972, + 47898.0641443855, + 116057.48949173345, + 161765.73249143673, + 477967.2992459121, + 779338.9669653369 + ], + "effective_rank": 6, + "scaled_condition_number": 20.98500095492876, + "weakest_scaled_direction": [ + 0.08737133007053412, + 0.08176300898116942, + 0.014245908396279698, + -0.7212728222428114, + 0.6786058362121803, + 0.06883131620616627 + ] + }, + "forward_reverse": { + "translation_m": 0.049490676797893776, + "rotation_deg": 0.25138526875505346 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.8041124150158794e-15, + "rotation_deg": 9.286521108177563e-15 + }, + { + "translation_m": 2.91961742936603e-15, + "rotation_deg": 6.625374322159671e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 24, + "j": 29, + "lidar_time_i": 1784785815.4779446, + "lidar_time_j": 1784786160.8647907, + "frame_counter_i": 20284, + "frame_counter_j": 23738, + "rtk_translation_m": 7.213852273638132, + "rtk_rotation_deg": 93.73390958258973, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.07789535196048554, + 0.9954838120410153, + -0.05426135003150237, + 5.245345294378622 + ], + [ + -0.9955590617614847, + -0.080556389943159, + -0.04871162678374779, + 1.5374951999314395 + ], + [ + -0.05286273439338441, + 0.050225969414386146, + 0.9973378982615873, + 0.17208678595173332 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 7, + "backend_num_inliers": 7308, + "backend_objective": 704.6527652797474, + "backend_elapsed_sec": 0.2701965000014752, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 15, + "num_inliers": 3948, + "objective": 1315.4963899215252 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 6066, + "objective": 755.7922256528994 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 7, + "num_inliers": 7308, + "objective": 704.6527652797474 + } + ], + "heldout_symmetric": { + "evaluated": 8173, + "inliers": 5411, + "inlier_ratio": 0.6620579958399608, + "inlier_rmse_m": 0.12331341986261203, + "median_m": 0.14922147684147558, + "p90_m": 1.1213653254212603, + "p95_m": 1.8946227473200987 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 28034.235731331548, + 32178.146071506486, + 83111.13785098991, + 176754.419581952, + 421217.2354252491, + 786244.8722705822 + ], + "effective_rank": 6, + "scaled_condition_number": 28.045882177977884, + "weakest_scaled_direction": [ + -0.05549317768166532, + -0.08738833604062834, + -0.001446016949543417, + 0.9906377650154883, + -0.024978391280038405, + -0.0854083923511201 + ] + }, + "forward_reverse": { + "translation_m": 0.08010108996241684, + "rotation_deg": 0.7934458070763889 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.6243534171511178e-15, + "rotation_deg": 8.198719303197444e-15 + }, + { + "translation_m": 2.1875901640420228e-15, + "rotation_deg": 5.0148127531719366e-15 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 25, + "j": 26, + "lidar_time_i": 1784785891.9768085, + "lidar_time_j": 1784785967.8726046, + "frame_counter_i": 21049, + "frame_counter_j": 21808, + "rtk_translation_m": 1.2882746074869595, + "rtk_rotation_deg": 42.944397586466835, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7313716875711438, + 0.6819525925861949, + -0.006009665906183032, + 0.5850745481396085 + ], + [ + -0.6819585651711088, + 0.7313896360104043, + 0.0013098573700309794, + 0.012785643189212282 + ], + [ + 0.00528866798907811, + 0.003140350543341257, + 0.9999810839157742, + 0.008412225013799873 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 10717, + "backend_objective": 896.0272190115661, + "backend_elapsed_sec": 0.21494720000191592, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4457, + "objective": 798.8759223413687 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7848, + "objective": 786.9690367435785 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 10717, + "objective": 896.0272190115661 + } + ], + "heldout_symmetric": { + "evaluated": 8370, + "inliers": 7648, + "inlier_ratio": 0.9137395459976105, + "inlier_rmse_m": 0.08148336624555251, + "median_m": 0.05743421568317374, + "p90_m": 0.2163420042617511, + "p95_m": 0.37440027658349145 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 88848.88528183637, + 185562.9121226117, + 676123.7167049383, + 1086866.5454814287, + 1338905.0165305706, + 1471598.2724376265 + ], + "effective_rank": 6, + "scaled_condition_number": 16.56293455758718, + "weakest_scaled_direction": [ + -0.09767941896623245, + 0.03742658747895111, + -4.4651086247527834e-05, + 0.02349769517463645, + -0.9921603066308485, + -0.06421653941190857 + ] + }, + "forward_reverse": { + "translation_m": 0.0032405549728505064, + "rotation_deg": 0.006669174585592186 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.085676725552168e-15, + "rotation_deg": 8.066687809837768e-15 + }, + { + "translation_m": 9.882520346876628e-16, + "rotation_deg": 1.217548544597636e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 27, + "lidar_time_i": 1784785891.9768085, + "lidar_time_j": 1784786031.5701303, + "frame_counter_i": 21049, + "frame_counter_j": 22445, + "rtk_translation_m": 1.7666235781584831, + "rtk_rotation_deg": 68.22877288971053, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.36702706331897667, + 0.9302025039038019, + -0.003799542412717431, + 0.7533153977236753 + ], + [ + -0.9300302048074911, + 0.36687259357372154, + -0.02117352663652828, + -0.3313800739769612 + ], + [ + -0.018301719514425444, + 0.01130494650978545, + 0.999768595849673, + 0.12219054211233012 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 10102, + "backend_objective": 1901.4627168987183, + "backend_elapsed_sec": 0.2560974000080023, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 4498, + "objective": 744.956145408769 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 8, + "num_inliers": 7839, + "objective": 1484.6798496111398 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 10102, + "objective": 1901.4627168987183 + } + ], + "heldout_symmetric": { + "evaluated": 8380, + "inliers": 7204, + "inlier_ratio": 0.8596658711217183, + "inlier_rmse_m": 0.1096145882030974, + "median_m": 0.09658349576477937, + "p90_m": 0.3010394894270168, + "p95_m": 0.5190085385386899 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 58508.399852741386, + 112772.73207991506, + 407285.1416356718, + 950524.5007495433, + 1117838.8726784028, + 1298193.3499779669 + ], + "effective_rank": 6, + "scaled_condition_number": 22.188153380460985, + "weakest_scaled_direction": [ + 0.11582136965640447, + 0.006775672884857004, + -0.0031695562618341616, + -0.444176497896815, + 0.8858491014024351, + 0.06714210870678693 + ] + }, + "forward_reverse": { + "translation_m": 0.010624789877375215, + "rotation_deg": 0.04475651255674721 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.1157603309187458e-15, + "rotation_deg": 1.2964800201870834e-14 + }, + { + "translation_m": 1.1270951119217139e-15, + "rotation_deg": 8.828731538409577e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 28, + "lidar_time_i": 1784785891.9768085, + "lidar_time_j": 1784786087.9670725, + "frame_counter_i": 21049, + "frame_counter_j": 23009, + "rtk_translation_m": 2.1807182972588706, + "rtk_rotation_deg": 88.09106909546726, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.02794331794125587, + 0.9996064287993573, + -0.002481629591481865, + 0.5681087878779979 + ], + [ + -0.9991739702289111, + 0.027857778875472358, + -0.029585830613996573, + -0.06670213050185261 + ], + [ + -0.029505053794709486, + 0.003306305962961535, + 0.9995591629020518, + 0.0500650443896828 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 10552, + "backend_objective": 2861.084834640379, + "backend_elapsed_sec": 0.24945939998724498, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 4687, + "objective": 643.3150383452406 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 8027, + "objective": 1242.5097169540672 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 10552, + "objective": 2861.084834640379 + } + ], + "heldout_symmetric": { + "evaluated": 8356, + "inliers": 7386, + "inlier_ratio": 0.8839157491622786, + "inlier_rmse_m": 0.10490699814192792, + "median_m": 0.08733797867234977, + "p90_m": 0.27613606960126924, + "p95_m": 0.45402360858994406 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 82682.27780212459, + 168903.71160245605, + 579325.9813725054, + 998001.6970349033, + 1092190.697411184, + 1337152.6367189726 + ], + "effective_rank": 6, + "scaled_condition_number": 16.17217948348072, + "weakest_scaled_direction": [ + 0.11472414333302709, + 0.03951060954025923, + 0.0001699842521189172, + -0.7186913158127679, + 0.6809548722664951, + 0.07113724964775964 + ] + }, + "forward_reverse": { + "translation_m": 0.00283419137499405, + "rotation_deg": 0.01585308444597649 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.486410087150353e-16, + "rotation_deg": 5.4383157099047935e-15 + }, + { + "translation_m": 2.5814177514652363e-16, + "rotation_deg": 3.123360171724331e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 29, + "lidar_time_i": 1784785891.9768085, + "lidar_time_j": 1784786160.8647907, + "frame_counter_i": 21049, + "frame_counter_j": 23738, + "rtk_translation_m": 1.118287177357716, + "rtk_rotation_deg": 130.36013420771832, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.6554792015639561, + 0.7549125044169012, + -0.02131025556114215, + -1.0138501579695602 + ], + [ + -0.7545811072038546, + -0.6558240423309178, + -0.022409331800375746, + -1.2140408425635585 + ], + [ + -0.030892862736944093, + 0.0013914653200317241, + 0.9995217330584555, + -0.002294027421849833 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 9, + "backend_num_inliers": 9034, + "backend_objective": 2403.9096357295875, + "backend_elapsed_sec": 0.4588002000236884, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 11, + "num_inliers": 4353, + "objective": 952.0955781454228 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 7273, + "objective": 1439.2033568838797 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 9, + "num_inliers": 9034, + "objective": 2403.9096357295875 + } + ], + "heldout_symmetric": { + "evaluated": 8433, + "inliers": 6626, + "inlier_ratio": 0.7857227558401518, + "inlier_rmse_m": 0.10954358768244267, + "median_m": 0.10404570310842254, + "p90_m": 0.5234137980728498, + "p95_m": 0.8807189068936676 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 51884.27121437365, + 88957.88715316734, + 350078.58413763496, + 622505.5550395454, + 712259.1771191398, + 1044538.6717588378 + ], + "effective_rank": 6, + "scaled_condition_number": 20.132087187715307, + "weakest_scaled_direction": [ + -0.05802820528677275, + -0.11681861725609159, + -0.001750376414787551, + 0.9897821556355021, + -0.021841515083976522, + -0.053266376264503666 + ] + }, + "forward_reverse": { + "translation_m": 0.003247718742817276, + "rotation_deg": 0.01654235380830592 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.226122722799655e-15, + "rotation_deg": 8.065997532841954e-15 + }, + { + "translation_m": 1.8992045430510203e-15, + "rotation_deg": 5.700431053920051e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 30, + "lidar_time_i": 1784785891.9768085, + "lidar_time_j": 1784786252.6621523, + "frame_counter_i": 21049, + "frame_counter_j": 24656, + "rtk_translation_m": 5.200639419572971, + "rtk_rotation_deg": 139.6773015481418, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.7415485874203189, + -0.6660735023609188, + -0.08032298517605073, + 4.525145551100874 + ], + [ + 0.6654541280464478, + -0.7454621282082621, + 0.03817091658780073, + -2.4433543515895604 + ], + [ + -0.08530237957334219, + -0.02514567278619407, + 0.9960377498766088, + 0.17361152672414779 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 21, + "backend_num_inliers": 513, + "backend_objective": 31.346284680384496, + "backend_elapsed_sec": 1.0109276000002865, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": false, + "iterations": 59, + "num_inliers": 1567, + "objective": 1208.1949907460148 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 10, + "num_inliers": 864, + "objective": 177.5990880881666 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 21, + "num_inliers": 513, + "objective": 31.346284680384496 + } + ], + "heldout_symmetric": { + "evaluated": 8516, + "inliers": 431, + "inlier_ratio": 0.05061061531235322, + "inlier_rmse_m": 0.1582745227634446, + "median_m": 1.42219165658378, + "p90_m": 2.427038301987774, + "p95_m": 2.5902417498933428 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 490.56635159621055, + 928.9750833523664, + 2194.934872528774, + 4278.563375388558, + 10170.689040138004, + 91502.51629630265 + ], + "effective_rank": 6, + "scaled_condition_number": 186.52424080569466, + "weakest_scaled_direction": [ + -0.38213351048531646, + 0.7052186120236066, + 0.056981623225864926, + -0.06150354909882429, + -0.07327753384469574, + 0.5867209733051143 + ] + }, + "forward_reverse": { + "translation_m": 2.4401001990983833, + "rotation_deg": 2.63047633237589 + }, + "multistart": { + "runs": 2, + "success_rate": 0.0, + "deltas": [ + { + "translation_m": 2.4421042140292295, + "rotation_deg": 2.6582641602075454 + }, + { + "translation_m": 2.442104214029229, + "rotation_deg": 2.658264160207536 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "heldout_inlier_ratio", + "forward_reverse_translation", + "forward_reverse_rotation", + "multistart_instability" + ] + }, + { + "i": 26, + "j": 27, + "lidar_time_i": 1784785967.8726046, + "lidar_time_j": 1784786031.5701303, + "frame_counter_i": 21808, + "frame_counter_j": 22445, + "rtk_translation_m": 0.6269948654714946, + "rtk_rotation_deg": 25.284375303243706, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9031238228982453, + 0.42936522833220914, + -0.0035862533219896066, + 0.3711056724989209 + ], + [ + -0.4293644705776282, + 0.9031307300292244, + 0.001017783116865379, + -0.16482795850516016 + ], + [ + 0.0036758562611237788, + 0.0006206255795685741, + 0.9999930514281776, + -0.00431354725569091 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 10938, + "backend_objective": 811.4525406525992, + "backend_elapsed_sec": 0.5273160000215285, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 4560, + "objective": 697.2650492601973 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7929, + "objective": 836.697144741172 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 10938, + "objective": 811.4525406525992 + } + ], + "heldout_symmetric": { + "evaluated": 8430, + "inliers": 7746, + "inlier_ratio": 0.9188612099644128, + "inlier_rmse_m": 0.07520973241900301, + "median_m": 0.05006018473217023, + "p90_m": 0.2065512482149949, + "p95_m": 0.3969314123730229 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 81174.14337404088, + 182451.9623876915, + 838767.3286421337, + 1199884.464186407, + 1351752.9872742943, + 1688345.1910577079 + ], + "effective_rank": 6, + "scaled_condition_number": 20.799051531446562, + "weakest_scaled_direction": [ + -0.1269279557441927, + 0.02012257977112855, + -0.0017961179609769589, + 0.4377816793914065, + -0.8836447183718741, + -0.10488261379730929 + ] + }, + "forward_reverse": { + "translation_m": 0.0009920873307779914, + "rotation_deg": 0.005485007138529723 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.1748807752764097e-15, + "rotation_deg": 6.123065417021022e-15 + }, + { + "translation_m": 1.1639597030080818e-15, + "rotation_deg": 4.367736559971788e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 28, + "lidar_time_i": 1784785967.8726046, + "lidar_time_j": 1784786087.9670725, + "frame_counter_i": 21808, + "frame_counter_j": 23009, + "rtk_translation_m": 0.9431372257108486, + "rtk_rotation_deg": 45.14667150900044, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7028250963491841, + 0.7113623889080027, + -0.0006599915605569055, + 0.06176536518270879 + ], + [ + -0.7113623873202674, + 0.7028253528132222, + 0.00027811684655332475, + -0.08328071175713206 + ], + [ + 0.0006617006657618818, + 0.00027402567265381606, + 0.9999997435310471, + -0.0005954271732827069 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 10801, + "backend_objective": 534.3181664847554, + "backend_elapsed_sec": 0.24122669998905621, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 4748, + "objective": 949.241284802782 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 8171, + "objective": 2513.5391287730927 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 10801, + "objective": 534.3181664847554 + } + ], + "heldout_symmetric": { + "evaluated": 8406, + "inliers": 7719, + "inlier_ratio": 0.9182726623840114, + "inlier_rmse_m": 0.07611768518866212, + "median_m": 0.04059061585430375, + "p90_m": 0.2131478655757597, + "p95_m": 0.3964615713414412 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 70976.23343319376, + 181819.20958525562, + 701367.5341389945, + 1143311.0848255146, + 1289037.393578862, + 1561152.034862002 + ], + "effective_rank": 6, + "scaled_condition_number": 21.99541958409829, + "weakest_scaled_direction": [ + 0.11100222475416983, + 0.03730020252776459, + -0.005526869779433164, + -0.718387168296327, + 0.6814336336374053, + 0.07631994546879904 + ] + }, + "forward_reverse": { + "translation_m": 0.004984978187527545, + "rotation_deg": 0.01173507098896779 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.862885956556085e-15, + "rotation_deg": 1.1543706216566264e-14 + }, + { + "translation_m": 5.725780892750994e-16, + "rotation_deg": 9.415390911130637e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 29, + "lidar_time_i": 1784785967.8726046, + "lidar_time_j": 1784786160.8647907, + "frame_counter_i": 21808, + "frame_counter_j": 23738, + "rtk_translation_m": 1.129925637779203, + "rtk_rotation_deg": 87.41573662125148, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.03470211380194069, + 0.9993562264174981, + -0.009104725051107616, + -0.3199563418092457 + ], + [ + -0.9979879755715075, + 0.03416801226538895, + -0.05340924594596154, + -2.0200754492118658 + ], + [ + -0.05306377212714095, + 0.010939819852782688, + 0.9985311995271997, + -0.09378114241650533 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 11, + "backend_num_inliers": 8873, + "backend_objective": 1718.246953239026, + "backend_elapsed_sec": 0.3087177000124939, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 9, + "num_inliers": 4289, + "objective": 1236.2616643766012 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7010, + "objective": 806.1100880618494 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 11, + "num_inliers": 8873, + "objective": 1718.246953239026 + } + ], + "heldout_symmetric": { + "evaluated": 8483, + "inliers": 6665, + "inlier_ratio": 0.7856890251090416, + "inlier_rmse_m": 0.10851393061782179, + "median_m": 0.10143193500378025, + "p90_m": 0.613143045155214, + "p95_m": 1.065452953971831 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 50718.15353182033, + 66920.8825730492, + 272296.88582538516, + 504975.2009951135, + 799466.7762627929, + 1231467.3343045514 + ], + "effective_rank": 6, + "scaled_condition_number": 24.280602674778656, + "weakest_scaled_direction": [ + -0.1343026045163772, + -0.12563575499113513, + -0.0014824618167600682, + 0.9743919766035696, + -0.0292761146792842, + -0.126013708915979 + ] + }, + "forward_reverse": { + "translation_m": 0.002586732426991948, + "rotation_deg": 0.12205883610743135 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.1631705747361533e-15, + "rotation_deg": 1.4531212682559473e-15 + }, + { + "translation_m": 9.413396663333419e-16, + "rotation_deg": 5.8135293892927e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 30, + "lidar_time_i": 1784785967.8726046, + "lidar_time_j": 1784786252.6621523, + "frame_counter_i": 21808, + "frame_counter_j": 24656, + "rtk_translation_m": 4.786676837961511, + "rtk_rotation_deg": 177.3783008654109, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9974292127156142, + 0.03631759761098321, + -0.061773762434199055, + 2.145004548824874 + ], + [ + -0.0352676660442237, + -0.9992157338795015, + -0.018003024730385207, + 0.733319309887677 + ], + [ + -0.06237914197312488, + -0.0157781263595033, + 0.9979277996805584, + 0.026047788577808137 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 8333, + "backend_objective": 1334.6131690579562, + "backend_elapsed_sec": 0.22547109998413362, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 25, + "num_inliers": 3452, + "objective": 587.1121524439146 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6167, + "objective": 655.6197665540117 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 8333, + "objective": 1334.6131690579562 + } + ], + "heldout_symmetric": { + "evaluated": 8566, + "inliers": 6540, + "inlier_ratio": 0.7634835395750642, + "inlier_rmse_m": 0.10495724850674527, + "median_m": 0.09958217844133398, + "p90_m": 0.8079791151263384, + "p95_m": 1.9302179280166931 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 34608.15543152247, + 43123.61476388403, + 265715.63854269474, + 534108.713761383, + 872393.6286266362, + 1204587.854791304 + ], + "effective_rank": 6, + "scaled_condition_number": 34.80647378548578, + "weakest_scaled_direction": [ + 0.25610437555097615, + -0.45385472793807113, + 0.012603992969949959, + 0.11723039710974674, + 0.5237828482246814, + -0.6634577123014321 + ] + }, + "forward_reverse": { + "translation_m": 0.008489213184554775, + "rotation_deg": 0.021733210949123293 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.891945847262976e-15, + "rotation_deg": 5.087485327230505e-15 + }, + { + "translation_m": 4.910462595695867e-15, + "rotation_deg": 8.542034387957128e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 31, + "lidar_time_i": 1784785967.8726046, + "lidar_time_j": 1784786319.6581354, + "frame_counter_i": 21808, + "frame_counter_j": 25326, + "rtk_translation_m": 5.900105669197046, + "rtk_rotation_deg": 156.01119868987135, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9122387381878188, + -0.4056624164439269, + -0.05708317120108187, + 3.2956587640528574 + ], + [ + 0.4079638769679036, + -0.9122642474158343, + -0.036598059731900244, + -0.8535051567956543 + ], + [ + -0.037228478867862326, + -0.056674039662766997, + 0.9976983981091123, + 0.03190686813244759 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 8035, + "backend_objective": 1360.6468693381212, + "backend_elapsed_sec": 0.4356205000076443, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 23, + "num_inliers": 3546, + "objective": 792.9137338629299 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 5988, + "objective": 682.8940585433361 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 8035, + "objective": 1360.6468693381212 + } + ], + "heldout_symmetric": { + "evaluated": 8595, + "inliers": 6338, + "inlier_ratio": 0.7374054682955207, + "inlier_rmse_m": 0.1073752166304431, + "median_m": 0.10542758911588943, + "p90_m": 1.1270312775215576, + "p95_m": 2.1121570469362694 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 25562.79723986299, + 47259.09442307519, + 180655.21775123425, + 520835.8011581698, + 565827.6674258974, + 979324.959882305 + ], + "effective_rank": 6, + "scaled_condition_number": 38.310555401782544, + "weakest_scaled_direction": [ + 0.5497644522988888, + -0.3449139678242669, + 0.01788339127548114, + 0.03787743567272247, + 0.19409353179768077, + -0.7344158133413747 + ] + }, + "forward_reverse": { + "translation_m": 3.545322953478412, + "rotation_deg": 6.459518815762061 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.1335697856308468e-15, + "rotation_deg": 9.803592197741278e-15 + }, + { + "translation_m": 3.607797795906347e-15, + "rotation_deg": 1.9007776078639457e-14 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 27, + "j": 28, + "lidar_time_i": 1784786031.5701303, + "lidar_time_j": 1784786087.9670725, + "frame_counter_i": 22445, + "frame_counter_j": 23009, + "rtk_translation_m": 0.44809323479571145, + "rtk_rotation_deg": 19.862296205756735, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.9401636714419392, + 0.340710825668522, + 0.0028989951859020122, + -0.30982350683162074 + ], + [ + -0.3407145091518092, + 0.940166399919804, + 0.0008739080482501667, + -0.06844035829680675 + ], + [ + -0.002427787934636656, + -0.0018093463209435973, + 0.9999954160453112, + 0.004464905912215504 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 2, + "backend_num_inliers": 10951, + "backend_objective": 606.427818622809, + "backend_elapsed_sec": 0.23274229999515228, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 3, + "num_inliers": 4630, + "objective": 785.1952992467598 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 7968, + "objective": 665.954811389006 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 2, + "num_inliers": 10951, + "objective": 606.427818622809 + } + ], + "heldout_symmetric": { + "evaluated": 8416, + "inliers": 7811, + "inlier_ratio": 0.9281131178707225, + "inlier_rmse_m": 0.07220943509634768, + "median_m": 0.04403731701321004, + "p90_m": 0.18811562604495502, + "p95_m": 0.35130106173559117 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 80494.2534737146, + 175075.44312705335, + 730889.9384384095, + 1199289.3073850137, + 1368295.5925724502, + 1617387.850535562 + ], + "effective_rank": 6, + "scaled_condition_number": 20.093208902964978, + "weakest_scaled_direction": [ + 0.10736818645139508, + 0.04302190485030222, + -0.009815833958952223, + -0.7190468066944476, + 0.6821067206175224, + 0.0650149914697148 + ] + }, + "forward_reverse": { + "translation_m": 0.0023003913248606234, + "rotation_deg": 0.001591751329336308 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.163476238331114e-07, + "rotation_deg": 3.901481935045663e-06 + }, + { + "translation_m": 5.16347623981922e-07, + "rotation_deg": 3.901481943855486e-06 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 29, + "lidar_time_i": 1784786031.5701303, + "lidar_time_j": 1784786160.8647907, + "frame_counter_i": 22445, + "frame_counter_j": 23738, + "rtk_translation_m": 1.160064136065596, + "rtk_rotation_deg": 62.13136131800778, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.4603406364378266, + 0.8876594728866564, + 0.012130896034518506, + 0.17600019957694304 + ], + [ + -0.8863148311795953, + 0.46033210760629706, + -0.05040209060971998, + -1.9661618016540414 + ], + [ + -0.05032413412173226, + 0.012450337398184026, + 0.9986553312447537, + -0.06846817441094133 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 8880, + "backend_objective": 1797.1522464890595, + "backend_elapsed_sec": 0.261398399976315, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4191, + "objective": 929.6927939889017 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 6, + "num_inliers": 6954, + "objective": 972.9245680162205 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 8880, + "objective": 1797.1522464890595 + } + ], + "heldout_symmetric": { + "evaluated": 8493, + "inliers": 6685, + "inlier_ratio": 0.7871188037207112, + "inlier_rmse_m": 0.10966659884725236, + "median_m": 0.1013574723040456, + "p90_m": 0.6097610864767999, + "p95_m": 1.1171204843093478 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 48953.914449273216, + 55627.427153821314, + 200295.46744734797, + 533135.2292310877, + 736133.048259916, + 1175366.3563208021 + ], + "effective_rank": 6, + "scaled_condition_number": 24.009650087098436, + "weakest_scaled_direction": [ + 0.6288058814174804, + 0.06176772657280194, + 0.011765505283860358, + -0.3584361755409766, + 0.10035521707405917, + 0.6797807167048837 + ] + }, + "forward_reverse": { + "translation_m": 0.005134403698947268, + "rotation_deg": 0.02434844099203523 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.1654319641736672e-06, + "rotation_deg": 1.3319221287504758e-06 + }, + { + "translation_m": 1.8875832159447663e-15, + "rotation_deg": 1.4289164825074108e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 30, + "lidar_time_i": 1784786031.5701303, + "lidar_time_j": 1784786252.6621523, + "frame_counter_i": 22445, + "frame_counter_j": 24656, + "rtk_translation_m": 4.25412615059095, + "rtk_rotation_deg": 152.09392556214777, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.8858100038464864, + 0.4617939319265986, + -0.045683711771922236, + 1.2149879932777539 + ], + [ + -0.4601979802113168, + -0.8868485055821013, + -0.04144330049860193, + 1.5745421322554765 + ], + [ + -0.05965279620363769, + -0.015687338288083108, + 0.9980959128873953, + 0.03012566588523843 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 8603, + "backend_objective": 932.2985470706495, + "backend_elapsed_sec": 0.32478230001288466, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 20, + "num_inliers": 3428, + "objective": 592.3834397069093 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 6246, + "objective": 563.2209285662157 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 8603, + "objective": 932.2985470706495 + } + ], + "heldout_symmetric": { + "evaluated": 8576, + "inliers": 6794, + "inlier_ratio": 0.7922108208955224, + "inlier_rmse_m": 0.10147035321534553, + "median_m": 0.09296588374800516, + "p90_m": 0.6966962167797762, + "p95_m": 1.8399922016318797 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 37244.06072129195, + 48286.955476247414, + 268579.3673766598, + 590504.9734161941, + 908007.6380703546, + 1211186.5539530334 + ], + "effective_rank": 6, + "scaled_condition_number": 32.52026042532504, + "weakest_scaled_direction": [ + 0.24302748907356825, + -0.5283085195279866, + 0.008403922224003341, + 0.1320219287158497, + 0.2866465022740477, + -0.7497740425702917 + ] + }, + "forward_reverse": { + "translation_m": 2.795897032209197, + "rotation_deg": 3.237329131939042 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.0412626584890197e-15, + "rotation_deg": 8.617247519670353e-15 + }, + { + "translation_m": 4.100410761679928e-15, + "rotation_deg": 1.4536384404548027e-14 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 27, + "j": 31, + "lidar_time_i": 1784786031.5701303, + "lidar_time_j": 1784786319.6581354, + "frame_counter_i": 22445, + "frame_counter_j": 25326, + "rtk_translation_m": 5.542871649427442, + "rtk_rotation_deg": 178.70442600700352, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9979050969720873, + 0.027048344939739035, + -0.05876907752508933, + 2.9551238370121546 + ], + [ + -0.02438447450158951, + -0.9986629634765509, + -0.0455816057584045, + 0.6360386591134417 + ], + [ + -0.05992340811744937, + -0.04405306364209158, + 0.9972304210879925, + 0.12763394698924757 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 18, + "backend_num_inliers": 8212, + "backend_objective": 1945.2520928958277, + "backend_elapsed_sec": 0.4023098000034224, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 17, + "num_inliers": 3541, + "objective": 848.0741224013657 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 6058, + "objective": 738.3764268966495 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 18, + "num_inliers": 8212, + "objective": 1945.2520928958277 + } + ], + "heldout_symmetric": { + "evaluated": 8605, + "inliers": 6533, + "inlier_ratio": 0.7592097617664149, + "inlier_rmse_m": 0.10539218018667602, + "median_m": 0.09975911295463522, + "p90_m": 0.934381824440062, + "p95_m": 1.947541804572434 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 21284.524566160035, + 50498.56072291494, + 196205.67657885855, + 586911.4100698163, + 707743.5279134141, + 1036698.9438283719 + ], + "effective_rank": 6, + "scaled_condition_number": 48.70669958381899, + "weakest_scaled_direction": [ + -0.5042087794991646, + 0.35714258261121634, + -0.022252976236679236, + -0.07805772187664457, + -0.13395131148577685, + 0.7705138062468655 + ] + }, + "forward_reverse": { + "translation_m": 0.0020939062619997405, + "rotation_deg": 0.027400662783563425 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.973770779879594e-15, + "rotation_deg": 3.3489973535643038e-15 + }, + { + "translation_m": 6.802565439066017e-15, + "rotation_deg": 4.80949775543364e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 32, + "lidar_time_i": 1784786031.5701303, + "lidar_time_j": 1784786396.7558627, + "frame_counter_i": 22445, + "frame_counter_j": 26097, + "rtk_translation_m": 4.8829350360277, + "rtk_rotation_deg": 138.47370648510565, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.7509458718206748, + -0.6582121815948044, + -0.05326369866704795, + 2.363796238809033 + ], + [ + 0.6596818205039412, + -0.7513908553151719, + -0.015220980432944523, + 2.4157428282491122 + ], + [ + -0.03000322136190244, + -0.046567226124634424, + 0.9984644711550658, + 0.15847722034810396 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 7709, + "backend_objective": 1211.2523576835517, + "backend_elapsed_sec": 0.17869219998829067, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 15, + "num_inliers": 3336, + "objective": 667.1961574044783 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5716, + "objective": 705.92570708828 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 7709, + "objective": 1211.2523576835517 + } + ], + "heldout_symmetric": { + "evaluated": 8620, + "inliers": 6448, + "inlier_ratio": 0.7480278422273782, + "inlier_rmse_m": 0.10408734715846867, + "median_m": 0.0983782577351282, + "p90_m": 0.8872251371988249, + "p95_m": 1.815939689403135 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 24167.684967358422, + 40654.13815137258, + 215584.83416971556, + 442620.2257086406, + 573999.9884323122, + 1020241.2859588515 + ], + "effective_rank": 6, + "scaled_condition_number": 42.21510199826003, + "weakest_scaled_direction": [ + -0.5733559641826801, + -0.0929364770007991, + -0.02977883986877105, + 0.0198099718342983, + -0.12686307680730688, + 0.8032759768808019 + ] + }, + "forward_reverse": { + "translation_m": 0.004407463145306061, + "rotation_deg": 0.03490543724836902 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.3751912131156618e-15, + "rotation_deg": 3.7446554573462103e-14 + }, + { + "translation_m": 2.713491258038064e-15, + "rotation_deg": 2.785942364838836e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 28, + "j": 29, + "lidar_time_i": 1784786087.9670725, + "lidar_time_j": 1784786160.8647907, + "frame_counter_i": 23009, + "frame_counter_j": 23738, + "rtk_translation_m": 1.5995723610319212, + "rtk_rotation_deg": 42.26906511225104, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7362093340643086, + 0.6767167344736805, + 0.007090678378428652, + 1.071413985458336 + ], + [ + -0.6766225434918797, + 0.7362324645170495, + -0.011987152694923479, + -1.6090303957898822 + ], + [ + -0.013332294444994276, + 0.004027340863361518, + 0.9999030105217218, + -0.13494438029632055 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 13, + "backend_num_inliers": 9029, + "backend_objective": 2843.675226565929, + "backend_elapsed_sec": 0.2490686000091955, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 4341, + "objective": 967.4364779901053 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 7264, + "objective": 1279.8645767110825 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 13, + "num_inliers": 9029, + "objective": 2843.675226565929 + } + ], + "heldout_symmetric": { + "evaluated": 8469, + "inliers": 6672, + "inlier_ratio": 0.787814381863266, + "inlier_rmse_m": 0.10901449493832843, + "median_m": 0.10481026201629562, + "p90_m": 0.49592047017348523, + "p95_m": 0.9056696238048947 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 39538.16289007739, + 73499.54792276234, + 351689.45700439246, + 613087.5863189875, + 774062.685912839, + 1024577.1429155618 + ], + "effective_rank": 6, + "scaled_condition_number": 25.913625419675043, + "weakest_scaled_direction": [ + 0.045933636579248004, + 0.09429090142979553, + 0.003066408361722544, + -0.993221521831769, + 0.01689164427106617, + 0.04707021353175564 + ] + }, + "forward_reverse": { + "translation_m": 0.01570175790237609, + "rotation_deg": 0.03569660498137675 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.99936494731956e-15, + "rotation_deg": 7.502018180733867e-15 + }, + { + "translation_m": 2.4531909608143503e-15, + "rotation_deg": 6.622111658022343e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 28, + "j": 30, + "lidar_time_i": 1784786087.9670725, + "lidar_time_j": 1784786252.6621523, + "frame_counter_i": 23009, + "frame_counter_j": 24656, + "rtk_translation_m": 4.295353381127667, + "rtk_rotation_deg": 132.23162935639104, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.6760087824505582, + 0.7362190438779801, + -0.03152214271124597, + 0.8901568205649555 + ], + [ + -0.7342642564077458, + -0.6765905457056717, + -0.05550887517940145, + 2.0513879361745273 + ], + [ + -0.06219427475013507, + -0.014378904446975304, + 0.9979604798263357, + 0.02732725021921613 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 3, + "backend_num_inliers": 8462, + "backend_objective": 1033.3872289347796, + "backend_elapsed_sec": 0.2416990000056103, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 19, + "num_inliers": 3483, + "objective": 568.8961922406211 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 6204, + "objective": 662.5935048543948 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 3, + "num_inliers": 8462, + "objective": 1033.3872289347796 + } + ], + "heldout_symmetric": { + "evaluated": 8552, + "inliers": 6663, + "inlier_ratio": 0.7791159962581852, + "inlier_rmse_m": 0.10438560755009844, + "median_m": 0.09728337532058973, + "p90_m": 0.7630484928580537, + "p95_m": 1.8669807591970238 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 32498.535827997093, + 48640.37423220076, + 226554.466392085, + 609517.9859190829, + 795092.4034258014, + 1186251.087853302 + ], + "effective_rank": 6, + "scaled_condition_number": 36.501677925790155, + "weakest_scaled_direction": [ + 0.26948518494585755, + -0.540064648301011, + 0.010842450381565585, + 0.13578550124464578, + 0.203205014896343, + -0.7588546445747322 + ] + }, + "forward_reverse": { + "translation_m": 0.01170149615735483, + "rotation_deg": 0.047047156693309715 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.206618228699196e-15, + "rotation_deg": 1.9431428923939297e-14 + }, + { + "translation_m": 3.0473359533946916e-15, + "rotation_deg": 1.163749918839277e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 28, + "j": 31, + "lidar_time_i": 1784786087.9670725, + "lidar_time_j": 1784786319.6581354, + "frame_counter_i": 23009, + "frame_counter_j": 25326, + "rtk_translation_m": 5.754426930327516, + "rtk_rotation_deg": 158.8421298011293, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9303902474071115, + 0.36508188963208027, + -0.033003051259009854, + 2.8284182836168354 + ], + [ + -0.363087190802378, + -0.9301888111610445, + -0.05400432821580924, + 1.7633871918800694 + ], + [ + -0.05041507120864407, + -0.038262115120220756, + 0.9979951558707858, + 0.15634937405808638 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 8121, + "backend_objective": 1740.6035833865592, + "backend_elapsed_sec": 0.2890383999911137, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 17, + "num_inliers": 3597, + "objective": 824.8767919640718 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 6094, + "objective": 736.988474503722 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 8121, + "objective": 1740.6035833865592 + } + ], + "heldout_symmetric": { + "evaluated": 8581, + "inliers": 6392, + "inlier_ratio": 0.7449015266285981, + "inlier_rmse_m": 0.10668967013687296, + "median_m": 0.10531341138130089, + "p90_m": 1.0053754405662703, + "p95_m": 1.9627586238932788 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 20995.693414343335, + 46707.725316051285, + 211564.8757680219, + 621586.3891891531, + 652107.4291910302, + 1008766.8481560131 + ], + "effective_rank": 6, + "scaled_condition_number": 48.04636971250818, + "weakest_scaled_direction": [ + 0.5227914353597811, + -0.3659326834521487, + 0.020922125281067794, + 0.06950211817973835, + 0.14035396052457247, + -0.7535349177730843 + ] + }, + "forward_reverse": { + "translation_m": 0.024421374377245158, + "rotation_deg": 0.6810283060803514 + }, + "multistart": { + "runs": 2, + "success_rate": 0.5, + "deltas": [ + { + "translation_m": 2.278870654723489, + "rotation_deg": 27.152572051918433 + }, + { + "translation_m": 4.279482949896486e-12, + "rotation_deg": 2.088674083980014e-12 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_rotation" + ] + }, + { + "i": 28, + "j": 32, + "lidar_time_i": 1784786087.9670725, + "lidar_time_j": 1784786396.7558627, + "frame_counter_i": 23009, + "frame_counter_j": 26097, + "rtk_translation_m": 5.013331477001236, + "rtk_rotation_deg": 158.33600269086247, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.930669944618636, + -0.3630363556170548, + -0.04536583167796383, + 1.6790276087030118 + ], + [ + 0.36443428954838386, + -0.9308247556134477, + -0.027439441294071252, + 3.227669784651088 + ], + [ + -0.03226612441727374, + -0.042069927946849925, + 0.9985935200959575, + 0.11020026838055202 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 7569, + "backend_objective": 1075.938284372832, + "backend_elapsed_sec": 0.3297512999852188, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 14, + "num_inliers": 3395, + "objective": 826.2633861070965 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5667, + "objective": 605.0213239756274 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 7569, + "objective": 1075.938284372832 + } + ], + "heldout_symmetric": { + "evaluated": 8596, + "inliers": 6283, + "inlier_ratio": 0.7309213587715216, + "inlier_rmse_m": 0.1081318944415262, + "median_m": 0.10796326250295199, + "p90_m": 0.927995728766249, + "p95_m": 1.8889543501782344 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 18586.731567653023, + 37160.3785405743, + 169659.12510311973, + 437141.69031035266, + 531025.7996655877, + 970929.9037441188 + ], + "effective_rank": 6, + "scaled_condition_number": 52.23779663520043, + "weakest_scaled_direction": [ + -0.5713487278042236, + -0.07494505129605988, + -0.02146221614858828, + 0.03239816051334563, + -0.13023859300458032, + 0.8058979537685004 + ] + }, + "forward_reverse": { + "translation_m": 0.10324080390042788, + "rotation_deg": 0.9479198721286788 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.9429398559897372e-15, + "rotation_deg": 6.776927420547786e-15 + }, + { + "translation_m": 1.1123893155135927e-15, + "rotation_deg": 1.8791633839924055e-14 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 28, + "j": 33, + "lidar_time_i": 1784786087.9670725, + "lidar_time_j": 1784786557.4492514, + "frame_counter_i": 23009, + "frame_counter_j": 27704, + "rtk_translation_m": 5.317102997899902, + "rtk_rotation_deg": 67.05379893079937, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.38788467389975195, + -0.9214830197874527, + -0.020359862403267318, + 4.252162874860791 + ], + [ + 0.9216187963002136, + 0.3880597018431465, + -0.005334989367779181, + 2.841996708458498 + ], + [ + 0.012816944246934511, + -0.0166946712697575, + 0.9997784824106623, + 0.11143063248591845 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 6283, + "backend_objective": 1056.6324024222768, + "backend_elapsed_sec": 0.27772909999475814, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 9, + "num_inliers": 3033, + "objective": 1220.7479350341719 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 6, + "num_inliers": 4774, + "objective": 734.7842473071777 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 6283, + "objective": 1056.6324024222768 + } + ], + "heldout_symmetric": { + "evaluated": 8269, + "inliers": 5534, + "inlier_ratio": 0.6692465836255895, + "inlier_rmse_m": 0.10871806386783629, + "median_m": 0.1283207800220331, + "p90_m": 1.3608911810867883, + "p95_m": 2.616512527570886 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 15810.591547811695, + 30211.336260541786, + 81867.35983763795, + 293456.19450604514, + 695822.1083108579, + 864424.5280670088 + ], + "effective_rank": 6, + "scaled_condition_number": 54.67376255043738, + "weakest_scaled_direction": [ + -0.11114038125185813, + -0.527895538293014, + -0.00588732862552283, + 0.0559357125845531, + -0.05816039858535397, + 0.838109789801567 + ] + }, + "forward_reverse": { + "translation_m": 0.13259351588266985, + "rotation_deg": 0.659391929056215 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 6.78877776696119e-16, + "rotation_deg": 3.7452646711452355e-15 + }, + { + "translation_m": 8.920730087951354e-16, + "rotation_deg": 8.034144267400096e-15 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 29, + "j": 30, + "lidar_time_i": 1784786160.8647907, + "lidar_time_j": 1784786252.6621523, + "frame_counter_i": 23738, + "frame_counter_j": 24656, + "rtk_translation_m": 4.099530130205247, + "rtk_rotation_deg": 89.96256424413995, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.0012310923998671594, + 0.9998865761692972, + -0.015010636493604798, + -2.6507392467255673 + ], + [ + -0.9991148525963036, + 0.0005987037388502235, + -0.042061299020595536, + 2.5514434876541814 + ], + [ + -0.042047541342745014, + 0.015049131213237437, + 0.9990022662220331, + -0.04552237979568302 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 8030, + "backend_objective": 1713.3749243544414, + "backend_elapsed_sec": 0.23009660001844168, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 7, + "num_inliers": 3414, + "objective": 805.3447701288949 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 3, + "num_inliers": 5991, + "objective": 736.3476657437233 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 8030, + "objective": 1713.3749243544414 + } + ], + "heldout_symmetric": { + "evaluated": 8629, + "inliers": 6317, + "inlier_ratio": 0.7320662880982732, + "inlier_rmse_m": 0.10929719051930432, + "median_m": 0.11164279747018017, + "p90_m": 0.9234305725909965, + "p95_m": 2.032984862051835 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 33224.82407489841, + 39053.3839477185, + 164344.4175094853, + 626745.4953590671, + 656812.6616835463, + 1021509.0142151543 + ], + "effective_rank": 6, + "scaled_condition_number": 30.745355096911158, + "weakest_scaled_direction": [ + -0.09413487569020736, + 0.4337575868847141, + -0.005227092736285117, + -0.10771559349826082, + -0.6632402506699799, + 0.5928535901120993 + ] + }, + "forward_reverse": { + "translation_m": 0.005463604154015333, + "rotation_deg": 0.018583483487870766 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 2.1868857395626282e-15, + "rotation_deg": 1.1175442615353005e-14 + }, + { + "translation_m": 1.850747526296523e-15, + "rotation_deg": 8.419547904429345e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 31, + "lidar_time_i": 1784786160.8647907, + "lidar_time_j": 1784786319.6581354, + "frame_counter_i": 23738, + "frame_counter_j": 25326, + "rtk_translation_m": 4.890018768530818, + "rtk_rotation_deg": 116.57306468887772, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.43723742875106525, + 0.8991826513046896, + -0.017146150933295943, + -1.0307989602890875 + ], + [ + -0.8979979722858205, + -0.43754615711202294, + -0.04640045438415313, + 3.6543370157340873 + ], + [ + -0.04922471604501145, + -0.004890806597201827, + 0.9987757542817691, + 0.049133468528889244 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 7925, + "backend_objective": 1769.8076883626966, + "backend_elapsed_sec": 0.26582209998741746, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 16, + "num_inliers": 3617, + "objective": 960.0819434627389 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5985, + "objective": 876.4566638599943 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 7925, + "objective": 1769.8076883626966 + } + ], + "heldout_symmetric": { + "evaluated": 8658, + "inliers": 6281, + "inlier_ratio": 0.7254562254562255, + "inlier_rmse_m": 0.11323336570178015, + "median_m": 0.11723386613510434, + "p90_m": 1.064547564398538, + "p95_m": 1.9809746034725115 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 20136.7696123405, + 42871.465324088065, + 131612.35066134, + 556857.0961299242, + 689799.0153677568, + 988650.7333495542 + ], + "effective_rank": 6, + "scaled_condition_number": 49.09678922599757, + "weakest_scaled_direction": [ + 0.4277393915199425, + -0.4105567476274941, + 0.02892181270051879, + 0.06063468721320484, + 0.1660065808691613, + -0.785118429591668 + ] + }, + "forward_reverse": { + "translation_m": 0.0050777995851252426, + "rotation_deg": 0.07265894091769333 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0681389886409907e-15, + "rotation_deg": 2.7113317337090846e-15 + }, + { + "translation_m": 1.6699540590904642e-15, + "rotation_deg": 5.663873124781354e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 32, + "lidar_time_i": 1784786160.8647907, + "lidar_time_j": 1784786396.7558627, + "frame_counter_i": 23738, + "frame_counter_j": 26097, + "rtk_translation_m": 4.464737187763289, + "rtk_rotation_deg": 159.39493219688632, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9287022426398309, + 0.36526535866124465, + -0.063979389476768, + -2.8821443153763675 + ], + [ + -0.363403678551462, + -0.9308121962196632, + -0.03906944821716455, + 3.95876649188571 + ], + [ + -0.07382351204740314, + -0.013033538690647307, + 0.9971861490906231, + -0.04150580210044566 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 9, + "backend_num_inliers": 7098, + "backend_objective": 847.1028890149273, + "backend_elapsed_sec": 0.208673799992539, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 15, + "num_inliers": 3252, + "objective": 928.1174362656283 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 4, + "num_inliers": 5284, + "objective": 613.0189434739622 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 9, + "num_inliers": 7098, + "objective": 847.1028890149273 + } + ], + "heldout_symmetric": { + "evaluated": 8673, + "inliers": 6035, + "inlier_ratio": 0.695837657096737, + "inlier_rmse_m": 0.10999820041072961, + "median_m": 0.11856484192304849, + "p90_m": 1.3695983452465426, + "p95_m": 2.318369261085353 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 12816.872775093498, + 34624.611186322, + 79864.7620104077, + 306966.31397232565, + 446538.5579148462, + 926081.3919820852 + ], + "effective_rank": 6, + "scaled_condition_number": 72.25486343140591, + "weakest_scaled_direction": [ + -0.5609358943007624, + -0.031757345479722976, + -0.04242343532856239, + -0.044892356341308934, + -0.10186183904800453, + 0.8186278078076092 + ] + }, + "forward_reverse": { + "translation_m": 0.011220553177198233, + "rotation_deg": 0.14599088546526143 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.286180355332504e-15, + "rotation_deg": 4.1196618816307535e-14 + }, + { + "translation_m": 4.332083504579744e-15, + "rotation_deg": 3.9682054577800965e-14 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 33, + "lidar_time_i": 1784786160.8647907, + "lidar_time_j": 1784786557.4492514, + "frame_counter_i": 23738, + "frame_counter_j": 27704, + "rtk_translation_m": 4.34670323578768, + "rtk_rotation_deg": 109.32286404305042, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.3386836842782954, + -0.9398351256887554, + -0.04475822299064756, + -0.7156186018327474 + ], + [ + 0.9408521283995702, + -0.3387642703034672, + -0.0060034699764541614, + 5.422264417082001 + ], + [ + -0.009520214791617123, + -0.04414414669421295, + 0.9989798095171697, + 0.10687802099727334 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 5, + "backend_num_inliers": 6193, + "backend_objective": 744.6490346717907, + "backend_elapsed_sec": 0.17971780002699234, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 11, + "num_inliers": 2951, + "objective": 711.086820565191 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 4635, + "objective": 437.3265497556991 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 5, + "num_inliers": 6193, + "objective": 744.6490346717907 + } + ], + "heldout_symmetric": { + "evaluated": 8346, + "inliers": 5327, + "inlier_ratio": 0.6382698298586149, + "inlier_rmse_m": 0.11215583949685817, + "median_m": 0.14520929531596044, + "p90_m": 1.5015977974792296, + "p95_m": 2.812255846305743 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 11286.92840920206, + 33496.067983452005, + 46351.05198108295, + 286588.33751607593, + 437386.25194414007, + 820182.2073539195 + ], + "effective_rank": 6, + "scaled_condition_number": 72.66655529463955, + "weakest_scaled_direction": [ + -0.0767098257039795, + -0.5433899373229041, + -0.018979886948973443, + 0.06663396687063634, + -0.02082048815085103, + 0.8328320144424819 + ] + }, + "forward_reverse": { + "translation_m": 0.018977478007060265, + "rotation_deg": 0.05615608666616428 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.318490179505439e-15, + "rotation_deg": 1.2660751159554717e-14 + }, + { + "translation_m": 1.6919522065759386e-15, + "rotation_deg": 7.834568279051473e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 30, + "j": 31, + "lidar_time_i": 1784786252.6621523, + "lidar_time_j": 1784786319.6581354, + "frame_counter_i": 24656, + "frame_counter_j": 25326, + "rtk_translation_m": 2.3862917603439455, + "rtk_rotation_deg": 26.61050044473775, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.8989475344036485, + 0.43787368498375995, + 0.012647781953582345, + -1.1119692098002136 + ], + [ + -0.43784633789327093, + 0.8990359023877583, + -0.0050030601916877535, + 1.6142148563367478 + ], + [ + -0.013561518464172369, + -0.0010402963870578753, + 0.9999074972218043, + 0.06670916408811281 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 4, + "backend_num_inliers": 9030, + "backend_objective": 2838.56174256091, + "backend_elapsed_sec": 0.21705209999345243, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 4, + "num_inliers": 3832, + "objective": 649.4384598184905 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 6674, + "objective": 1247.530375303141 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 4, + "num_inliers": 9030, + "objective": 2838.56174256091 + } + ], + "heldout_symmetric": { + "evaluated": 8741, + "inliers": 7243, + "inlier_ratio": 0.8286237272623269, + "inlier_rmse_m": 0.0964659694513182, + "median_m": 0.0815457046710185, + "p90_m": 0.448596515484814, + "p95_m": 0.79004098341329 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 39614.968185220445, + 56182.379478586656, + 439112.9640769325, + 708330.6129733466, + 1136223.0809684258, + 1625605.49026203 + ], + "effective_rank": 6, + "scaled_condition_number": 41.03513305025223, + "weakest_scaled_direction": [ + -0.5038215917986367, + 0.3795009264482512, + -0.02492737521847699, + -0.04265298956337161, + -0.21924065971527756, + 0.7427218402848003 + ] + }, + "forward_reverse": { + "translation_m": 0.018905314487385798, + "rotation_deg": 0.08632503464137033 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 1.0077414646998453e-15, + "rotation_deg": 5.347190835862908e-15 + }, + { + "translation_m": 8.879886640496848e-16, + "rotation_deg": 8.906732277533139e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 30, + "j": 32, + "lidar_time_i": 1784786252.6621523, + "lidar_time_j": 1784786396.7558627, + "frame_counter_i": 24656, + "frame_counter_j": 26097, + "rtk_translation_m": 1.1507634071714652, + "rtk_rotation_deg": 69.43236795274659, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.3635790250163329, + 0.9315010454563274, + -0.010774733497488831, + -1.4000417256838453 + ], + [ + -0.9313244073617958, + 0.3631994931620142, + -0.026851004060477888, + -0.22813528469719024 + ], + [ + -0.0210983606086435, + 0.019797234166048228, + 0.9995813767267787, + -0.017082824030759496 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 8420, + "backend_objective": 1522.3805554597175, + "backend_elapsed_sec": 0.19040469999890774, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 6, + "num_inliers": 3718, + "objective": 842.3184574635156 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 6364, + "objective": 996.5050498034586 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 8420, + "objective": 1522.3805554597175 + } + ], + "heldout_symmetric": { + "evaluated": 8756, + "inliers": 7062, + "inlier_ratio": 0.8065326633165829, + "inlier_rmse_m": 0.09815063400019142, + "median_m": 0.08081841340365783, + "p90_m": 0.4790676298185709, + "p95_m": 0.8509769492049389 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 33159.95234572108, + 61064.351291159524, + 300223.63441742276, + 580862.1428546602, + 1012404.3729176935, + 1169099.16978869 + ], + "effective_rank": 6, + "scaled_condition_number": 35.25635856167173, + "weakest_scaled_direction": [ + 0.5881064317233109, + 0.05070078092882424, + 0.03823123726649609, + 0.001175631167941189, + 0.13265592976422702, + -0.7952984662789812 + ] + }, + "forward_reverse": { + "translation_m": 0.007341509941520892, + "rotation_deg": 0.023973741904832375 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 4.967007407645019e-16, + "rotation_deg": 1.129323802870724e-14 + }, + { + "translation_m": 1.0968776017955963e-15, + "rotation_deg": 9.356307217897543e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 30, + "j": 33, + "lidar_time_i": 1784786252.6621523, + "lidar_time_j": 1784786557.4492514, + "frame_counter_i": 24656, + "frame_counter_j": 27704, + "rtk_translation_m": 2.4361832484951105, + "rtk_rotation_deg": 160.7145717128102, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.9400013202324404, + 0.3385127577275178, + -0.04250447996366474, + -2.856095359067646 + ], + [ + -0.3379804420015197, + -0.9409539976099159, + -0.01935962826027831, + 1.9422371207085336 + ], + [ + -0.046548241489107356, + -0.003832393198706708, + 0.9989086915112121, + -0.09300301217907853 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 8, + "backend_num_inliers": 6823, + "backend_objective": 1135.817399835205, + "backend_elapsed_sec": 0.3080756000126712, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 25, + "num_inliers": 3121, + "objective": 692.6900700881857 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 2, + "num_inliers": 5122, + "objective": 629.0793980265928 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 8, + "num_inliers": 6823, + "objective": 1135.817399835205 + } + ], + "heldout_symmetric": { + "evaluated": 8429, + "inliers": 5871, + "inlier_ratio": 0.6965239055641239, + "inlier_rmse_m": 0.10032655671840386, + "median_m": 0.10289132389486434, + "p90_m": 1.433755765502277, + "p95_m": 2.8449510457378637 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 21269.049129287097, + 43220.49541138773, + 143861.22694174797, + 374188.2654787455, + 858092.1463472905, + 1001548.3325752582 + ], + "effective_rank": 6, + "scaled_condition_number": 47.08947384000088, + "weakest_scaled_direction": [ + 0.029213001468576423, + -0.5652672682847729, + -0.023650617681046388, + 0.06413597024714679, + -0.056655594406544565, + 0.8195955619555723 + ] + }, + "forward_reverse": { + "translation_m": 2.6257249086936962, + "rotation_deg": 3.1197630566421646 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 9.671732905683864e-16, + "rotation_deg": 6.176094161148719e-15 + }, + { + "translation_m": 1.7607443281164592e-15, + "rotation_deg": 7.464986187847517e-16 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation", + "forward_reverse_rotation" + ] + }, + { + "i": 31, + "j": 32, + "lidar_time_i": 1784786319.6581354, + "lidar_time_j": 1784786396.7558627, + "frame_counter_i": 25326, + "frame_counter_j": 26097, + "rtk_translation_m": 1.2514382602180638, + "rtk_rotation_deg": 42.82186750800885, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + 0.7353113602326208, + 0.6777277042877701, + -0.0015369950169060941, + 0.5530845769120833 + ], + [ + -0.6774253813669432, + 0.7349116437545313, + -0.031618484370138845, + -1.7917526299146316 + ], + [ + -0.02029916729091594, + 0.02429063018618735, + 0.9994988289600204, + -0.10343719713454098 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 6, + "backend_num_inliers": 8422, + "backend_objective": 2055.9101310021338, + "backend_elapsed_sec": 0.2686489000043366, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 5, + "num_inliers": 3699, + "objective": 762.3984311068843 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 7, + "num_inliers": 6339, + "objective": 1077.2456436698762 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 6, + "num_inliers": 8422, + "objective": 2055.9101310021338 + } + ], + "heldout_symmetric": { + "evaluated": 8785, + "inliers": 7157, + "inlier_ratio": 0.8146841206602162, + "inlier_rmse_m": 0.09914628416022417, + "median_m": 0.07863922529321844, + "p90_m": 0.48657998937736363, + "p95_m": 0.9652907911717594 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 29897.54623750982, + 58540.09758264833, + 335733.4103235305, + 598662.87959459, + 824114.362410073, + 1026434.5393505907 + ], + "effective_rank": 6, + "scaled_condition_number": 34.33173181492779, + "weakest_scaled_direction": [ + 0.6139279563856824, + 0.08135787148474027, + 0.03614189759065114, + -0.024105337993162983, + 0.13915399307834964, + -0.7715064635145351 + ] + }, + "forward_reverse": { + "translation_m": 0.06936877058296162, + "rotation_deg": 0.45703051311645637 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 3.67237313403358e-16, + "rotation_deg": 6.140570249398282e-15 + }, + { + "translation_m": 6.533255114602682e-16, + "rotation_deg": 5.631533653209629e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 31, + "j": 33, + "lidar_time_i": 1784786319.6581354, + "lidar_time_j": 1784786557.4492514, + "frame_counter_i": 25326, + "frame_counter_j": 27704, + "rtk_translation_m": 0.641507519046697, + "rtk_rotation_deg": 134.10407126807203, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.6960818822066489, + 0.7173572674847195, + -0.029471410731518533, + -1.7220967320600726 + ], + [ + -0.7158947868474338, + -0.6966053187872006, + -0.04728302022978844, + -0.48226454262285273 + ], + [ + -0.05444875965820372, + -0.01181442441423255, + 0.9984466695559878, + -0.06326391574421514 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 9, + "backend_num_inliers": 7550, + "backend_objective": 1621.057072695131, + "backend_elapsed_sec": 0.3225730999838561, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": true, + "iterations": 11, + "num_inliers": 3389, + "objective": 675.7652685443331 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": true, + "iterations": 5, + "num_inliers": 5781, + "objective": 1650.7089582896813 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 9, + "num_inliers": 7550, + "objective": 1621.057072695131 + } + ], + "heldout_symmetric": { + "evaluated": 8458, + "inliers": 6387, + "inlier_ratio": 0.7551430598250177, + "inlier_rmse_m": 0.1003246191461096, + "median_m": 0.08751950331668279, + "p90_m": 0.8156765153565828, + "p95_m": 2.0828499949927592 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 32757.33367444599, + 67334.04675645688, + 175860.31026392666, + 428422.7141007091, + 788425.2815674562, + 934807.4930133051 + ], + "effective_rank": 6, + "scaled_condition_number": 28.537349904719164, + "weakest_scaled_direction": [ + 0.014200388727543551, + -0.5662779138973728, + -0.02580493319100964, + 0.08471808496748096, + -0.00467411957355558, + 0.8193062780796254 + ] + }, + "forward_reverse": { + "translation_m": 0.005559091155811048, + "rotation_deg": 0.0330053182501105 + }, + "multistart": { + "runs": 2, + "success_rate": 1.0, + "deltas": [ + { + "translation_m": 5.095246377785861e-16, + "rotation_deg": 7.369239496130195e-15 + }, + { + "translation_m": 1.7452973491944015e-15, + "rotation_deg": 6.13197128276296e-15 + } + ] + }, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 32, + "j": 33, + "lidar_time_i": 1784786396.7558627, + "lidar_time_j": 1784786557.4492514, + "frame_counter_i": 26097, + "frame_counter_j": 27704, + "rtk_translation_m": 1.4370687242949811, + "rtk_rotation_deg": 91.2822037600631, + "nearest_rtk_dt_i_s": 0.0, + "nearest_rtk_dt_j_s": 0.0, + "initial_B_source": "X0=identity; B0=A (no measured extrinsic)", + "B_ij_4x4": [ + [ + -0.03553714800116292, + 0.9993149516431566, + -0.010331434284676484, + -1.3966905543976256 + ], + [ + -0.9987095986600396, + -0.03588712491476379, + -0.03593399239793585, + 1.6567592534208615 + ], + [ + -0.0362801413482118, + 0.009041110981913531, + 0.9993007603599455, + 0.18107882372357556 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "backend": "small_gicp", + "backend_converged": true, + "backend_iterations": 18, + "backend_num_inliers": 434, + "backend_objective": 19.5164628284166, + "backend_elapsed_sec": 0.6570993000059389, + "multiscale_stages": [ + { + "voxel_m": 0.3, + "max_correspondence_m": 1.2, + "converged": false, + "iterations": 59, + "num_inliers": 1049, + "objective": 883.1483573831881 + }, + { + "voxel_m": 0.15, + "max_correspondence_m": 0.5, + "converged": false, + "iterations": 59, + "num_inliers": 845, + "objective": 182.6938800328335 + }, + { + "voxel_m": 0.08, + "max_correspondence_m": 0.25, + "converged": true, + "iterations": 18, + "num_inliers": 434, + "objective": 19.5164628284166 + } + ], + "heldout_symmetric": { + "evaluated": 8473, + "inliers": 368, + "inlier_ratio": 0.043432078366576185, + "inlier_rmse_m": 0.1661924920133195, + "median_m": 1.3116363900492476, + "p90_m": 2.516004269498909, + "p95_m": 2.6755523843181948 + }, + "hessian": { + "native_order": [ + "rx_rad", + "ry_rad", + "rz_rad", + "tx_m", + "ty_m", + "tz_m" + ], + "scaled_eigenvalues": [ + 642.7747431708625, + 954.735320433794, + 1133.575997940253, + 1939.7523753118437, + 14074.629767093451, + 56882.75167846326 + ], + "effective_rank": 6, + "scaled_condition_number": 88.4956235178996, + "weakest_scaled_direction": [ + 0.12024798769106836, + -0.6749797371841314, + 0.08183100517680016, + -0.05162316535972436, + -0.20059941130013623, + 0.6930666543869539 + ] + }, + "forward_reverse": { + "translation_m": 0.946171384319174, + "rotation_deg": 3.5092968853566924 + }, + "multistart": { + "runs": 2, + "success_rate": 0.0, + "deltas": [ + { + "translation_m": 2.5266613224139265, + "rotation_deg": 1.139524458087656 + }, + { + "translation_m": 0.8870093669430473, + "rotation_deg": 5.456250095042409 + } + ] + }, + "accepted": false, + "rejection_reasons": [ + "heldout_inlier_ratio", + "heldout_inlier_rmse", + "forward_reverse_translation", + "forward_reverse_rotation", + "multistart_instability" + ] + } + ] +} \ No newline at end of file diff --git a/results/02_data4_calibration/small_gicp/B_refined.npz b/results/02_data4_calibration/small_gicp/B_refined.npz new file mode 100644 index 0000000..5843ea1 Binary files /dev/null and b/results/02_data4_calibration/small_gicp/B_refined.npz differ diff --git a/results/02_data4_calibration/small_gicp/B_refined.refinement.json b/results/02_data4_calibration/small_gicp/B_refined.refinement.json new file mode 100644 index 0000000..79e3046 --- /dev/null +++ b/results/02_data4_calibration/small_gicp/B_refined.refinement.json @@ -0,0 +1,1666 @@ +{ + "selection_is_X_independent": true, + "criteria": { + "min_inlier_ratio": 0.7, + "max_inlier_rmse_m": 0.13, + "max_rotation_invariant_error_deg": 0.75, + "reverse_translation_tolerance_m": 0.05, + "reverse_rotation_tolerance_deg": 0.5 + }, + "input_pairs": 133, + "accepted_pairs": 57, + "pairs": [ + { + "i": 0, + "j": 1, + "heldout_inlier_ratio": 0.8193962748876044, + "heldout_inlier_rmse_m": 0.11049677170760565, + "rotation_invariant_error_deg": 0.03734008173614711, + "reverse_translation_m": 0.026680306344951596, + "reverse_rotation_deg": 0.12400141971813113, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 0, + "j": 2, + "heldout_inlier_ratio": 0.7525388867463684, + "heldout_inlier_rmse_m": 0.11492533799497681, + "rotation_invariant_error_deg": 0.6760112300786432, + "reverse_translation_m": 0.0018465318763874656, + "reverse_rotation_deg": 0.03093450642761156, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 0, + "j": 3, + "heldout_inlier_ratio": 0.628093901505486, + "heldout_inlier_rmse_m": 0.12365050970311489, + "rotation_invariant_error_deg": 0.3329548009851493, + "reverse_translation_m": 0.010524333328229862, + "reverse_rotation_deg": 0.23898233567763014, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 0, + "j": 5, + "heldout_inlier_ratio": 0.6015065913370998, + "heldout_inlier_rmse_m": 0.12959862169013578, + "rotation_invariant_error_deg": 0.8874651368963384, + "reverse_translation_m": 0.013711901937629547, + "reverse_rotation_deg": 0.26024107991311357, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 1, + "j": 3, + "heldout_inlier_ratio": 0.678820988438572, + "heldout_inlier_rmse_m": 0.12109867185657652, + "rotation_invariant_error_deg": 0.28201354980991766, + "reverse_translation_m": 0.008324315958289934, + "reverse_rotation_deg": 0.25689852176843175, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 1, + "j": 4, + "heldout_inlier_ratio": 0.6772473651580905, + "heldout_inlier_rmse_m": 0.11157492180388107, + "rotation_invariant_error_deg": 0.23808884059471325, + "reverse_translation_m": 0.00802452890723869, + "reverse_rotation_deg": 0.011334867255723058, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 1, + "j": 6, + "heldout_inlier_ratio": 0.6933789087226231, + "heldout_inlier_rmse_m": 0.12162612003144421, + "rotation_invariant_error_deg": 0.0750432131524672, + "reverse_translation_m": 0.008258211706006158, + "reverse_rotation_deg": 0.08942722541817279, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 2, + "j": 3, + "heldout_inlier_ratio": 0.7609663064208518, + "heldout_inlier_rmse_m": 0.11583878636897658, + "rotation_invariant_error_deg": 0.03805484899682254, + "reverse_translation_m": 0.00784220284106163, + "reverse_rotation_deg": 0.01711532312869618, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 4, + "heldout_inlier_ratio": 0.796748976299789, + "heldout_inlier_rmse_m": 0.11484342359047915, + "rotation_invariant_error_deg": 0.8619802082203449, + "reverse_translation_m": 0.011210942709507262, + "reverse_rotation_deg": 0.11462542679280045, + "accepted": false, + "rejection_reasons": [ + "rotation_conjugacy_invariant" + ] + }, + { + "i": 2, + "j": 5, + "heldout_inlier_ratio": 0.7112112112112112, + "heldout_inlier_rmse_m": 0.12001317983504071, + "rotation_invariant_error_deg": 0.19305622476466944, + "reverse_translation_m": 0.011298647069299764, + "reverse_rotation_deg": 0.02158504824207679, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 6, + "heldout_inlier_ratio": 0.7254529329785886, + "heldout_inlier_rmse_m": 0.11794151013960824, + "rotation_invariant_error_deg": 0.5959529359404385, + "reverse_translation_m": 0.004729020804343234, + "reverse_rotation_deg": 0.026463705119922912, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 2, + "j": 7, + "heldout_inlier_ratio": 0.7569187603621987, + "heldout_inlier_rmse_m": 0.11528530285715083, + "rotation_invariant_error_deg": 0.6006463589923925, + "reverse_translation_m": 0.011994525026310043, + "reverse_rotation_deg": 0.05882394078371607, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 4, + "heldout_inlier_ratio": 0.6957378664695738, + "heldout_inlier_rmse_m": 0.11619002437046372, + "rotation_invariant_error_deg": 0.5055042717460125, + "reverse_translation_m": 0.006018969660459514, + "reverse_rotation_deg": 0.057234124307389854, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 3, + "j": 5, + "heldout_inlier_ratio": 0.7989069680784996, + "heldout_inlier_rmse_m": 0.1077590577814381, + "rotation_invariant_error_deg": 0.5566178981223597, + "reverse_translation_m": 0.01353229173052898, + "reverse_rotation_deg": 0.06486032517688407, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 6, + "heldout_inlier_ratio": 0.8435613682092555, + "heldout_inlier_rmse_m": 0.11222309863990207, + "rotation_invariant_error_deg": 0.24279409865246748, + "reverse_translation_m": 0.009512765198853305, + "reverse_rotation_deg": 0.09743636874085052, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 7, + "heldout_inlier_ratio": 0.8651898734177215, + "heldout_inlier_rmse_m": 0.11184568072686094, + "rotation_invariant_error_deg": 0.23371684353352862, + "reverse_translation_m": 0.010827690226297962, + "reverse_rotation_deg": 0.12520280777371934, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 3, + "j": 8, + "heldout_inlier_ratio": 0.825590155700653, + "heldout_inlier_rmse_m": 0.10787987267070262, + "rotation_invariant_error_deg": 0.07359256633802147, + "reverse_translation_m": 0.0056088079192386986, + "reverse_rotation_deg": 0.021536601402145895, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 5, + "heldout_inlier_ratio": 0.6652516676773802, + "heldout_inlier_rmse_m": 0.12444356767629798, + "rotation_invariant_error_deg": 1.0678050691619134, + "reverse_translation_m": 0.003155412913416372, + "reverse_rotation_deg": 0.05824374716659687, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 4, + "j": 6, + "heldout_inlier_ratio": 0.6551681807021851, + "heldout_inlier_rmse_m": 0.12030857820705748, + "rotation_invariant_error_deg": 0.2827020035717851, + "reverse_translation_m": 0.011212969141455763, + "reverse_rotation_deg": 0.08373658947114908, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 4, + "j": 7, + "heldout_inlier_ratio": 0.696936001976773, + "heldout_inlier_rmse_m": 0.11799538994568655, + "rotation_invariant_error_deg": 0.2724963846557813, + "reverse_translation_m": 0.00409529177569414, + "reverse_rotation_deg": 0.0519770010059835, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 4, + "j": 8, + "heldout_inlier_ratio": 0.7129198332924737, + "heldout_inlier_rmse_m": 0.11349036082807595, + "rotation_invariant_error_deg": 0.5804550654619618, + "reverse_translation_m": 0.01249802665331653, + "reverse_rotation_deg": 0.04549823831834878, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 4, + "j": 9, + "heldout_inlier_ratio": 0.6097234068478128, + "heldout_inlier_rmse_m": 0.11677937926620108, + "rotation_invariant_error_deg": 0.19151228540169996, + "reverse_translation_m": 0.00616984405743089, + "reverse_rotation_deg": 0.11548555225177864, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 5, + "j": 6, + "heldout_inlier_ratio": 0.7604901596732269, + "heldout_inlier_rmse_m": 0.11101741624951145, + "rotation_invariant_error_deg": 0.8151323864865176, + "reverse_translation_m": 0.01028641250952863, + "reverse_rotation_deg": 0.031127073736479716, + "accepted": false, + "rejection_reasons": [ + "rotation_conjugacy_invariant" + ] + }, + { + "i": 5, + "j": 7, + "heldout_inlier_ratio": 0.8092687180764918, + "heldout_inlier_rmse_m": 0.10777871969807898, + "rotation_invariant_error_deg": 0.8022146383376452, + "reverse_translation_m": 0.010579714886860828, + "reverse_rotation_deg": 0.03333492483252218, + "accepted": false, + "rejection_reasons": [ + "rotation_conjugacy_invariant" + ] + }, + { + "i": 5, + "j": 8, + "heldout_inlier_ratio": 0.7295760721789643, + "heldout_inlier_rmse_m": 0.11311887218463837, + "rotation_invariant_error_deg": 0.47747890472797394, + "reverse_translation_m": 0.009759205787181369, + "reverse_rotation_deg": 0.05935114015788255, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 5, + "j": 10, + "heldout_inlier_ratio": 0.5442391832766165, + "heldout_inlier_rmse_m": 0.13173165083201857, + "rotation_invariant_error_deg": 0.7193738704903865, + "reverse_translation_m": 0.00523999417676037, + "reverse_rotation_deg": 0.17134499262937464, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 6, + "j": 7, + "heldout_inlier_ratio": 0.8539354187689203, + "heldout_inlier_rmse_m": 0.10462253085153163, + "rotation_invariant_error_deg": 0.02516390454564643, + "reverse_translation_m": 0.002843314342407394, + "reverse_rotation_deg": 0.028424505305675103, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 8, + "heldout_inlier_ratio": 0.7757757757757757, + "heldout_inlier_rmse_m": 0.1131640002846509, + "rotation_invariant_error_deg": 0.3191267376297162, + "reverse_translation_m": 0.007224674181694773, + "reverse_rotation_deg": 0.10395594559619498, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 6, + "j": 9, + "heldout_inlier_ratio": 0.6009202835468226, + "heldout_inlier_rmse_m": 0.1259448851291812, + "rotation_invariant_error_deg": 0.05639462113465754, + "reverse_translation_m": 0.007975110549369148, + "reverse_rotation_deg": 0.07338758946554978, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 6, + "j": 11, + "heldout_inlier_ratio": 0.4633337584491774, + "heldout_inlier_rmse_m": 0.13769942152040132, + "rotation_invariant_error_deg": 0.1728067345440536, + "reverse_translation_m": 0.023339879627157865, + "reverse_rotation_deg": 0.18888808553225306, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 7, + "j": 8, + "heldout_inlier_ratio": 0.8340050377833753, + "heldout_inlier_rmse_m": 0.11132245152738919, + "rotation_invariant_error_deg": 0.29988500336834534, + "reverse_translation_m": 0.004806949653405585, + "reverse_rotation_deg": 0.02034039865601464, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 7, + "j": 10, + "heldout_inlier_ratio": 0.5721183607775164, + "heldout_inlier_rmse_m": 0.13040415535689726, + "rotation_invariant_error_deg": 0.08655962387919658, + "reverse_translation_m": 0.010507785715791607, + "reverse_rotation_deg": 0.10324111221368969, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 7, + "j": 11, + "heldout_inlier_ratio": 0.5179098728976762, + "heldout_inlier_rmse_m": 0.13593896500168, + "rotation_invariant_error_deg": 0.13200757992937895, + "reverse_translation_m": 0.01570096854689765, + "reverse_rotation_deg": 0.062213006599939585, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 7, + "j": 12, + "heldout_inlier_ratio": 0.419173636250156, + "heldout_inlier_rmse_m": 0.14753718360891266, + "rotation_invariant_error_deg": 0.32523167108959683, + "reverse_translation_m": 0.018245717875293024, + "reverse_rotation_deg": 0.41212759156893974, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 8, + "j": 9, + "heldout_inlier_ratio": 0.6407549981373402, + "heldout_inlier_rmse_m": 0.12189583104066963, + "rotation_invariant_error_deg": 0.5591379691557652, + "reverse_translation_m": 0.025170709673794655, + "reverse_rotation_deg": 0.14112050756711447, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 8, + "j": 10, + "heldout_inlier_ratio": 0.6075420709986488, + "heldout_inlier_rmse_m": 0.12933255373443525, + "rotation_invariant_error_deg": 0.23729576277547437, + "reverse_translation_m": 0.01256038832173067, + "reverse_rotation_deg": 0.12386976869589704, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 8, + "j": 11, + "heldout_inlier_ratio": 0.5447599643448364, + "heldout_inlier_rmse_m": 0.13547919137380177, + "rotation_invariant_error_deg": 0.17379413214714745, + "reverse_translation_m": 0.006462771421800638, + "reverse_rotation_deg": 0.08629803406158434, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 8, + "j": 12, + "heldout_inlier_ratio": 0.46489164086687307, + "heldout_inlier_rmse_m": 0.14530908872417966, + "rotation_invariant_error_deg": 0.005046088527275394, + "reverse_translation_m": 0.00955628888567663, + "reverse_rotation_deg": 0.1112688142308669, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 8, + "j": 13, + "heldout_inlier_ratio": 0.37832991803278687, + "heldout_inlier_rmse_m": 0.15442802982944018, + "rotation_invariant_error_deg": 0.9703135322547958, + "reverse_translation_m": 0.027875630486669568, + "reverse_rotation_deg": 0.37387837894914167, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 9, + "j": 10, + "heldout_inlier_ratio": 0.6576312576312576, + "heldout_inlier_rmse_m": 0.10693844153477818, + "rotation_invariant_error_deg": 0.1623946911071812, + "reverse_translation_m": 0.0038184479242649575, + "reverse_rotation_deg": 0.016135929192430513, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 9, + "j": 11, + "heldout_inlier_ratio": 0.5883320678309288, + "heldout_inlier_rmse_m": 0.11815838246331245, + "rotation_invariant_error_deg": 0.23697209395887597, + "reverse_translation_m": 0.008866435423074387, + "reverse_rotation_deg": 0.05039949658393549, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 9, + "j": 12, + "heldout_inlier_ratio": 0.5413589364844904, + "heldout_inlier_rmse_m": 0.12469816852157387, + "rotation_invariant_error_deg": 0.4899758873523652, + "reverse_translation_m": 0.03403608365914784, + "reverse_rotation_deg": 0.249719392637206, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 9, + "j": 13, + "heldout_inlier_ratio": 0.5075728649611811, + "heldout_inlier_rmse_m": 0.13356609480985904, + "rotation_invariant_error_deg": 0.6957641312376879, + "reverse_translation_m": 0.0053243668825205025, + "reverse_rotation_deg": 0.1401976908512776, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 9, + "j": 14, + "heldout_inlier_ratio": 0.5416463116756228, + "heldout_inlier_rmse_m": 0.12859551377809317, + "rotation_invariant_error_deg": 1.2299678316647693, + "reverse_translation_m": 0.011377143482081005, + "reverse_rotation_deg": 0.045883349808202654, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 10, + "j": 11, + "heldout_inlier_ratio": 0.7131414267834794, + "heldout_inlier_rmse_m": 0.12095106901516857, + "rotation_invariant_error_deg": 0.021248756295914717, + "reverse_translation_m": 0.006897671932212844, + "reverse_rotation_deg": 0.18540056788520093, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 10, + "j": 12, + "heldout_inlier_ratio": 0.6117876278616659, + "heldout_inlier_rmse_m": 0.125002241212049, + "rotation_invariant_error_deg": 0.22627625875818325, + "reverse_translation_m": 0.006509808900811586, + "reverse_rotation_deg": 0.06742381610992963, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 10, + "j": 13, + "heldout_inlier_ratio": 0.5244808055380743, + "heldout_inlier_rmse_m": 0.13689263771908436, + "rotation_invariant_error_deg": 0.7458516771815198, + "reverse_translation_m": 0.0046518429660042555, + "reverse_rotation_deg": 0.17931102925270673, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 10, + "j": 14, + "heldout_inlier_ratio": 0.5996858385693572, + "heldout_inlier_rmse_m": 0.12955691635611957, + "rotation_invariant_error_deg": 0.9907110909418435, + "reverse_translation_m": 0.009593578345611205, + "reverse_rotation_deg": 0.05753783232412823, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 10, + "j": 15, + "heldout_inlier_ratio": 0.5048970366649924, + "heldout_inlier_rmse_m": 0.13966622273060364, + "rotation_invariant_error_deg": 0.081650080653759, + "reverse_translation_m": 0.006074999657630774, + "reverse_rotation_deg": 0.04867559411570644, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 11, + "j": 12, + "heldout_inlier_ratio": 0.6508076728924785, + "heldout_inlier_rmse_m": 0.12017753597340274, + "rotation_invariant_error_deg": 0.15490315710383484, + "reverse_translation_m": 0.016302173123952383, + "reverse_rotation_deg": 0.05141023051579345, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 11, + "j": 13, + "heldout_inlier_ratio": 0.5666710199817161, + "heldout_inlier_rmse_m": 0.12966061077144844, + "rotation_invariant_error_deg": 0.8179501999281982, + "reverse_translation_m": 0.010250004424021303, + "reverse_rotation_deg": 0.0630753341579125, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 11, + "j": 14, + "heldout_inlier_ratio": 0.64271407110666, + "heldout_inlier_rmse_m": 0.12109534664165014, + "rotation_invariant_error_deg": 0.9336352575787963, + "reverse_translation_m": 0.007610676428698485, + "reverse_rotation_deg": 0.05350102444543152, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 11, + "j": 15, + "heldout_inlier_ratio": 0.570479416362689, + "heldout_inlier_rmse_m": 0.12836105648377344, + "rotation_invariant_error_deg": 0.1445113329869585, + "reverse_translation_m": 0.006898635416764969, + "reverse_rotation_deg": 0.028532809525243653, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 12, + "j": 13, + "heldout_inlier_ratio": 0.7056733087955325, + "heldout_inlier_rmse_m": 0.11689859246507509, + "rotation_invariant_error_deg": 0.9871558772766136, + "reverse_translation_m": 0.0020816591744367207, + "reverse_rotation_deg": 0.08889045467662131, + "accepted": false, + "rejection_reasons": [ + "rotation_conjugacy_invariant" + ] + }, + { + "i": 12, + "j": 14, + "heldout_inlier_ratio": 0.8745432399512789, + "heldout_inlier_rmse_m": 0.09766069029332589, + "rotation_invariant_error_deg": 0.620973962532374, + "reverse_translation_m": 0.002473515580842477, + "reverse_rotation_deg": 0.018069288085025077, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 12, + "j": 15, + "heldout_inlier_ratio": 0.7033426183844012, + "heldout_inlier_rmse_m": 0.12103901189560114, + "rotation_invariant_error_deg": 0.3460892559833546, + "reverse_translation_m": 0.022780233796594867, + "reverse_rotation_deg": 0.04927694758545139, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 12, + "j": 16, + "heldout_inlier_ratio": 0.5820235756385069, + "heldout_inlier_rmse_m": 0.12458133956199553, + "rotation_invariant_error_deg": 0.5019661911966722, + "reverse_translation_m": 0.00989839849833309, + "reverse_rotation_deg": 0.03808519306435704, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 12, + "j": 17, + "heldout_inlier_ratio": 0.6542219994988725, + "heldout_inlier_rmse_m": 0.12658997093251892, + "rotation_invariant_error_deg": 0.4304077591727584, + "reverse_translation_m": 0.019742680150836883, + "reverse_rotation_deg": 0.07899236042083516, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 13, + "j": 14, + "heldout_inlier_ratio": 0.6984766461034874, + "heldout_inlier_rmse_m": 0.11406275231178287, + "rotation_invariant_error_deg": 1.7580702955468261, + "reverse_translation_m": 0.012533581961738958, + "reverse_rotation_deg": 0.10861604448395465, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 13, + "j": 15, + "heldout_inlier_ratio": 0.8794391298650243, + "heldout_inlier_rmse_m": 0.09903209123829654, + "rotation_invariant_error_deg": 0.647826919954289, + "reverse_translation_m": 0.006638809913641406, + "reverse_rotation_deg": 0.04266354358349458, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 16, + "heldout_inlier_ratio": 0.7273073505141552, + "heldout_inlier_rmse_m": 0.10958532316684438, + "rotation_invariant_error_deg": 0.4561367476009117, + "reverse_translation_m": 0.005441055528592516, + "reverse_rotation_deg": 0.12519365495730794, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 17, + "heldout_inlier_ratio": 0.7130265716137395, + "heldout_inlier_rmse_m": 0.11779895987026284, + "rotation_invariant_error_deg": 0.5739060705989409, + "reverse_translation_m": 0.013263327701592687, + "reverse_rotation_deg": 0.16221305155705806, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 13, + "j": 18, + "heldout_inlier_ratio": 0.7019876443728176, + "heldout_inlier_rmse_m": 0.11940768524727291, + "rotation_invariant_error_deg": 0.3921371405111702, + "reverse_translation_m": 0.008995185113784413, + "reverse_rotation_deg": 0.05198334813202341, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 14, + "j": 15, + "heldout_inlier_ratio": 0.7035920622959055, + "heldout_inlier_rmse_m": 0.12189498753760801, + "rotation_invariant_error_deg": 1.1081018436781882, + "reverse_translation_m": 0.010817230757509965, + "reverse_rotation_deg": 0.008099442158890762, + "accepted": false, + "rejection_reasons": [ + "rotation_conjugacy_invariant" + ] + }, + { + "i": 14, + "j": 16, + "heldout_inlier_ratio": 0.5923489278752436, + "heldout_inlier_rmse_m": 0.12241126089476961, + "rotation_invariant_error_deg": 1.2462518921009789, + "reverse_translation_m": 0.003104373432332903, + "reverse_rotation_deg": 0.13386003286196627, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 14, + "j": 17, + "heldout_inlier_ratio": 0.6687795177728063, + "heldout_inlier_rmse_m": 0.12452036369759786, + "rotation_invariant_error_deg": 0.467014814888927, + "reverse_translation_m": 0.01159286549234958, + "reverse_rotation_deg": 0.10132041390926738, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 14, + "j": 18, + "heldout_inlier_ratio": 0.6196476790536196, + "heldout_inlier_rmse_m": 0.12845393182350578, + "rotation_invariant_error_deg": 1.3569617298117045, + "reverse_translation_m": 0.010070495463159433, + "reverse_rotation_deg": 0.13041926369959572, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 14, + "j": 19, + "heldout_inlier_ratio": 0.5845660749506904, + "heldout_inlier_rmse_m": 0.12584132662356784, + "rotation_invariant_error_deg": 0.8859663897253398, + "reverse_translation_m": 0.016830803029542436, + "reverse_rotation_deg": 0.2574761671757917, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 15, + "j": 16, + "heldout_inlier_ratio": 0.7032674772036475, + "heldout_inlier_rmse_m": 0.11602216892855616, + "rotation_invariant_error_deg": 0.1669178677739822, + "reverse_translation_m": 0.0009988867448423883, + "reverse_rotation_deg": 0.09036168134112703, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 17, + "heldout_inlier_ratio": 0.7489009568140678, + "heldout_inlier_rmse_m": 0.11923375870790391, + "rotation_invariant_error_deg": 0.057170209113280634, + "reverse_translation_m": 0.02582458487951314, + "reverse_rotation_deg": 0.095039680889365, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 18, + "heldout_inlier_ratio": 0.7165438713998661, + "heldout_inlier_rmse_m": 0.11783922962071142, + "rotation_invariant_error_deg": 0.25175135833068873, + "reverse_translation_m": 0.009354386824208725, + "reverse_rotation_deg": 0.17478401338848865, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 15, + "j": 19, + "heldout_inlier_ratio": 0.6924358974358974, + "heldout_inlier_rmse_m": 0.11506895717743916, + "rotation_invariant_error_deg": 0.19972369514621846, + "reverse_translation_m": 0.012497900854287812, + "reverse_rotation_deg": 0.3255615001296644, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 15, + "j": 20, + "heldout_inlier_ratio": 0.6751867872591427, + "heldout_inlier_rmse_m": 0.11901811643083532, + "rotation_invariant_error_deg": 0.2634006516838383, + "reverse_translation_m": 0.007126007329084919, + "reverse_rotation_deg": 0.09473387178666172, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 16, + "j": 17, + "heldout_inlier_ratio": 0.6284461152882206, + "heldout_inlier_rmse_m": 0.1113618900510703, + "rotation_invariant_error_deg": 0.050199814183493174, + "reverse_translation_m": 0.015370940622322818, + "reverse_rotation_deg": 0.07520125332617648, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 16, + "j": 18, + "heldout_inlier_ratio": 0.6921281286473868, + "heldout_inlier_rmse_m": 0.10919235768364483, + "rotation_invariant_error_deg": 0.05584922837721962, + "reverse_translation_m": 0.005355462743716769, + "reverse_rotation_deg": 0.03654303027439279, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 16, + "j": 19, + "heldout_inlier_ratio": 0.8880188913745961, + "heldout_inlier_rmse_m": 0.0968346861370537, + "rotation_invariant_error_deg": 0.31232814527146147, + "reverse_translation_m": 0.006745004702225108, + "reverse_rotation_deg": 0.04851926363283949, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 16, + "j": 20, + "heldout_inlier_ratio": 0.6307301587301587, + "heldout_inlier_rmse_m": 0.12362874516637085, + "rotation_invariant_error_deg": 0.3556133549145386, + "reverse_translation_m": 0.007128919591300971, + "reverse_rotation_deg": 0.10475436005961275, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 16, + "j": 21, + "heldout_inlier_ratio": 0.40465918895599656, + "heldout_inlier_rmse_m": 0.14174574821871383, + "rotation_invariant_error_deg": 0.03358953741235382, + "reverse_translation_m": 0.01442382622115287, + "reverse_rotation_deg": 0.2621394134233604, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 17, + "j": 18, + "heldout_inlier_ratio": 0.7665916015366274, + "heldout_inlier_rmse_m": 0.11462276561713726, + "rotation_invariant_error_deg": 0.21681649114105994, + "reverse_translation_m": 0.003676908482849856, + "reverse_rotation_deg": 0.03455537183665902, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 17, + "j": 19, + "heldout_inlier_ratio": 0.645738203957382, + "heldout_inlier_rmse_m": 0.11467441399973681, + "rotation_invariant_error_deg": 0.2814841354799569, + "reverse_translation_m": 0.002658154417044598, + "reverse_rotation_deg": 0.03997293849541112, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 17, + "j": 22, + "heldout_inlier_ratio": 0.4255952380952381, + "heldout_inlier_rmse_m": 0.1417851723285674, + "rotation_invariant_error_deg": 0.22747387845950584, + "reverse_translation_m": 0.01638337185583796, + "reverse_rotation_deg": 0.14112774930143776, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 18, + "j": 19, + "heldout_inlier_ratio": 0.6999343401181878, + "heldout_inlier_rmse_m": 0.10876407223187468, + "rotation_invariant_error_deg": 0.45829922568626813, + "reverse_translation_m": 0.0029722527816906422, + "reverse_rotation_deg": 0.028553700929610463, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 18, + "j": 21, + "heldout_inlier_ratio": 0.42345743296016664, + "heldout_inlier_rmse_m": 0.14463219993853524, + "rotation_invariant_error_deg": 0.16988761977478362, + "reverse_translation_m": 0.008594432490503082, + "reverse_rotation_deg": 0.044791316017877565, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 18, + "j": 22, + "heldout_inlier_ratio": 0.35586914688903143, + "heldout_inlier_rmse_m": 0.14801012931814386, + "rotation_invariant_error_deg": 0.0083973626127829, + "reverse_translation_m": 0.05364920712348454, + "reverse_rotation_deg": 0.15560820359743163, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse", + "forward_reverse_translation" + ] + }, + { + "i": 18, + "j": 23, + "heldout_inlier_ratio": 0.3967277486910995, + "heldout_inlier_rmse_m": 0.14073241205403209, + "rotation_invariant_error_deg": 0.0959216601540902, + "reverse_translation_m": 0.0379980141073483, + "reverse_rotation_deg": 0.09667096210106078, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 19, + "j": 20, + "heldout_inlier_ratio": 0.6260444787247719, + "heldout_inlier_rmse_m": 0.12668491637849374, + "rotation_invariant_error_deg": 0.04635374526874614, + "reverse_translation_m": 0.022781715838261912, + "reverse_rotation_deg": 0.19834674514582162, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 19, + "j": 21, + "heldout_inlier_ratio": 0.3952850193339154, + "heldout_inlier_rmse_m": 0.1421446220617431, + "rotation_invariant_error_deg": 0.2944575756539365, + "reverse_translation_m": 0.01796074748252817, + "reverse_rotation_deg": 0.16263425635632095, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 19, + "j": 23, + "heldout_inlier_ratio": 0.37768025078369905, + "heldout_inlier_rmse_m": 0.1432975121556299, + "rotation_invariant_error_deg": 0.34115847207587535, + "reverse_translation_m": 0.07411982241929344, + "reverse_rotation_deg": 0.4458370864472602, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse", + "forward_reverse_translation" + ] + }, + { + "i": 20, + "j": 21, + "heldout_inlier_ratio": 0.6607188376242672, + "heldout_inlier_rmse_m": 0.12214671257866079, + "rotation_invariant_error_deg": 0.3384536988680722, + "reverse_translation_m": 0.01471691635641488, + "reverse_rotation_deg": 0.0747935794181239, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 20, + "j": 22, + "heldout_inlier_ratio": 0.576328684508104, + "heldout_inlier_rmse_m": 0.13245799460807672, + "rotation_invariant_error_deg": 0.5030331090558136, + "reverse_translation_m": 0.02165175771302933, + "reverse_rotation_deg": 0.4612076789897289, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "heldout_rmse" + ] + }, + { + "i": 20, + "j": 23, + "heldout_inlier_ratio": 0.6451819579702717, + "heldout_inlier_rmse_m": 0.12102263178677423, + "rotation_invariant_error_deg": 0.411936083868369, + "reverse_translation_m": 0.018249896901851893, + "reverse_rotation_deg": 0.12115759970382113, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 20, + "j": 24, + "heldout_inlier_ratio": 0.7383177570093458, + "heldout_inlier_rmse_m": 0.11441422046802802, + "rotation_invariant_error_deg": 0.19247038033003605, + "reverse_translation_m": 0.009011279667019194, + "reverse_rotation_deg": 0.06430292411421322, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 20, + "j": 25, + "heldout_inlier_ratio": 0.6182822702159718, + "heldout_inlier_rmse_m": 0.12791257682460647, + "rotation_invariant_error_deg": 0.06528383884484867, + "reverse_translation_m": 0.014703530260578728, + "reverse_rotation_deg": 0.32055535743282454, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 21, + "j": 22, + "heldout_inlier_ratio": 0.7740636818348177, + "heldout_inlier_rmse_m": 0.11564788773425824, + "rotation_invariant_error_deg": 0.19149133208546854, + "reverse_translation_m": 0.0065184199045192235, + "reverse_rotation_deg": 0.06991965908247275, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 23, + "heldout_inlier_ratio": 0.862223327530465, + "heldout_inlier_rmse_m": 0.10307116830776755, + "rotation_invariant_error_deg": 0.07804739919204096, + "reverse_translation_m": 0.0026785916987678697, + "reverse_rotation_deg": 0.01879221122979615, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 24, + "heldout_inlier_ratio": 0.7795265676152102, + "heldout_inlier_rmse_m": 0.11182158240581822, + "rotation_invariant_error_deg": 0.5019012138072654, + "reverse_translation_m": 0.003491995501356654, + "reverse_rotation_deg": 0.0374256510953578, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 25, + "heldout_inlier_ratio": 0.7340892465252378, + "heldout_inlier_rmse_m": 0.12002239056891174, + "rotation_invariant_error_deg": 0.07617121764253554, + "reverse_translation_m": 0.037735058311297705, + "reverse_rotation_deg": 0.2878144229712423, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 21, + "j": 26, + "heldout_inlier_ratio": 0.7147358216190014, + "heldout_inlier_rmse_m": 0.11997311573294966, + "rotation_invariant_error_deg": 0.12059196585362031, + "reverse_translation_m": 0.012351932089198563, + "reverse_rotation_deg": 0.10379217190868555, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 23, + "heldout_inlier_ratio": 0.7408951563458002, + "heldout_inlier_rmse_m": 0.11726725109752717, + "rotation_invariant_error_deg": 0.06785708786322786, + "reverse_translation_m": 0.009206244303295173, + "reverse_rotation_deg": 0.09601986001481369, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 24, + "heldout_inlier_ratio": 0.6936064556176288, + "heldout_inlier_rmse_m": 0.11914624513148218, + "rotation_invariant_error_deg": 0.6464246277119301, + "reverse_translation_m": 0.006090737153726605, + "reverse_rotation_deg": 0.027557138417491776, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 22, + "j": 25, + "heldout_inlier_ratio": 0.7356584485868911, + "heldout_inlier_rmse_m": 0.11474070552638106, + "rotation_invariant_error_deg": 0.09992812876472001, + "reverse_translation_m": 0.0019617091597581428, + "reverse_rotation_deg": 0.011643770804738128, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 26, + "heldout_inlier_ratio": 0.7422594142259414, + "heldout_inlier_rmse_m": 0.11765221626900083, + "rotation_invariant_error_deg": 0.28585419533642664, + "reverse_translation_m": 0.007814937371704293, + "reverse_rotation_deg": 0.039342553564881436, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 22, + "j": 27, + "heldout_inlier_ratio": 0.7254925373134329, + "heldout_inlier_rmse_m": 0.11870181965154768, + "rotation_invariant_error_deg": 0.17656741069011161, + "reverse_translation_m": 0.018241823604788005, + "reverse_rotation_deg": 0.08279236858582419, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 24, + "heldout_inlier_ratio": 0.7884810126582279, + "heldout_inlier_rmse_m": 0.10662565692629543, + "rotation_invariant_error_deg": 0.5489092886683267, + "reverse_translation_m": 0.001882338148224756, + "reverse_rotation_deg": 0.020239211377623818, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 23, + "j": 25, + "heldout_inlier_ratio": 0.6843137254901961, + "heldout_inlier_rmse_m": 0.12171091934898426, + "rotation_invariant_error_deg": 2.3712361046355532, + "reverse_translation_m": 0.014639828785635214, + "reverse_rotation_deg": 0.2046006298281892, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 23, + "j": 26, + "heldout_inlier_ratio": 0.6772228989037758, + "heldout_inlier_rmse_m": 0.12237954766026346, + "rotation_invariant_error_deg": 0.10596476474727012, + "reverse_translation_m": 0.04518647006837157, + "reverse_rotation_deg": 0.20367965681897066, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 23, + "j": 28, + "heldout_inlier_ratio": 0.6720351390922401, + "heldout_inlier_rmse_m": 0.12122778564083748, + "rotation_invariant_error_deg": 0.024721954756984132, + "reverse_translation_m": 0.043540468687755365, + "reverse_rotation_deg": 0.26051478047218213, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 24, + "j": 25, + "heldout_inlier_ratio": 0.6764267990074442, + "heldout_inlier_rmse_m": 0.12367636388755719, + "rotation_invariant_error_deg": 0.08555695772261629, + "reverse_translation_m": 0.035816405766439664, + "reverse_rotation_deg": 0.2046504337319023, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 24, + "j": 26, + "heldout_inlier_ratio": 0.6524044389642417, + "heldout_inlier_rmse_m": 0.12740232296321938, + "rotation_invariant_error_deg": 0.9096080994730613, + "reverse_translation_m": 0.062038641373543625, + "reverse_rotation_deg": 0.12012273822228971, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant", + "forward_reverse_translation" + ] + }, + { + "i": 24, + "j": 27, + "heldout_inlier_ratio": 0.6546798029556651, + "heldout_inlier_rmse_m": 0.12425657449629145, + "rotation_invariant_error_deg": 0.5645992249410092, + "reverse_translation_m": 0.05403266260962086, + "reverse_rotation_deg": 0.2126374478532415, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "forward_reverse_translation" + ] + }, + { + "i": 24, + "j": 28, + "heldout_inlier_ratio": 0.6614377470355731, + "heldout_inlier_rmse_m": 0.12010155595807545, + "rotation_invariant_error_deg": 0.5530413756685206, + "reverse_translation_m": 0.049490676797893776, + "reverse_rotation_deg": 0.25138526875505346, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 25, + "j": 26, + "heldout_inlier_ratio": 0.9137395459976105, + "heldout_inlier_rmse_m": 0.08148336624555251, + "rotation_invariant_error_deg": 0.0541320112416841, + "reverse_translation_m": 0.0032405549728505064, + "reverse_rotation_deg": 0.006669174585592186, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 27, + "heldout_inlier_ratio": 0.8596658711217183, + "heldout_inlier_rmse_m": 0.1096145882030974, + "rotation_invariant_error_deg": 0.25072546657183636, + "reverse_translation_m": 0.010624789877375215, + "reverse_rotation_deg": 0.04475651255674721, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 28, + "heldout_inlier_ratio": 0.8839157491622786, + "heldout_inlier_rmse_m": 0.10490699814192792, + "rotation_invariant_error_deg": 0.32277369370386566, + "reverse_translation_m": 0.00283419137499405, + "reverse_rotation_deg": 0.01585308444597649, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 25, + "j": 29, + "heldout_inlier_ratio": 0.7857227558401518, + "heldout_inlier_rmse_m": 0.10954358768244267, + "rotation_invariant_error_deg": 0.6270920954002293, + "reverse_translation_m": 0.003247718742817276, + "reverse_rotation_deg": 0.01654235380830592, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 27, + "heldout_inlier_ratio": 0.9188612099644128, + "heldout_inlier_rmse_m": 0.07520973241900301, + "rotation_invariant_error_deg": 0.1438602933497286, + "reverse_translation_m": 0.0009920873307779914, + "reverse_rotation_deg": 0.005485007138529723, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 28, + "heldout_inlier_ratio": 0.9182726623840114, + "heldout_inlier_rmse_m": 0.07611768518866212, + "rotation_invariant_error_deg": 0.19922486670869688, + "reverse_translation_m": 0.004984978187527545, + "reverse_rotation_deg": 0.01173507098896779, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 29, + "heldout_inlier_ratio": 0.7856890251090416, + "heldout_inlier_rmse_m": 0.10851393061782179, + "rotation_invariant_error_deg": 0.6529919473114916, + "reverse_translation_m": 0.002586732426991948, + "reverse_rotation_deg": 0.12205883610743135, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 26, + "j": 30, + "heldout_inlier_ratio": 0.7634835395750642, + "heldout_inlier_rmse_m": 0.10495724850674527, + "rotation_invariant_error_deg": 0.569430013626743, + "reverse_translation_m": 0.008489213184554775, + "reverse_rotation_deg": 0.021733210949123293, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 28, + "heldout_inlier_ratio": 0.9281131178707225, + "heldout_inlier_rmse_m": 0.07220943509634768, + "rotation_invariant_error_deg": 0.05879872494934091, + "reverse_translation_m": 0.0023003913248606234, + "reverse_rotation_deg": 0.001591751329336308, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 29, + "heldout_inlier_ratio": 0.7871188037207112, + "heldout_inlier_rmse_m": 0.10966659884725236, + "rotation_invariant_error_deg": 0.5032080902871385, + "reverse_translation_m": 0.005134403698947268, + "reverse_rotation_deg": 0.02434844099203523, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 31, + "heldout_inlier_ratio": 0.7592097617664149, + "heldout_inlier_rmse_m": 0.10539218018667602, + "rotation_invariant_error_deg": 0.17905197421629282, + "reverse_translation_m": 0.0020939062619997405, + "reverse_rotation_deg": 0.027400662783563425, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 27, + "j": 32, + "heldout_inlier_ratio": 0.7480278422273782, + "heldout_inlier_rmse_m": 0.10408734715846867, + "rotation_invariant_error_deg": 0.2846642642130064, + "reverse_translation_m": 0.004407463145306061, + "reverse_rotation_deg": 0.03490543724836902, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 28, + "j": 29, + "heldout_inlier_ratio": 0.787814381863266, + "heldout_inlier_rmse_m": 0.10901449493832843, + "rotation_invariant_error_deg": 0.3245590784482886, + "reverse_translation_m": 0.01570175790237609, + "reverse_rotation_deg": 0.03569660498137675, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 28, + "j": 30, + "heldout_inlier_ratio": 0.7791159962581852, + "heldout_inlier_rmse_m": 0.10438560755009844, + "rotation_invariant_error_deg": 0.40289749313473067, + "reverse_translation_m": 0.01170149615735483, + "reverse_rotation_deg": 0.047047156693309715, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 30, + "heldout_inlier_ratio": 0.7320662880982732, + "heldout_inlier_rmse_m": 0.10929719051930432, + "rotation_invariant_error_deg": 0.013598924391089895, + "reverse_translation_m": 0.005463604154015333, + "reverse_rotation_deg": 0.018583483487870766, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 31, + "heldout_inlier_ratio": 0.7254562254562255, + "heldout_inlier_rmse_m": 0.11323336570178015, + "rotation_invariant_error_deg": 0.5964723771181326, + "reverse_translation_m": 0.0050777995851252426, + "reverse_rotation_deg": 0.07265894091769333, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 29, + "j": 32, + "heldout_inlier_ratio": 0.695837657096737, + "heldout_inlier_rmse_m": 0.10999820041072961, + "rotation_invariant_error_deg": 0.7779150860024799, + "reverse_translation_m": 0.011220553177198233, + "reverse_rotation_deg": 0.14599088546526143, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio", + "rotation_conjugacy_invariant" + ] + }, + { + "i": 29, + "j": 33, + "heldout_inlier_ratio": 0.6382698298586149, + "heldout_inlier_rmse_m": 0.11215583949685817, + "rotation_invariant_error_deg": 0.5073524660734563, + "reverse_translation_m": 0.018977478007060265, + "reverse_rotation_deg": 0.05615608666616428, + "accepted": false, + "rejection_reasons": [ + "overlap_ratio" + ] + }, + { + "i": 30, + "j": 31, + "heldout_inlier_ratio": 0.8286237272623269, + "heldout_inlier_rmse_m": 0.0964659694513182, + "rotation_invariant_error_deg": 0.6302983762623384, + "reverse_translation_m": 0.018905314487385798, + "reverse_rotation_deg": 0.08632503464137033, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 30, + "j": 32, + "heldout_inlier_ratio": 0.8065326633165829, + "heldout_inlier_rmse_m": 0.09815063400019142, + "rotation_invariant_error_deg": 0.727984359566662, + "reverse_translation_m": 0.007341509941520892, + "reverse_rotation_deg": 0.023973741904832375, + "accepted": true, + "rejection_reasons": [] + }, + { + "i": 31, + "j": 32, + "heldout_inlier_ratio": 0.8146841206602162, + "heldout_inlier_rmse_m": 0.09914628416022417, + "rotation_invariant_error_deg": 0.11733254397336168, + "reverse_translation_m": 0.06936877058296162, + "reverse_rotation_deg": 0.45703051311645637, + "accepted": false, + "rejection_reasons": [ + "forward_reverse_translation" + ] + }, + { + "i": 31, + "j": 33, + "heldout_inlier_ratio": 0.7551430598250177, + "heldout_inlier_rmse_m": 0.1003246191461096, + "rotation_invariant_error_deg": 0.09234543926339711, + "reverse_translation_m": 0.005559091155811048, + "reverse_rotation_deg": 0.0330053182501105, + "accepted": true, + "rejection_reasons": [] + } + ] +} \ No newline at end of file diff --git a/results/02_data4_calibration/small_gicp/extrinsic.json b/results/02_data4_calibration/small_gicp/extrinsic.json new file mode 100644 index 0000000..058ca0a --- /dev/null +++ b/results/02_data4_calibration/small_gicp/extrinsic.json @@ -0,0 +1,489 @@ +{ + "schema_version": 2, + "success": true, + "message": "`ftol` termination condition is satisfied.", + "convention": "T_body_lidar maps raw LiDAR points into rear-axle body frame", + "equation": "A_ij X = X B_ij", + "measured_extrinsic_used_as_initial": false, + "translation_m": [ + 1.2944883843818025, + -0.0008838118010001346, + 0.7058442435591689 + ], + "rotation_rpy_deg_xyz": [ + -0.7159364624845366, + 1.3526878670674298, + -0.975972089807914 + ], + "quaternion_xyzw": [ + -0.006146489369094902, + 0.011856702812467925, + -0.008442354678834595, + 0.999875175166545 + ], + "matrix_4x4": [ + [ + 0.9995762904917872, + 0.016736847531056993, + 0.02381422728959523, + 1.2944883843818025 + ], + [ + -0.01702835592221438, + 0.9997818946318248, + 0.01209124728823738, + -0.0008838118010001346 + ], + [ + -0.023606663916460907, + -0.01249164125009491, + 0.9996432785337048, + 0.7058442435591689 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ], + "estimation": { + "stations": 34, + "pairs": 57, + "residuals": { + "pairs": 57, + "translation_m": { + "rms": 0.1544348214275169, + "median": 0.0705120546692258, + "p90": 0.2796247931030114, + "p95": 0.38830732511177307, + "max": 0.42173620405868173 + }, + "rotation_deg": { + "rms": 1.6127366820434261, + "median": 0.7802394472449041, + "p90": 2.0427026963913084, + "p95": 4.139878905679253, + "max": 4.927876933555878 + }, + "per_pair": [ + { + "pair_index": 0, + "translation_m": 0.04921586129986855, + "rotation_deg": 0.7802394472449041 + }, + { + "pair_index": 1, + "translation_m": 0.06022467069161827, + "rotation_deg": 0.8076387678918286 + }, + { + "pair_index": 2, + "translation_m": 0.05733334031955927, + "rotation_deg": 0.3801287351167008 + }, + { + "pair_index": 3, + "translation_m": 0.10178704595686662, + "rotation_deg": 0.23294290596786388 + }, + { + "pair_index": 4, + "translation_m": 0.0950710667744258, + "rotation_deg": 0.8441747973849835 + }, + { + "pair_index": 5, + "translation_m": 0.1482159791451249, + "rotation_deg": 0.681326797444399 + }, + { + "pair_index": 6, + "translation_m": 0.02325894326521952, + "rotation_deg": 0.6033104606942519 + }, + { + "pair_index": 7, + "translation_m": 0.07474087499522525, + "rotation_deg": 0.6507288891948437 + }, + { + "pair_index": 8, + "translation_m": 0.18825515016508942, + "rotation_deg": 0.26486292076967255 + }, + { + "pair_index": 9, + "translation_m": 0.04309283328904936, + "rotation_deg": 0.13788972833567684 + }, + { + "pair_index": 10, + "translation_m": 0.04634466299044426, + "rotation_deg": 0.727856852897771 + }, + { + "pair_index": 11, + "translation_m": 0.043890799917503956, + "rotation_deg": 0.7033085139548623 + }, + { + "pair_index": 12, + "translation_m": 0.06569153273548976, + "rotation_deg": 0.8215251942968772 + }, + { + "pair_index": 13, + "translation_m": 0.05085505830053342, + "rotation_deg": 0.5703942163369722 + }, + { + "pair_index": 14, + "translation_m": 0.08080041374696341, + "rotation_deg": 0.7042489825699358 + }, + { + "pair_index": 15, + "translation_m": 0.028283768727744116, + "rotation_deg": 0.5815552521395532 + }, + { + "pair_index": 16, + "translation_m": 0.034152028863445455, + "rotation_deg": 1.0076363281960339 + }, + { + "pair_index": 17, + "translation_m": 0.10661935094245772, + "rotation_deg": 0.585736616100307 + }, + { + "pair_index": 18, + "translation_m": 0.0705120546692258, + "rotation_deg": 0.8052707169746115 + }, + { + "pair_index": 19, + "translation_m": 0.06442322486081886, + "rotation_deg": 2.1113003980243557 + }, + { + "pair_index": 20, + "translation_m": 0.058531034305082885, + "rotation_deg": 0.5873890947329841 + }, + { + "pair_index": 21, + "translation_m": 0.06915436202628812, + "rotation_deg": 0.4455496836075116 + }, + { + "pair_index": 22, + "translation_m": 0.1484005911609239, + "rotation_deg": 1.9969708953026104 + }, + { + "pair_index": 23, + "translation_m": 0.10429385187976488, + "rotation_deg": 0.12781289285231975 + }, + { + "pair_index": 24, + "translation_m": 0.06859842051942554, + "rotation_deg": 0.3198403871694416 + }, + { + "pair_index": 25, + "translation_m": 0.037990236699121674, + "rotation_deg": 0.631070403868711 + }, + { + "pair_index": 26, + "translation_m": 0.03189885614531801, + "rotation_deg": 0.7541329389301039 + }, + { + "pair_index": 27, + "translation_m": 0.07672961622319935, + "rotation_deg": 1.5806114049925588 + }, + { + "pair_index": 28, + "translation_m": 0.069983101896218, + "rotation_deg": 0.4729689795147634 + }, + { + "pair_index": 29, + "translation_m": 0.016135065100391668, + "rotation_deg": 0.3789407761818106 + }, + { + "pair_index": 30, + "translation_m": 0.07432095926140471, + "rotation_deg": 1.8120862981058055 + }, + { + "pair_index": 31, + "translation_m": 0.17890921343127023, + "rotation_deg": 3.97184190714068 + }, + { + "pair_index": 32, + "translation_m": 0.2459042707502872, + "rotation_deg": 4.617881335971262 + }, + { + "pair_index": 33, + "translation_m": 0.06334407979243162, + "rotation_deg": 0.8238155509065317 + }, + { + "pair_index": 34, + "translation_m": 0.07743513463604834, + "rotation_deg": 4.0203782981062535 + }, + { + "pair_index": 35, + "translation_m": 0.15971289980951447, + "rotation_deg": 4.84466491195667 + }, + { + "pair_index": 36, + "translation_m": 0.13395086756218255, + "rotation_deg": 4.927876933555878 + }, + { + "pair_index": 37, + "translation_m": 0.06599998782040693, + "rotation_deg": 1.9960824610834838 + }, + { + "pair_index": 38, + "translation_m": 0.04503412561992633, + "rotation_deg": 1.279332716204477 + }, + { + "pair_index": 39, + "translation_m": 0.11215573119400024, + "rotation_deg": 0.5578231171630792 + }, + { + "pair_index": 40, + "translation_m": 0.05509905448014895, + "rotation_deg": 0.6608982729619334 + }, + { + "pair_index": 41, + "translation_m": 0.007272665876828039, + "rotation_deg": 1.2124341117031159 + }, + { + "pair_index": 42, + "translation_m": 0.055811383114362484, + "rotation_deg": 0.8153248357421402 + }, + { + "pair_index": 43, + "translation_m": 0.03138324591270751, + "rotation_deg": 1.2136591021205085 + }, + { + "pair_index": 44, + "translation_m": 0.13982233632280833, + "rotation_deg": 1.2089791291543672 + }, + { + "pair_index": 45, + "translation_m": 0.42173620405868173, + "rotation_deg": 1.126390973143559 + }, + { + "pair_index": 46, + "translation_m": 0.027936086071527602, + "rotation_deg": 0.5561027320483051 + }, + { + "pair_index": 47, + "translation_m": 0.08146548874814821, + "rotation_deg": 1.5984131745791201 + }, + { + "pair_index": 48, + "translation_m": 0.40597723810744263, + "rotation_deg": 1.3479854285502366 + }, + { + "pair_index": 49, + "translation_m": 0.3864154920341234, + "rotation_deg": 0.6215042157245596 + }, + { + "pair_index": 50, + "translation_m": 0.18945577362130134, + "rotation_deg": 0.596177211598774 + }, + { + "pair_index": 51, + "translation_m": 0.37813335218979344, + "rotation_deg": 1.0668602650100487 + }, + { + "pair_index": 52, + "translation_m": 0.330205576632098, + "rotation_deg": 0.40979383494055255 + }, + { + "pair_index": 53, + "translation_m": 0.39587465742237204, + "rotation_deg": 0.7934150366951904 + }, + { + "pair_index": 54, + "translation_m": 0.060998991546499626, + "rotation_deg": 0.9224390837063629 + }, + { + "pair_index": 55, + "translation_m": 0.0952510183208545, + "rotation_deg": 0.8616718556937568 + }, + { + "pair_index": 56, + "translation_m": 0.10976329201195999, + "rotation_deg": 0.5415573303416338 + } + ] + } + }, + "ground": { + "planes": 34, + "body_origin_height_above_ground_m": 0.2335, + "formula": "d_lidar - (R_X n_lidar)^T t_X - body_height" + }, + "linearized_one_sigma": { + "translation_m": [ + 0.006072210871275005, + 0.0060852661675311025, + 0.005465720025368553 + ], + "rotation_deg": [ + 0.06255688904352227, + 0.06213349734715941, + 0.13055508827073753 + ], + "warning": "conditional local estimate; bootstrap is the primary stability check" + }, + "weighted_jacobian_condition_number": 6.040138286165465, + "solver_multistart": { + "runs": 12, + "candidates_relative_to_best": [ + { + "cost": 324.2098227991519, + "success": true, + "translation_m": 5.570266299009551e-09, + "rotation_deg": 1.4455049406405054e-07 + }, + { + "cost": 324.20982279914983, + "success": true, + "translation_m": 0.0, + "rotation_deg": 0.0 + }, + { + "cost": 324.20982279915165, + "success": true, + "translation_m": 5.216823166795417e-09, + "rotation_deg": 1.973338877475283e-07 + }, + { + "cost": 324.20982279915034, + "success": true, + "translation_m": 1.3901066622882166e-09, + "rotation_deg": 6.335210062786435e-08 + }, + { + "cost": 324.20982279914995, + "success": true, + "translation_m": 3.578733410578741e-10, + "rotation_deg": 6.852733510041159e-09 + }, + { + "cost": 324.20982279914983, + "success": true, + "translation_m": 6.594966941115627e-10, + "rotation_deg": 2.2216701960527812e-08 + }, + { + "cost": 324.20982279914983, + "success": true, + "translation_m": 2.1650538139486925e-09, + "rotation_deg": 3.6255288379996055e-08 + }, + { + "cost": 324.2098227991501, + "success": true, + "translation_m": 1.5027981325208515e-09, + "rotation_deg": 6.326578543393082e-08 + }, + { + "cost": 324.20982279914983, + "success": true, + "translation_m": 6.094320168262204e-10, + "rotation_deg": 1.025130160040861e-08 + }, + { + "cost": 324.2098227991552, + "success": true, + "translation_m": 1.057266183614633e-08, + "rotation_deg": 3.643863231629731e-07 + }, + { + "cost": 324.20982279915063, + "success": true, + "translation_m": 3.9489601150102006e-09, + "rotation_deg": 1.359274031832874e-07 + }, + { + "cost": 324.20982279914983, + "success": true, + "translation_m": 6.276644321676319e-10, + "rotation_deg": 2.14493230752589e-08 + } + ] + }, + "bootstrap": { + "runs": 100, + "order": [ + "x_m", + "y_m", + "z_m", + "roll_deg", + "pitch_deg", + "yaw_deg" + ], + "std": [ + 0.003048001100427371, + 0.0025869752895426976, + 0.0014870952541001317, + 0.09174691854497609, + 0.06502786700039134, + 0.11777557058586356 + ], + "p025": [ + 1.2892012505330883, + -0.0051467048024525786, + 0.7035478241042927, + -0.8634755073850175, + 1.2139289883714506, + -1.173046710195043 + ], + "p975": [ + 1.2997598841406142, + 0.005003259375615847, + 0.7090711194920217, + -0.48035430043405547, + 1.4534667429791082, + -0.7593758945747364 + ] + } +} \ No newline at end of file diff --git a/results/03_comparison/README.md b/results/03_comparison/README.md new file mode 100644 index 0000000..37f92f4 --- /dev/null +++ b/results/03_comparison/README.md @@ -0,0 +1,7 @@ +# 跨批比较 + +- `extrinsic_difference.json`:data4 X 相对历史部署 X 的严格 SE(3) 差,约 `1.592 cm / 0.234°`。 +- `old_extrinsic_on_data4.json`:历史部署 X 在 data4 B 上的残差,约 `0.11953 m / 1.24836°`。 +- `data4_extrinsic_on_previous_batch2.json`:data4 X 在历史第二批 B 上的残差,约 `0.07931 m / 0.98926°`。 + +两套 X 的跨批表现接近,而 data4 自身估计残差更高;因此维持历史部署值,data4 只作为候选。 diff --git a/results/03_comparison/data4_extrinsic_on_previous_batch2.json b/results/03_comparison/data4_extrinsic_on_previous_batch2.json new file mode 100644 index 0000000..adacde3 --- /dev/null +++ b/results/03_comparison/data4_extrinsic_on_previous_batch2.json @@ -0,0 +1,298 @@ +{ + "role": "auxiliary check only; first-batch RTK is sparse", + "blind_with_respect_to_X": true, + "note": "No AX residual was used to select these pairs", + "stations": 38, + "metrics": { + "pairs": 39, + "translation_m": { + "rms": 0.07931219315845621, + "median": 0.0521831021438143, + "p90": 0.1205091988381832, + "p95": 0.14405284012014574, + "max": 0.23166749945892554 + }, + "rotation_deg": { + "rms": 0.9892579681085032, + "median": 0.8987168885592437, + "p90": 1.5241504377222574, + "p95": 1.5453098245907155, + "max": 1.8288069823538258 + }, + "per_pair": [ + { + "pair_index": 0, + "translation_m": 0.13184857122951013, + "rotation_deg": 0.4578882478759752, + "i": 0, + "j": 2 + }, + { + "pair_index": 1, + "translation_m": 0.11088249231082419, + "rotation_deg": 0.49123829458862667, + "i": 0, + "j": 3 + }, + { + "pair_index": 2, + "translation_m": 0.06122066543511726, + "rotation_deg": 0.46678985990983063, + "i": 1, + "j": 2 + }, + { + "pair_index": 3, + "translation_m": 0.05361370234686629, + "rotation_deg": 0.6513155675962176, + "i": 1, + "j": 3 + }, + { + "pair_index": 4, + "translation_m": 0.023371189257265605, + "rotation_deg": 0.3726639533978929, + "i": 2, + "j": 3 + }, + { + "pair_index": 5, + "translation_m": 0.07839704351948763, + "rotation_deg": 0.9876540671880906, + "i": 2, + "j": 4 + }, + { + "pair_index": 6, + "translation_m": 0.06371505126502003, + "rotation_deg": 0.8674541404693262, + "i": 3, + "j": 4 + }, + { + "pair_index": 7, + "translation_m": 0.09440077842634854, + "rotation_deg": 1.176934949298133, + "i": 3, + "j": 5 + }, + { + "pair_index": 8, + "translation_m": 0.034738581722701674, + "rotation_deg": 0.46221894567574257, + "i": 4, + "j": 5 + }, + { + "pair_index": 9, + "translation_m": 0.1368264467472551, + "rotation_deg": 1.0614354353201445, + "i": 6, + "j": 7 + }, + { + "pair_index": 10, + "translation_m": 0.003100407410401193, + "rotation_deg": 0.6140746474880827, + "i": 7, + "j": 9 + }, + { + "pair_index": 11, + "translation_m": 0.06611151014323934, + "rotation_deg": 0.09617682103039936, + "i": 8, + "j": 9 + }, + { + "pair_index": 12, + "translation_m": 0.11767435574035143, + "rotation_deg": 0.8987168885592437, + "i": 8, + "j": 10 + }, + { + "pair_index": 13, + "translation_m": 0.05534374617362978, + "rotation_deg": 0.9177398533680782, + "i": 9, + "j": 10 + }, + { + "pair_index": 14, + "translation_m": 0.016375449524654653, + "rotation_deg": 1.8288069823538258, + "i": 12, + "j": 14 + }, + { + "pair_index": 15, + "translation_m": 0.23166749945892554, + "rotation_deg": 0.4806436956517463, + "i": 13, + "j": 15 + }, + { + "pair_index": 16, + "translation_m": 0.20909038047616038, + "rotation_deg": 1.1888833539076575, + "i": 14, + "j": 16 + }, + { + "pair_index": 17, + "translation_m": 0.04954727606060992, + "rotation_deg": 0.7479656125581431, + "i": 17, + "j": 18 + }, + { + "pair_index": 18, + "translation_m": 0.0401572454810912, + "rotation_deg": 1.042619605722841, + "i": 18, + "j": 19 + }, + { + "pair_index": 19, + "translation_m": 0.0432861701880587, + "rotation_deg": 0.6965786478374109, + "i": 20, + "j": 21 + }, + { + "pair_index": 20, + "translation_m": 0.010709015812516234, + "rotation_deg": 1.6253345198252291, + "i": 22, + "j": 23 + }, + { + "pair_index": 21, + "translation_m": 0.058199199584633175, + "rotation_deg": 0.36595813742919014, + "i": 22, + "j": 24 + }, + { + "pair_index": 22, + "translation_m": 0.030262860466569532, + "rotation_deg": 1.1081362850905554, + "i": 22, + "j": 25 + }, + { + "pair_index": 23, + "translation_m": 0.04000865510964372, + "rotation_deg": 1.189922759500818, + "i": 23, + "j": 24 + }, + { + "pair_index": 24, + "translation_m": 0.06464346915846221, + "rotation_deg": 0.7699901460922239, + "i": 24, + "j": 25 + }, + { + "pair_index": 25, + "translation_m": 0.0521831021438143, + "rotation_deg": 0.18489023256895315, + "i": 25, + "j": 26 + }, + { + "pair_index": 26, + "translation_m": 0.08267778191372169, + "rotation_deg": 0.9059437837656906, + "i": 25, + "j": 27 + }, + { + "pair_index": 27, + "translation_m": 0.038589920757972004, + "rotation_deg": 0.8404190717226915, + "i": 26, + "j": 27 + }, + { + "pair_index": 28, + "translation_m": 0.05488335734683258, + "rotation_deg": 1.5217701038732556, + "i": 26, + "j": 28 + }, + { + "pair_index": 29, + "translation_m": 0.022562161090077113, + "rotation_deg": 1.5336717731182645, + "i": 26, + "j": 29 + }, + { + "pair_index": 30, + "translation_m": 0.016794927865731942, + "rotation_deg": 1.4945757001638067, + "i": 27, + "j": 30 + }, + { + "pair_index": 31, + "translation_m": 0.08618762377782405, + "rotation_deg": 1.5364181917868804, + "i": 30, + "j": 31 + }, + { + "pair_index": 32, + "translation_m": 0.06980420384374487, + "rotation_deg": 0.7086752430201493, + "i": 30, + "j": 32 + }, + { + "pair_index": 33, + "translation_m": 0.032647030192474995, + "rotation_deg": 1.2921319816631744, + "i": 32, + "j": 33 + }, + { + "pair_index": 34, + "translation_m": 0.0345860258877476, + "rotation_deg": 1.374123371412574, + "i": 32, + "j": 34 + }, + { + "pair_index": 35, + "translation_m": 0.05213790087077668, + "rotation_deg": 0.46701073818826994, + "i": 32, + "j": 35 + }, + { + "pair_index": 36, + "translation_m": 0.023288081661695596, + "rotation_deg": 0.15454273191995999, + "i": 33, + "j": 34 + }, + { + "pair_index": 37, + "translation_m": 0.035256268159629366, + "rotation_deg": 0.9445397555422734, + "i": 33, + "j": 35 + }, + { + "pair_index": 38, + "translation_m": 0.020736197670988343, + "rotation_deg": 1.137619185440334, + "i": 35, + "j": 36 + } + ] + } +} \ No newline at end of file diff --git a/results/03_comparison/extrinsic_difference.json b/results/03_comparison/extrinsic_difference.json new file mode 100644 index 0000000..5642112 --- /dev/null +++ b/results/03_comparison/extrinsic_difference.json @@ -0,0 +1,43 @@ +{ + "convention": "delta = inverse(reference) @ candidate", + "reference": "results\\01_previous_two_batches\\final_extrinsic_deployment.json", + "candidate": "results\\02_data4_calibration\\consensus\\extrinsic.json", + "candidate_minus_reference_translation_xyz_m": [ + 0.002616328047628791, + -0.0016393602019739468, + -0.01562078923962118 + ], + "candidate_minus_reference_rpy_xyz_deg": [ + -0.006740470942029009, + 0.1911623881626312, + -0.13523257777677677 + ], + "relative_translation_norm_m": 0.01592299377608647, + "relative_rotation_deg": 0.23416878770707064, + "relative_matrix_4x4": [ + [ + 0.9999916502190469, + 0.0023133957658166954, + 0.003368633583168801, + 0.0029672356800607425 + ], + [ + -0.0023136119190219507, + 0.9999973217800623, + 6.027097638170339e-05, + -0.0013876386622047616 + ], + [ + -0.0033684851306055737, + -6.80641839411564e-05, + 0.999994324321489, + -0.015582416441470737 + ], + [ + 0.0, + 0.0, + 0.0, + 1.0 + ] + ] +} \ No newline at end of file diff --git a/results/03_comparison/old_extrinsic_on_data4.json b/results/03_comparison/old_extrinsic_on_data4.json new file mode 100644 index 0000000..bfe83ca --- /dev/null +++ b/results/03_comparison/old_extrinsic_on_data4.json @@ -0,0 +1,207 @@ +{ + "role": "auxiliary check only; first-batch RTK is sparse", + "blind_with_respect_to_X": true, + "note": "No AX residual was used to select these pairs", + "stations": 34, + "metrics": { + "pairs": 26, + "translation_m": { + "rms": 0.11953342461680516, + "median": 0.059870553274397435, + "p90": 0.11852081980116268, + "p95": 0.27001896145006843, + "max": 0.3924432090639719 + }, + "rotation_deg": { + "rms": 1.248363434126574, + "median": 0.7472573318442859, + "p90": 1.7836452528035456, + "p95": 2.0119235382379705, + "max": 4.302962170390954 + }, + "per_pair": [ + { + "pair_index": 0, + "translation_m": 0.05017939301544147, + "rotation_deg": 0.7621142667147064, + "i": 0, + "j": 2 + }, + { + "pair_index": 1, + "translation_m": 0.05476119605552225, + "rotation_deg": 0.39488243852657817, + "i": 2, + "j": 3 + }, + { + "pair_index": 2, + "translation_m": 0.11117501211320562, + "rotation_deg": 0.29330702638456563, + "i": 2, + "j": 5 + }, + { + "pair_index": 3, + "translation_m": 0.06643052326439366, + "rotation_deg": 0.5530967273631149, + "i": 3, + "j": 5 + }, + { + "pair_index": 4, + "translation_m": 0.028182994383263396, + "rotation_deg": 0.5499639343413396, + "i": 5, + "j": 8 + }, + { + "pair_index": 5, + "translation_m": 0.06086463130525318, + "rotation_deg": 0.6985420749542534, + "i": 6, + "j": 7 + }, + { + "pair_index": 6, + "translation_m": 0.020630277131513722, + "rotation_deg": 0.6820744752666614, + "i": 6, + "j": 8 + }, + { + "pair_index": 7, + "translation_m": 0.046848360772821, + "rotation_deg": 0.8723393366986318, + "i": 12, + "j": 14 + }, + { + "pair_index": 8, + "translation_m": 0.05887647524354169, + "rotation_deg": 1.9071782288631753, + "i": 13, + "j": 16 + }, + { + "pair_index": 9, + "translation_m": 0.11661768017132504, + "rotation_deg": 2.046838641362902, + "i": 15, + "j": 16 + }, + { + "pair_index": 10, + "translation_m": 0.06473893802255462, + "rotation_deg": 0.30644679433866145, + "i": 15, + "j": 17 + }, + { + "pair_index": 11, + "translation_m": 0.04963073408543951, + "rotation_deg": 0.33998803648541337, + "i": 15, + "j": 18 + }, + { + "pair_index": 12, + "translation_m": 0.03313618555659487, + "rotation_deg": 0.5283154781000993, + "i": 16, + "j": 19 + }, + { + "pair_index": 13, + "translation_m": 0.0691797699772094, + "rotation_deg": 0.6320358674350408, + "i": 21, + "j": 22 + }, + { + "pair_index": 14, + "translation_m": 0.042364105706927925, + "rotation_deg": 1.660112276743916, + "i": 21, + "j": 24 + }, + { + "pair_index": 15, + "translation_m": 0.07073443988383908, + "rotation_deg": 0.8343384286314613, + "i": 22, + "j": 23 + }, + { + "pair_index": 16, + "translation_m": 0.12042395943100032, + "rotation_deg": 4.302962170390954, + "i": 22, + "j": 25 + }, + { + "pair_index": 17, + "translation_m": 0.05181438442870987, + "rotation_deg": 0.8455629957527, + "i": 25, + "j": 26 + }, + { + "pair_index": 18, + "translation_m": 0.032857670083788, + "rotation_deg": 0.7324003969738653, + "i": 25, + "j": 28 + }, + { + "pair_index": 19, + "translation_m": 0.05285636518357229, + "rotation_deg": 0.4369186254063126, + "i": 26, + "j": 27 + }, + { + "pair_index": 20, + "translation_m": 0.10251045240958172, + "rotation_deg": 1.0529040723274141, + "i": 26, + "j": 29 + }, + { + "pair_index": 21, + "translation_m": 0.023054151271876995, + "rotation_deg": 0.24976946582216739, + "i": 27, + "j": 28 + }, + { + "pair_index": 22, + "translation_m": 0.06593100197822659, + "rotation_deg": 1.2515362824917693, + "i": 27, + "j": 29 + }, + { + "pair_index": 23, + "translation_m": 0.31988396212309117, + "rotation_deg": 1.0256849788735003, + "i": 29, + "j": 30 + }, + { + "pair_index": 24, + "translation_m": 0.3924432090639719, + "rotation_deg": 0.8042671494244682, + "i": 29, + "j": 31 + }, + { + "pair_index": 25, + "translation_m": 0.11357259403662164, + "rotation_deg": 0.901297615800165, + "i": 30, + "j": 32 + } + ] + } +} \ No newline at end of file diff --git a/results/README.md b/results/README.md index 2a2899e..5676a2e 100644 --- a/results/README.md +++ b/results/README.md @@ -1,60 +1,21 @@ -# 标定结果索引 +# 结果目录 -本目录保存本次双天线 RTK—3D LiDAR 手眼标定的可复现结果。坐标约定统一为: +本目录只归档轻量标定产物,不包含原始 dlog、rscap、逐帧 NPZ 或完整点云。 -```text -X = T_body_lidar -``` - -即外参将**原始 LiDAR 点**变换到以**后轮轴中心**为原点、X 前/Y 左/Z 上的车体系。 - -## 部署时只使用这一个文件 - -[`final_extrinsic_deployment.json`](final_extrinsic_deployment.json) 是唯一用于部署的外参文件: - -```text -translation [m] = [ 1.297759692, -0.000067331, 0.720497835 ] -RPY xyz [deg] = [ -0.785151146, 1.202660822, -0.835510053 ] -``` - -## 顶层汇总文件 - -| 文件 | 用途 | 是否用于部署 | +| 目录 | 内容 | 使用建议 | |---|---|---| -| [`final_extrinsic_deployment.json`](final_extrinsic_deployment.json) | 精简、固定的最终外参;含平移、RPY、四元数和 4×4 矩阵。 | **是,唯一入口** | -| [`final_extrinsic_recommended.json`](final_extrinsic_recommended.json) | 同一算法外参的完整求解记录、残差、地面约束、条件数和 Bootstrap。 | 否;用于审计/复现。 | -| [`final_summary.json`](final_summary.json) | 共识结果的摘要。 | 否;用于查看指标。 | -| [`comparison_summary.json`](comparison_summary.json) | Open3D GICP、small_gicp 与共识解的对比。 | 否;用于方法对比。 | +| `01_previous_two_batches/` | 第二批求解、第一批辅助复核的历史部署结果;含 Open3D、small_gicp、consensus B、质量和灵敏度文件 | 当前部署基线 | +| `02_data4_calibration/` | data4 的 Open3D、small_gicp、consensus B 和独立 X | 候选/稳定性证据 | +| `03_comparison/` | 两套 X 的 SE(3) 差以及互换批次后的 AX 残差 | 跨批判断依据 | -`final_extrinsic_deployment.json` 与 `final_extrinsic_recommended.json` 的外参数值相同;前者只是删除了求解过程字段,供上游程序稳定读取。 +最终部署文件是 `01_previous_two_batches/final_extrinsic_deployment.json`。`02_data4_calibration/final_extrinsic_data4.json` 不应在没有新增独立证据时覆盖它。 -## 子目录 +常见文件: -| 目录 | 内容 | 用途 | -|---|---|---| -| [`common/`](common/) | 第二批每个静止站点拟合得到的地面平面。 | 地面约束检查。 | -| [`open3d_gicp/`](open3d_gicp/) | Open3D GICP 生成的 LiDAR 相对运动 B、质量指标、精筛记录和对应外参。 | 后端一的独立结果。 | -| [`small_gicp/`](small_gicp/) | small_gicp 生成的 LiDAR 相对运动 B、质量指标、精筛记录和对应外参。 | 后端二的独立结果。 | -| [`consensus/`](consensus/) | 两后端一致性筛选后的共识 B,共识外参和第一批辅助复核。 | 主要求解依据。 | -| [`diagnostics/`](diagnostics/) | 单运动对 roll/pitch/yaw 局部灵敏度扫描。 | 仅诊断,不可直接当外参。 | - -## 如何识别 B 文件 - -每个 `.npz` 都是 LiDAR 相对运动集合 `B_ij = T_Li_Lj`,把第 j 个静止站点的点云变换到第 i 个站点 LiDAR 坐标系。它们不是车体—雷达外参,不能直接写入部署配置。 - -- `B_batch2_*`:第二批 38 站高频 RTK 数据,主要求解使用。 -- `B_batch1_*`:第一批 38 站稀疏 RTK 数据,仅作辅助复核。 -- `*_estimation.npz`:点云配准的初始候选集合。 -- `*_refined.npz`:经过点云质量门限后的集合。 -- `consensus/B_batch2_consensus.npz`:Open3D 与 small_gicp 对同一运动对的 B 差异不超过 `0.05 m / 0.50°` 后保留的 39 对;它是最终主求解输入。 - -同名的 `.quality.json/.csv` 记录配准质量,`.refinement.json` 记录精筛过程,`.consensus.json` 记录跨后端一致性筛选。它们都用于追溯,不用于部署。 - -## 结果使用边界 - -- 主结果由第二批数据求解;第一批只作为独立辅助检查,不参与主结果拟合。 -- B 的筛选先于 X 的求解,并且不读取待求外参 X,不用 AX 残差反过来选择 B。 -- 第二批共识集的 AX RMS 为 `0.07985 m / 0.96118°`;旋转残差约 1°,因此不是厘米级绝对精度认证。 -- 当前 RTK 轨迹只有位置和 yaw,没有 roll/pitch。AX 残差对 Z 不可观;Z 必须结合地面约束和独立机械量测确认。 - -更多流程、运行命令和可视化说明见仓库根目录的 [`README.md`](../README.md)。 \ No newline at end of file +- `B_*_estimation.npz`:后端原始运动对 B。 +- `B_*_quality.json/csv`:配准和 Hessian/信息矩阵质量。 +- `B_*_refined.npz`:X 无关筛选后的 B。 +- `B_*_consensus.npz` 或 `consensus/B_consensus.npz`:双后端认可的 B。 +- `extrinsic*.json`:由对应 B 和地面约束求出的 X。 +- `*_check.json`:把给定 X 应用于另一批 B 的残差,不是重新求 X。 +- `ground_planes*.csv`:每站地面平面参数。 diff --git a/run/README.md b/run/README.md new file mode 100644 index 0000000..4839b69 --- /dev/null +++ b/run/README.md @@ -0,0 +1,27 @@ +# run + +本目录是 PowerShell 运行入口;完整流程、参数解释、验收方法和代码职责统一见仓库根目录 `README.md`。 + +| 脚本 | 使用时机 | +|---|---| +| `export_legacy_stations.ps1` | 第一、第二批式逐站 dlog 导出。 | +| `export_multisensor_stations.ps1` | LiDAR dlog + 独立 RTK/IMU rscap 导出和时间关联。 | +| `prepare_legacy_dataset.ps1` | 旧式导出结果生成 prepared。 | +| `prepare_multisensor_dataset.ps1` | 多传感器 combined 结果生成 prepared。 | +| `run_single_dataset.ps1` | 单批数据运行 small_gicp、Open3D、consensus 和 X 求解。 | +| `run_all.ps1` | 第二批求解、第一批辅助复核的历史流程。 | +| `run_consensus_finish.ps1` | 从已有两个后端 B 重做 consensus。 | +| `run_sensitivity_scan.ps1` | 指定 Pair 的外参角度灵敏度扫描。 | +| `view_result.ps1` | 传入 frames、B、X 查看 3D 配准及增量。 | + +最常用的 3D 入口: + +```powershell +powershell.exe -NoProfile -ExecutionPolicy Bypass -File ".\run\view_result.ps1" ` + -Frames "D:\你的数据目录\prepared\frames_all" ` + -Pairs "D:\你的结果目录\B_consensus.npz" ` + -Extrinsic "D:\你的结果目录\extrinsic.json" ` + -PairIndex 0 +``` + +`frames_all` 必须与生成 B 时的站点顺序一致。 diff --git a/run/export_legacy_stations.ps1 b/run/export_legacy_stations.ps1 new file mode 100644 index 0000000..c577d7f --- /dev/null +++ b/run/export_legacy_stations.ps1 @@ -0,0 +1,34 @@ +param( + [Parameter(Mandatory = $true)][string]$DataRoot, + [Parameter(Mandatory = $true)][string]$OutputRoot, + [string]$LidarObject = "frontlidar", + [string]$Timezone = "+08:00", + [string[]]$StationNames = @(), + [int]$Stride = 1, + [double]$RtkMaxDtMs = 150.0 +) + +$ErrorActionPreference = "Stop" +$Repo = Split-Path -Parent $PSScriptRoot +$Exporter = Join-Path $Repo "tools\frontlidar_dlog_export.py" +if (-not (Test-Path -LiteralPath $DataRoot)) { throw "DataRoot does not exist: $DataRoot" } +if ($Stride -lt 1) { throw "Stride must be at least 1" } +if ($StationNames.Count -gt 0) { + $Stations = @($StationNames | ForEach-Object { Get-Item -LiteralPath (Join-Path $DataRoot $_) }) +} else { + $Stations = @(Get-ChildItem -LiteralPath $DataRoot -Directory | Where-Object { + (Test-Path -LiteralPath (Join-Path $_.FullName "dobject")) -and + (Test-Path -LiteralPath (Join-Path $_.FullName "dobject_recording")) + } | Sort-Object Name) +} +if ($Stations.Count -eq 0) { throw "No station directory containing dobject and dobject_recording was found" } +New-Item -ItemType Directory -Force -Path $OutputRoot | Out-Null +foreach ($Station in $Stations) { + $Out = Join-Path $OutputRoot $Station.Name + Write-Host "[legacy station $($Station.Name)]" + & python $Exporter --dlog $Station.FullName --out $Out --object $LidarObject --format npz ` + --timezone $Timezone --stride $Stride --compress --rtk-sidecars --write-reports --resume ` + --rtk-max-dt-ms $RtkMaxDtMs + if ($LASTEXITCODE -ne 0) { throw "Export failed for station $($Station.Name)" } +} +Write-Host "Exported stations: $($Stations.Count)" diff --git a/run/export_multisensor_stations.ps1 b/run/export_multisensor_stations.ps1 new file mode 100644 index 0000000..e96be10 --- /dev/null +++ b/run/export_multisensor_stations.ps1 @@ -0,0 +1,89 @@ +param( + [Parameter(Mandatory = $true)][string]$DataRoot, + [Parameter(Mandatory = $true)][string]$OutputRoot, + [Parameter(Mandatory = $true)][string]$RtkCapture, + [Parameter(Mandatory = $true)][string]$ImuCapture, + [string]$LidarObject = "frontlidar", + [string]$Timezone = "+08:00", + [string[]]$StationNames = @(), + [int]$Stride = 1, + [double]$RtkMaxDtMs = 150.0, + [double]$ImuBeforeMs = 100.0, + [double]$ImuAfterMs = 100.0, + [switch]$SkipLidarExport, + [switch]$SkipSerialParsing +) + +$ErrorActionPreference = "Stop" +$RepoRoot = Split-Path -Parent $PSScriptRoot +$Exporter = Join-Path $RepoRoot "tools\frontlidar_dlog_export.py" +$Builder = Join-Path $RepoRoot "tools\build_multisensor_npz.py" +$Parser = Join-Path $RepoRoot "tools\rscap_v2\parse_rtk_imu_v2.py" +$Auditor = Join-Path $RepoRoot "tools\rscap_v2\audit_capture_v2.py" +$ExportRoot = Join-Path $OutputRoot "export" +$ParsedRoot = Join-Path $OutputRoot "parsed" +$CombinedRoot = Join-Path $OutputRoot "combined" + +function Run-Python { + param([string]$Stage, [string[]]$Arguments) + Write-Host "[$Stage]" + & python @Arguments + if ($LASTEXITCODE -ne 0) { + throw "$Stage failed with Python exit code $LASTEXITCODE" + } +} + +foreach ($Path in @($DataRoot, $RtkCapture, $ImuCapture)) { + if (-not (Test-Path -LiteralPath $Path)) { throw "Input does not exist: $Path" } +} +if ($Stride -lt 1) { throw "Stride must be at least 1" } + +if ($StationNames.Count -gt 0) { + $Stations = @($StationNames | ForEach-Object { Get-Item -LiteralPath (Join-Path $DataRoot $_) }) +} else { + $Stations = @(Get-ChildItem -LiteralPath $DataRoot -Directory | Where-Object { + (Test-Path -LiteralPath (Join-Path $_.FullName "dobject")) -and + (Test-Path -LiteralPath (Join-Path $_.FullName "dobject_recording")) + } | Sort-Object Name) +} +if ($Stations.Count -eq 0) { throw "No station directory containing dobject and dobject_recording was found" } + +New-Item -ItemType Directory -Force -Path $OutputRoot | Out-Null +if (-not $SkipSerialParsing) { + New-Item -ItemType Directory -Force -Path $ParsedRoot | Out-Null + Run-Python "capture audit" @($Auditor, $RtkCapture, $ImuCapture, "--out", (Join-Path $OutputRoot "capture_audit.json")) + Run-Python "RTK/IMU parse" @($Parser, "--rtk", $RtkCapture, "--imu", $ImuCapture, "--out", $ParsedRoot) +} + +foreach ($Station in $Stations) { + $StationOut = Join-Path $ExportRoot $Station.Name + if (-not $SkipLidarExport) { + Run-Python "LiDAR station $($Station.Name)" @( + $Exporter, "--dlog", $Station.FullName, "--out", $StationOut, + "--object", $LidarObject, "--format", "npz", "--timezone", $Timezone, + "--stride", "$Stride", "--compress", "--skip-rtk", "--write-reports", "--resume" + ) + } + if (-not (Test-Path -LiteralPath (Join-Path $StationOut "frames"))) { + throw "Exported frame directory is absent for station $($Station.Name): $StationOut" + } +} + +$BuildArgs = @($Builder) +foreach ($Station in $Stations) { + $Frames = Join-Path (Join-Path $ExportRoot $Station.Name) "frames" + $BuildArgs += @("--lidar", "$($Station.Name)=$Frames") +} +$BuildArgs += @( + "--rtk", (Join-Path $ParsedRoot "rtk.jsonl"), + "--imu", (Join-Path $ParsedRoot "imu.jsonl"), + "--out", $CombinedRoot, + "--rtk-max-dt-ms", "$RtkMaxDtMs", + "--imu-before-ms", "$ImuBeforeMs", + "--imu-after-ms", "$ImuAfterMs", + "--overwrite" +) +Run-Python "LiDAR/RTK/IMU association" $BuildArgs + +Write-Host "Completed stations: $($Stations.Count)" +Write-Host "Combined NPZ: $CombinedRoot" diff --git a/run/prepare_legacy_dataset.ps1 b/run/prepare_legacy_dataset.ps1 new file mode 100644 index 0000000..934f8f5 --- /dev/null +++ b/run/prepare_legacy_dataset.ps1 @@ -0,0 +1,21 @@ +param( + [Parameter(Mandatory = $true)][string]$ExportRoot, + [Parameter(Mandatory = $true)][string]$Output, + [Parameter(Mandatory = $true)][double]$HeadingOffsetDeg, + [Parameter(Mandatory = $true)][double[]]$AntennaLever, + [int]$MinStations = 30, + [int]$ExpectedStations = 0, + [double]$HeadingStdLimitDeg = [double]::PositiveInfinity, + [switch]$Overwrite +) + +$ErrorActionPreference = "Stop" +if ($AntennaLever.Count -ne 3) { throw "AntennaLever must contain X,Y,Z in body coordinates" } +$Repo = Split-Path -Parent $PSScriptRoot +$Args = @((Join-Path $Repo "tools\prepare_station_dataset.py"), "--export-root", $ExportRoot, + "--output", $Output, "--heading-offset-deg", "$HeadingOffsetDeg", "--antenna-lever") + + @($AntennaLever | ForEach-Object { "$_" }) + @("--min-stations", "$MinStations", + "--expected-stations", "$ExpectedStations", "--heading-std-limit-deg", "$HeadingStdLimitDeg") +if ($Overwrite) { $Args += "--overwrite" } +& python @Args +if ($LASTEXITCODE -ne 0) { throw "Legacy dataset preparation failed" } diff --git a/run/prepare_multisensor_dataset.ps1 b/run/prepare_multisensor_dataset.ps1 new file mode 100644 index 0000000..28c57cf --- /dev/null +++ b/run/prepare_multisensor_dataset.ps1 @@ -0,0 +1,21 @@ +param( + [Parameter(Mandatory = $true)][string]$CombinedRoot, + [Parameter(Mandatory = $true)][string]$Output, + [Parameter(Mandatory = $true)][double]$HeadingOffsetDeg, + [Parameter(Mandatory = $true)][double[]]$AntennaLever, + [int]$MinStations = 30, + [int]$ExpectedStations = 0, + [double]$HeadingStdLimitDeg = 0.5, + [switch]$Overwrite +) + +$ErrorActionPreference = "Stop" +if ($AntennaLever.Count -ne 3) { throw "AntennaLever must contain X,Y,Z in body coordinates" } +$Repo = Split-Path -Parent $PSScriptRoot +$Args = @((Join-Path $Repo "tools\prepare_multisensor_station_dataset.py"), "--combined-root", $CombinedRoot, + "--output", $Output, "--heading-offset-deg", "$HeadingOffsetDeg", "--antenna-lever") + + @($AntennaLever | ForEach-Object { "$_" }) + @("--min-stations", "$MinStations", + "--expected-stations", "$ExpectedStations", "--heading-std-limit-deg", "$HeadingStdLimitDeg") +if ($Overwrite) { $Args += "--overwrite" } +& python @Args +if ($LASTEXITCODE -ne 0) { throw "Multisensor dataset preparation failed" } diff --git a/run/run_all.ps1 b/run/run_all.ps1 index 7196db1..18d7ed7 100644 --- a/run/run_all.ps1 +++ b/run/run_all.ps1 @@ -1,32 +1,74 @@ param( - [string]$Batch1Prepared = "C:\Users\admin\Documents\Codex\2026-07-15\wo\outputs\calibration_20260717\prepared", - [string]$Batch2Prepared = "C:\Users\admin\Documents\Codex\2026-07-15\wo\outputs\calibration_data1_20260720\prepared" + [Parameter(Mandatory = $true)][string]$Batch1Prepared, + [Parameter(Mandatory = $true)][string]$Batch2Prepared, + [string]$OutputRoot = "" ) + $ErrorActionPreference = "Stop" $Repo = Split-Path -Parent $PSScriptRoot +if ([string]::IsNullOrWhiteSpace($OutputRoot)) { + $OutputRoot = Join-Path $Repo "results\01_previous_two_batches" +} $Code = Join-Path $Repo "code\rigorous_calibration.py" $Refine = Join-Path $Repo "code\refine_pairs.py" $Summary = Join-Path $Repo "code\summarize_results.py" -$R = Join-Path $Repo "results" $B1Frames = Join-Path $Batch1Prepared "frames_all" $B2Frames = Join-Path $Batch2Prepared "frames_all" $B1Body = Join-Path $Batch1Prepared "body_poses_rear_gga_raw_rear_to_front.csv" $B2Body = Join-Path $Batch2Prepared "body_poses_rear_gga_raw_rear_to_front.csv" -python $Code ground --frames $B2Frames --output "$R\common\ground_planes_batch2.csv" +function Run-Python { + param([string]$Stage, [string[]]$Arguments) + Write-Host "[$Stage]" + & python @Arguments + if ($LASTEXITCODE -ne 0) { throw "$Stage failed with Python exit code $LASTEXITCODE" } +} -python $Code pairs --backend small_gicp --frames $B2Frames --body $B2Body --output "$R\small_gicp\B_batch2_estimation.npz" --quality-json "$R\small_gicp\B_batch2_quality.json" --quality-csv "$R\small_gicp\B_batch2_quality.csv" -python $Code pairs --backend open3d --frames $B2Frames --body $B2Body --output "$R\open3d_gicp\B_batch2_estimation.npz" --quality-json "$R\open3d_gicp\B_batch2_quality.json" --quality-csv "$R\open3d_gicp\B_batch2_quality.csv" --max-gap 3 --multistart 1 --iterations 40 -python $Refine --pairs "$R\small_gicp\B_batch2_estimation.npz" --quality-json "$R\small_gicp\B_batch2_quality.json" --output "$R\small_gicp\B_batch2_refined.npz" -python $Refine --pairs "$R\open3d_gicp\B_batch2_estimation.npz" --quality-json "$R\open3d_gicp\B_batch2_quality.json" --output "$R\open3d_gicp\B_batch2_refined.npz" -python $Code calibrate --pairs "$R\small_gicp\B_batch2_refined.npz" --ground-planes "$R\common\ground_planes_batch2.csv" --output "$R\small_gicp\extrinsic_batch2_refined.json" -python $Code calibrate --pairs "$R\open3d_gicp\B_batch2_refined.npz" --ground-planes "$R\common\ground_planes_batch2.csv" --output "$R\open3d_gicp\extrinsic_batch2_refined.json" +foreach ($Path in @($B1Frames, $B2Frames, $B1Body, $B2Body)) { + if (-not (Test-Path -LiteralPath $Path)) { throw "Input does not exist: $Path" } +} +$Common = Join-Path $OutputRoot "common" +$Small = Join-Path $OutputRoot "small_gicp" +$Open = Join-Path $OutputRoot "open3d_gicp" +New-Item -ItemType Directory -Force -Path $Common,$Small,$Open | Out-Null -python $Code pairs --backend small_gicp --frames $B1Frames --body $B1Body --output "$R\small_gicp\B_batch1_auxiliary.npz" --quality-json "$R\small_gicp\B_batch1_quality.json" --quality-csv "$R\small_gicp\B_batch1_quality.csv" --max-gap 3 --multistart 1 --iterations 40 -python $Code pairs --backend open3d --frames $B1Frames --body $B1Body --output "$R\open3d_gicp\B_batch1_auxiliary.npz" --quality-json "$R\open3d_gicp\B_batch1_quality.json" --quality-csv "$R\open3d_gicp\B_batch1_quality.csv" --max-gap 3 --multistart 1 --iterations 40 -python $Refine --pairs "$R\small_gicp\B_batch1_auxiliary.npz" --quality-json "$R\small_gicp\B_batch1_quality.json" --output "$R\small_gicp\B_batch1_auxiliary_refined.npz" -python $Refine --pairs "$R\open3d_gicp\B_batch1_auxiliary.npz" --quality-json "$R\open3d_gicp\B_batch1_quality.json" --output "$R\open3d_gicp\B_batch1_auxiliary_refined.npz" -python $Code validate --pairs "$R\small_gicp\B_batch1_auxiliary_refined.npz" --extrinsic "$R\small_gicp\extrinsic_batch2_refined.json" --output "$R\small_gicp\batch1_auxiliary_check.json" -python $Code validate --pairs "$R\open3d_gicp\B_batch1_auxiliary_refined.npz" --extrinsic "$R\open3d_gicp\extrinsic_batch2_refined.json" --output "$R\open3d_gicp\batch1_auxiliary_check.json" +Run-Python "batch2 ground planes" @($Code, "ground", "--frames", $B2Frames, "--output", (Join-Path $Common "ground_planes_batch2.csv")) -python $Summary --open3d "$R\open3d_gicp\extrinsic_batch2_refined.json" --small "$R\small_gicp\extrinsic_batch2_refined.json" --open3d-quality "$R\open3d_gicp\B_batch2_quality.json" --small-quality "$R\small_gicp\B_batch2_quality.json" --open3d-check "$R\open3d_gicp\batch1_auxiliary_check.json" --small-check "$R\small_gicp\batch1_auxiliary_check.json" --output "$R\comparison_summary.json" --recommended-output "$R\final_extrinsic_recommended.json" +foreach ($Backend in @("small_gicp", "open3d")) { + $Directory = if ($Backend -eq "small_gicp") { $Small } else { $Open } + $Extra = @() + if ($Backend -eq "open3d") { $Extra = @("--max-gap", "3", "--multistart", "1", "--iterations", "40") } + $B2Raw = Join-Path $Directory "B_batch2_estimation.npz" + $B2QualityJson = Join-Path $Directory "B_batch2_quality.json" + $B2QualityCsv = Join-Path $Directory "B_batch2_quality.csv" + Run-Python "$Backend batch2 pairs" (@($Code, "pairs", "--backend", $Backend, "--frames", $B2Frames, "--body", $B2Body, + "--output", $B2Raw, "--quality-json", $B2QualityJson, "--quality-csv", $B2QualityCsv) + $Extra) + $B2Refined = Join-Path $Directory "B_batch2_refined.npz" + Run-Python "$Backend batch2 refinement" @($Refine, "--pairs", $B2Raw, "--quality-json", $B2QualityJson, "--output", $B2Refined) + $Extrinsic = Join-Path $Directory "extrinsic_batch2_refined.json" + Run-Python "$Backend batch2 calibration" @($Code, "calibrate", "--pairs", $B2Refined, + "--ground-planes", (Join-Path $Common "ground_planes_batch2.csv"), "--output", $Extrinsic) + + $B1Raw = Join-Path $Directory "B_batch1_auxiliary.npz" + $B1QualityJson = Join-Path $Directory "B_batch1_quality.json" + $B1QualityCsv = Join-Path $Directory "B_batch1_quality.csv" + Run-Python "$Backend batch1 auxiliary pairs" @($Code, "pairs", "--backend", $Backend, "--frames", $B1Frames, "--body", $B1Body, + "--output", $B1Raw, "--quality-json", $B1QualityJson, "--quality-csv", $B1QualityCsv, + "--max-gap", "3", "--multistart", "1", "--iterations", "40") + $B1Refined = Join-Path $Directory "B_batch1_auxiliary_refined.npz" + Run-Python "$Backend batch1 refinement" @($Refine, "--pairs", $B1Raw, "--quality-json", $B1QualityJson, "--output", $B1Refined) + Run-Python "$Backend batch1 auxiliary check" @($Code, "validate", "--pairs", $B1Refined, + "--extrinsic", $Extrinsic, "--output", (Join-Path $Directory "batch1_auxiliary_check.json")) +} + +Run-Python "backend summary" @($Summary, + "--open3d", (Join-Path $Open "extrinsic_batch2_refined.json"), + "--small", (Join-Path $Small "extrinsic_batch2_refined.json"), + "--open3d-quality", (Join-Path $Open "B_batch2_quality.json"), + "--small-quality", (Join-Path $Small "B_batch2_quality.json"), + "--open3d-check", (Join-Path $Open "batch1_auxiliary_check.json"), + "--small-check", (Join-Path $Small "batch1_auxiliary_check.json"), + "--output", (Join-Path $OutputRoot "comparison_summary.json"), + "--recommended-output", (Join-Path $OutputRoot "final_extrinsic_recommended.json")) + +Write-Host "Two-batch results: $OutputRoot" diff --git a/run/run_consensus_finish.ps1 b/run/run_consensus_finish.ps1 index b94c368..f809b3d 100644 --- a/run/run_consensus_finish.ps1 +++ b/run/run_consensus_finish.ps1 @@ -1,12 +1,34 @@ +param([string]$ResultRoot = "") + $ErrorActionPreference = "Stop" $Repo = Split-Path -Parent $PSScriptRoot +if ([string]::IsNullOrWhiteSpace($ResultRoot)) { $ResultRoot = Join-Path $Repo "results\01_previous_two_batches" } $Code = Join-Path $Repo "code\rigorous_calibration.py" $Filter = Join-Path $Repo "code\cross_backend_filter.py" $Finalize = Join-Path $Repo "code\finalize_consensus.py" -$R = Join-Path $Repo "results" -python $Filter --open3d-pairs "$R\open3d_gicp\B_batch2_refined.npz" --small-pairs "$R\small_gicp\B_batch2_refined.npz" --output "$R\consensus\B_batch2_consensus.npz" -python $Filter --open3d-pairs "$R\open3d_gicp\B_batch1_auxiliary_refined.npz" --small-pairs "$R\small_gicp\B_batch1_auxiliary_refined.npz" --output "$R\consensus\B_batch1_consensus.npz" --min-pairs 15 -python $Code calibrate --pairs "$R\consensus\B_batch2_consensus.npz" --ground-planes "$R\common\ground_planes_batch2.csv" --output "$R\consensus\extrinsic_batch2_consensus.json" -python $Code validate --pairs "$R\consensus\B_batch1_consensus.npz" --extrinsic "$R\consensus\extrinsic_batch2_consensus.json" --output "$R\consensus\batch1_auxiliary_check.json" -python $Finalize --consensus-extrinsic "$R\consensus\extrinsic_batch2_consensus.json" --consensus-check "$R\consensus\batch1_auxiliary_check.json" --open3d-extrinsic "$R\open3d_gicp\extrinsic_batch2_refined.json" --small-extrinsic "$R\small_gicp\extrinsic_batch2_refined.json" --output "$R\final_extrinsic_recommended.json" --summary "$R\final_summary.json" +function Run-Python { + param([string[]]$Arguments) + & python @Arguments + if ($LASTEXITCODE -ne 0) { throw "Python failed with exit code $LASTEXITCODE" } +} + +Run-Python @($Filter, "--open3d-pairs", (Join-Path $ResultRoot "open3d_gicp\B_batch2_refined.npz"), + "--small-pairs", (Join-Path $ResultRoot "small_gicp\B_batch2_refined.npz"), + "--output", (Join-Path $ResultRoot "consensus\B_batch2_consensus.npz")) +Run-Python @($Filter, "--open3d-pairs", (Join-Path $ResultRoot "open3d_gicp\B_batch1_auxiliary_refined.npz"), + "--small-pairs", (Join-Path $ResultRoot "small_gicp\B_batch1_auxiliary_refined.npz"), + "--output", (Join-Path $ResultRoot "consensus\B_batch1_consensus.npz"), "--min-pairs", "15") +Run-Python @($Code, "calibrate", "--pairs", (Join-Path $ResultRoot "consensus\B_batch2_consensus.npz"), + "--ground-planes", (Join-Path $ResultRoot "common\ground_planes_batch2.csv"), + "--output", (Join-Path $ResultRoot "consensus\extrinsic_batch2_consensus.json")) +Run-Python @($Code, "validate", "--pairs", (Join-Path $ResultRoot "consensus\B_batch1_consensus.npz"), + "--extrinsic", (Join-Path $ResultRoot "consensus\extrinsic_batch2_consensus.json"), + "--output", (Join-Path $ResultRoot "consensus\batch1_auxiliary_check.json")) +Run-Python @($Finalize, + "--consensus-extrinsic", (Join-Path $ResultRoot "consensus\extrinsic_batch2_consensus.json"), + "--consensus-check", (Join-Path $ResultRoot "consensus\batch1_auxiliary_check.json"), + "--open3d-extrinsic", (Join-Path $ResultRoot "open3d_gicp\extrinsic_batch2_refined.json"), + "--small-extrinsic", (Join-Path $ResultRoot "small_gicp\extrinsic_batch2_refined.json"), + "--output", (Join-Path $ResultRoot "final_extrinsic_recommended.json"), + "--summary", (Join-Path $ResultRoot "final_summary.json")) diff --git a/run/run_sensitivity_scan.ps1 b/run/run_sensitivity_scan.ps1 index c8c09aa..8c66353 100644 --- a/run/run_sensitivity_scan.ps1 +++ b/run/run_sensitivity_scan.ps1 @@ -1,15 +1,22 @@ -param([int]$PairIndex = 0) +param( + [int]$PairIndex = 0, + [string]$ResultRoot = "" +) + +$ErrorActionPreference = "Stop" $Repo = Split-Path -Parent $PSScriptRoot -$Code = "$Repo\code\scan_extrinsic_sensitivity.py" -$X = "$Repo\results\final_extrinsic_recommended.json" -$Ground = "$Repo\results\common\ground_planes_batch2.csv" -$Out = "$Repo\results\diagnostics" +if ([string]::IsNullOrWhiteSpace($ResultRoot)) { $ResultRoot = Join-Path $Repo "results\01_previous_two_batches" } +$Code = Join-Path $Repo "code\scan_extrinsic_sensitivity.py" +$X = Join-Path $ResultRoot "final_extrinsic_recommended.json" +$Ground = Join-Path $ResultRoot "common\ground_planes_batch2.csv" +$Out = Join-Path $ResultRoot "diagnostics" -python $Code --pairs "$Repo\results\open3d_gicp\B_batch2_refined.npz" --extrinsic $X --ground-planes $Ground --pair-index $PairIndex --output "$Out\open3d_refined_pair${PairIndex}_left_rpy_scan.json" -if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } - -python $Code --pairs "$Repo\results\small_gicp\B_batch2_refined.npz" --extrinsic $X --ground-planes $Ground --pair-index $PairIndex --output "$Out\small_gicp_refined_pair${PairIndex}_left_rpy_scan.json" -if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE } - -python $Code --pairs "$Repo\results\consensus\B_batch2_consensus.npz" --extrinsic $X --ground-planes $Ground --pair-index $PairIndex --output "$Out\consensus_pair${PairIndex}_left_rpy_scan.json" -exit $LASTEXITCODE +foreach ($Backend in @("open3d_gicp", "small_gicp")) { + $Label = if ($Backend -eq "open3d_gicp") { "open3d_refined" } else { "small_gicp_refined" } + & python $Code --pairs (Join-Path $ResultRoot "$Backend\B_batch2_refined.npz") --extrinsic $X ` + --ground-planes $Ground --pair-index $PairIndex --output (Join-Path $Out "${Label}_pair${PairIndex}_left_rpy_scan.json") + if ($LASTEXITCODE -ne 0) { throw "$Backend sensitivity scan failed" } +} +& python $Code --pairs (Join-Path $ResultRoot "consensus\B_batch2_consensus.npz") --extrinsic $X ` + --ground-planes $Ground --pair-index $PairIndex --output (Join-Path $Out "consensus_pair${PairIndex}_left_rpy_scan.json") +if ($LASTEXITCODE -ne 0) { throw "Consensus sensitivity scan failed" } diff --git a/run/run_single_dataset.ps1 b/run/run_single_dataset.ps1 new file mode 100644 index 0000000..13b8713 --- /dev/null +++ b/run/run_single_dataset.ps1 @@ -0,0 +1,70 @@ +param( + [Parameter(Mandatory = $true)][string]$Prepared, + [Parameter(Mandatory = $true)][string]$OutputRoot, + [string]$PoseName = "rear_gga_raw_rear_to_front", + [double]$BodyHeight = 0.2335, + [int]$MinPairs = 20, + [int]$Bootstrap = 100 +) + +$ErrorActionPreference = "Stop" +$Repo = Split-Path -Parent $PSScriptRoot +$Code = Join-Path $Repo "code\rigorous_calibration.py" +$Refine = Join-Path $Repo "code\refine_pairs.py" +$Consensus = Join-Path $Repo "code\cross_backend_filter.py" +$Frames = Join-Path $Prepared "frames_all" +$Body = Join-Path $Prepared "body_poses_$PoseName.csv" +$Common = Join-Path $OutputRoot "common" +$Open = Join-Path $OutputRoot "open3d_gicp" +$Small = Join-Path $OutputRoot "small_gicp" +$ConsensusOut = Join-Path $OutputRoot "consensus" + +function Run-Python { + param([string]$Stage, [string[]]$Arguments) + Write-Host "[$Stage]" + & python @Arguments + if ($LASTEXITCODE -ne 0) { throw "$Stage failed with Python exit code $LASTEXITCODE" } +} + +foreach ($Path in @($Frames, $Body)) { + if (-not (Test-Path -LiteralPath $Path)) { throw "Input does not exist: $Path" } +} +New-Item -ItemType Directory -Force -Path $Common,$Open,$Small,$ConsensusOut | Out-Null + +$Ground = Join-Path $Common "ground_planes.csv" +Run-Python "ground planes" @($Code, "ground", "--frames", $Frames, "--output", $Ground) + +foreach ($Backend in @("small_gicp", "open3d")) { + $Directory = if ($Backend -eq "small_gicp") { $Small } else { $Open } + $Raw = Join-Path $Directory "B_estimation.npz" + $QualityJson = Join-Path $Directory "B_quality.json" + $QualityCsv = Join-Path $Directory "B_quality.csv" + $PairArgs = @($Code, "pairs", "--backend", $Backend, "--frames", $Frames, "--body", $Body, + "--output", $Raw, "--quality-json", $QualityJson, "--quality-csv", $QualityCsv, + "--min-pairs", "$MinPairs") + if ($Backend -eq "open3d") { $PairArgs += @("--max-gap", "3", "--multistart", "1", "--iterations", "40") } + Run-Python "$Backend pairs" $PairArgs + Run-Python "$Backend X-independent refinement" @( + $Refine, "--pairs", $Raw, "--quality-json", $QualityJson, + "--output", (Join-Path $Directory "B_refined.npz"), "--min-pairs", "$MinPairs" + ) + Run-Python "$Backend calibration" @( + $Code, "calibrate", "--pairs", (Join-Path $Directory "B_refined.npz"), + "--ground-planes", $Ground, "--body-height", "$BodyHeight", + "--bootstrap", "$Bootstrap", "--output", (Join-Path $Directory "extrinsic.json") + ) +} + +$ConsensusPairs = Join-Path $ConsensusOut "B_consensus.npz" +Run-Python "cross-backend consensus" @( + $Consensus, "--open3d-pairs", (Join-Path $Open "B_refined.npz"), + "--small-pairs", (Join-Path $Small "B_refined.npz"), + "--output", $ConsensusPairs, "--min-pairs", "$MinPairs" +) +Run-Python "consensus calibration" @( + $Code, "calibrate", "--pairs", $ConsensusPairs, "--ground-planes", $Ground, + "--body-height", "$BodyHeight", "--bootstrap", "$Bootstrap", + "--output", (Join-Path $ConsensusOut "extrinsic.json") +) + +Write-Host "Calibration results: $OutputRoot" diff --git a/run/view_open3d_result.ps1 b/run/view_open3d_result.ps1 deleted file mode 100644 index 0ed3dff..0000000 --- a/run/view_open3d_result.ps1 +++ /dev/null @@ -1,14 +0,0 @@ -param( - [int]$PairIndex = 0, - [string]$Frames = "C:\Users\admin\Documents\Codex\2026-07-15\wo\outputs\calibration_data1_20260720\prepared\frames_all", - [double]$LeftRollDeg = 0.0, - [double]$LeftPitchDeg = 0.0, - [double]$LeftYawDeg = 0.0 -) -$Repo = Split-Path -Parent $PSScriptRoot -python "$Repo\code\visualize_pair_3d.py" ` - --frames $Frames ` - --pairs "$Repo\results\open3d_gicp\B_batch2_refined.npz" ` - --extrinsic "$Repo\results\final_extrinsic_recommended.json" ` - --pair-index $PairIndex ` - --left-rpy-deg $LeftRollDeg $LeftPitchDeg $LeftYawDeg diff --git a/run/view_result.ps1 b/run/view_result.ps1 new file mode 100644 index 0000000..e513e61 --- /dev/null +++ b/run/view_result.ps1 @@ -0,0 +1,19 @@ +param( + [Parameter(Mandatory = $true)][string]$Frames, + [Parameter(Mandatory = $true)][string]$Pairs, + [Parameter(Mandatory = $true)][string]$Extrinsic, + [int]$PairIndex = 0, + [double]$LeftRollDeg = 0.0, + [double]$LeftPitchDeg = 0.0, + [double]$LeftYawDeg = 0.0 +) + +$ErrorActionPreference = "Stop" +$Repo = Split-Path -Parent $PSScriptRoot +foreach ($Path in @($Frames, $Pairs, $Extrinsic)) { + if (-not (Test-Path -LiteralPath $Path)) { throw "Input does not exist: $Path" } +} +& python (Join-Path $Repo "code\visualize_pair_3d.py") ` + --frames $Frames --pairs $Pairs --extrinsic $Extrinsic --pair-index $PairIndex ` + --left-rpy-deg $LeftRollDeg $LeftPitchDeg $LeftYawDeg +if ($LASTEXITCODE -ne 0) { throw "Visualization failed with Python exit code $LASTEXITCODE" } diff --git a/run/view_small_gicp_result.ps1 b/run/view_small_gicp_result.ps1 deleted file mode 100644 index da49c02..0000000 --- a/run/view_small_gicp_result.ps1 +++ /dev/null @@ -1,18 +0,0 @@ -param( - [int]$PairIndex = 0, - [string]$Frames = "C:\Users\admin\Documents\Codex\2026-07-15\wo\outputs\calibration_data1_20260720\prepared\frames_all", - [string]$Extrinsic = "", - [double]$LeftRollDeg = 0.0, - [double]$LeftPitchDeg = 0.0, - [double]$LeftYawDeg = 0.0 -) -$Repo = Split-Path -Parent $PSScriptRoot -if ([string]::IsNullOrWhiteSpace($Extrinsic)) { - $Extrinsic = "$Repo\results\small_gicp\extrinsic_batch2_refined.json" -} -python "$Repo\code\visualize_pair_3d.py" ` - --frames $Frames ` - --pairs "$Repo\results\small_gicp\B_batch2_refined.npz" ` - --extrinsic $Extrinsic ` - --pair-index $PairIndex ` - --left-rpy-deg $LeftRollDeg $LeftPitchDeg $LeftYawDeg diff --git a/tools/README.md b/tools/README.md new file mode 100644 index 0000000..0c56399 --- /dev/null +++ b/tools/README.md @@ -0,0 +1,26 @@ +# tools + +本目录负责从原始 dlog/rscap 导出 NPZ、关联 RTK/IMU 并生成 prepared;完整流程和参数统一见仓库根目录 `README.md`。 + +| 文件 | 作用 | +|---|---| +| `frontlidar_dlog_export.py` | 从单个 Medulla dlog 导出原始 LiDAR NPZ,可匹配站内 RTK。 | +| `prepare_station_dataset.py` | 旧式逐站导出生成 prepared。 | +| `build_multisensor_npz.py` | 以 LiDAR 帧为索引关联独立 RTK/IMU。 | +| `prepare_multisensor_station_dataset.py` | combined NPZ 生成 prepared。 | +| `rscap_v2/capture_format_v2.py` | 读取 rscap v2。 | +| `rscap_v2/audit_capture_v2.py` | 审计 capture 完整性。 | +| `rscap_v2/parse_rtk_imu_v2.py` | 解析 RTK/IMU 为 JSONL。 | +| `rscap_v2/pipeline_common*.py` | 时间和协议解析共用逻辑。 | + +统一输出接口: + +```text +prepared/ + frames_all/station_*.npz + body_poses_rear_gga_raw_rear_to_front.csv + station_summary.csv + manifest.json +``` + +后续配准必须使用 `points_raw`,不能使用已经由某套外参变换后的点云。 diff --git a/tools/build_multisensor_npz.py b/tools/build_multisensor_npz.py new file mode 100644 index 0000000..2da2043 --- /dev/null +++ b/tools/build_multisensor_npz.py @@ -0,0 +1,312 @@ +#!/usr/bin/env python3 +"""Build one LiDAR-centric NPZ per frame with matched RTK and an IMU window. + +Inputs are LiDAR frame NPZ files from frontlidar_dlog_export.py and parsed +RTK/IMU JSONL files from parse_rtk_imu_v2.py. Raw .rscap files remain the +traceability source; this script never modifies them. +""" + +from __future__ import annotations + +import argparse +import csv +import json +from pathlib import Path +from typing import Any + +import numpy as np + + +GPS_EPOCH_UNIX_NS = 315964800 * 1_000_000_000 + + +def parse_named_path(text: str) -> tuple[str, Path]: + if "=" not in text: + raise argparse.ArgumentTypeError("expected NAME=PATH") + name, raw_path = text.split("=", 1) + if not name.strip(): + raise argparse.ArgumentTypeError("segment name is empty") + return name.strip(), Path(raw_path) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser() + parser.add_argument( + "--lidar", + type=parse_named_path, + action="append", + required=True, + metavar="NAME=FRAMES_DIR", + help="Repeat for each LiDAR segment; directory contains exported *.npz frames.", + ) + parser.add_argument("--rtk", type=Path, action="append", required=True, help="Parsed rtk.jsonl; repeat per session.") + parser.add_argument("--imu", type=Path, action="append", required=True, help="Parsed imu.jsonl; repeat per session.") + parser.add_argument("--out", type=Path, required=True) + parser.add_argument("--rtk-max-dt-ms", type=float, default=150.0) + parser.add_argument("--imu-before-ms", type=float, default=100.0) + parser.add_argument("--imu-after-ms", type=float, default=100.0) + parser.add_argument("--gps-utc-leap-seconds", type=int, default=18) + parser.add_argument("--overwrite", action="store_true") + return parser.parse_args() + + +def load_jsonl(paths: list[Path]) -> list[dict[str, Any]]: + rows: list[dict[str, Any]] = [] + for source_index, path in enumerate(paths): + source_file = str(path.resolve()) + with path.open("r", encoding="utf-8") as stream: + for line_number, line in enumerate(stream, start=1): + if not line.strip(): + continue + row = json.loads(line) + row["_source_file"] = source_file + row["_source_index"] = source_index + row["_source_line"] = line_number + rows.append(row) + return rows + + +def utf8_array(value: Any) -> np.ndarray: + return np.frombuffer(str(value if value is not None else "").encode("utf-8"), dtype=np.uint8) + + +def scalar(array: np.ndarray) -> Any: + return array.reshape(-1)[0].item() + + +def nearest_index(times: np.ndarray, target: int) -> int: + if not len(times): + return -1 + right = int(np.searchsorted(times, target, side="left")) + candidates = [index for index in (right - 1, right) if 0 <= index < len(times)] + return min(candidates, key=lambda index: abs(int(times[index]) - target)) + + +def estimate_imu_times(rows: list[dict[str, Any]]) -> list[dict[str, Any]]: + """Recover 100 Hz timing inside each serial chunk from device timestamps. + + A capture chunk has one host receive timestamp but may contain several IMU + frames. The last frame is anchored to the chunk receive time and earlier + frames are moved backwards by their device timestamp difference. + """ + groups: dict[tuple[int, int], list[dict[str, Any]]] = {} + for row in rows: + if not row.get("crc_valid") or row.get("device_timestamp_ms") is None: + continue + key = (int(row["_source_index"]), int(row.get("source_chunk_sequence_last", -1))) + groups.setdefault(key, []).append(row) + result: list[dict[str, Any]] = [] + for group in groups.values(): + group.sort(key=lambda row: (int(row["device_timestamp_ms"]), int(row["_source_line"]))) + last_device = int(group[-1]["device_timestamp_ms"]) + host_ns = int(group[-1]["host_receive_utc_ns"]) + for row in group: + delta_ms = (last_device - int(row["device_timestamp_ms"])) & 0xFFFFFFFF + if delta_ms > 60_000: + delta_ms = 0 + copied = dict(row) + copied["estimated_time_ns"] = host_ns - delta_ms * 1_000_000 + result.append(copied) + result.sort(key=lambda row: int(row["estimated_time_ns"])) + return result + + +def gnss_utc_ns(row: dict[str, Any], leap_seconds: int) -> int | None: + week, tow_ms = row.get("gnss_week"), row.get("gnss_tow_ms") + if week is None or tow_ms is None: + return None + seconds = int(week) * 604800 + float(tow_ms) / 1000.0 - leap_seconds + return GPS_EPOCH_UNIX_NS + int(round(seconds * 1_000_000_000)) + + +def numeric_array(rows: list[dict[str, Any]], key: str, dtype: Any, default: Any) -> np.ndarray: + return np.asarray([row.get(key, default) if row.get(key) is not None else default for row in rows], dtype=dtype) + + +def raw_frame_matrix(rows: list[dict[str, Any]]) -> tuple[np.ndarray, np.ndarray]: + frames = [bytes.fromhex(str(row.get("raw_frame_hex", ""))) for row in rows] + lengths = np.asarray([len(frame) for frame in frames], dtype=np.int32) + width = max(lengths, default=0) + matrix = np.zeros((len(frames), width), dtype=np.uint8) + for index, frame in enumerate(frames): + matrix[index, : len(frame)] = np.frombuffer(frame, dtype=np.uint8) + return matrix, lengths + + +def add_rtk(values: dict[str, np.ndarray], prefix: str, row: dict[str, Any] | None, dt_ns: int | None) -> None: + values[f"{prefix}_valid"] = np.asarray([row is not None], dtype=np.uint8) + values[f"{prefix}_dt_ns"] = np.asarray([dt_ns or 0], dtype=np.int64) + values[f"{prefix}_host_receive_utc_ns"] = np.asarray([0], dtype=np.int64) + values[f"{prefix}_raw_utf8"] = utf8_array("") + values[f"{prefix}_source_file_utf8"] = utf8_array("") + values[f"{prefix}_source_raw_file_offset"] = np.asarray([-1], dtype=np.int64) + values[f"{prefix}_source_raw_byte_length"] = np.asarray([0], dtype=np.int32) + if row is None: + return + values[f"{prefix}_host_receive_utc_ns"] = np.asarray([row.get("host_receive_utc_ns", 0)], dtype=np.int64) + values[f"{prefix}_raw_utf8"] = utf8_array(row.get("raw_line", "")) + values[f"{prefix}_source_file_utf8"] = utf8_array(row.get("_source_file", "")) + values[f"{prefix}_source_raw_file_offset"] = np.asarray([row.get("source_raw_file_offset", -1)], dtype=np.int64) + values[f"{prefix}_source_raw_byte_length"] = np.asarray([row.get("source_raw_byte_length", 0)], dtype=np.int32) + + +def initialize_rtk_measurements(values: dict[str, np.ndarray]) -> None: + for key, dtype, default in ( + ("lat_deg", np.float64, np.nan), ("lon_deg", np.float64, np.nan), + ("altitude_m", np.float64, np.nan), ("hdop", np.float64, np.nan), + ("fix_quality", np.int32, -1), ("gga_satellites", np.int32, -1), + ("differential_age_s", np.float64, np.nan), + ("gnss_week", np.int32, -1), ("gnss_tow_ms", np.int64, -1), + ("baseline_length_m", np.float64, np.nan), ("raw_heading_deg", np.float64, np.nan), + ("pitch_deg", np.float64, np.nan), ("heading_stddev_deg", np.float64, np.nan), + ("pitch_stddev_deg", np.float64, np.nan), ("heading_satellites", np.int32, -1), + ("solution_satellites", np.int32, -1), + ): + values[f"rtk_{key}"] = np.asarray([default], dtype=dtype) + values["rtk_fixed"] = np.asarray([0], dtype=np.uint8) + values["rtk_heading_solution_utf8"] = utf8_array("") + values["rtk_heading_gnss_utc_ns"] = np.asarray([0], dtype=np.int64) + values["rtk_heading_host_minus_gnss_ns"] = np.asarray([0], dtype=np.int64) + +def main() -> int: + args = parse_args() + if args.out.exists() and any(args.out.iterdir()) and not args.overwrite: + raise FileExistsError(f"{args.out} is non-empty; pass --overwrite") + frames_out = args.out / "frames" + frames_out.mkdir(parents=True, exist_ok=True) + + rtk_rows = load_jsonl(args.rtk) + gga = sorted( + [row for row in rtk_rows if row.get("type") == "GGA" and row.get("checksum_valid") and row.get("lat_deg") is not None], + key=lambda row: int(row["host_receive_utc_ns"]), + ) + heading = sorted( + [row for row in rtk_rows if row.get("type") == "UNIHEADINGA" and row.get("checksum_valid") and row.get("heading_valid")], + key=lambda row: int(row["host_receive_utc_ns"]), + ) + imu = estimate_imu_times(load_jsonl(args.imu)) + gga_times = np.asarray([int(row["host_receive_utc_ns"]) for row in gga], dtype=np.int64) + heading_times = np.asarray([int(row["host_receive_utc_ns"]) for row in heading], dtype=np.int64) + imu_times = np.asarray([int(row["estimated_time_ns"]) for row in imu], dtype=np.int64) + + manifest: list[dict[str, Any]] = [] + global_index = 0 + max_rtk_ns = int(args.rtk_max_dt_ms * 1_000_000) + before_ns = int(args.imu_before_ms * 1_000_000) + after_ns = int(args.imu_after_ms * 1_000_000) + + for segment_name, frame_dir in args.lidar: + frame_paths = sorted(frame_dir.glob("*.npz")) + if not frame_paths: + raise FileNotFoundError(f"no NPZ frames under {frame_dir}") + for segment_index, source in enumerate(frame_paths): + with np.load(source, allow_pickle=False) as frame: + values = {key: np.asarray(frame[key]) for key in frame.files} + lidar_time_ns = int(scalar(values["unix_time_ns"])) + + gga_index = nearest_index(gga_times, lidar_time_ns) + heading_index = nearest_index(heading_times, lidar_time_ns) + gga_row = gga[gga_index] if gga_index >= 0 else None + heading_row = heading[heading_index] if heading_index >= 0 else None + gga_dt = int(gga_times[gga_index]) - lidar_time_ns if gga_index >= 0 else None + heading_dt = int(heading_times[heading_index]) - lidar_time_ns if heading_index >= 0 else None + gga_ok = gga_row is not None and abs(gga_dt or 0) <= max_rtk_ns + heading_ok = heading_row is not None and abs(heading_dt or 0) <= max_rtk_ns + add_rtk(values, "rtk_gga", gga_row if gga_ok else None, gga_dt) + add_rtk(values, "rtk_heading", heading_row if heading_ok else None, heading_dt) + initialize_rtk_measurements(values) + + if gga_ok and gga_row: + for key, dtype, default in ( + ("lat_deg", np.float64, np.nan), ("lon_deg", np.float64, np.nan), + ("altitude_m", np.float64, np.nan), ("hdop", np.float64, np.nan), + ("fix_quality", np.int32, -1), ("gga_satellites", np.int32, -1), + ("differential_age_s", np.float64, np.nan), + ): + values[f"rtk_{key}"] = np.asarray([gga_row.get(key, default)], dtype=dtype) + values["rtk_gga_satellites"] = np.asarray([gga_row.get("satellites", -1)], dtype=np.int32) + values["rtk_fixed"] = np.asarray([int(gga_row.get("fix_quality", -1)) in {4, 5}], dtype=np.uint8) + if heading_ok and heading_row: + for key, dtype, default in ( + ("gnss_week", np.int32, -1), ("gnss_tow_ms", np.int64, -1), + ("baseline_length_m", np.float64, np.nan), ("raw_heading_deg", np.float64, np.nan), + ("pitch_deg", np.float64, np.nan), ("heading_stddev_deg", np.float64, np.nan), + ("pitch_stddev_deg", np.float64, np.nan), + ("solution_satellites", np.int32, -1), + ): + values[f"rtk_{key}"] = np.asarray([heading_row.get(key, default)], dtype=dtype) + values["rtk_heading_satellites"] = np.asarray([heading_row.get("satellites", -1)], dtype=np.int32) + values["rtk_heading_solution_utf8"] = utf8_array(heading_row.get("heading_solution", "")) + device_ns = gnss_utc_ns(heading_row, args.gps_utc_leap_seconds) + values["rtk_heading_gnss_utc_ns"] = np.asarray([device_ns or 0], dtype=np.int64) + values["rtk_heading_host_minus_gnss_ns"] = np.asarray( + [int(heading_row["host_receive_utc_ns"]) - device_ns if device_ns is not None else 0], dtype=np.int64 + ) + + left = int(np.searchsorted(imu_times, lidar_time_ns - before_ns, side="left")) + right = int(np.searchsorted(imu_times, lidar_time_ns + after_ns, side="right")) + window = imu[left:right] + values["imu_window_count"] = np.asarray([len(window)], dtype=np.int32) + values["imu_valid"] = np.asarray([bool(window)], dtype=np.uint8) + values["imu_time_ns"] = numeric_array(window, "estimated_time_ns", np.int64, 0) + values["imu_host_receive_utc_ns"] = numeric_array(window, "host_receive_utc_ns", np.int64, 0) + for key in ("device_timestamp_ms", "pps_sync_stamp_ms", "tag"): + values[f"imu_{key}"] = numeric_array(window, key, np.int64, -1) + for key in ( + "temperature_c", "air_pressure_pa", "accel_x_mps2", "accel_y_mps2", "accel_z_mps2", + "gyro_x_radps", "gyro_y_radps", "gyro_z_radps", "mag_x_ut", "mag_y_ut", "mag_z_ut", + "roll_deg", "pitch_deg", "yaw_deg", "quaternion_w", "quaternion_x", "quaternion_y", "quaternion_z", + ): + values[f"imu_{key}"] = numeric_array(window, key, np.float64, np.nan) + values["imu_source_index"] = numeric_array(window, "_source_index", np.int32, -1) + values["imu_source_raw_file_offset"] = numeric_array(window, "source_raw_file_offset", np.int64, -1) + raw_matrix, raw_lengths = raw_frame_matrix(window) + values["imu_raw_frame_bytes"] = raw_matrix + values["imu_raw_frame_length"] = raw_lengths + values["imu_source_files_json_utf8"] = utf8_array(json.dumps([str(path.resolve()) for path in args.imu], ensure_ascii=False)) + values["source_lidar_file_utf8"] = utf8_array(source.resolve()) + values["segment_name_utf8"] = utf8_array(segment_name) + + output = frames_out / f"{segment_name}_{segment_index:06d}.npz" + np.savez_compressed(output, **values) + manifest.append({ + "global_index": global_index, + "segment": segment_name, + "segment_index": segment_index, + "output": str(output.relative_to(args.out)), + "source_lidar": str(source.resolve()), + "lidar_time_ns": lidar_time_ns, + "rtk_gga_dt_ns": gga_dt, + "rtk_heading_dt_ns": heading_dt, + "rtk_valid": gga_ok, + "heading_valid": heading_ok, + "rtk_fix_quality": gga_row.get("fix_quality") if gga_ok and gga_row else None, + "rtk_fixed": bool(gga_ok and gga_row and int(gga_row.get("fix_quality", -1)) in {4, 5}), + "imu_window_count": len(window), + }) + global_index += 1 + + fields = sorted({key for row in manifest for key in row}) + with (args.out / "manifest.csv").open("w", encoding="utf-8", newline="") as stream: + writer = csv.DictWriter(stream, fieldnames=fields) + writer.writeheader() + writer.writerows(manifest) + summary = { + "frames": len(manifest), + "segments": {name: sum(row["segment"] == name for row in manifest) for name, _ in args.lidar}, + "rtk_valid": sum(bool(row["rtk_valid"]) for row in manifest), + "heading_valid": sum(bool(row["heading_valid"]) for row in manifest), + "rtk_fixed": sum(bool(row["rtk_fixed"]) for row in manifest), + "imu_window_nonempty": sum(int(row["imu_window_count"]) > 0 for row in manifest), + "rtk_max_dt_ms": args.rtk_max_dt_ms, + "imu_window_ms": [-args.imu_before_ms, args.imu_after_ms], + "time_basis": "LiDAR and serial host UTC; RTK GNSS time and IMU device time are retained for clock-model refinement", + "imu_orientation_warning": "IMU values are in the raw IMU sensor frame; no LiDAR/body extrinsic is applied", + } + (args.out / "dataset_summary.json").write_text(json.dumps(summary, ensure_ascii=False, indent=2), encoding="utf-8") + print(json.dumps(summary, ensure_ascii=False, indent=2)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tools/prepare_multisensor_station_dataset.py b/tools/prepare_multisensor_station_dataset.py new file mode 100644 index 0000000..0cc3ce1 --- /dev/null +++ b/tools/prepare_multisensor_station_dataset.py @@ -0,0 +1,170 @@ +#!/usr/bin/env python3 +"""Prepare one static LiDAR frame and one yaw-only RTK body pose per NPZ segment.""" + +from __future__ import annotations + +import argparse +import csv +import json +import math +import re +import shutil +from pathlib import Path +from typing import Any + +import numpy as np + +POSE_FIELDS = ["time", "x", "y", "z", "qx", "qy", "qz", "qw"] + + +def natural_key(value: str) -> list[Any]: + return [int(part) if part.isdigit() else part.lower() for part in re.split(r"(\d+)", value)] + + +def truth(value: Any) -> bool: + return str(value).strip().lower() in {"1", "true", "yes", "y"} + + +def circular_mean_deg(values: np.ndarray) -> float: + radians = np.deg2rad(values) + return float(np.rad2deg(math.atan2(np.mean(np.sin(radians)), np.mean(np.cos(radians)))) % 360.0) + + +def circular_std_deg(values: np.ndarray) -> float: + radians = np.deg2rad(values) + resultant = max(math.hypot(np.mean(np.cos(radians)), np.mean(np.sin(radians))), 1e-12) + return float(np.rad2deg(math.sqrt(-2.0 * math.log(resultant)))) + + +def geodetic_to_ecef(lat_deg: float, lon_deg: float, height_m: float) -> np.ndarray: + a, e2 = 6378137.0, 6.69437999014e-3 + lat, lon = math.radians(lat_deg), math.radians(lon_deg) + sin_lat, cos_lat, sin_lon, cos_lon = math.sin(lat), math.cos(lat), math.sin(lon), math.cos(lon) + n = a / math.sqrt(1.0 - e2 * sin_lat * sin_lat) + return np.array([(n + height_m) * cos_lat * cos_lon, (n + height_m) * cos_lat * sin_lon, + (n * (1.0 - e2) + height_m) * sin_lat], dtype=float) + + +def ecef_to_enu(ecef: np.ndarray, origin: np.ndarray, lat_deg: float, lon_deg: float) -> np.ndarray: + lat, lon = math.radians(lat_deg), math.radians(lon_deg) + slat, clat, slon, clon = math.sin(lat), math.cos(lat), math.sin(lon), math.cos(lon) + rotation = np.array([[-slon, clon, 0.0], [-slat * clon, -slat * slon, clat], + [clat * clon, clat * slon, slat]], dtype=float) + return rotation @ (ecef - origin) + + +def yaw_rotation(yaw: float) -> np.ndarray: + c, s = math.cos(yaw), math.sin(yaw) + return np.array([[c, -s, 0.0], [s, c, 0.0], [0.0, 0.0, 1.0]]) + + +def scalar(data: np.lib.npyio.NpzFile, name: str) -> float: + return float(np.asarray(data[name]).reshape(-1)[0]) + + +def parse_args() -> argparse.Namespace: + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--combined-root", type=Path, required=True) + parser.add_argument("--output", type=Path, required=True) + parser.add_argument("--pose-name", default="rear_gga_raw_rear_to_front") + parser.add_argument("--heading-offset-deg", type=float, required=True) + parser.add_argument("--antenna-lever", type=float, nargs=3, required=True, metavar=("X", "Y", "Z")) + parser.add_argument("--accepted-fixes", type=int, nargs="+", default=[4, 5]) + parser.add_argument("--heading-std-limit-deg", type=float, default=0.5) + parser.add_argument("--min-stations", type=int, default=30) + parser.add_argument("--expected-stations", type=int, default=0) + parser.add_argument("--overwrite", action="store_true") + return parser.parse_args() + + +def main() -> int: + args = parse_args() + manifest_path = args.combined_root / "manifest.csv" + with manifest_path.open("r", encoding="utf-8-sig", newline="") as stream: + rows = list(csv.DictReader(stream)) + required = {"segment", "output", "lidar_time_ns", "rtk_valid", "heading_valid", "rtk_fix_quality"} + if not rows or not required.issubset(rows[0]): + raise ValueError(f"{manifest_path} is empty or lacks {sorted(required)}") + groups: dict[str, list[dict[str, str]]] = {} + for row in rows: + groups.setdefault(row["segment"], []).append(row) + + selected, summaries, rejected = [], [], [] + accepted_fixes = set(args.accepted_fixes) + for segment in sorted(groups, key=natural_key): + group = sorted(groups[segment], key=lambda row: int(row["lidar_time_ns"])) + good = [row for row in group if truth(row["rtk_valid"]) and truth(row["heading_valid"]) + and int(row["rtk_fix_quality"]) in accepted_fixes] + if not good: + rejected.append({"station": segment, "reason": "no associated fixed RTK position and valid heading"}) + continue + samples = [] + for row in good: + path = args.combined_root / Path(row["output"]) + with np.load(path, allow_pickle=False) as data: + samples.append((scalar(data, "rtk_lat_deg"), scalar(data, "rtk_lon_deg"), + scalar(data, "rtk_altitude_m"), scalar(data, "rtk_raw_heading_deg"), + scalar(data, "rtk_pitch_deg"), scalar(data, "rtk_heading_stddev_deg"))) + values = np.asarray(samples, dtype=float) + heading_std = circular_std_deg(values[:, 3]) + if heading_std > args.heading_std_limit_deg: + rejected.append({"station": segment, "reason": f"heading std {heading_std:.4f} deg exceeds limit"}) + continue + frame = good[len(good) // 2] + source = args.combined_root / Path(frame["output"]) + selected.append({"station": segment, "source": source, "time": int(frame["lidar_time_ns"]) / 1e9, + "lat": float(np.mean(values[:, 0])), "lon": float(np.mean(values[:, 1])), + "alt": float(np.mean(values[:, 2])), "heading": circular_mean_deg(values[:, 3])}) + summaries.append({"station": segment, "frames": len(group), "valid_fixed_frames": len(good), + "heading_mean_deg": circular_mean_deg(values[:, 3]), + "heading_circular_std_deg": heading_std, "rtk_pitch_mean_deg": float(np.mean(values[:, 4])), + "reported_heading_std_mean_deg": float(np.nanmean(values[:, 5])), + "altitude_std_m": float(np.std(values[:, 2])), "selected_source": str(source)}) + + if args.expected_stations and len(selected) != args.expected_stations: + raise RuntimeError(f"expected {args.expected_stations} usable stations, got {len(selected)}; rejected={rejected}") + if len(selected) < args.min_stations: + raise RuntimeError(f"need at least {args.min_stations} usable stations, got {len(selected)}; rejected={rejected}") + if args.output.exists() and any(args.output.iterdir()) and not args.overwrite: + raise FileExistsError(f"{args.output} is non-empty; pass --overwrite") + frames = args.output / "frames_all" + frames.mkdir(parents=True, exist_ok=True) + origin = selected[0] + origin_ecef = geodetic_to_ecef(origin["lat"], origin["lon"], origin["alt"]) + lever = np.asarray(args.antenna_lever, dtype=float) + pose_rows = [] + for index, item in enumerate(selected, 1): + destination = frames / f"station_{index:02d}.npz" + shutil.copy2(item["source"], destination) + antenna = ecef_to_enu(geodetic_to_ecef(item["lat"], item["lon"], item["alt"]), origin_ecef, + origin["lat"], origin["lon"]) + corrected_heading = (item["heading"] + args.heading_offset_deg) % 360.0 + yaw = math.radians(90.0 - corrected_heading) + body = antenna - yaw_rotation(yaw) @ lever + pose_rows.append(dict(zip(POSE_FIELDS, [item["time"], *body, 0.0, 0.0, + math.sin(yaw / 2.0), math.cos(yaw / 2.0)]))) + summaries[index - 1].update({"sequence": index, "prepared_frame": destination.name, + "corrected_heading_deg": corrected_heading}) + pose_path = args.output / f"body_poses_{args.pose_name}.csv" + with pose_path.open("w", encoding="utf-8", newline="") as stream: + writer = csv.DictWriter(stream, fieldnames=POSE_FIELDS); writer.writeheader(); writer.writerows(pose_rows) + with (args.output / "station_summary.csv").open("w", encoding="utf-8", newline="") as stream: + fields = sorted({key for row in summaries for key in row}) + writer = csv.DictWriter(stream, fieldnames=fields); writer.writeheader(); writer.writerows(summaries) + document = {"source_combined_root": str(args.combined_root.resolve()), "station_count": len(selected), + "rejected": rejected, "pose_csv": pose_path.name, + "selection_policy": "middle LiDAR frame among fixed-position and valid-heading associations", + "body_pose_configuration": {"raw_heading_offset_deg": args.heading_offset_deg, + "antenna_lever_body_m": args.antenna_lever, + "orientation_model": "yaw-only, identical to the previous calibration workflow"}, + "stations": [{"sequence": i + 1, "source_station": item["station"], + "source_frame": str(item["source"]), "prepared_frame": f"station_{i + 1:02d}.npz"} + for i, item in enumerate(selected)]} + (args.output / "manifest.json").write_text(json.dumps(document, ensure_ascii=False, indent=2), encoding="utf-8") + print(json.dumps({"prepared": str(args.output.resolve()), "stations": len(selected), + "rejected": rejected, "pose_csv": pose_path.name}, ensure_ascii=False, indent=2)) + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/tools/rscap_v2/audit_capture_v2.py b/tools/rscap_v2/audit_capture_v2.py new file mode 100644 index 0000000..4d8bb77 --- /dev/null +++ b/tools/rscap_v2/audit_capture_v2.py @@ -0,0 +1,22 @@ +from __future__ import annotations + +import argparse +from pathlib import Path + +from capture_format_v2 import file_summary, read_capture +from pipeline_common import write_json + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("captures", nargs="+", type=Path) + parser.add_argument("--out", type=Path, required=True) + args = parser.parse_args() + summaries = [file_summary(read_capture(path)) for path in args.captures] + write_json(args.out, {"captures": summaries}) + for summary in summaries: + print(summary) + + +if __name__ == "__main__": + main() diff --git a/tools/rscap_v2/capture_format_v2.py b/tools/rscap_v2/capture_format_v2.py new file mode 100644 index 0000000..3812980 --- /dev/null +++ b/tools/rscap_v2/capture_format_v2.py @@ -0,0 +1,254 @@ +from __future__ import annotations + +import binascii +import io +import struct +from dataclasses import dataclass, asdict +from pathlib import Path +from typing import BinaryIO, Iterator + + +FILE_MAGIC = "RAW_SERIAL_CAPTURE_FILE_V2" +RECORD_MAGIC = "RAW_SERIAL_RECORD_V2" +FOOTER_MAGIC = "RAW_SERIAL_CAPTURE_FOOTER_V2" + + +def read_7bit_int(stream: BinaryIO) -> int: + value = 0 + shift = 0 + while True: + raw = stream.read(1) + if not raw: + raise EOFError("truncated .NET string length") + value |= (raw[0] & 0x7F) << shift + if not raw[0] & 0x80: + return value + shift += 7 + if shift > 35: + raise ValueError("invalid .NET string length") + + +def read_dotnet_string(stream: BinaryIO) -> str: + length = read_7bit_int(stream) + raw = stream.read(length) + if len(raw) != length: + raise EOFError("truncated .NET string") + return raw.decode("utf-8") + + +def read_i32(stream: BinaryIO) -> int: + raw = stream.read(4) + if len(raw) != 4: + raise EOFError("truncated int32") + return struct.unpack(" int: + raw = stream.read(8) + if len(raw) != 8: + raise EOFError("truncated int64") + return struct.unpack(" int: + raw = stream.read(4) + if len(raw) != 4: + raise EOFError("truncated uint32") + return struct.unpack(" CaptureHeader: + if read_dotnet_string(stream) != FILE_MAGIC: + raise ValueError("not a V2 raw capture file") + version = read_i32(stream) + if version != 2: + raise ValueError(f"unsupported capture version: {version}") + return CaptureHeader( + sensor_kind=read_dotnet_string(stream), + session_id=read_dotnet_string(stream), + session_start_utc_ticks=read_i64(stream), + session_start_monotonic_ticks=read_i64(stream), + monotonic_frequency=read_i64(stream), + port=read_dotnet_string(stream), + baud=read_i32(stream), + file_start_utc_ticks=read_i64(stream), + ) + + +def parse_record_body(body: bytes, record_file_offset: int, record_crc: int) -> RawChunk: + stream = io.BytesIO(body) + if read_dotnet_string(stream) != RECORD_MAGIC: + raise ValueError("invalid record magic") + sequence = read_i64(stream) + receive_utc_ticks = read_i64(stream) + receive_monotonic_ticks = read_i64(stream) + raw_length = read_i32(stream) + if raw_length < 0 or raw_length > 64 * 1024 * 1024: + raise ValueError(f"invalid raw length: {raw_length}") + raw_offset = record_file_offset + 4 + stream.tell() + raw = stream.read(raw_length) + if len(raw) != raw_length: + raise EOFError("truncated raw bytes") + crc_valid = (binascii.crc32(body) & 0xFFFFFFFF) == record_crc + return RawChunk( + sequence=sequence, + receive_utc_ticks=receive_utc_ticks, + receive_monotonic_ticks=receive_monotonic_ticks, + raw=raw, + record_file_offset=record_file_offset, + raw_file_offset=raw_offset, + record_crc32=record_crc, + crc_valid=crc_valid, + ) + + +def parse_footer(body: bytes, expected_crc: int) -> CaptureFooter: + stream = io.BytesIO(body) + if read_dotnet_string(stream) != FOOTER_MAGIC: + raise ValueError("invalid footer magic") + clean_close = stream.read(1) == b"\x01" + records = read_i64(stream) + raw_bytes = read_i64(stream) + first_sequence = read_i64(stream) + last_sequence = read_i64(stream) + dropped_chunks = read_i64(stream) + dropped_bytes = read_i64(stream) + return CaptureFooter( + clean_close=clean_close, + records=records, + bytes=raw_bytes, + first_sequence=first_sequence, + last_sequence=last_sequence, + dropped_chunks=dropped_chunks, + dropped_bytes=dropped_bytes, + crc_valid=(binascii.crc32(body) & 0xFFFFFFFF) == expected_crc, + ) + + +def read_capture(path: Path) -> CaptureFile: + chunks: list[RawChunk] = [] + footer = None + truncated = False + with path.open("rb") as stream: + header = read_header(stream) + while True: + record_offset = stream.tell() + length_raw = stream.read(4) + if not length_raw: + break + if len(length_raw) != 4: + truncated = True + break + length = struct.unpack(" 1024 * 1024: + raise ValueError("invalid footer length") + footer_body = stream.read(footer_length) + if len(footer_body) != footer_length: + raise EOFError("truncated footer") + footer = parse_footer(footer_body, read_u32(stream)) + break + if length <= 0 or length > 64 * 1024 * 1024: + raise ValueError("invalid record length") + body = stream.read(length) + if len(body) != length: + raise EOFError("truncated record body") + record_crc = read_u32(stream) + chunks.append(parse_record_body(body, record_offset, record_crc)) + except (EOFError, ValueError): + truncated = True + break + return CaptureFile(str(path), header, chunks, footer, truncated) + + +def sequence_gaps(chunks: list[RawChunk]) -> list[tuple[int, int, int]]: + result = [] + for previous, current in zip(chunks, chunks[1:]): + if current.sequence > previous.sequence + 1: + result.append((previous.sequence, current.sequence, current.sequence - previous.sequence - 1)) + return result + + +def file_summary(capture: CaptureFile) -> dict: + gaps = sequence_gaps(capture.chunks) + sequences = [chunk.sequence for chunk in capture.chunks] + return { + "path": capture.path, + "sensor": capture.header.sensor_kind, + "session_id": capture.header.session_id, + "port": capture.header.port, + "baud": capture.header.baud, + "chunks_read": len(capture.chunks), + "bytes_read": sum(len(chunk.raw) for chunk in capture.chunks), + "first_sequence": sequences[0] if sequences else None, + "last_sequence": sequences[-1] if sequences else None, + "missing_chunks": sum(gap[2] for gap in gaps), + "gap_count": len(gaps), + "bad_record_crc": sum(not chunk.crc_valid for chunk in capture.chunks), + "truncated_tail": capture.truncated_tail, + "footer": None if capture.footer is None else asdict(capture.footer), + "gaps": gaps[:100], + } + + +def iter_contiguous_segments(chunks: list[RawChunk]) -> Iterator[tuple[int, list[RawChunk]]]: + if not chunks: + return + segment_id = 0 + current = [chunks[0]] + for previous, chunk in zip(chunks, chunks[1:]): + if chunk.sequence != previous.sequence + 1: + yield segment_id, current + segment_id += 1 + current = [chunk] + else: + current.append(chunk) + yield segment_id, current + diff --git a/tools/rscap_v2/parse_rtk_imu_v2.py b/tools/rscap_v2/parse_rtk_imu_v2.py new file mode 100644 index 0000000..d30a115 --- /dev/null +++ b/tools/rscap_v2/parse_rtk_imu_v2.py @@ -0,0 +1,35 @@ +from __future__ import annotations + +import argparse +from pathlib import Path + +from capture_format_v2 import file_summary, read_capture +from pipeline_common_corrected import parse_imu_capture, parse_rtk_capture, write_json, write_jsonl + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("--rtk", type=Path, required=True) + parser.add_argument("--imu", type=Path, required=True) + parser.add_argument("--out", type=Path, required=True) + args = parser.parse_args() + args.out.mkdir(parents=True, exist_ok=True) + rtk_capture = read_capture(args.rtk) + imu_capture = read_capture(args.imu) + rtk_rows = parse_rtk_capture(rtk_capture) + imu_rows = parse_imu_capture(imu_capture) + write_jsonl(args.out / "rtk.jsonl", rtk_rows) + write_jsonl(args.out / "imu.jsonl", imu_rows) + write_json(args.out / "parse_summary.json", { + "rtk_capture": file_summary(rtk_capture), + "imu_capture": file_summary(imu_capture), + "rtk_records": len(rtk_rows), + "rtk_checksum_valid": sum(bool(row.get("checksum_valid")) for row in rtk_rows), + "imu_frames": len(imu_rows), + "imu_crc_valid": sum(bool(row.get("crc_valid")) for row in imu_rows), + }) + print(f"RTK records={len(rtk_rows)}, IMU frames={len(imu_rows)}") + + +if __name__ == "__main__": + main() diff --git a/tools/rscap_v2/pipeline_common.py b/tools/rscap_v2/pipeline_common.py new file mode 100644 index 0000000..3f733ce --- /dev/null +++ b/tools/rscap_v2/pipeline_common.py @@ -0,0 +1,300 @@ +from __future__ import annotations + +import binascii +import json +import math +import struct +from pathlib import Path +from typing import Iterable + +from capture_format_v2 import CaptureFile, RawChunk, iter_contiguous_segments, read_capture + + +DOTNET_UNIX_EPOCH_TICKS = 621355968000000000 + + +def ticks_to_unix_ns(ticks: int) -> int: + return (ticks - DOTNET_UNIX_EPOCH_TICKS) * 100 + + +def safe_float(value: str, default=None): + try: + return float(value) + except (TypeError, ValueError): + return default + + +def safe_int(value: str, default=None): + try: + return int(value) + except (TypeError, ValueError): + return default + + +def nmea_checksum_valid(line: str) -> bool: + star = line.rfind("*") + if star < 0: + return False + try: + expected = int(line[star + 1:star + 3], 16) + except ValueError: + return False + value = 0 + for char in line[1:star]: + value ^= ord(char) + return value == expected + + +def unicore_crc32(text: str) -> int: + crc = 0 + for value in text.encode("ascii", "replace"): + crc ^= value + for _ in range(8): + crc = (crc >> 1) ^ (0xEDB88320 if crc & 1 else 0) + return crc & 0xFFFFFFFF + + +def unicore_checksum_valid(line: str) -> bool: + star = line.rfind("*") + if star < 0 or len(line) < star + 9: + return False + try: + expected = int(line[star + 1:star + 9], 16) + except ValueError: + return False + return unicore_crc32(line[1:star]) == expected + + +def parse_checksum(line: str) -> bool: + if line.startswith("$"): + return nmea_checksum_valid(line) + if line.startswith("#"): + return unicore_checksum_valid(line) + return False + + +def parse_nmea_latlon(value: str, hemisphere: str): + raw = safe_float(value) + if raw is None: + return None + degrees = math.floor(raw / 100.0) + result = degrees + (raw - degrees * 100.0) / 60.0 + if hemisphere.upper() in ("S", "W"): + result = -result + return result + + +def parse_gga(line: str) -> dict: + fields = line[:line.rfind("*")].split(",") + if len(fields) < 10: + raise ValueError("GGA has too few fields") + return { + "type": "GGA", + "position_time_utc": fields[1], + "lat_deg": parse_nmea_latlon(fields[2], fields[3]), + "lon_deg": parse_nmea_latlon(fields[4], fields[5]), + "fix_quality": safe_int(fields[6], -1), + "satellites": safe_int(fields[7], -1), + "hdop": safe_float(fields[8]), + "altitude_m": safe_float(fields[9]), + "geoid_separation_m": safe_float(fields[11]) if len(fields) > 11 else None, + "differential_age_s": safe_float(fields[13]) if len(fields) > 13 else None, + "station_id": fields[14].strip('"') if len(fields) > 14 else "", + } + + +def parse_heading(line: str) -> dict: + before_crc = line[:line.rfind("*")] + header, payload = before_crc.split(";", 1) + header_fields = header.split(",") + fields = payload.split(",") + if len(fields) < 7: + raise ValueError("UNIHEADINGA has too few fields") + raw_heading = safe_float(fields[3]) + return { + "type": "UNIHEADINGA", + "gnss_week": safe_int(header_fields[4]) if len(header_fields) > 4 else None, + "gnss_tow_ms": safe_int(header_fields[5]) if len(header_fields) > 5 else None, + "heading_status": fields[0], + "heading_solution": fields[1], + "baseline_length_m": safe_float(fields[2]), + "raw_heading_deg": raw_heading, + "pitch_deg": safe_float(fields[4]), + "heading_stddev_deg": safe_float(fields[6]), + "pitch_stddev_deg": safe_float(fields[7]) if len(fields) > 7 else None, + "station_id": fields[8].strip('"') if len(fields) > 8 else "", + "satellites": safe_int(fields[9], -1) if len(fields) > 9 else -1, + "solution_satellites": safe_int(fields[10], -1) if len(fields) > 10 else -1, + "observations": safe_int(fields[11], -1) if len(fields) > 11 else -1, + "multi_count": safe_int(fields[12], -1) if len(fields) > 12 else -1, + "heading_valid": fields[0] == "SOL_COMPUTED" and fields[1] in {"NARROW_INT", "NARROW_FLOAT"}, + } + + +def chunk_source(chunks: list[RawChunk], offset: int, end: int) -> dict: + first = chunks[0] + last = chunks[-1] + cursor = 0 + start_chunk = first + end_chunk = last + for chunk in chunks: + chunk_start = cursor + chunk_end = cursor + len(chunk.raw) + if chunk_start <= offset < chunk_end: + start_chunk = chunk + if chunk_start < end <= chunk_end: + end_chunk = chunk + break + cursor = chunk_end + return { + "source_segment_id": None, + "source_chunk_sequence_first": start_chunk.sequence, + "source_chunk_sequence_last": end_chunk.sequence, + "source_raw_file_offset": start_chunk.raw_file_offset + max(0, offset - sum(len(c.raw) for c in chunks if c.sequence < start_chunk.sequence)), + "source_raw_byte_length": max(0, end - offset), + } + + +def parse_rtk_capture(capture: CaptureFile) -> list[dict]: + rows = [] + for segment_id, chunks in iter_contiguous_segments(capture.chunks): + stream = b"".join(chunk.raw for chunk in chunks) + cursor = 0 + while cursor < len(stream): + newline = stream.find(b"\n", cursor) + if newline < 0: + break + end = newline + 1 + raw_line = stream[cursor:end].rstrip(b"\r\n") + cursor = end + if not raw_line: + continue + line = raw_line.decode("ascii", "replace") + valid = parse_checksum(line) + row = { + "type": "UNKNOWN", + "raw_line": line, + "checksum_valid": valid, + "host_receive_utc_ns": ticks_to_unix_ns(chunks[-1].receive_utc_ticks), + "host_receive_monotonic_ticks": chunks[-1].receive_monotonic_ticks, + "source_segment_id": segment_id, + "source_byte_offset_in_segment": cursor - len(raw_line) - 1, + "source_byte_length": len(raw_line) + 1, + } + try: + if line.startswith("$GNGGA") or line.startswith("$GPGGA"): + row.update(parse_gga(line)) + elif line.startswith("#UNIHEADINGA"): + row.update(parse_heading(line)) + except ValueError as ex: + row["parse_error"] = str(ex) + rows.append(row) + return rows + + +def crc16_hi13(data: bytes) -> int: + crc = 0 + for value in data: + crc ^= value << 8 + for _ in range(8): + crc = ((crc << 1) ^ 0x1021) & 0xFFFF if crc & 0x8000 else (crc << 1) & 0xFFFF + return crc + + +def decode_hi91(frame: bytes) -> dict: + f32 = lambda i: struct.unpack_from(" dict: + i16 = lambda i: struct.unpack_from(" list[dict]: + rows = [] + for segment_id, chunks in iter_contiguous_segments(capture.chunks): + stream = b"".join(chunk.raw for chunk in chunks) + cursor = 0 + while True: + start = stream.find(b"\x5a\xa5", cursor) + if start < 0 or start + 6 > len(stream): + break + payload_length = int.from_bytes(stream[start + 2:start + 4], "little") + frame_length = 6 + payload_length + if payload_length <= 0 or payload_length > 512: + cursor = start + 1 + continue + if start + frame_length > len(stream): + break + frame = stream[start:start + frame_length] + expected = int.from_bytes(frame[4:6], "little") + actual = crc16_hi13(frame[:4] + frame[6:]) + end = start + frame_length + source = chunk_source(chunks, start, end) + source["source_segment_id"] = segment_id + row = { + "type": "HI13", + "tag": frame[6], + "frame_length": frame_length, + "crc_valid": expected == actual, + "host_receive_utc_ns": ticks_to_unix_ns(chunks[-1].receive_utc_ticks), + "host_receive_monotonic_ticks": chunks[-1].receive_monotonic_ticks, + "source_segment_id": segment_id, + "source_byte_offset_in_segment": start, + "source_byte_length": frame_length, + "raw_frame_hex": frame.hex(), + } + if expected == actual: + try: + row.update(decode_hi91(frame) if frame[6] == 0x91 else decode_hi92(frame) if frame[6] == 0x92 else {}) + except (IndexError, struct.error, ValueError) as ex: + row["parse_error"] = str(ex) + rows.append(row) + cursor = end + return rows + + +def write_jsonl(path: Path, rows: Iterable[dict]) -> None: + with path.open("w", encoding="utf-8", newline="\n") as stream: + for row in rows: + stream.write(json.dumps(row, ensure_ascii=False, separators=(",", ":")) + "\n") + + +def write_json(path: Path, value: dict) -> None: + path.write_text(json.dumps(value, ensure_ascii=False, indent=2), encoding="utf-8") + + +def load_jsonl(path: Path) -> list[dict]: + with path.open("r", encoding="utf-8") as stream: + return [json.loads(line) for line in stream if line.strip()] diff --git a/tools/rscap_v2/pipeline_common_corrected.py b/tools/rscap_v2/pipeline_common_corrected.py new file mode 100644 index 0000000..35b37ef --- /dev/null +++ b/tools/rscap_v2/pipeline_common_corrected.py @@ -0,0 +1,106 @@ +from __future__ import annotations + +import bisect + +from pipeline_common import * +from capture_format_v2 import CaptureFile, RawChunk, iter_contiguous_segments + + +_SPAN_CACHE: dict[int, tuple[list[RawChunk], list[int]]] = {} + + +def _chunk_starts(chunks: list[RawChunk]) -> list[int]: + key = id(chunks) + cached = _SPAN_CACHE.get(key) + if cached is not None and cached[0] is chunks: + return cached[1] + starts = [] + cursor = 0 + for chunk in chunks: + starts.append(cursor) + cursor += len(chunk.raw) + _SPAN_CACHE[key] = (chunks, starts) + return starts + + +def source_for_span(chunks: list[RawChunk], start: int, end: int, segment_id: int) -> dict: + starts = _chunk_starts(chunks) + start_index = max(0, min(len(chunks) - 1, bisect.bisect_right(starts, start) - 1)) + end_index = max(start_index, min(len(chunks) - 1, bisect.bisect_left(starts, end) - 1)) + start_chunk = chunks[start_index] + end_chunk = chunks[end_index] + return { + "source_segment_id": segment_id, + "source_chunk_sequence_first": start_chunk.sequence, + "source_chunk_sequence_last": end_chunk.sequence, + "source_raw_file_offset": start_chunk.raw_file_offset + (start - starts[start_index]), + "source_raw_byte_length": end - start, + "host_receive_utc_ns": ticks_to_unix_ns(end_chunk.receive_utc_ticks), + "host_receive_monotonic_ticks": end_chunk.receive_monotonic_ticks, + } + +def parse_rtk_capture(capture: CaptureFile) -> list[dict]: + rows = [] + for segment_id, chunks in iter_contiguous_segments(capture.chunks): + stream = b"".join(chunk.raw for chunk in chunks) + cursor = 0 + while cursor < len(stream): + newline = stream.find(b"\n", cursor) + if newline < 0: + break + end = newline + 1 + raw_line = stream[cursor:end].rstrip(b"\r\n") + start = cursor + cursor = end + if not raw_line: + continue + line = raw_line.decode("ascii", "replace") + row = {"type": "UNKNOWN", "raw_line": line, "checksum_valid": parse_checksum(line)} + row.update(source_for_span(chunks, start, end, segment_id)) + try: + if line.startswith("$GNGGA") or line.startswith("$GPGGA"): + row.update(parse_gga(line)) + elif line.startswith("#UNIHEADINGA"): + row.update(parse_heading(line)) + except ValueError as ex: + row["parse_error"] = str(ex) + rows.append(row) + return rows + + +def parse_imu_capture(capture: CaptureFile) -> list[dict]: + rows = [] + for segment_id, chunks in iter_contiguous_segments(capture.chunks): + stream = b"".join(chunk.raw for chunk in chunks) + cursor = 0 + while True: + start = stream.find(b"\x5a\xa5", cursor) + if start < 0 or start + 6 > len(stream): + break + payload_length = int.from_bytes(stream[start + 2:start + 4], "little") + frame_length = 6 + payload_length + if payload_length <= 0 or payload_length > 512: + cursor = start + 1 + continue + if start + frame_length > len(stream): + break + frame = stream[start:start + frame_length] + expected = int.from_bytes(frame[4:6], "little") + actual = crc16_hi13(frame[:4] + frame[6:]) + end = start + frame_length + row = { + "type": "HI13", + "tag": frame[6], + "frame_length": frame_length, + "crc_valid": expected == actual, + "raw_frame_hex": frame.hex(), + } + row.update(source_for_span(chunks, start, end, segment_id)) + if row["crc_valid"]: + try: + row.update(decode_hi91(frame) if frame[6] == 0x91 else decode_hi92(frame) if frame[6] == 0x92 else {}) + except (IndexError, struct.error, ValueError) as ex: + row["parse_error"] = str(ex) + rows.append(row) + cursor = end + return rows