Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c8e4f92f6 | ||
|
|
5f59bcd795 | ||
|
|
6242fd1081 | ||
|
|
3b8282353c | ||
|
|
e33a7a7657 | ||
|
|
68cb5eaf90 | ||
|
|
46d2fa1d69 | ||
|
|
69bb44bccd | ||
|
|
b2271d05ba | ||
|
|
8477935ad2 | ||
|
|
13624b0be8 | ||
|
|
24eaa8508e | ||
|
|
e847cd4590 | ||
|
|
6d87b6ba9c | ||
|
|
d2aae6177e |
+22
-1
@@ -1,3 +1,24 @@
|
||||
# Python
|
||||
__pycache__/
|
||||
*.pyc
|
||||
*.py[cod]
|
||||
.pytest_cache/
|
||||
.venv/
|
||||
venv/
|
||||
|
||||
# IDE / OS
|
||||
.idea/
|
||||
.vscode/
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Raw data and generated outputs
|
||||
data/raw/
|
||||
work/
|
||||
outputs/
|
||||
*.rscap
|
||||
*.dorec
|
||||
*.log
|
||||
|
||||
# Large generated point clouds outside the archived reference result
|
||||
**/frames/
|
||||
**/frames_all/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"ExpandedNodes": [
|
||||
""
|
||||
],
|
||||
"PreviewInSolutionExplorer": false
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "D:\\First-dev-dept\\calibration\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\First-dev-dept\\calibration\\README.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}",
|
||||
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:README.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
{
|
||||
"Orientation": 0,
|
||||
"VerticalTabListWidth": 256,
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 3,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
"Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
|
||||
},
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
"Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
|
||||
},
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
"Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "README.md",
|
||||
"DocumentMoniker": "D:\\First-dev-dept\\calibration\\README.md",
|
||||
"RelativeDocumentMoniker": "README.md",
|
||||
"ToolTip": "D:\\First-dev-dept\\calibration\\README.md",
|
||||
"RelativeToolTip": "README.md",
|
||||
"ViewState": "AgIAADgAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001818|",
|
||||
"WhenOpened": "2026-07-24T03:20:21.56Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
{
|
||||
"Version": 1,
|
||||
"WorkspaceRootPath": "D:\\First-dev-dept\\calibration\\",
|
||||
"Documents": [
|
||||
{
|
||||
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\First-dev-dept\\calibration\\README.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}",
|
||||
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:README.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}"
|
||||
}
|
||||
],
|
||||
"DocumentGroupContainers": [
|
||||
{
|
||||
"Orientation": 0,
|
||||
"VerticalTabListWidth": 256,
|
||||
"DocumentGroups": [
|
||||
{
|
||||
"DockedWidth": 200,
|
||||
"SelectedChildIndex": 2,
|
||||
"Children": [
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
"Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
|
||||
},
|
||||
{
|
||||
"$type": "Bookmark",
|
||||
"Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
|
||||
},
|
||||
{
|
||||
"$type": "Document",
|
||||
"DocumentIndex": 0,
|
||||
"Title": "README.md",
|
||||
"DocumentMoniker": "D:\\First-dev-dept\\calibration\\README.md",
|
||||
"RelativeDocumentMoniker": "README.md",
|
||||
"ToolTip": "D:\\First-dev-dept\\calibration\\README.md",
|
||||
"RelativeToolTip": "README.md",
|
||||
"ViewState": "AgIAADgAAAAAAAAAAAAAABIAAAAAAAAAAAAAAA==",
|
||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001818|",
|
||||
"WhenOpened": "2026-07-24T03:20:21.56Z",
|
||||
"EditorCaption": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@@ -1,12 +0,0 @@
|
||||
# 最终推荐值补充说明
|
||||
|
||||
两套后端各自结果均保留。最终推荐值又增加了一层不依赖外参X的交叉检查:只有同一运动对的Open3D B与small_gicp B相差不超过5 cm、0.5°时才进入最终求解;最终B数为39对。
|
||||
|
||||
最终推荐:
|
||||
|
||||
- 平移 `[1.297760, -0.000067, 0.720498] m`
|
||||
- RPY `[-0.785151, 1.202661, -0.835510] deg`
|
||||
- 第二批AX RMS:`0.07985 m / 0.96118°`
|
||||
- 第一批22对辅助复核:`0.06067 m / 1.00298°`
|
||||
|
||||
完整结果见 `results/final_extrinsic_recommended.json`,选择摘要见 `results/final_summary.json`。执行完整 `run_all.ps1` 后,再执行 `run_consensus_finish.ps1` 可重建最终推荐结果。
|
||||
@@ -1,194 +0,0 @@
|
||||
木兰宽松许可证,第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.
|
||||
@@ -1,85 +0,0 @@
|
||||
# Pair 局部诊断与全局灵敏度扫描
|
||||
|
||||
本说明补充主 README。所有变换均采用:
|
||||
|
||||
```text
|
||||
X = T_body_lidar
|
||||
A_ij X = X B_ij
|
||||
B_ij = T_Li_Lj(把站点 j 点云变到站点 i)
|
||||
```
|
||||
|
||||
模式 4 相对模式 3 的数值差定义为:
|
||||
|
||||
```text
|
||||
Delta_ij = B_ij^-1 * (X^-1 * A_ij * X)
|
||||
```
|
||||
|
||||
打印的平移 xyz 和旋转 RPY 是 `Delta_ij` 在站点 j 雷达局部坐标系中的分量,不是屏幕坐标。3D 相机视角会改变画面中的“横向”,所以不能仅凭屏幕左右判断车体系 Y 或 yaw。
|
||||
|
||||
## Pair 0 当前诊断
|
||||
|
||||
Open3D 精筛 Pair 0(station 0 <- 1)的当前结果为:
|
||||
|
||||
```text
|
||||
translation xyz = [-1.2535, +1.4157, +7.7441] cm
|
||||
rotation RPY xyz = [-0.5355, -0.1093, +0.0247] deg
|
||||
norm = 7.9716 cm / 0.547109 deg
|
||||
```
|
||||
|
||||
因此这对主要表现为 roll/pitch 相关姿态差和相对 Z 差,yaw 仅约 `0.025 deg`,不应优先调 yaw。
|
||||
|
||||
## 可视化试验
|
||||
|
||||
查看原结果:
|
||||
|
||||
```powershell
|
||||
$Repo = "D:\你的代码目录\calibration"
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\view_open3d_result.ps1" -PairIndex 0
|
||||
```
|
||||
|
||||
试验车体系左乘 pitch `+0.2 deg`:
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\view_open3d_result.ps1" -PairIndex 0 -LeftPitchDeg 0.2
|
||||
```
|
||||
|
||||
此时按键含义:`3` 为 GICP 的 B,`4` 为当前最终 X 预测,`5` 为试验修正后的 X 预测。试验使用:
|
||||
|
||||
```text
|
||||
X_test = DeltaR_body * X
|
||||
```
|
||||
|
||||
这是真正的车体系左乘,会同时旋转 X 的旋转部分和平移向量;小角度下才近似等价于直接给 JSON 的 pitch 加相同角度。
|
||||
|
||||
## 全部运动对扫描
|
||||
|
||||
运行:
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_sensitivity_scan.ps1" -PairIndex 0
|
||||
```
|
||||
|
||||
程序扫描:
|
||||
|
||||
- pitch:`+0.1/+0.2/+0.3 deg`;
|
||||
- 在这些 pitch 及零 pitch 附近扫描 roll:`-0.2/-0.1/+0.1 deg`;
|
||||
- yaw `-0.2/+0.2 deg` 只作为低灵敏度对照;
|
||||
- Open3D 全部精筛对、small_gicp 全部精筛对、跨后端共识对分别计算;
|
||||
- 同时报告地面法向与高度残差;
|
||||
- 使用 `0.05 m / 0.5 deg` 作为透明的归一化尺度,统计全局 RMS、改善对数和恶化对数。
|
||||
|
||||
输出位于 `results/diagnostics/`。JSON 保存逐对结果,CSV 便于横向比较。
|
||||
|
||||
## 接受规则
|
||||
|
||||
局部扫描只用于定位,程序不会覆盖 `final_extrinsic_recommended.json`。候选至少需要满足:
|
||||
|
||||
1. 不能只改善 Pair 0;全部精筛对的归一化 RMS 应下降;
|
||||
2. 改善的运动对数量应多于恶化数量;
|
||||
3. Open3D、small_gicp 与共识集合应给出相同方向的趋势;
|
||||
4. 地面法向和高度约束不能明显恶化;
|
||||
5. 多个代表性运动对的模式 4/5 可视化应同步改善。
|
||||
|
||||
如果只有 Pair 0 改善,应把它视为局部配准或场景问题,不修改全局 X。
|
||||
|
||||
对于当前仅含 yaw 的 RTK A,车体系 Z 轴平移在 AX=XB 中不可观。扫描程序会用 `X.z + 0.10 m` 做数值检查,但不会扫描或修改 z;z 必须由地面高度约束或外部量测确定。
|
||||
@@ -1,226 +1,292 @@
|
||||
# LiDAR–双天线 RTK 手眼标定
|
||||
# 双天线RTK—3D LiDAR直接手眼标定
|
||||
|
||||
本仓库提供一套可从原始 Medulla 记录复现的静态站点标定流程,求解三维激光雷达到后轮轴中心车体系的外参
|
||||
本仓库从静态站点原始数据复现 `T_RTK_lidar`:把原始雷达点变换到 **车头向前的 RTK 车体系**(主天线原点)。
|
||||
求解不使用 RTK 到后轮轴的 XY 杆臂;与雷达–IMU 外参对照时旋转系一致,平移仍差天线原点。
|
||||
|
||||
```text
|
||||
X = T_body_lidar
|
||||
```
|
||||
当前交付标定(2026-08 室外车,27 站)约定如下:
|
||||
|
||||
约定 `T_A_B` 将 B 系坐标变换到 A 系。对任意站点 i、j:
|
||||
|
||||
```text
|
||||
A_ij = T_W_Bi^-1 T_W_Bj # RTK 给出的车体相对运动
|
||||
B_ij = T_Li_Lj # GICP 给出的雷达相对运动
|
||||
A_ij X = X B_ij
|
||||
```
|
||||
|
||||
当前部署建议仍采用 [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 残差更高,因此只作为候选和稳定性证据,不自动替换部署值。
|
||||
|
||||
## 标定总流程
|
||||
|
||||
```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 可视化"]
|
||||
```
|
||||
|
||||
流程有两个原始数据入口:
|
||||
|
||||
- 旧式数据:LiDAR 和 `GPS-POST-Z` 位于每个站点 dlog 中,使用 `export_legacy_stations.ps1`。
|
||||
- 新式多传感器数据:LiDAR 位于逐站 dlog,RTK 与 IMU 是独立 `.rscap`,使用 `export_multisensor_stations.ps1`。处理顺序是统一时间轴、分别解析、按 LiDAR 帧关联、导出 NPZ。
|
||||
|
||||
IMU 会在新式数据中原样解析并随 LiDAR 帧关联保存,但当前 LiDAR–RTK 外参求解不使用 IMU,也不做运动畸变校正,因为每一站采集点云时车辆静止。IMU 外参应使用单独的激励数据和专用标定流程求解。
|
||||
|
||||
## 三批数据的角色
|
||||
|
||||
| 数据 | 原始格式 | 站点 | 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 | 独立重算与跨批比较 |
|
||||
|
||||
原始数据体积较大,不在 Git 仓库中。复现者应从云盘取得第一批、第二批或 data4 的原始目录,并在命令行传入路径。
|
||||
|
||||
## 环境
|
||||
|
||||
- Windows PowerShell 5.1 或 PowerShell 7
|
||||
- Python 3.10+
|
||||
- `pip install -r requirements.txt`
|
||||
- `small_gicp` 后端需要可导入 `small_gicp`;Open3D 后端需要 `open3d`
|
||||
|
||||
所有脚本从自身位置推导仓库根目录。数据和输出路径均由参数传入,不依赖开发者电脑上的固定路径。
|
||||
|
||||
## 从原始数据开始复现
|
||||
|
||||
以下路径只表示格式,请替换为自己的目录。
|
||||
|
||||
### A. 第一批、第二批旧式 dlog
|
||||
|
||||
```powershell
|
||||
$Repo = "D:\你的代码目录\calibration"
|
||||
|
||||
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` 是本项目已有两批数据采用的配置,不是通用常数;换车或改变天线安装后必须重新确认。
|
||||
|
||||
### B. data4 式独立 RTK/IMU rscap
|
||||
|
||||
```powershell
|
||||
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 "D:\你的输出目录\batch1_prepared" `
|
||||
-Batch2Prepared "D:\你的输出目录\batch2_prepared" `
|
||||
-OutputRoot "D:\你的输出目录\two_batch_calibration"
|
||||
```
|
||||
|
||||
`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
|
||||
code/ 标定、配准筛选、共识、比较和可视化核心程序
|
||||
tools/ 原始 dlog/rscap 解析、时间关联、NPZ 导出和数据准备
|
||||
run/ 不含本机固定路径的 PowerShell 入口
|
||||
results/ 历史两批、data4 与跨批比较三个结果目录
|
||||
```
|
||||
|
||||
完整复现流程和所有主要文件职责均在本 README;`run/README.md`、`tools/README.md` 和 [results/README.md](results/README.md) 只是目录内快速索引。
|
||||
|
||||
## 代码、工具和运行入口职责
|
||||
|
||||
根 README 是本仓库唯一的完整复现说明。`run/README.md`、`tools/README.md` 和 `results/README.md` 只作为进入对应目录时的快速索引,不承载另一套流程。
|
||||
|
||||
### 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 扰动,检查指定运动对的局部敏感方向。 |
|
||||
| RTK 坐标系 | **车头向前**(`HeadingOffsetDeg = -90`;主从装反、基线朝右) |
|
||||
| 天线相位中心离地高 | **1.9165 m**(1916.5 mm) |
|
||||
| 机械初值(车头系) | \(t=(+0.21086,-0.41418,+0.07850)\) m,yaw=**0°**(CAD 纵向已按车头正向取 +X) |
|
||||
| 物理基线 | `baseline_points=vehicle_right`(主天线车左,从天线车右,后轴中心左右对称) |
|
||||
| 姿态 | 双天线 pitch/roll:`R = Rz(yaw_raw) Ry(-pitch) Rx(roll) Rz(+90°)` |
|
||||
| 地面点 ROI | LiDAR 系 **`z ∈ [-2.5, -1.5]`**(约 2 m 车顶安装) |
|
||||
| pair 配准 | **禁止**使用外参 seed;B 与 X 独立 |
|
||||
|
||||
### tools:原始数据到 prepared
|
||||
数据下载:https://fs.fairylandtech.com:5001/FRLD/#file_id=966776353886090246
|
||||
账号:lichun.qu@fairylandtech.com 密码:lichun.qu
|
||||
|
||||
| 文件 | 职责 |
|
||||
|---|---|
|
||||
| `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 入口
|
||||
## 1. 输出坐标约定(车头向前)
|
||||
|
||||
| 文件 | 职责 |
|
||||
|---|---|
|
||||
| `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 可视化。 |
|
||||
|
||||
### 标定核心文件的数据关系
|
||||
统一约定 `T_A_B` 把 B 系点变换到 A 系:
|
||||
|
||||
```text
|
||||
原始 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 做数值和三维检查
|
||||
p_RTK = T_RTK_lidar · p_lidar
|
||||
```
|
||||
|
||||
本仓库默认 RTK 导航系(**车头向前 / vehicle_forward_heading_offset**):
|
||||
|
||||
## 重要限制
|
||||
- 原点:GGA 位置参考点(主天线 / ANT1 相位中心);
|
||||
- X 轴:车头向前(`rawHeading + HeadingOffsetDeg`,本车 `HeadingOffsetDeg = -90`);
|
||||
- Y 轴:左;
|
||||
- Z 轴:上;
|
||||
- 姿态:先在基线系应用双天线 pitch/roll,再乘固定 `Rz(-heading_offset)`;不是 IMU 融合姿态。
|
||||
|
||||
- RTK 车体姿态当前是双天线 heading 构造的 yaw-only 轨迹;没有用 RTK pitch/roll 构造 A。
|
||||
- 新式解析器保存 IMU 与 RTK pitch 等原始字段,但当前手眼方程未融合 IMU。
|
||||
- 静止站点法不估计 LiDAR–RTK 时间偏移;时间戳关联必须在导出阶段通过审计。
|
||||
- 地面约束负责 roll、pitch 和 z 的补充可观性,不会独立求出另一套六自由度外参。
|
||||
- 仓库归档的是结果和轻量 B 文件,不包含云盘中的原始点云数据。
|
||||
> 改 `HeadingOffsetDeg` 或姿态模型后必须从 **prepare** 起重跑;禁止事后只改 JSON 里的 yaw。
|
||||
> 旧基线系结果(`HeadingOffsetDeg = 0`)与车头系外参不可混用。
|
||||
|
||||
## 专题说明
|
||||
机械初值文件:[`run/rtk_lidar_mechanical_initial.json`](run/rtk_lidar_mechanical_initial.json)
|
||||
**仅用于 AX=XB 求解初值,禁止用于 LiDAR pair 配准。**
|
||||
|
||||
- [运动对诊断](PAIR_DIAGNOSTICS.md)
|
||||
- [双后端共识筛选](CONSENSUS_SELECTION.md)
|
||||
- [结果文件索引](results/README.md)
|
||||
---
|
||||
|
||||
## 2. 算法流程
|
||||
|
||||
```text
|
||||
原始雷达 + RTK(+ 可选 IMU)
|
||||
→ combined/(按站关联的多传感器 NPZ)
|
||||
→ 每站选一帧静态点云 + RTK pose(车头向前,含双天线 pitch/roll)
|
||||
→ Open3D GICP 与 small_gicp 分别求 B_ij = T_Li_Lj(无外参 seed)
|
||||
→ 留出点、正反向、旋转共轭不变量等精筛
|
||||
→ 双后端共识边 → consensus B
|
||||
→ A_ij X = X B_ij + 地面法向/高度约束 → X = T_RTK_lidar
|
||||
→ bootstrap、双后端差异、逐对残差与 3D 可视化
|
||||
```
|
||||
|
||||
```text
|
||||
A_ij = inv(T_W_Ri) · T_W_Rj = T_Ri_Rj
|
||||
B_ij = T_Li_Lj
|
||||
A_ij · X = X · B_ij
|
||||
X = T_RTK_lidar
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 原始数据与导出
|
||||
|
||||
大体积数据不提交 Git。常见两种采集形态:
|
||||
|
||||
### 3.1 每站独立雷达目录(旧/标准站目录)
|
||||
|
||||
```text
|
||||
raw_dataset/
|
||||
├── stations/001|002|.../ # H32 dlog 或 h32.rscap
|
||||
└── captures/
|
||||
├── rtk.rscap
|
||||
└── imu.rscap # 仅关联,不参与外参求解
|
||||
```
|
||||
|
||||
```powershell
|
||||
python tools\export_raw_to_combined.py `
|
||||
--stations-root "$Raw\stations" `
|
||||
--rtk-rscap "$Raw\captures\rtk.rscap" `
|
||||
--imu-rscap "$Raw\captures\imu.rscap" `
|
||||
--out "$Out\exported" `
|
||||
--overwrite
|
||||
```
|
||||
|
||||
默认时间基:`-TimeBasis device_gnss`(雷达设备时 ↔ GNSS week/TOW)。
|
||||
|
||||
### 3.2 G90 连续录制 + H32 DLog 按站时间窗(本次 27 站)
|
||||
|
||||
站不在独立目录,而在多个 Medulla DLog ZIP 与 G90 `.rscap` 中时:
|
||||
|
||||
```powershell
|
||||
python tools\export_g90_h32_windows_to_combined.py `
|
||||
--segments-csv <rtk_lidar_station_segments.csv> `
|
||||
--lidar-dlog <dump_1.zip> --lidar-dlog <dump_2.zip> `
|
||||
--rtk-rscap <g90_1.rscap> --rtk-rscap <g90_2.rscap> `
|
||||
--out <output_root> --expected-stations 27 --frame-stride 5
|
||||
```
|
||||
|
||||
该入口用 **主机接收 UTC** 做近邻关联(`time_basis_mode: host`),并保留设备时间供审计。
|
||||
可加 `--reuse-export` 在已有 `export/` 上续跑。
|
||||
|
||||
采集建议:有效静站 ≥30(更好 40~60);相邻站转角约 **15°~30°**;避免一长串同朝向停车;场内宜有墙/立柱及 2~3 块法向不同的固定平面板。
|
||||
|
||||
---
|
||||
|
||||
## 4. 环境安装
|
||||
|
||||
Windows + PowerShell + Python 3.11:
|
||||
|
||||
```powershell
|
||||
python -m pip install -r requirements.txt
|
||||
```
|
||||
|
||||
依赖:NumPy、SciPy、Open3D、small_gicp。完整共识需要两个配准后端。
|
||||
|
||||
---
|
||||
|
||||
## 5. 一键复现(匹配本次标定)
|
||||
|
||||
### 5.1 已有 `combined/`(推荐复现本次结果)
|
||||
|
||||
```powershell
|
||||
$Repo = (Resolve-Path ".").Path
|
||||
$Data = "D:\data\rtk_lidar_run" # 含 combined/
|
||||
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_direct_rtk_lidar.ps1" `
|
||||
-CombinedRoot "$Data\combined" `
|
||||
-WorkRoot "$Data\prepared_vehicle_h19165" `
|
||||
-OutputRoot "$Data\outputs_vehicle_h19165" `
|
||||
-RtkReferenceHeightAboveGroundM 1.9165 `
|
||||
-HeadingOffsetDeg -90 `
|
||||
-ExpectedStations 27 `
|
||||
-MinStations 20 `
|
||||
-GroundZMin -2.5 `
|
||||
-GroundZMax -1.5 `
|
||||
-Bootstrap 200
|
||||
```
|
||||
|
||||
关键参数:
|
||||
|
||||
| 参数 | 本次取值 | 说明 |
|
||||
|---|---|---|
|
||||
| `-RtkReferenceHeightAboveGroundM` | **1.9165** | GGA/ANT1 相位中心离地高(m),必填 |
|
||||
| `-HeadingOffsetDeg` | **-90** | 车头向前(主从装反、基线朝右);`0` 才是基线系 |
|
||||
| `-GroundZMin/Max` | **-2.5 / -1.5** | 约 2 m 车顶雷达;旧默认 `[-1.4,-0.4]` 会拟合到墙 |
|
||||
| `-ExpectedStations` | **27** | 本批站数 |
|
||||
| `-MinStations` | **20** | 远程旧脚本曾写死 30,会跑不了本批 |
|
||||
|
||||
pair 阶段**不会**传入 `--initial-extrinsic`;机械初值只进最终 AX=XB。
|
||||
|
||||
### 5.2 站目录原始数据一键(导出 + 求解)
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_full_pipeline.ps1" `
|
||||
-DataRoot "$Raw\stations" `
|
||||
-RtkCapture "$Raw\captures\rtk.rscap" `
|
||||
-ImuCapture "$Raw\captures\imu.rscap" `
|
||||
-OutputRoot $Out `
|
||||
-RtkReferenceHeightAboveGroundM 1.9165 `
|
||||
-ExpectedStations 27 `
|
||||
-GroundZMin -2.5 `
|
||||
-GroundZMax -1.5
|
||||
```
|
||||
|
||||
主要输出:
|
||||
|
||||
```text
|
||||
$Out/
|
||||
├── exported/combined/ # 或外部已有 combined/
|
||||
├── prepared_*/frames_all/
|
||||
├── prepared_*/reference_poses_rtk_gga_raw_heading.csv
|
||||
└── calibration/ 或 outputs_*/
|
||||
├── open3d_gicp/ small_gicp/ consensus/
|
||||
├── common/ground_planes.csv
|
||||
├── summary.json
|
||||
└── final_T_RTK_lidar.json
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 3D 可视化
|
||||
|
||||
查看本次结果:
|
||||
|
||||
```powershell
|
||||
$Repo = "D:\First-dev-dept\calibration-rtk-run"
|
||||
$Out = "D:\data\rtk_lidar_run\outputs_vehicle_h19165"
|
||||
$Work = "D:\data\rtk_lidar_run\prepared_vehicle_h19165"
|
||||
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\view_result.ps1" `
|
||||
-Frames "$Work\frames_all" `
|
||||
-Pairs "$Out\consensus\B_consensus.npz" `
|
||||
-Extrinsic "$Out\final_T_RTK_lidar.json" `
|
||||
-PairIndex 0
|
||||
```
|
||||
|
||||
通用模板(把路径换成你的 `WorkRoot` / `OutputRoot`):
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\view_result.ps1" `
|
||||
-Frames "$WorkRoot\frames_all" `
|
||||
-Pairs "$OutputRoot\consensus\B_consensus.npz" `
|
||||
-Extrinsic "$OutputRoot\final_T_RTK_lidar.json" `
|
||||
-PairIndex 0
|
||||
```
|
||||
|
||||
| 按键 | 含义 |
|
||||
|---|---|
|
||||
| `1` | 原始点云 |
|
||||
| `2` | 仅用 RTK 运动作初值 |
|
||||
| `3` | GICP 测得的 B |
|
||||
| `4` | 外参预测 `X⁻¹ A X`(应与 3 重合) |
|
||||
| `N` / `]` | 下一运动对 |
|
||||
| `P` / `[` | 上一运动对 |
|
||||
| `Q` / `Esc` | 退出 |
|
||||
|
||||
蓝 = 站 i,橙 = 站 j。请用 `N`/`P` **多看大转角对**,不要只看前几对同朝向站。
|
||||
|
||||
---
|
||||
|
||||
## 7. 当前标定结果(车头向前,h = 1.9165 m)
|
||||
|
||||
> **状态:可作车头系候选交付**(`recommended_for_deployment: true`)。
|
||||
> 约定:`HeadingOffsetDeg=-90`,双天线 pitch/roll,机械初值 \(t=(+0.21086,-0.41418,+0.07850)\),yaw=0。
|
||||
|
||||
仓库内结果:[`results/vehicle_20260808/`](results/vehicle_20260808/)(来自本机 `outputs_vehicle_h19165`)。
|
||||
|
||||
```text
|
||||
translation_m = [0.217822250, -0.411347802, 0.106542337]
|
||||
RPY_deg_xyz = [0.066239, 0.809662, -0.551322]
|
||||
|
||||
T_RTK_lidar ≈
|
||||
0.999854 0.009639 0.014119 0.217822
|
||||
-0.009621 0.999953 -0.001292 -0.411348
|
||||
-0.014131 0.001156 0.999899 0.106542
|
||||
0 0 0 1
|
||||
```
|
||||
|
||||
| 指标 | 值 |
|
||||
|---|---:|
|
||||
| 有效站点 / 共识对 | 27 / 20 |
|
||||
| 平移残差 RMS | ≈ 0.071 m |
|
||||
| 旋转残差 RMS | ≈ 0.982 ° |
|
||||
| 双后端差 | ≈ 3.1 mm / 0.12° |
|
||||
| `frame_mode` | `vehicle_forward_heading_offset` |
|
||||
| 相对机械初值 | XY 近机械杆臂;yaw≈0;无近 180° 冲突 |
|
||||
|
||||
与机械平移初值 XY 相差约数毫米;z 由天线高度约束,CAD 的 4 mm 不能代替实测 1.9165 m。
|
||||
|
||||
### 为何 RMS 尚可、尾部(P95/max)较差?
|
||||
|
||||
1. **前段多站几乎同航向**(STATION-01~05 约 250°~255°)。最差对(如 2→4)站间转角仅约 5°,小转角对平均平移残差约 7.4 cm,大转角对约 3.7 cm。
|
||||
2. **GICP heldout RMSE** 本身多在 0.11~0.14 m,场景重叠/结构限制了配准下限。
|
||||
3. 本批导出为 **host 时间关联**,静站可用,但仍可能引入厘米级位姿—点云错位。
|
||||
4. AX 残差衡量的是「RTK 运动 A」与「外参预测 XBX」的一致性,**不是**相对 CAD 的毫米误差,也不能单独证明 ±3 cm 绝对真值。
|
||||
|
||||
改进方向:相邻站转角 15°~30°、站数 ≥40、固定平面板、有条件改用 `device_gnss`。
|
||||
|
||||
---
|
||||
|
||||
## 8. z 与精度限制
|
||||
|
||||
平面阿克曼运动不能独立观测 z。z 由「LiDAR 地面平面 + 外供 RTK 参考点离地高」约束:
|
||||
|
||||
- 本次:**1.9165 m**(相位中心离地);
|
||||
- 不得复用其他车辆或历史采集的天线离地高度。
|
||||
|
||||
更改高度后必须重新求解,禁止只改 JSON 里的 z。
|
||||
GGA 对应哪根天线、`rawHeading` 方向须现场确认;搞反会导致 yaw 差约 180°。
|
||||
|
||||
---
|
||||
|
||||
|
||||
## 9. 仓库目录
|
||||
|
||||
| 目录 | 职责 |
|
||||
|---|---|
|
||||
| [`code/`](code/) | GICP、运动对质量、AX=XB、结果封装、3D 可视化 |
|
||||
| [`tools/`](tools/) | dlog/rscap 解析、G90 窗导出、combined / prepared |
|
||||
| [`run/`](run/) | PowerShell 入口;路径与高度均由参数传入 |
|
||||
| [`results/`](results/) | 当前车辆的最终外参与质量摘要;不含原始数据和中间点云 |
|
||||
| `tests/` | 坐标契约、G90 host 关联等回归 |
|
||||
| `work/`、`outputs/` | 本地生成物(`.gitignore`) |
|
||||
|
||||
命令索引见 [`run/README.md`](run/README.md),工具说明见 [`tools/README.md`](tools/README.md),操作手册见 [`雷达与RTK标定说明书.md`](雷达与RTK标定说明书.md)。
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
# code目录
|
||||
|
||||
| 文件 | 职责 |
|
||||
|---|---|
|
||||
| `rigorous_calibration.py` | 核心CLI:读取静态点云/RTK位姿,Open3D或small_gicp求B,拟合地面,求解/验证AX=XB |
|
||||
| `refine_pairs.py` | 不使用最终X,按留出点重叠率、RMSE、旋转共轭不变量和正反向一致性精筛运动对 |
|
||||
| `cross_backend_filter.py` | 保留Open3D与small_gicp共同认可且变换接近的边;共识B数值取Open3D结果 |
|
||||
| `finalize_direct_rtk_lidar.py` | 将三路求解结果封装为明确方向的`T_RTK_lidar`,选择consensus为最终结果 |
|
||||
| `visualize_pair_3d.py` | 交互显示原始、RTK初值、GICP B和`X^-1AX`,并打印增量 |
|
||||
| `compare_extrinsics.py` | 计算两套外参的SE(3)平移/旋转差异 |
|
||||
| `build_joint_rtk_lidar_inputs.py` | 合并多个独立批次的批内A/B运动对和地面平面,并保留批次索引与汇总信息 |
|
||||
|
||||
核心约定:`A=T_Ri_Rj`、`B=T_Li_Lj`、`X=T_RTK_lidar`,满足`A X = X B`。点云配准以i为target、j为source,B将j帧点云变换到i帧。
|
||||
@@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Combine independent RTK-direct hand-eye batches for a shared extrinsic.
|
||||
|
||||
Each batch contributes only its within-batch A/B motion pairs and LiDAR ground
|
||||
planes. No cross-batch motion pair is created, so different ENU origins and
|
||||
capture locations are valid as long as every batch uses the same RTK-direct
|
||||
frame definition and unchanged physical sensor installation.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
import numpy as np
|
||||
|
||||
|
||||
def parse_args() -> argparse.Namespace:
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--batch-name", action="append", required=True)
|
||||
parser.add_argument("--pairs", action="append", required=True, type=Path)
|
||||
parser.add_argument("--ground-planes", action="append", required=True, type=Path)
|
||||
parser.add_argument("--output-pairs", required=True, type=Path)
|
||||
parser.add_argument("--output-ground-planes", required=True, type=Path)
|
||||
parser.add_argument("--summary", required=True, type=Path)
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def load_planes(path: Path, batch_name: str) -> list[dict[str, str]]:
|
||||
with path.open(encoding="utf-8-sig", newline="") as stream:
|
||||
rows = list(csv.DictReader(stream))
|
||||
if not rows:
|
||||
raise ValueError(f"no ground planes in {path}")
|
||||
for row in rows:
|
||||
for key in ("nx", "ny", "nz", "d"):
|
||||
if key not in row or row[key] in (None, ""):
|
||||
raise ValueError(f"missing {key} in {path}")
|
||||
row["source_batch"] = batch_name
|
||||
return rows
|
||||
|
||||
|
||||
def main() -> int:
|
||||
args = parse_args()
|
||||
count = len(args.batch_name)
|
||||
if count < 2 or len(args.pairs) != count or len(args.ground_planes) != count:
|
||||
raise ValueError("provide the same number of --batch-name, --pairs, and --ground-planes (at least two)")
|
||||
|
||||
pair_parts: list[dict[str, np.ndarray]] = []
|
||||
plane_rows: list[dict[str, str]] = []
|
||||
batch_summaries: list[dict[str, object]] = []
|
||||
for index, (name, pairs_path, planes_path) in enumerate(zip(args.batch_name, args.pairs, args.ground_planes)):
|
||||
with np.load(pairs_path, allow_pickle=False) as source:
|
||||
required = ("A", "B", "meta", "station_times", "rtk_nearest_dt_s")
|
||||
missing = [key for key in required if key not in source]
|
||||
if missing:
|
||||
raise ValueError(f"{pairs_path} missing {missing}")
|
||||
a = np.asarray(source["A"], float)
|
||||
b = np.asarray(source["B"], float)
|
||||
meta = np.asarray(source["meta"], float)
|
||||
times = np.asarray(source["station_times"], float)
|
||||
rtk_dt = np.asarray(source["rtk_nearest_dt_s"], float)
|
||||
if len(a) == 0 or len(a) != len(b) or len(a) != len(meta):
|
||||
raise ValueError(f"invalid A/B/meta sizes in {pairs_path}")
|
||||
pair_parts.append({"A": a, "B": b, "meta": meta, "station_times": times, "rtk_dt": rtk_dt})
|
||||
rows = load_planes(planes_path, name)
|
||||
plane_rows.extend(rows)
|
||||
batch_summaries.append({
|
||||
"name": name,
|
||||
"pairs_path": str(pairs_path.resolve()),
|
||||
"ground_planes_path": str(planes_path.resolve()),
|
||||
"pairs": len(a),
|
||||
"stations": len(times),
|
||||
"ground_planes": len(rows),
|
||||
"pair_offset": sum(item["A"].shape[0] for item in pair_parts[:-1]),
|
||||
})
|
||||
|
||||
output_pairs = args.output_pairs
|
||||
output_pairs.parent.mkdir(parents=True, exist_ok=True)
|
||||
batch_index = np.concatenate([np.full(len(part["A"]), index, np.int32) for index, part in enumerate(pair_parts)])
|
||||
np.savez_compressed(
|
||||
output_pairs,
|
||||
A=np.concatenate([part["A"] for part in pair_parts]),
|
||||
B=np.concatenate([part["B"] for part in pair_parts]),
|
||||
meta=np.concatenate([part["meta"] for part in pair_parts]),
|
||||
station_times=np.concatenate([part["station_times"] for part in pair_parts]),
|
||||
rtk_nearest_dt_s=np.concatenate([part["rtk_dt"] for part in pair_parts]),
|
||||
batch_index=batch_index,
|
||||
batch_names=np.asarray(args.batch_name),
|
||||
backend=np.asarray("independent_batch_consensus"),
|
||||
)
|
||||
|
||||
output_planes = args.output_ground_planes
|
||||
output_planes.parent.mkdir(parents=True, exist_ok=True)
|
||||
fieldnames = ["nx", "ny", "nz", "d", "source_batch"]
|
||||
with output_planes.open("w", encoding="utf-8", newline="") as stream:
|
||||
writer = csv.DictWriter(stream, fieldnames=fieldnames)
|
||||
writer.writeheader()
|
||||
for row in plane_rows:
|
||||
writer.writerow({key: row[key] for key in fieldnames})
|
||||
|
||||
summary = {
|
||||
"schema_version": 1,
|
||||
"convention": "Shared T_RTK_lidar; only within-batch A_ij and B_ij are combined.",
|
||||
"batches": batch_summaries,
|
||||
"total_pairs": int(len(batch_index)),
|
||||
"total_ground_planes": len(plane_rows),
|
||||
"output_pairs": str(output_pairs.resolve()),
|
||||
"output_ground_planes": str(output_planes.resolve()),
|
||||
}
|
||||
args.summary.parent.mkdir(parents=True, exist_ok=True)
|
||||
args.summary.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())
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Compare two T_body_lidar JSON files in parameter space and on SE(3)."""
|
||||
"""Compare two homogeneous-extrinsic JSON files in parameter space and on SE(3)."""
|
||||
|
||||
import argparse
|
||||
import json
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Publish the cross-backend-consensus result as the recommended deliverable."""
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--consensus-extrinsic", required=True)
|
||||
parser.add_argument("--consensus-check", required=True)
|
||||
parser.add_argument("--open3d-extrinsic", required=True)
|
||||
parser.add_argument("--small-extrinsic", required=True)
|
||||
parser.add_argument("--output", required=True)
|
||||
parser.add_argument("--summary", required=True)
|
||||
args = parser.parse_args()
|
||||
consensus = json.loads(Path(args.consensus_extrinsic).read_text(encoding="utf-8-sig"))
|
||||
check = json.loads(Path(args.consensus_check).read_text(encoding="utf-8-sig"))
|
||||
open3d = json.loads(Path(args.open3d_extrinsic).read_text(encoding="utf-8-sig"))
|
||||
small = json.loads(Path(args.small_extrinsic).read_text(encoding="utf-8-sig"))
|
||||
summary = {
|
||||
"recommended_method": "Open3D B gated by Open3D-small_gicp cross-backend agreement",
|
||||
"selection_is_X_independent": True,
|
||||
"second_batch_role": "estimation (dense RTK)",
|
||||
"first_batch_role": "auxiliary check only (sparse RTK)",
|
||||
"consensus": {
|
||||
"translation_m": consensus["translation_m"],
|
||||
"rotation_rpy_deg_xyz": consensus["rotation_rpy_deg_xyz"],
|
||||
"estimation": consensus["estimation"]["residuals"],
|
||||
"bootstrap_std": consensus["bootstrap"]["std"],
|
||||
"batch1_auxiliary": check["metrics"],
|
||||
},
|
||||
"separate_backend_results": {
|
||||
"open3d_gicp": {
|
||||
"translation_m": open3d["translation_m"],
|
||||
"rotation_rpy_deg_xyz": open3d["rotation_rpy_deg_xyz"],
|
||||
},
|
||||
"small_gicp": {
|
||||
"translation_m": small["translation_m"],
|
||||
"rotation_rpy_deg_xyz": small["rotation_rpy_deg_xyz"],
|
||||
},
|
||||
},
|
||||
"warning": "AX rotation RMS remains about one degree; this is not centimetre-grade absolute certification.",
|
||||
}
|
||||
published = dict(consensus)
|
||||
published["selection"] = {
|
||||
"method": summary["recommended_method"],
|
||||
"selection_is_X_independent": True,
|
||||
"consensus_pair_threshold": "Open3D-small_gicp B delta <= 0.05 m and <= 0.50 deg",
|
||||
"warning": summary["warning"],
|
||||
}
|
||||
Path(args.output).write_text(json.dumps(published, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
Path(args.summary).write_text(json.dumps(summary, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
print(json.dumps(summary, ensure_ascii=False, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,349 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import math
|
||||
from pathlib import Path
|
||||
|
||||
import numpy as np
|
||||
from scipy.spatial.transform import Rotation
|
||||
|
||||
|
||||
def load(path: Path) -> dict:
|
||||
return json.loads(path.read_text(encoding="utf-8-sig"))
|
||||
|
||||
|
||||
def write(path: Path, document: dict) -> None:
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
def default(obj):
|
||||
if isinstance(obj, (np.bool_, np.integer)):
|
||||
return obj.item()
|
||||
if isinstance(obj, np.floating):
|
||||
return float(obj)
|
||||
if isinstance(obj, np.ndarray):
|
||||
return obj.tolist()
|
||||
raise TypeError(f"Object of type {type(obj).__name__} is not JSON serializable")
|
||||
|
||||
path.write_text(json.dumps(document, ensure_ascii=False, indent=2, default=default), encoding="utf-8")
|
||||
|
||||
|
||||
def inverse(t: np.ndarray) -> np.ndarray:
|
||||
result = np.eye(4)
|
||||
result[:3, :3] = t[:3, :3].T
|
||||
result[:3, 3] = -result[:3, :3] @ t[:3, 3]
|
||||
return result
|
||||
|
||||
|
||||
def delta(a: np.ndarray, b: np.ndarray) -> dict:
|
||||
d = inverse(a) @ b
|
||||
return {
|
||||
"translation_m": float(np.linalg.norm(d[:3, 3])),
|
||||
"rotation_deg": float(np.linalg.norm(Rotation.from_matrix(d[:3, :3]).as_rotvec()) * 180.0 / math.pi),
|
||||
"delta_matrix_4x4": d.tolist(),
|
||||
}
|
||||
|
||||
|
||||
def wrap180(deg: float) -> float:
|
||||
return (deg + 180.0) % 360.0 - 180.0
|
||||
|
||||
|
||||
def yaw_deg_of(transform: np.ndarray) -> float:
|
||||
return float(Rotation.from_matrix(transform[:3, :3]).as_euler("xyz", degrees=True)[2])
|
||||
|
||||
|
||||
def mechanical_self_consistency(document: dict) -> dict:
|
||||
"""Reject mechanical JSON that mixes incompatible baseline / body definitions."""
|
||||
translation = np.asarray(document["translation_m"], float)
|
||||
yaw = float(document["rotation_rpy_deg_xyz"][2])
|
||||
side = str(document.get("baseline_points", "")).strip().lower()
|
||||
frame_mode = str(document.get("frame_mode", "")).strip().lower()
|
||||
heading_offset = float(document.get("heading_offset_deg", 0.0) or 0.0)
|
||||
vehicle_forward = (
|
||||
frame_mode == "vehicle_forward_heading_offset"
|
||||
or abs(heading_offset) > 1e-6
|
||||
)
|
||||
issues: list[str] = []
|
||||
|
||||
if vehicle_forward:
|
||||
if abs(wrap180(yaw)) > 15.0:
|
||||
issues.append(
|
||||
f"vehicle-forward mechanical initial requires yaw≈0°, got {yaw:g}°"
|
||||
)
|
||||
lever = document.get("vehicle_flu_lever_master_to_lidar_m")
|
||||
if lever is not None:
|
||||
if float(np.linalg.norm(translation - np.asarray(lever, float))) > 0.05:
|
||||
issues.append(
|
||||
"vehicle-forward translation_m must match vehicle_flu_lever_master_to_lidar_m"
|
||||
)
|
||||
if abs(heading_offset + 90.0) > 1e-6 and abs(heading_offset - 90.0) > 1e-6:
|
||||
issues.append(
|
||||
f"vehicle-forward heading_offset_deg should be ±90 for left/right baseline, got {heading_offset:g}"
|
||||
)
|
||||
elif side in {"vehicle_left", "left"}:
|
||||
if abs(wrap180(yaw - (-90.0))) > 15.0:
|
||||
issues.append(
|
||||
f"baseline_points=vehicle_left requires yaw≈-90°, got {yaw:g}°"
|
||||
)
|
||||
if translation[0] <= 0.0 or translation[1] <= 0.0:
|
||||
issues.append(
|
||||
"baseline_points=vehicle_left expects +X/+Y lever in RTK baseline frame "
|
||||
f"(got t_xy=({translation[0]:g}, {translation[1]:g}))"
|
||||
)
|
||||
elif side in {"vehicle_right", "right"}:
|
||||
if abs(wrap180(yaw - 90.0)) > 15.0:
|
||||
issues.append(
|
||||
f"baseline_points=vehicle_right requires yaw≈+90°, got {yaw:g}°"
|
||||
)
|
||||
# Swapped but centerline-symmetric master (vehicle left): +X / -Y in baseline frame.
|
||||
if translation[0] <= 0.0 or translation[1] >= 0.0:
|
||||
issues.append(
|
||||
"baseline_points=vehicle_right (master on vehicle left, baseline to the right) "
|
||||
"expects +X/-Y lever in RTK baseline frame "
|
||||
f"(got t_xy=({translation[0]:g}, {translation[1]:g}))"
|
||||
)
|
||||
else:
|
||||
left_xy = translation[0] > 0.05 and translation[1] > 0.05
|
||||
right_xy = translation[0] < -0.05 and translation[1] < -0.05
|
||||
swapped_right_xy = translation[0] > 0.05 and translation[1] < -0.05
|
||||
if left_xy and abs(wrap180(yaw - 90.0)) <= 15.0:
|
||||
issues.append(
|
||||
"mixed baseline definition: +X/+Y translation (left-baseline) combined with yaw≈+90° (right-baseline)"
|
||||
)
|
||||
if right_xy and abs(wrap180(yaw - (-90.0))) <= 15.0:
|
||||
issues.append(
|
||||
"mixed baseline definition: -X/-Y translation combined with yaw≈-90°"
|
||||
)
|
||||
if swapped_right_xy and abs(wrap180(yaw - (-90.0))) <= 15.0:
|
||||
issues.append(
|
||||
"mixed baseline definition: +X/-Y translation (swapped-master right-baseline) "
|
||||
"combined with yaw≈-90° (left-baseline)"
|
||||
)
|
||||
|
||||
return {
|
||||
"baseline_points": side or None,
|
||||
"frame_mode": frame_mode or None,
|
||||
"heading_offset_deg": heading_offset,
|
||||
"consistent": not issues,
|
||||
"issues": issues,
|
||||
}
|
||||
|
||||
|
||||
def solution_matches_declared_side(solution: np.ndarray, document: dict) -> dict:
|
||||
"""Check whether the solved extrinsic agrees with the mechanical baseline side."""
|
||||
side = str(document.get("baseline_points", "")).strip().lower()
|
||||
yaw = yaw_deg_of(solution)
|
||||
t = solution[:3, 3]
|
||||
expected_yaw = float(document["rotation_rpy_deg_xyz"][2])
|
||||
yaw_err = abs(wrap180(yaw - expected_yaw))
|
||||
xy_err = float(np.linalg.norm(t[:2] - np.asarray(document["translation_m"][:2], float)))
|
||||
z_err = float(abs(t[2] - float(document["translation_m"][2])))
|
||||
|
||||
opposite_yaw = abs(wrap180(yaw - expected_yaw) - 180.0) <= 15.0 or abs(
|
||||
wrap180(yaw - expected_yaw) + 180.0
|
||||
) <= 15.0
|
||||
# Same XY sign as mechanical but yaw flipped ~180° (classic mixed inheritance).
|
||||
same_xy_sign = (t[0] * float(document["translation_m"][0]) > 0.0) and (
|
||||
t[1] * float(document["translation_m"][1]) > 0.0
|
||||
)
|
||||
mixed_inheritance = same_xy_sign and opposite_yaw
|
||||
|
||||
return {
|
||||
"baseline_points": side or None,
|
||||
"solution_yaw_deg": yaw,
|
||||
"expected_yaw_deg": expected_yaw,
|
||||
"yaw_error_deg": yaw_err,
|
||||
"xy_error_m": xy_err,
|
||||
"z_error_m": z_err,
|
||||
"mixed_translation_rotation_inheritance": bool(mixed_inheritance),
|
||||
"near_expected_pose": bool(yaw_err <= 15.0 and xy_err <= 0.25),
|
||||
}
|
||||
|
||||
|
||||
def coordinate_contract_audit(raw: dict) -> dict:
|
||||
"""Audit mechanical self-consistency and solution agreement.
|
||||
|
||||
A near-180-degree disagreement is not auto-corrected: it normally means
|
||||
that one physical forward-axis / baseline-direction statement is reversed.
|
||||
"""
|
||||
path_text = raw.get("solver_initial_extrinsic")
|
||||
if not path_text:
|
||||
return {
|
||||
"status": "mechanical_initial_not_available",
|
||||
"requires_physical_axis_confirmation": False,
|
||||
}
|
||||
path = Path(path_text)
|
||||
if not path.exists():
|
||||
return {
|
||||
"status": "mechanical_initial_file_missing",
|
||||
"requires_physical_axis_confirmation": False,
|
||||
"mechanical_initial_path": str(path),
|
||||
}
|
||||
initial_document = load(path)
|
||||
initial = np.asarray(initial_document["matrix_4x4"], float)
|
||||
solution = np.asarray(raw["matrix_4x4"], float)
|
||||
comparison = delta(initial, solution)
|
||||
near_180 = abs(comparison["rotation_deg"] - 180.0) <= 15.0
|
||||
mech_check = mechanical_self_consistency(initial_document)
|
||||
match = solution_matches_declared_side(solution, initial_document)
|
||||
|
||||
if not mech_check["consistent"]:
|
||||
status = "mechanical_initial_inconsistent"
|
||||
elif match["mixed_translation_rotation_inheritance"] or near_180:
|
||||
status = "near_180_degree_axis_conflict"
|
||||
elif not match["near_expected_pose"]:
|
||||
status = "solution_disagrees_with_mechanical_baseline_side"
|
||||
else:
|
||||
status = "no_near_180_degree_axis_conflict"
|
||||
|
||||
requires = status != "no_near_180_degree_axis_conflict"
|
||||
return {
|
||||
"status": status,
|
||||
"requires_physical_axis_confirmation": requires,
|
||||
"mechanical_initial_path": str(path.resolve()),
|
||||
"mechanical_self_consistency": mech_check,
|
||||
"solution_vs_declared_baseline_side": match,
|
||||
"solution_relative_to_mechanical_initial": comparison,
|
||||
"note": (
|
||||
"No automatic 180-degree correction was applied. Confirm static GNHPR "
|
||||
"left/right vs vehicle heading and Helios +X vs vehicle forward before deployment."
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
def corrected(raw: dict, backend: str, reference_height: float, heading_offset_deg: float) -> dict:
|
||||
baseline_frame = abs(heading_offset_deg) <= 1e-12
|
||||
x_axis = (
|
||||
"horizontal projection of the rawHeading baseline direction reported by the receiver"
|
||||
if baseline_frame else
|
||||
"vehicle forward after applying the configured G90 heading offset"
|
||||
)
|
||||
return {
|
||||
"schema_version": 1,
|
||||
"success": bool(raw["success"]),
|
||||
"convention": "T_RTK_lidar maps raw LiDAR points into the RTK navigation frame",
|
||||
"equation": "A_RTK_ij X = X B_LiDAR_ij",
|
||||
"frames": {
|
||||
"RTK": {
|
||||
"origin": "GGA positioning reference point; confirm ANT1/reference antenna in receiver configuration",
|
||||
"x_axis": x_axis,
|
||||
"y_axis": "left of the RTK X/baseline axis (not necessarily vehicle-left)",
|
||||
"z_axis": "up",
|
||||
"yaw_enu_deg": f"90 - (rawHeadingDeg + {heading_offset_deg:g})",
|
||||
"frame_mode": "baseline_raw_heading" if baseline_frame else "vehicle_forward_heading_offset",
|
||||
},
|
||||
"LiDAR": {
|
||||
"description": "raw Helios sensor frame from points_raw polar decode",
|
||||
"x_axis": "+X at azimuth 0° (forward when aviation connector faces vehicle rear)",
|
||||
"y_axis": "+Y at azimuth +90° (left when +X is vehicle-forward)",
|
||||
"z_axis": "up",
|
||||
"origin_note": "optical/center per Helios manual; mounting height includes 63.5 mm base offset when deriving mechanical ΔZ",
|
||||
},
|
||||
},
|
||||
"backend": backend,
|
||||
"measured_lidar_extrinsic_used_as_initial": bool(raw.get("measured_extrinsic_used_as_initial")),
|
||||
"solver_initial_extrinsic": raw.get("solver_initial_extrinsic"),
|
||||
"body_heading_offset_deg": heading_offset_deg,
|
||||
"body_heading_offset_used": abs(heading_offset_deg) > 1e-12,
|
||||
"body_antenna_lever_xy_used": False,
|
||||
"translation_m": raw["translation_m"],
|
||||
"rotation_rpy_deg_xyz": raw["rotation_rpy_deg_xyz"],
|
||||
"quaternion_xyzw": raw["quaternion_xyzw"],
|
||||
"coordinate_contract_audit": coordinate_contract_audit(raw),
|
||||
"matrix_4x4": raw["matrix_4x4"],
|
||||
"quality": {
|
||||
"stations": raw["estimation"]["stations"],
|
||||
"pairs": raw["estimation"]["pairs"],
|
||||
"residuals": raw["estimation"]["residuals"],
|
||||
"weighted_jacobian_condition_number": raw["weighted_jacobian_condition_number"],
|
||||
"linearized_one_sigma": raw["linearized_one_sigma"],
|
||||
"bootstrap": raw["bootstrap"],
|
||||
},
|
||||
"z_constraint": {
|
||||
"observable_from_planar_AX_XB": False,
|
||||
"method": "LiDAR ground planes plus externally supplied RTK reference-point height above ground",
|
||||
"rtk_reference_height_above_ground_m": reference_height,
|
||||
"warning": "z is conditional on the supplied RTK antenna height; it is not independently identified by planar Ackermann motion",
|
||||
},
|
||||
"important_limit": "AX residual and bootstrap quantify internal consistency, not independent centimetre-grade absolute certification",
|
||||
}
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--result-root", type=Path, required=True)
|
||||
parser.add_argument("--reference-height", type=float, required=True)
|
||||
parser.add_argument("--heading-offset-deg", type=float, required=True)
|
||||
args = parser.parse_args()
|
||||
|
||||
def solver_output(directory: str) -> Path:
|
||||
raw = args.result_root / directory / "extrinsic_raw.json"
|
||||
standard = args.result_root / directory / "extrinsic.json"
|
||||
return raw if raw.exists() else standard
|
||||
|
||||
paths = {
|
||||
"open3d_gicp": solver_output("open3d_gicp"),
|
||||
"small_gicp": solver_output("small_gicp"),
|
||||
"consensus": solver_output("consensus"),
|
||||
}
|
||||
docs = {}
|
||||
for backend, path in paths.items():
|
||||
document = corrected(
|
||||
load(path), backend, args.reference_height, args.heading_offset_deg
|
||||
)
|
||||
write(path.with_name("extrinsic_rtk_lidar.json"), document)
|
||||
docs[backend] = document
|
||||
|
||||
open_t = np.asarray(docs["open3d_gicp"]["matrix_4x4"], float)
|
||||
small_t = np.asarray(docs["small_gicp"]["matrix_4x4"], float)
|
||||
final = dict(docs["consensus"])
|
||||
needs_axis_confirmation = bool(
|
||||
final["coordinate_contract_audit"]["requires_physical_axis_confirmation"]
|
||||
)
|
||||
status = final["coordinate_contract_audit"]["status"]
|
||||
reason_map = {
|
||||
"mechanical_initial_inconsistent": (
|
||||
"Mechanical initial mixes incompatible baseline-left/right translation and yaw; "
|
||||
"fix run/rtk_lidar_mechanical_initial.json before trusting deployment"
|
||||
),
|
||||
"near_180_degree_axis_conflict": (
|
||||
"Physical axis confirmation is required because the data-driven solution differs "
|
||||
"from the declared mechanical initial by approximately 180 degrees "
|
||||
"(or inherits mixed translation/rotation signs)"
|
||||
),
|
||||
"solution_disagrees_with_mechanical_baseline_side": (
|
||||
"Solution yaw/XY disagree with the declared mechanical baseline side; "
|
||||
"confirm static GNHPR direction before deployment"
|
||||
),
|
||||
}
|
||||
final["selection"] = {
|
||||
"recommended": not needs_axis_confirmation,
|
||||
"reason": (
|
||||
reason_map.get(
|
||||
status,
|
||||
"Uses only motion pairs accepted independently by both Open3D GICP and small_gicp",
|
||||
)
|
||||
),
|
||||
"open3d_vs_small_gicp": delta(open_t, small_t),
|
||||
}
|
||||
|
||||
write(args.result_root / "final_T_RTK_lidar.json", final)
|
||||
summary = {
|
||||
"final": {
|
||||
"translation_m": final["translation_m"],
|
||||
"rotation_rpy_deg_xyz": final["rotation_rpy_deg_xyz"],
|
||||
"pairs": final["quality"]["pairs"],
|
||||
"translation_rms_m": final["quality"]["residuals"]["translation_m"]["rms"],
|
||||
"rotation_rms_deg": final["quality"]["residuals"]["rotation_deg"]["rms"],
|
||||
"condition_number": final["quality"]["weighted_jacobian_condition_number"],
|
||||
"coordinate_contract_status": final["coordinate_contract_audit"]["status"],
|
||||
"recommended_for_deployment": final["selection"]["recommended"],
|
||||
},
|
||||
"backend_difference": delta(open_t, small_t),
|
||||
}
|
||||
write(args.result_root / "summary.json", summary)
|
||||
print(json.dumps(summary, ensure_ascii=False, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+131
-25
@@ -1,8 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Rigorous stationary LiDAR / dual-antenna RTK hand-eye calibration.
|
||||
"""Rigorous stationary LiDAR / reference-trajectory hand-eye calibration.
|
||||
|
||||
Convention: T_A_B maps points from frame B into frame A.
|
||||
X = T_body_lidar, A_ij = T_W_Bi^-1 T_W_Bj, B_ij = T_Li_Lj,
|
||||
For this repository the reference frame is the RTK navigation frame.
|
||||
X = T_RTK_lidar, A_ij = T_W_Ri^-1 T_W_Rj, B_ij = T_Li_Lj,
|
||||
therefore A_ij X = X B_ij. Raw sensor-frame points_raw are used.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
@@ -79,6 +80,20 @@ def params_transform(params):
|
||||
return make_transform(params[:3], so3_exp(params[3:]))
|
||||
|
||||
|
||||
def transform_params(transform):
|
||||
from scipy.spatial.transform import Rotation
|
||||
transform = np.asarray(transform, float)
|
||||
return np.r_[transform[:3, 3], Rotation.from_matrix(transform[:3, :3]).as_rotvec()]
|
||||
|
||||
|
||||
def load_extrinsic_matrix(path):
|
||||
document = json.loads(Path(path).read_text(encoding="utf-8-sig"))
|
||||
transform = np.asarray(document["matrix_4x4"], dtype=float)
|
||||
if transform.shape != (4, 4):
|
||||
raise ValueError("initial extrinsic matrix_4x4 must be 4x4")
|
||||
return transform
|
||||
|
||||
|
||||
def inverse_transform(transform):
|
||||
answer = np.eye(4)
|
||||
answer[:3, :3] = transform[:3, :3].T
|
||||
@@ -134,7 +149,8 @@ def load_npz_xyz(path, min_range=1.0, max_range=50.0):
|
||||
if "points_raw" not in data:
|
||||
raise ValueError(f"{path}: points_raw is required; cart-frame points are forbidden")
|
||||
raw = np.asarray(data["points_raw"], dtype=np.float64)
|
||||
timestamp = float(np.ravel(data["unix_time_ns"])[0]) / 1e9
|
||||
time_key = "lidar_association_time_ns" if "lidar_association_time_ns" in data else "unix_time_ns"
|
||||
timestamp = float(np.ravel(data[time_key])[0]) / 1e9
|
||||
counter = int(np.ravel(data["frame_counter"])[0])
|
||||
distance = raw[:, 0] * 0.001
|
||||
azimuth = np.deg2rad(raw[:, 1])
|
||||
@@ -178,6 +194,63 @@ def make_o3d_cloud(points, voxel):
|
||||
return cloud.voxel_down_sample(voxel)
|
||||
|
||||
|
||||
def make_global_features(points, voxel):
|
||||
import open3d as o3d
|
||||
cloud = make_o3d_cloud(points, voxel)
|
||||
cloud.estimate_normals(o3d.geometry.KDTreeSearchParamHybrid(
|
||||
radius=voxel * 2.5, max_nn=50
|
||||
))
|
||||
features = o3d.pipelines.registration.compute_fpfh_feature(
|
||||
cloud,
|
||||
o3d.geometry.KDTreeSearchParamHybrid(radius=voxel * 5.0, max_nn=100),
|
||||
)
|
||||
return cloud, features
|
||||
|
||||
|
||||
def global_lidar_initialization(target_features, source_features, args, pair_seed):
|
||||
"""Estimate source-to-target motion from LiDAR geometry without RTK or an extrinsic."""
|
||||
import open3d as o3d
|
||||
registration = o3d.pipelines.registration
|
||||
target_cloud, target_fpfh = target_features
|
||||
source_cloud, source_fpfh = source_features
|
||||
attempts = []
|
||||
for attempt in range(args.global_ransac_attempts):
|
||||
o3d.utility.random.seed(int(pair_seed + attempt))
|
||||
answer = registration.registration_ransac_based_on_feature_matching(
|
||||
source_cloud,
|
||||
target_cloud,
|
||||
source_fpfh,
|
||||
target_fpfh,
|
||||
True,
|
||||
args.global_correspondence,
|
||||
registration.TransformationEstimationPointToPoint(False),
|
||||
4,
|
||||
[
|
||||
registration.CorrespondenceCheckerBasedOnEdgeLength(0.9),
|
||||
registration.CorrespondenceCheckerBasedOnDistance(args.global_correspondence),
|
||||
],
|
||||
registration.RANSACConvergenceCriteria(
|
||||
args.global_ransac_iterations, args.global_ransac_confidence
|
||||
),
|
||||
)
|
||||
attempts.append({
|
||||
"transform": np.asarray(answer.transformation, float),
|
||||
"fitness": float(answer.fitness),
|
||||
"inlier_rmse_m": float(answer.inlier_rmse),
|
||||
})
|
||||
best = max(attempts, key=lambda item: (item["fitness"], -item["inlier_rmse_m"]))
|
||||
return {
|
||||
"transform": best["transform"],
|
||||
"method": "LiDAR-only FPFH RANSAC",
|
||||
"fitness": best["fitness"],
|
||||
"inlier_rmse_m": best["inlier_rmse_m"],
|
||||
"attempts": [
|
||||
{key: value for key, value in item.items() if key != "transform"}
|
||||
for item in attempts
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
def align_open3d(target, source, initial, voxels, correspondences, iterations):
|
||||
import open3d as o3d
|
||||
registration = o3d.pipelines.registration
|
||||
@@ -367,30 +440,38 @@ def cmd_pairs(args):
|
||||
stations = load_stations(
|
||||
args.frames, args.min_range, args.max_range, args.z_min, args.z_max
|
||||
)
|
||||
body = read_poses(args.body)
|
||||
reference = read_poses(args.reference_poses)
|
||||
if len(stations) < args.min_stations:
|
||||
raise ValueError(f"need at least {args.min_stations} stations, got {len(stations)}")
|
||||
body_poses, body_dt = [], []
|
||||
reference_poses, reference_dt = [], []
|
||||
for timestamp, _, _, xyz in stations:
|
||||
if len(xyz) < args.min_roi_points:
|
||||
raise ValueError(f"station at {timestamp} has only {len(xyz)} ROI points")
|
||||
pose, dt = nearest_pose(body, timestamp + args.time_offset)
|
||||
body_poses.append(pose)
|
||||
body_dt.append(dt)
|
||||
body_poses = np.asarray(body_poses)
|
||||
pose, dt = nearest_pose(reference, timestamp + args.time_offset)
|
||||
reference_poses.append(pose)
|
||||
reference_dt.append(dt)
|
||||
reference_poses = np.asarray(reference_poses)
|
||||
split = [split_holdout(station[3], args.holdout_fraction, i)
|
||||
for i, station in enumerate(stations)]
|
||||
global_features = [make_global_features(points[0], args.global_voxel)
|
||||
for points in split]
|
||||
rng = np.random.default_rng(args.seed)
|
||||
accepted_a, accepted_b, accepted_meta, reports = [], [], [], []
|
||||
accepted_transforms = {}
|
||||
for i in range(len(stations)):
|
||||
for j in range(i + args.min_gap, min(len(stations), i + args.max_gap + 1)):
|
||||
a_ij = inverse_transform(body_poses[i]) @ body_poses[j]
|
||||
a_ij = inverse_transform(reference_poses[i]) @ reference_poses[j]
|
||||
translation = float(np.linalg.norm(a_ij[:2, 3]))
|
||||
rotation = rotation_angle_deg(a_ij[:3, :3])
|
||||
if args.max_reference_translation is not None and translation > args.max_reference_translation:
|
||||
continue
|
||||
if translation < args.min_translation and rotation < args.min_rotation:
|
||||
continue
|
||||
initial_b = a_ij.copy() # X0=I; no measured extrinsic.
|
||||
global_initial = global_lidar_initialization(
|
||||
global_features[i], global_features[j], args,
|
||||
args.seed + i * 1009 + j * 9176,
|
||||
)
|
||||
initial_b = global_initial["transform"]
|
||||
target_fit, target_holdout = split[i]
|
||||
source_fit, source_holdout = split[j]
|
||||
forward = align_backend(args.backend, target_fit, source_fit, initial_b, args)
|
||||
@@ -445,8 +526,11 @@ def cmd_pairs(args):
|
||||
"lidar_time_i": stations[i][0], "lidar_time_j": stations[j][0],
|
||||
"frame_counter_i": stations[i][1], "frame_counter_j": stations[j][1],
|
||||
"rtk_translation_m": translation, "rtk_rotation_deg": rotation,
|
||||
"nearest_rtk_dt_i_s": body_dt[i], "nearest_rtk_dt_j_s": body_dt[j],
|
||||
"initial_B_source": "X0=identity; B0=A (no measured extrinsic)",
|
||||
"nearest_rtk_dt_i_s": reference_dt[i], "nearest_rtk_dt_j_s": reference_dt[j],
|
||||
"initial_B_source": global_initial["method"],
|
||||
"global_lidar_initialization": {
|
||||
key: value for key, value in global_initial.items() if key != "transform"
|
||||
},
|
||||
"B_ij_4x4": forward["transform"].tolist(),
|
||||
"backend": args.backend, "backend_converged": forward["converged"],
|
||||
"backend_iterations": forward["iterations"],
|
||||
@@ -474,14 +558,18 @@ def cmd_pairs(args):
|
||||
output, A=np.asarray(accepted_a), B=np.asarray(accepted_b),
|
||||
meta=np.asarray(accepted_meta),
|
||||
station_times=np.asarray([item[0] for item in stations]),
|
||||
rtk_nearest_dt_s=np.asarray(body_dt), backend=np.asarray(args.backend),
|
||||
rtk_nearest_dt_s=np.asarray(reference_dt), backend=np.asarray(args.backend),
|
||||
)
|
||||
quality = {
|
||||
"schema_version": 2,
|
||||
"backend": args.backend,
|
||||
"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,
|
||||
"registration_initial_extrinsic": None,
|
||||
"selection_is_X_independent": True,
|
||||
"B_estimation_is_RTK_independent": True,
|
||||
"candidate_pair_selection_uses_reference_motion": True,
|
||||
"initialization_warning": None,
|
||||
"stations": len(stations), "candidate_pairs": len(reports),
|
||||
"accepted_pairs": len(accepted_a),
|
||||
"parameters": vars(args),
|
||||
@@ -556,7 +644,7 @@ def calibration_residual(params, a_array, b_array, planes, args):
|
||||
normal_body = x[:3, :3] @ plane[:3]
|
||||
values.extend((np.cross(normal_body, body_up) / args.plane_normal_sigma).tolist())
|
||||
body_distance = plane[3] - float(normal_body @ x[:3, 3])
|
||||
values.append((body_distance - args.body_height) / args.plane_height_sigma)
|
||||
values.append((body_distance - args.reference_height) / args.plane_height_sigma)
|
||||
return np.asarray(values)
|
||||
|
||||
|
||||
@@ -584,9 +672,11 @@ def pair_metrics(a_array, b_array, x):
|
||||
|
||||
def solve_extrinsic(a_array, b_array, planes, args):
|
||||
rng = np.random.default_rng(args.seed)
|
||||
starts = [np.zeros(6)]
|
||||
center = (transform_params(load_extrinsic_matrix(args.initial_extrinsic))
|
||||
if args.initial_extrinsic else np.zeros(6))
|
||||
starts = [center]
|
||||
for _ in range(args.solver_multistart - 1):
|
||||
starts.append(np.r_[
|
||||
starts.append(center + np.r_[
|
||||
rng.normal(0.0, args.start_translation_sigma, 3),
|
||||
np.deg2rad(rng.normal(0.0, args.start_rotation_sigma, 3)),
|
||||
])
|
||||
@@ -644,9 +734,12 @@ def cmd_calibrate(args):
|
||||
"schema_version": 2,
|
||||
"success": bool(best.success),
|
||||
"message": best.message,
|
||||
"convention": "T_body_lidar maps raw LiDAR points into rear-axle body frame",
|
||||
"convention": "T_reference_lidar maps raw LiDAR points into the supplied reference frame",
|
||||
"equation": "A_ij X = X B_ij",
|
||||
"measured_extrinsic_used_as_initial": False,
|
||||
"measured_extrinsic_used_as_initial": bool(args.initial_extrinsic),
|
||||
"solver_initial_extrinsic": (
|
||||
str(Path(args.initial_extrinsic).resolve()) if args.initial_extrinsic else None
|
||||
),
|
||||
"translation_m": x[:3, 3].tolist(),
|
||||
"rotation_rpy_deg_xyz": rpy_deg(x[:3, :3]),
|
||||
"quaternion_xyzw": rotation_to_quat(x[:3, :3]).tolist(),
|
||||
@@ -655,8 +748,8 @@ def cmd_calibrate(args):
|
||||
"residuals": pair_metrics(a_array, b_array, x)},
|
||||
"ground": {
|
||||
"planes": len(planes),
|
||||
"body_origin_height_above_ground_m": args.body_height,
|
||||
"formula": "d_lidar - (R_X n_lidar)^T t_X - body_height",
|
||||
"reference_origin_height_above_ground_m": args.reference_height,
|
||||
"formula": "d_lidar - (R_X n_lidar)^T t_X - reference_height",
|
||||
},
|
||||
"linearized_one_sigma": {
|
||||
"translation_m": sigma[:3].tolist(),
|
||||
@@ -706,22 +799,30 @@ def build_parser():
|
||||
ground = commands.add_parser("ground")
|
||||
ground.add_argument("--frames", required=True); ground.add_argument("--output", required=True)
|
||||
ground.add_argument("--min-range", type=float, default=1.0); ground.add_argument("--max-range", type=float, default=30.0)
|
||||
ground.add_argument("--z-min", type=float, default=-1.4); ground.add_argument("--z-max", type=float, default=-0.4)
|
||||
# Default ROI for ~2 m roof LiDAR (Z-up). Override for other mounting heights.
|
||||
ground.add_argument("--z-min", type=float, default=-2.5); ground.add_argument("--z-max", type=float, default=-1.5)
|
||||
ground.add_argument("--voxel", type=float, default=0.08); ground.add_argument("--distance-threshold", type=float, default=0.025)
|
||||
ground.add_argument("--ransac-iterations", type=int, default=500); ground.add_argument("--min-inliers", type=int, default=500)
|
||||
ground.add_argument("--max-rms", type=float, default=0.025); ground.set_defaults(func=cmd_ground)
|
||||
|
||||
pairs = commands.add_parser("pairs")
|
||||
pairs.add_argument("--backend", choices=["open3d", "small_gicp"], required=True)
|
||||
pairs.add_argument("--frames", required=True); pairs.add_argument("--body", required=True)
|
||||
pairs.add_argument("--frames", required=True)
|
||||
pairs.add_argument("--reference-poses", "--body", dest="reference_poses", required=True)
|
||||
pairs.add_argument("--output", required=True); pairs.add_argument("--quality-json"); pairs.add_argument("--quality-csv")
|
||||
pairs.add_argument("--time-offset", type=float, default=0.0)
|
||||
pairs.add_argument("--min-stations", type=int, default=30); pairs.add_argument("--min-pairs", type=int, default=25)
|
||||
pairs.add_argument("--min-gap", type=int, default=1); pairs.add_argument("--max-gap", type=int, default=5)
|
||||
pairs.add_argument("--max-reference-translation", type=float)
|
||||
pairs.add_argument("--min-translation", type=float, default=0.5); pairs.add_argument("--min-rotation", type=float, default=3.0)
|
||||
pairs.add_argument("--min-range", type=float, default=2.0); pairs.add_argument("--max-range", type=float, default=50.0)
|
||||
pairs.add_argument("--z-min", type=float, default=-0.60); pairs.add_argument("--z-max", type=float, default=5.0)
|
||||
pairs.add_argument("--min-roi-points", type=int, default=1000)
|
||||
pairs.add_argument("--global-voxel", type=float, default=0.50)
|
||||
pairs.add_argument("--global-correspondence", type=float, default=1.25)
|
||||
pairs.add_argument("--global-ransac-attempts", type=int, default=3)
|
||||
pairs.add_argument("--global-ransac-iterations", type=int, default=100000)
|
||||
pairs.add_argument("--global-ransac-confidence", type=float, default=0.999)
|
||||
pairs.add_argument("--holdout-fraction", type=float, default=0.20)
|
||||
pairs.add_argument("--voxels", nargs="+", type=float, default=[0.30, 0.15, 0.08])
|
||||
pairs.add_argument("--correspondences", nargs="+", type=float, default=[1.20, 0.50, 0.25])
|
||||
@@ -742,11 +843,16 @@ def build_parser():
|
||||
calibrate = commands.add_parser("calibrate")
|
||||
calibrate.add_argument("--pairs", required=True); calibrate.add_argument("--ground-planes", required=True)
|
||||
calibrate.add_argument("--output", required=True)
|
||||
calibrate.add_argument("--initial-extrinsic")
|
||||
calibrate.add_argument("--translation-sigma", type=float, default=0.05)
|
||||
calibrate.add_argument("--rotation-sigma", type=float, default=0.5)
|
||||
calibrate.add_argument("--plane-normal-sigma", type=float, default=0.02)
|
||||
calibrate.add_argument("--plane-height-sigma", type=float, default=0.03)
|
||||
calibrate.add_argument("--body-height", type=float, default=0.2335)
|
||||
calibrate.add_argument(
|
||||
"--reference-height", "--body-height", dest="reference_height",
|
||||
type=float, required=True,
|
||||
help="measured RTK/GGA reference-origin height above the local ground in metres",
|
||||
)
|
||||
calibrate.add_argument("--solver-multistart", type=int, default=12)
|
||||
calibrate.add_argument("--start-translation-sigma", type=float, default=1.0)
|
||||
calibrate.add_argument("--start-rotation-sigma", type=float, default=20.0)
|
||||
|
||||
@@ -1,311 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Scan body-left RPY corrections locally and validate them over every B pair.
|
||||
|
||||
This command is diagnostic only. It never writes or replaces an extrinsic JSON.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import csv
|
||||
import json
|
||||
import math
|
||||
from pathlib import Path
|
||||
|
||||
import numpy as np
|
||||
from scipy.spatial.transform import Rotation
|
||||
|
||||
from rigorous_calibration import (
|
||||
inverse_transform, read_pairs, read_planes, rotation_angle_deg, rpy_deg,
|
||||
)
|
||||
|
||||
|
||||
def statistics(values):
|
||||
values = np.asarray(values, float)
|
||||
return {
|
||||
"rms": float(np.sqrt(np.mean(values ** 2))),
|
||||
"median": float(np.median(values)),
|
||||
"p90": float(np.quantile(values, 0.90)),
|
||||
"p95": float(np.quantile(values, 0.95)),
|
||||
"max": float(np.max(values)),
|
||||
}
|
||||
|
||||
|
||||
def body_left_rpy(x, rpy_correction_deg):
|
||||
correction = np.eye(4)
|
||||
correction[:3, :3] = Rotation.from_euler(
|
||||
"xyz", np.asarray(rpy_correction_deg, float), degrees=True
|
||||
).as_matrix()
|
||||
return correction @ x
|
||||
|
||||
|
||||
def pair_delta(a_ij, b_ij, x):
|
||||
predicted = inverse_transform(x) @ a_ij @ x
|
||||
delta = inverse_transform(b_ij) @ predicted
|
||||
translation = np.asarray(delta[:3, 3], float)
|
||||
return {
|
||||
"translation_xyz_m": translation.tolist(),
|
||||
"translation_xyz_cm": (100.0 * translation).tolist(),
|
||||
"translation_norm_m": float(np.linalg.norm(translation)),
|
||||
"rotation_rpy_deg_xyz": rpy_deg(delta[:3, :3]),
|
||||
"rotation_angle_deg": rotation_angle_deg(delta[:3, :3]),
|
||||
}
|
||||
|
||||
|
||||
def ground_metrics(planes, x, body_height):
|
||||
if len(planes) == 0:
|
||||
return None
|
||||
up = np.array([0.0, 0.0, 1.0])
|
||||
tilt_deg, height_m = [], []
|
||||
for plane in planes:
|
||||
normal_body = x[:3, :3] @ plane[:3]
|
||||
normal_body /= np.linalg.norm(normal_body)
|
||||
tilt_deg.append(math.degrees(math.atan2(
|
||||
np.linalg.norm(np.cross(normal_body, up)),
|
||||
float(np.clip(normal_body @ up, -1.0, 1.0)),
|
||||
)))
|
||||
height_m.append(
|
||||
float(plane[3] - normal_body @ x[:3, 3] - body_height)
|
||||
)
|
||||
return {
|
||||
"normal_tilt_deg": statistics(tilt_deg),
|
||||
"height_residual_m": statistics(height_m),
|
||||
}
|
||||
|
||||
|
||||
def evaluate(label, correction, a_array, b_array, meta, x, pair_index,
|
||||
translation_scale, rotation_scale, planes, body_height):
|
||||
candidate_x = body_left_rpy(x, correction)
|
||||
per_pair = []
|
||||
translation, rotation, normalized = [], [], []
|
||||
for index, (a_ij, b_ij, pair_meta) in enumerate(zip(a_array, b_array, meta)):
|
||||
item = pair_delta(a_ij, b_ij, candidate_x)
|
||||
item.update({
|
||||
"pair_index": index,
|
||||
"i": int(pair_meta[0]),
|
||||
"j": int(pair_meta[1]),
|
||||
})
|
||||
t = item["translation_norm_m"]
|
||||
r = item["rotation_angle_deg"]
|
||||
translation.append(t)
|
||||
rotation.append(r)
|
||||
normalized.append(math.hypot(t / translation_scale, r / rotation_scale))
|
||||
per_pair.append(item)
|
||||
return {
|
||||
"label": label,
|
||||
"body_left_rpy_correction_deg_xyz": list(map(float, correction)),
|
||||
"candidate_extrinsic": {
|
||||
"translation_m": candidate_x[:3, 3].tolist(),
|
||||
"rotation_rpy_deg_xyz": rpy_deg(candidate_x[:3, :3]),
|
||||
},
|
||||
"all_pairs": {
|
||||
"count": len(per_pair),
|
||||
"translation_m": statistics(translation),
|
||||
"rotation_deg": statistics(rotation),
|
||||
"normalized_pair_score": statistics(normalized),
|
||||
"normalized_global_rms": float(np.sqrt(np.mean(np.asarray(normalized) ** 2))),
|
||||
},
|
||||
"selected_pair": per_pair[pair_index],
|
||||
"ground": ground_metrics(planes, candidate_x, body_height),
|
||||
"per_pair": per_pair,
|
||||
}
|
||||
|
||||
|
||||
def candidate_grid(pitch_values, roll_values, yaw_values):
|
||||
answer = [("baseline", (0.0, 0.0, 0.0))]
|
||||
for pitch in pitch_values:
|
||||
answer.append((f"pitch_{pitch:+.3f}", (0.0, pitch, 0.0)))
|
||||
for pitch in (0.0, *pitch_values):
|
||||
for roll in roll_values:
|
||||
answer.append((
|
||||
f"pitch_{pitch:+.3f}_roll_{roll:+.3f}",
|
||||
(roll, pitch, 0.0),
|
||||
))
|
||||
for yaw in yaw_values:
|
||||
answer.append((f"yaw_{yaw:+.3f}_diagnostic", (0.0, 0.0, yaw)))
|
||||
unique = []
|
||||
seen = set()
|
||||
for label, values in answer:
|
||||
key = tuple(round(float(value), 12) for value in values)
|
||||
if key not in seen:
|
||||
seen.add(key)
|
||||
unique.append((label, values))
|
||||
return unique
|
||||
|
||||
|
||||
def z_observability(a_array, x, test_shift_m):
|
||||
shift = np.eye(4)
|
||||
shift[2, 3] = test_shift_m
|
||||
shifted_x = shift @ x
|
||||
effects = []
|
||||
for a_ij in a_array:
|
||||
before = inverse_transform(x) @ a_ij @ x
|
||||
after = inverse_transform(shifted_x) @ a_ij @ shifted_x
|
||||
delta = inverse_transform(before) @ after
|
||||
effects.append((
|
||||
float(np.linalg.norm(delta[:3, 3])),
|
||||
rotation_angle_deg(delta[:3, :3]),
|
||||
))
|
||||
effects = np.asarray(effects, float)
|
||||
maximum = np.max(effects, axis=0)
|
||||
return {
|
||||
"body_left_z_test_shift_m": test_shift_m,
|
||||
"max_predicted_motion_change_translation_m": float(maximum[0]),
|
||||
"max_predicted_motion_change_rotation_deg": float(maximum[1]),
|
||||
"numerically_unobservable": bool(maximum[0] < 1e-10 and maximum[1] < 1e-10),
|
||||
"note": "AX pairs cannot determine X.z when every A rotation preserves body Z; use ground/external height constraints.",
|
||||
}
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--pairs", required=True)
|
||||
parser.add_argument("--extrinsic", required=True)
|
||||
parser.add_argument("--output", required=True)
|
||||
parser.add_argument("--csv")
|
||||
parser.add_argument("--ground-planes")
|
||||
parser.add_argument("--pair-index", type=int, default=0)
|
||||
parser.add_argument("--pitch-values", nargs="+", type=float, default=[0.1, 0.2, 0.3])
|
||||
parser.add_argument("--roll-values", nargs="+", type=float, default=[-0.2, -0.1, 0.1])
|
||||
parser.add_argument("--yaw-values", nargs="+", type=float, default=[-0.2, 0.2])
|
||||
parser.add_argument("--translation-scale", type=float, default=0.05)
|
||||
parser.add_argument("--rotation-scale", type=float, default=0.5)
|
||||
parser.add_argument("--body-height", type=float, default=0.2335)
|
||||
args = parser.parse_args()
|
||||
|
||||
a_array, b_array, meta, stations = read_pairs(args.pairs)
|
||||
if not 0 <= args.pair_index < len(a_array):
|
||||
raise IndexError(f"pair-index {args.pair_index} outside [0,{len(a_array)-1}]")
|
||||
with Path(args.extrinsic).open(encoding="utf-8-sig") as stream:
|
||||
x = np.asarray(json.load(stream)["matrix_4x4"], float)
|
||||
planes = read_planes(args.ground_planes) if args.ground_planes else np.empty((0, 4))
|
||||
|
||||
candidates = [
|
||||
evaluate(
|
||||
label, correction, a_array, b_array, meta, x, args.pair_index,
|
||||
args.translation_scale, args.rotation_scale, planes, args.body_height,
|
||||
)
|
||||
for label, correction in candidate_grid(
|
||||
args.pitch_values, args.roll_values, args.yaw_values
|
||||
)
|
||||
]
|
||||
baseline = candidates[0]
|
||||
baseline_scores = np.asarray([
|
||||
math.hypot(
|
||||
item["translation_norm_m"] / args.translation_scale,
|
||||
item["rotation_angle_deg"] / args.rotation_scale,
|
||||
)
|
||||
for item in baseline["per_pair"]
|
||||
])
|
||||
base_global = baseline["all_pairs"]["normalized_global_rms"]
|
||||
for candidate in candidates:
|
||||
scores = np.asarray([
|
||||
math.hypot(
|
||||
item["translation_norm_m"] / args.translation_scale,
|
||||
item["rotation_angle_deg"] / args.rotation_scale,
|
||||
)
|
||||
for item in candidate["per_pair"]
|
||||
])
|
||||
delta = scores - baseline_scores
|
||||
candidate["comparison_to_baseline"] = {
|
||||
"normalized_global_rms_change": float(
|
||||
candidate["all_pairs"]["normalized_global_rms"] - base_global
|
||||
),
|
||||
"improved_pairs": int(np.sum(delta < -1e-12)),
|
||||
"worsened_pairs": int(np.sum(delta > 1e-12)),
|
||||
"unchanged_pairs": int(np.sum(np.abs(delta) <= 1e-12)),
|
||||
"median_per_pair_score_change": float(np.median(delta)),
|
||||
"global_consistency_signal": bool(
|
||||
candidate["all_pairs"]["normalized_global_rms"] < base_global
|
||||
and np.sum(delta < -1e-12) > np.sum(delta > 1e-12)
|
||||
),
|
||||
}
|
||||
|
||||
ranking = sorted(
|
||||
candidates,
|
||||
key=lambda item: item["all_pairs"]["normalized_global_rms"],
|
||||
)
|
||||
report = {
|
||||
"schema_version": 1,
|
||||
"diagnostic_only": True,
|
||||
"extrinsic_was_modified": False,
|
||||
"equation": "delta_ij = B_ij^-1 * (X^-1 * A_ij * X)",
|
||||
"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": str(Path(args.pairs).resolve()),
|
||||
"extrinsic_file": str(Path(args.extrinsic).resolve()),
|
||||
"stations": stations,
|
||||
"pairs": len(a_array),
|
||||
"selected_pair_index": args.pair_index,
|
||||
"selected_pair_stations": [int(meta[args.pair_index, 0]), int(meta[args.pair_index, 1])],
|
||||
"normalization": {
|
||||
"translation_scale_m": args.translation_scale,
|
||||
"rotation_scale_deg": args.rotation_scale,
|
||||
},
|
||||
"z_observability": z_observability(a_array, x, 0.10),
|
||||
"ranking_by_all_pair_normalized_rms": [
|
||||
{
|
||||
"rank": rank,
|
||||
"label": item["label"],
|
||||
"body_left_rpy_correction_deg_xyz": item["body_left_rpy_correction_deg_xyz"],
|
||||
"normalized_global_rms": item["all_pairs"]["normalized_global_rms"],
|
||||
**item["comparison_to_baseline"],
|
||||
}
|
||||
for rank, item in enumerate(ranking, 1)
|
||||
],
|
||||
"candidates": candidates,
|
||||
}
|
||||
|
||||
output = Path(args.output)
|
||||
output.parent.mkdir(parents=True, exist_ok=True)
|
||||
output.write_text(json.dumps(report, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
csv_path = Path(args.csv) if args.csv else output.with_suffix(".csv")
|
||||
with csv_path.open("w", encoding="utf-8", newline="") as stream:
|
||||
fields = [
|
||||
"label", "roll_correction_deg", "pitch_correction_deg", "yaw_correction_deg",
|
||||
"selected_pair_translation_cm", "selected_pair_rotation_deg",
|
||||
"all_pair_translation_rms_m", "all_pair_rotation_rms_deg",
|
||||
"normalized_global_rms", "normalized_global_rms_change",
|
||||
"improved_pairs", "worsened_pairs", "global_consistency_signal",
|
||||
"ground_normal_tilt_rms_deg", "ground_height_rms_m",
|
||||
]
|
||||
writer = csv.DictWriter(stream, fieldnames=fields)
|
||||
writer.writeheader()
|
||||
for item in candidates:
|
||||
correction = item["body_left_rpy_correction_deg_xyz"]
|
||||
ground = item["ground"]
|
||||
comparison = item["comparison_to_baseline"]
|
||||
writer.writerow({
|
||||
"label": item["label"],
|
||||
"roll_correction_deg": correction[0],
|
||||
"pitch_correction_deg": correction[1],
|
||||
"yaw_correction_deg": correction[2],
|
||||
"selected_pair_translation_cm": item["selected_pair"]["translation_norm_m"] * 100.0,
|
||||
"selected_pair_rotation_deg": item["selected_pair"]["rotation_angle_deg"],
|
||||
"all_pair_translation_rms_m": item["all_pairs"]["translation_m"]["rms"],
|
||||
"all_pair_rotation_rms_deg": item["all_pairs"]["rotation_deg"]["rms"],
|
||||
"normalized_global_rms": item["all_pairs"]["normalized_global_rms"],
|
||||
"normalized_global_rms_change": comparison["normalized_global_rms_change"],
|
||||
"improved_pairs": comparison["improved_pairs"],
|
||||
"worsened_pairs": comparison["worsened_pairs"],
|
||||
"global_consistency_signal": comparison["global_consistency_signal"],
|
||||
"ground_normal_tilt_rms_deg": None if ground is None else ground["normal_tilt_deg"]["rms"],
|
||||
"ground_height_rms_m": None if ground is None else ground["height_residual_m"]["rms"],
|
||||
})
|
||||
|
||||
print(json.dumps({
|
||||
"diagnostic_only": True,
|
||||
"selected_pair": baseline["selected_pair"],
|
||||
"z_observability": report["z_observability"],
|
||||
"top_all_pair_candidates": report["ranking_by_all_pair_normalized_rms"][:8],
|
||||
"output": str(output.resolve()),
|
||||
"csv": str(csv_path.resolve()),
|
||||
}, ensure_ascii=False, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -1,87 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Build a concise backend comparison and select the recommended result."""
|
||||
import argparse
|
||||
import json
|
||||
from pathlib import Path
|
||||
|
||||
import numpy as np
|
||||
from scipy.spatial.transform import Rotation
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument("--open3d", required=True)
|
||||
parser.add_argument("--small", required=True)
|
||||
parser.add_argument("--open3d-quality", required=True)
|
||||
parser.add_argument("--small-quality", required=True)
|
||||
parser.add_argument("--open3d-check", required=True)
|
||||
parser.add_argument("--small-check", required=True)
|
||||
parser.add_argument("--output", required=True)
|
||||
parser.add_argument("--recommended-output", required=True)
|
||||
args = parser.parse_args()
|
||||
|
||||
open_result = json.loads(Path(args.open3d).read_text(encoding="utf-8-sig"))
|
||||
small_result = json.loads(Path(args.small).read_text(encoding="utf-8-sig"))
|
||||
open_quality = json.loads(Path(args.open3d_quality).read_text(encoding="utf-8-sig"))
|
||||
small_quality = json.loads(Path(args.small_quality).read_text(encoding="utf-8-sig"))
|
||||
open_check = json.loads(Path(args.open3d_check).read_text(encoding="utf-8-sig"))
|
||||
small_check = json.loads(Path(args.small_check).read_text(encoding="utf-8-sig"))
|
||||
x_open = np.asarray(open_result["matrix_4x4"], float)
|
||||
x_small = np.asarray(small_result["matrix_4x4"], float)
|
||||
delta = np.linalg.inv(x_open) @ x_small
|
||||
|
||||
def compact(result, quality, check):
|
||||
estimate = result["estimation"]["residuals"]
|
||||
auxiliary = check["metrics"]
|
||||
return {
|
||||
"translation_m": result["translation_m"],
|
||||
"rotation_rpy_deg_xyz": result["rotation_rpy_deg_xyz"],
|
||||
"estimation_pairs": estimate["pairs"],
|
||||
"estimation_translation_rms_m": estimate["translation_m"]["rms"],
|
||||
"estimation_rotation_rms_deg": estimate["rotation_deg"]["rms"],
|
||||
"bootstrap_std": result["bootstrap"]["std"],
|
||||
"initial_B_loop_closure": quality["accepted_loop_closure"],
|
||||
"batch1_auxiliary_pairs": auxiliary["pairs"],
|
||||
"batch1_auxiliary_translation_rms_m": auxiliary["translation_m"]["rms"],
|
||||
"batch1_auxiliary_rotation_rms_deg": auxiliary["rotation_deg"]["rms"],
|
||||
}
|
||||
|
||||
summary = {
|
||||
"recommended_backend": "open3d_gicp",
|
||||
"selection_reason": (
|
||||
"The two X estimates agree closely; Open3D has lower second-batch AX residual, "
|
||||
"better B loop closure, and lower first-batch auxiliary residual."
|
||||
),
|
||||
"coordinate_convention": "T_body_lidar maps raw LiDAR points into rear-axle body frame",
|
||||
"measured_extrinsic_used_as_initial": False,
|
||||
"second_batch_role": "estimation (dense RTK)",
|
||||
"first_batch_role": "auxiliary check only (sparse RTK)",
|
||||
"backend_difference": {
|
||||
"translation_m": float(np.linalg.norm(delta[:3, 3])),
|
||||
"rotation_deg": float(np.rad2deg(Rotation.from_matrix(delta[:3, :3]).magnitude())),
|
||||
},
|
||||
"open3d_gicp": compact(open_result, open_quality, open_check),
|
||||
"small_gicp": compact(small_result, small_quality, small_check),
|
||||
"important_limit": (
|
||||
"Backend agreement is strong, but AX rotation RMS remains about one degree. "
|
||||
"This is not a centimetre-grade absolute certification."
|
||||
),
|
||||
}
|
||||
output = Path(args.output)
|
||||
output.parent.mkdir(parents=True, exist_ok=True)
|
||||
output.write_text(json.dumps(summary, ensure_ascii=False, indent=2), encoding="utf-8")
|
||||
recommended = dict(open_result)
|
||||
recommended["selection"] = {
|
||||
"recommended_backend": "open3d_gicp",
|
||||
"comparison_summary": str(output.name),
|
||||
"backend_difference": summary["backend_difference"],
|
||||
"warning": summary["important_limit"],
|
||||
}
|
||||
Path(args.recommended_output).write_text(
|
||||
json.dumps(recommended, ensure_ascii=False, indent=2), encoding="utf-8"
|
||||
)
|
||||
print(json.dumps(summary, ensure_ascii=False, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
+202
-77
@@ -1,5 +1,21 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Interactive 3D comparison of raw, RTK, GICP and hand-eye-predicted motion."""
|
||||
"""Interactive 3D comparison of raw, RTK, GICP and hand-eye-predicted motion.
|
||||
|
||||
Modes (keyboard), aligned with the LiDAR–IMU viewer:
|
||||
1 raw source (no transform)
|
||||
2 RTK prediction with X=I (B_pred = A)
|
||||
3 LiDAR registration B (reference)
|
||||
4 calibrated prediction B_pred = X^{-1} A X
|
||||
5 optional body-left RPY test (only if --left-rpy-deg is non-zero)
|
||||
N / ] next motion pair
|
||||
P / [ previous motion pair
|
||||
Q / Esc exit
|
||||
|
||||
Blue = target station i; orange = source station j after the selected transform.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
|
||||
@@ -7,7 +23,10 @@ import numpy as np
|
||||
from scipy.spatial.transform import Rotation
|
||||
|
||||
from rigorous_calibration import (
|
||||
inverse_transform, load_stations, rotation_angle_deg, rpy_deg, transform_points,
|
||||
inverse_transform,
|
||||
load_stations,
|
||||
rotation_angle_deg,
|
||||
rpy_deg,
|
||||
)
|
||||
|
||||
|
||||
@@ -16,15 +35,29 @@ COLORS = {
|
||||
"source": [1.00, 0.35, 0.05],
|
||||
}
|
||||
|
||||
MODE_NAMES = (
|
||||
"1 raw",
|
||||
"2 RTK initial (X=I)",
|
||||
"3 GICP B",
|
||||
"4 calibrated X^-1 A X",
|
||||
)
|
||||
|
||||
|
||||
def cloud(o3d, points, color, voxel):
|
||||
item = o3d.geometry.PointCloud()
|
||||
item.points = o3d.utility.Vector3dVector(points)
|
||||
item = item.voxel_down_sample(voxel)
|
||||
if voxel > 0:
|
||||
item = item.voxel_down_sample(voxel)
|
||||
item.paint_uniform_color(color)
|
||||
return item
|
||||
|
||||
|
||||
def set_cloud_points(cloud_geom, points, color, voxel, o3d) -> None:
|
||||
tmp = cloud(o3d, points, color, voxel)
|
||||
cloud_geom.points = tmp.points
|
||||
cloud_geom.colors = tmp.colors
|
||||
|
||||
|
||||
def delta_components(reference, candidate):
|
||||
"""Components of reference^-1*candidate, plus coordinate-invariant norms."""
|
||||
delta = inverse_transform(reference) @ candidate
|
||||
@@ -50,15 +83,75 @@ def print_delta(name, reference, candidate):
|
||||
tx, ty, tz = item["translation_xyz_cm"]
|
||||
roll, pitch, yaw = item["rotation_rpy_deg_xyz"]
|
||||
print(
|
||||
f"{name}: B^-1*motion translation xyz = "
|
||||
f"[{tx:+.4f}, {ty:+.4f}, {tz:+.4f}] cm; "
|
||||
f"rpy xyz = [{roll:+.4f}, {pitch:+.4f}, {yaw:+.4f}] deg; "
|
||||
f"norm = {item['translation_norm_cm']:.4f} cm / "
|
||||
f"{item['rotation_angle_deg']:.6f} deg"
|
||||
f"{name}: B^-1*motion "
|
||||
f"t_xyz=[{tx:+.3f}, {ty:+.3f}, {tz:+.3f}] cm "
|
||||
f"rpy=[{roll:+.3f}, {pitch:+.3f}, {yaw:+.3f}] deg "
|
||||
f"|t|={item['translation_norm_cm']:.3f} cm "
|
||||
f"|R|={item['rotation_angle_deg']:.4f} deg"
|
||||
)
|
||||
return item
|
||||
|
||||
|
||||
def transforms_for_pair(x, a_ij, b_gicp, left_rpy_deg):
|
||||
b_calibrated = inverse_transform(x) @ a_ij @ x
|
||||
transforms = {
|
||||
MODE_NAMES[0]: np.eye(4),
|
||||
MODE_NAMES[1]: a_ij.copy(),
|
||||
MODE_NAMES[2]: b_gicp.copy(),
|
||||
MODE_NAMES[3]: b_calibrated,
|
||||
}
|
||||
correction = np.asarray(left_rpy_deg, float)
|
||||
test_name = None
|
||||
if np.any(np.abs(correction) > 0.0):
|
||||
x_test = body_left_rpy(x, correction)
|
||||
test_name = f"5 test body-left RPY {correction.tolist()} deg"
|
||||
transforms[test_name] = inverse_transform(x_test) @ a_ij @ x_test
|
||||
return transforms, test_name
|
||||
|
||||
|
||||
def resolve_pair(stations, pairs_a, pairs_b, pairs_meta, pair_index, x, left_rpy_deg):
|
||||
a_ij = np.asarray(pairs_a[pair_index], float)
|
||||
b_gicp = np.asarray(pairs_b[pair_index], float)
|
||||
i, j = np.asarray(pairs_meta[pair_index, :2], int)
|
||||
transforms, test_name = transforms_for_pair(x, a_ij, b_gicp, left_rpy_deg)
|
||||
label = (
|
||||
f"pair {pair_index + 1}/{len(pairs_a)} "
|
||||
f"station {i} <- {j} "
|
||||
f"rotB={rotation_angle_deg(b_gicp[:3, :3]):.2f} deg "
|
||||
f"|tB|={float(np.linalg.norm(b_gicp[:3, 3])):.3f} m"
|
||||
)
|
||||
return i, j, a_ij, b_gicp, transforms, test_name, label
|
||||
|
||||
|
||||
def print_pair_header(label, b_gicp, transforms, test_name, a_ij):
|
||||
print("-" * 72)
|
||||
print(label)
|
||||
print("blue=target i | orange=source j")
|
||||
mode_hint = "1-4"
|
||||
if test_name is not None:
|
||||
mode_hint = "1-5"
|
||||
print(f"{mode_hint}: overlay mode | N/]: next pair | P/[: prev pair | Q/Esc: exit")
|
||||
print(
|
||||
"IMPORTANT: delta xyz/rpy are components of B^-1*(X^-1*A*X), expressed "
|
||||
"in station-j LiDAR coordinates; screen-left/right depends on the 3D camera view."
|
||||
)
|
||||
baseline = print_delta("mode4 minus mode3", b_gicp, transforms[MODE_NAMES[3]])
|
||||
roll, pitch, yaw = np.abs(baseline["rotation_rpy_deg_xyz"])
|
||||
if max(roll, pitch) > max(0.10, 2.0 * yaw):
|
||||
print("note: roll/pitch dominate yaw on this pair.")
|
||||
tx, ty, tz = np.abs(baseline["translation_xyz_cm"])
|
||||
if tz > max(tx, ty):
|
||||
print("note: largest translation component is Z for this pair.")
|
||||
body_up = np.array([0.0, 0.0, 1.0])
|
||||
if np.linalg.norm(a_ij[:3, :3] @ body_up - body_up) < 1e-8:
|
||||
print(
|
||||
"observability: this A preserves the body Z axis, so body-left X.z "
|
||||
"translation is unobservable from this pair; use ground/external height constraints."
|
||||
)
|
||||
if test_name is not None:
|
||||
print_delta("mode5 minus mode3", b_gicp, transforms[test_name])
|
||||
|
||||
|
||||
def main():
|
||||
import open3d as o3d
|
||||
|
||||
@@ -66,10 +159,13 @@ def main():
|
||||
parser.add_argument("--frames", required=True)
|
||||
parser.add_argument("--pairs", required=True)
|
||||
parser.add_argument("--extrinsic", required=True)
|
||||
parser.add_argument("--pair-index", type=int, default=0)
|
||||
parser.add_argument("--pair-index", type=int, default=0, help="Starting motion-pair index")
|
||||
parser.add_argument("--voxel", type=float, default=0.10)
|
||||
parser.add_argument(
|
||||
"--left-rpy-deg", nargs=3, type=float, default=[0.0, 0.0, 0.0],
|
||||
"--left-rpy-deg",
|
||||
nargs=3,
|
||||
type=float,
|
||||
default=[0.0, 0.0, 0.0],
|
||||
metavar=("ROLL", "PITCH", "YAW"),
|
||||
help="optional body-frame left correction applied as DeltaR_body * X",
|
||||
)
|
||||
@@ -82,85 +178,114 @@ def main():
|
||||
f"frames contain {len(stations)} stations but pair file records "
|
||||
f"{len(data['station_times'])}"
|
||||
)
|
||||
if not 0 <= args.pair_index < len(data["A"]):
|
||||
raise IndexError(
|
||||
f"pair-index {args.pair_index} outside [0,{len(data['A']) - 1}]"
|
||||
)
|
||||
a_ij = np.asarray(data["A"][args.pair_index], float)
|
||||
b_gicp = np.asarray(data["B"][args.pair_index], float)
|
||||
i, j = np.asarray(data["meta"][args.pair_index, :2], int)
|
||||
pairs_a = np.asarray(data["A"], float)
|
||||
pairs_b = np.asarray(data["B"], float)
|
||||
pairs_meta = np.asarray(data["meta"])
|
||||
n_pairs = len(pairs_a)
|
||||
if not 0 <= args.pair_index < n_pairs:
|
||||
raise IndexError(f"pair-index {args.pair_index} outside [0,{n_pairs - 1}]")
|
||||
|
||||
with open(args.extrinsic, encoding="utf-8-sig") as stream:
|
||||
result = json.load(stream)
|
||||
x = np.asarray(result["matrix_4x4"], float)
|
||||
b_calibrated = inverse_transform(x) @ a_ij @ x
|
||||
left_rpy = np.asarray(args.left_rpy_deg, float)
|
||||
|
||||
transforms = {
|
||||
"1 raw": np.eye(4),
|
||||
"2 RTK initial (X0=I)": a_ij,
|
||||
"3 GICP B": b_gicp,
|
||||
"4 calibrated X^-1 A X": b_calibrated,
|
||||
}
|
||||
correction = np.asarray(args.left_rpy_deg, float)
|
||||
if np.any(np.abs(correction) > 0.0):
|
||||
x_test = body_left_rpy(x, correction)
|
||||
transforms[
|
||||
f"5 test body-left RPY {correction.tolist()} deg"
|
||||
] = inverse_transform(x_test) @ a_ij @ x_test
|
||||
|
||||
target = stations[i][3]
|
||||
source = stations[j][3]
|
||||
print(f"pair_index={args.pair_index}, station {i} <- {j}")
|
||||
print("blue = target station i; orange = source station j after selected transform")
|
||||
print("keys: 1 raw | 2 RTK initial | 3 GICP | 4 calibrated | 5 test correction | Q/Esc exit")
|
||||
print(
|
||||
"IMPORTANT: delta xyz/rpy are components of B^-1*(X^-1*A*X), expressed "
|
||||
"in station-j LiDAR coordinates; screen-left/right depends on the 3D camera view."
|
||||
pair_index = int(args.pair_index)
|
||||
i, j, a_ij, b_gicp, transforms, test_name, label = resolve_pair(
|
||||
stations, pairs_a, pairs_b, pairs_meta, pair_index, x, left_rpy
|
||||
)
|
||||
baseline = print_delta("mode 4 minus mode 3", b_gicp, b_calibrated)
|
||||
roll, pitch, yaw = np.abs(baseline["rotation_rpy_deg_xyz"])
|
||||
if max(roll, pitch) > max(0.10, 2.0 * yaw):
|
||||
print("diagnosis: roll/pitch components dominate yaw; do not prioritize yaw tuning for this pair.")
|
||||
tx, ty, tz = np.abs(baseline["translation_xyz_cm"])
|
||||
if tz > max(tx, ty):
|
||||
print("diagnosis: the largest translation component is relative Z, not lateral XY.")
|
||||
body_up = np.array([0.0, 0.0, 1.0])
|
||||
if np.linalg.norm(a_ij[:3, :3] @ body_up - body_up) < 1e-8:
|
||||
print(
|
||||
"observability: this A preserves the body Z axis, so body-left X.z "
|
||||
"translation is unobservable from this pair; use ground/external height constraints."
|
||||
)
|
||||
if "5 test body-left RPY " + str(correction.tolist()) + " deg" in transforms:
|
||||
print_delta("mode 5 minus mode 3", b_gicp, list(transforms.values())[-1])
|
||||
|
||||
viewer = o3d.visualization.VisualizerWithKeyCallback()
|
||||
viewer.create_window("Rigorous LiDAR registration inspection - 3D", 1400, 900)
|
||||
target_cloud = cloud(o3d, target, COLORS["target"], args.voxel)
|
||||
source_cloud = cloud(o3d, source, COLORS["source"], args.voxel)
|
||||
viewer.create_window("RTK–LiDAR registration inspection", 1400, 900)
|
||||
target_cloud = cloud(o3d, stations[i][3], COLORS["target"], args.voxel)
|
||||
source_cloud = cloud(o3d, stations[j][3], COLORS["source"], args.voxel)
|
||||
viewer.add_geometry(target_cloud)
|
||||
viewer.add_geometry(source_cloud)
|
||||
axes = o3d.geometry.TriangleMesh.create_coordinate_frame(size=1.0)
|
||||
viewer.add_geometry(axes)
|
||||
current = np.eye(4)
|
||||
|
||||
def select(name):
|
||||
def callback(vis):
|
||||
nonlocal current
|
||||
desired = transforms[name]
|
||||
source_cloud.transform(desired @ inverse_transform(current))
|
||||
current = desired
|
||||
vis.update_geometry(source_cloud)
|
||||
if name == "3 GICP B":
|
||||
print(f"{name}: reference registration B; delta = 0")
|
||||
else:
|
||||
print_delta(name + " minus mode 3", b_gicp, desired)
|
||||
return False
|
||||
return callback
|
||||
|
||||
for key, name in zip((ord("1"), ord("2"), ord("3"), ord("4"), ord("5")), transforms):
|
||||
viewer.register_key_callback(key, select(name))
|
||||
viewer.add_geometry(o3d.geometry.TriangleMesh.create_coordinate_frame(size=1.0))
|
||||
viewer.get_render_option().background_color = np.array([0.02, 0.02, 0.02])
|
||||
viewer.get_render_option().point_size = 2.0
|
||||
|
||||
state = {
|
||||
"pair_index": pair_index,
|
||||
"mode_name": MODE_NAMES[3],
|
||||
"current": np.eye(4),
|
||||
"transforms": transforms,
|
||||
"b_gicp": b_gicp,
|
||||
"a_ij": a_ij,
|
||||
"test_name": test_name,
|
||||
}
|
||||
|
||||
def apply_mode(vis, mode_name: str, *, announce: bool = True) -> None:
|
||||
desired = state["transforms"][mode_name]
|
||||
source_cloud.transform(desired @ inverse_transform(state["current"]))
|
||||
state["current"] = desired
|
||||
state["mode_name"] = mode_name
|
||||
vis.update_geometry(source_cloud)
|
||||
if announce:
|
||||
if mode_name == MODE_NAMES[2]:
|
||||
print(f"{mode_name}: registration reference; delta = 0")
|
||||
else:
|
||||
print_delta(mode_name + " minus mode3", state["b_gicp"], desired)
|
||||
|
||||
def load_pair(vis, new_index: int) -> None:
|
||||
new_index = int(new_index) % n_pairs
|
||||
i, j, a_ij, b_gicp, transforms, test_name, label = resolve_pair(
|
||||
stations, pairs_a, pairs_b, pairs_meta, new_index, x, left_rpy
|
||||
)
|
||||
state["pair_index"] = new_index
|
||||
state["transforms"] = transforms
|
||||
state["b_gicp"] = b_gicp
|
||||
state["a_ij"] = a_ij
|
||||
state["test_name"] = test_name
|
||||
state["current"] = np.eye(4)
|
||||
set_cloud_points(target_cloud, stations[i][3], COLORS["target"], args.voxel, o3d)
|
||||
set_cloud_points(source_cloud, stations[j][3], COLORS["source"], args.voxel, o3d)
|
||||
vis.update_geometry(target_cloud)
|
||||
vis.update_geometry(source_cloud)
|
||||
# Keep current mode if still available (mode 5 may vanish when correction is zero).
|
||||
mode_name = state["mode_name"]
|
||||
if mode_name not in transforms:
|
||||
mode_name = MODE_NAMES[3]
|
||||
print_pair_header(label, b_gicp, transforms, test_name, a_ij)
|
||||
apply_mode(vis, mode_name, announce=True)
|
||||
|
||||
def make_mode_cb(mode_name: str):
|
||||
def callback(vis):
|
||||
if mode_name not in state["transforms"]:
|
||||
print(f"{mode_name}: unavailable (pass non-zero --left-rpy-deg for mode 5)")
|
||||
return False
|
||||
apply_mode(vis, mode_name, announce=True)
|
||||
return False
|
||||
|
||||
return callback
|
||||
|
||||
def next_pair(vis):
|
||||
load_pair(vis, state["pair_index"] + 1)
|
||||
return False
|
||||
|
||||
def prev_pair(vis):
|
||||
load_pair(vis, state["pair_index"] - 1)
|
||||
return False
|
||||
|
||||
print_pair_header(label, b_gicp, transforms, test_name, a_ij)
|
||||
for key, name in zip((ord("1"), ord("2"), ord("3"), ord("4")), MODE_NAMES):
|
||||
viewer.register_key_callback(key, make_mode_cb(name))
|
||||
|
||||
def mode5(vis):
|
||||
name = state["test_name"]
|
||||
if name is None or name not in state["transforms"]:
|
||||
print("5: unavailable (pass non-zero --left-rpy-deg for mode 5)")
|
||||
return False
|
||||
apply_mode(vis, name, announce=True)
|
||||
return False
|
||||
|
||||
viewer.register_key_callback(ord("5"), mode5)
|
||||
for key in (ord("N"), ord("n"), ord("]")):
|
||||
viewer.register_key_callback(key, next_pair)
|
||||
for key in (ord("P"), ord("p"), ord("[")):
|
||||
viewer.register_key_callback(key, prev_pair)
|
||||
|
||||
apply_mode(viewer, MODE_NAMES[3], announce=False)
|
||||
viewer.run()
|
||||
viewer.destroy_window()
|
||||
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
numpy>=1.26
|
||||
scipy>=1.11
|
||||
open3d>=0.18
|
||||
small-gicp==1.0.1
|
||||
small-gicp
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# 历史两批结果
|
||||
|
||||
第二批 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;其余文件用于审计和复现。
|
||||
@@ -1,39 +0,0 @@
|
||||
time,nx,ny,nz,d,inliers,rms_m,frame_counter
|
||||
1784279335.9505181,-0.05361540190749781,-0.028612066826359885,0.9981516609765378,0.9970438972044271,1413,0.014218123000381944,190
|
||||
1784279429.4466305,-0.020242124527498212,-0.021859763099327908,0.999556105054566,0.9527601103226121,1403,0.012533257614588953,1125
|
||||
1784279517.5427606,-0.025255763366701406,-0.019499239847777874,0.9994908334057517,0.9627800728846587,1377,0.013484126577744504,2006
|
||||
1784279605.2394407,-0.01384716564355861,-0.022470612380854543,0.9996516031012351,0.9522772824995122,1451,0.012466425277627606,2883
|
||||
1784279701.2360666,-0.01555857544224011,-0.0217686215576034,0.999641964828253,0.9563364194973247,1538,0.012300341594741273,3843
|
||||
1784279817.2306573,-0.011087527873671243,-0.020924555502825015,0.9997195755323889,0.9578164603891901,1449,0.011989950419186364,5003
|
||||
1784280797.6884267,-0.02596647147549029,-0.017803282998918958,0.999504269862602,0.9413409925183257,1070,0.01285544119037058,1175
|
||||
1784280931.5831878,-0.015374876237213071,-0.006972433892068898,0.9998574890184657,0.9529924610673387,1231,0.012386720372038787,2514
|
||||
1784281027.8795433,-0.018194511282557984,-0.007436316920549397,0.9998068118140855,0.9473391457135313,994,0.013690484345080097,3477
|
||||
1784281119.375541,-0.031030924482729524,-0.005127874296086657,0.9995052709370525,0.9424388693848053,1050,0.012540091408749102,4392
|
||||
1784281219.2718523,0.010887801537886658,0.029801594631508527,0.9994965336283518,1.0385701101629785,1314,0.012779819581803468,5391
|
||||
1784281326.268232,-0.0096362623873578,0.012819044946118371,0.9998713989978268,0.9312224966475169,1290,0.014104946182144612,6461
|
||||
1784281406.9641902,0.0003902542885943621,0.08032748256370953,0.9967684501661191,1.1034060039993756,1292,0.010758148594815282,7268
|
||||
1784281474.3615055,-0.03105566487178763,0.07564589746567012,0.9966510140846617,1.0327196422481995,1815,0.011041719572931458,7942
|
||||
1784281630.3553114,-0.08580403119897857,-0.004531705446499283,0.9963017273274953,0.9450482405407393,2217,0.013149265194066527,9502
|
||||
1784281794.7491786,-0.0338374639041254,-0.01961931634157733,0.9992347614363835,0.9452222296717823,1260,0.01201022023689137,11146
|
||||
1784281908.3446162,-0.021893307599930106,-0.01424087221046337,0.9996588821398128,0.9576567371739861,1494,0.01236191966907317,12282
|
||||
1784282032.5400162,-0.0158344231842381,-0.012467864421327742,0.9997968910729789,0.9463865980851461,1636,0.010787373185908479,13524
|
||||
1784282152.7353525,-0.018682494816813326,-0.008766064442460298,0.9997870375743079,0.9483840866729998,2240,0.01283360827008306,14726
|
||||
1784282248.831164,-0.023968085422919984,0.0010098337757014242,0.9997122141481043,0.9229733966918622,2063,0.01198166200322995,15687
|
||||
1784282392.325837,-0.03491854849921791,-0.007495342405346995,0.999362053918866,0.9445161886424389,2063,0.012487104595673213,17122
|
||||
1784282521.1221898,-0.033279977268402205,-0.021263918239006526,0.9992198401223525,0.9241543379566599,1765,0.012696796680589562,18410
|
||||
1784282614.418045,-0.02206065096269162,-0.02672916533917316,0.9993992592549654,0.9465522302118663,1961,0.013512740981540523,19343
|
||||
1784282682.8141525,-0.02081301783029168,-0.01579943764964285,0.9996585397318182,0.9449041973558906,1859,0.012396974052191898,20027
|
||||
1784282765.6112185,-0.004508281075411156,-0.014008591413946636,0.9998917115209738,0.950099620414229,2036,0.011293042628447103,20855
|
||||
1784282827.209564,-0.01736207184562764,-0.0031377437424165654,0.999844344398384,0.9426007877012084,1748,0.010719044572619517,21471
|
||||
1784282910.2059953,-0.021125469928628078,-0.014448226693694841,0.9996724279811374,0.9542841605935083,2168,0.013339960186967582,22301
|
||||
1784282963.3037353,-0.006457463553009421,-0.02032265008628933,0.9997726196780605,0.963795839330157,2091,0.012167595789322305,22832
|
||||
1784283066.8004546,-0.025064234285691236,-0.029087411217067063,0.9992625814411152,0.9318734965466619,1864,0.012746549021992943,23867
|
||||
1784283133.8969557,-0.016700078063969132,-0.04176715532503475,0.9989877937836437,0.9264060770827569,1908,0.01109353135053672,24538
|
||||
1784283183.2952216,-0.01653688679373809,-0.017415882722786116,0.9997115676054555,0.9575547004867051,2007,0.012534093025107626,25032
|
||||
1784283245.892713,-0.025847980338270828,-0.0153447484376825,0.9995481082008092,0.9578045061243852,1561,0.012070094021521557,25658
|
||||
1784283298.8906527,-0.021273542761096498,-0.005573033066936611,0.9997581595970231,0.9467349945273356,2032,0.012236068644419621,26188
|
||||
1784283360.3892086,-0.039281329759085375,-0.01627781426001628,0.9990955959743164,0.9222774871766527,1808,0.013038192231074228,26803
|
||||
1784283421.0858324,-0.03317220277295649,-0.00229990918740887,0.9994470047886079,0.920634362486867,1708,0.012670933440544421,27410
|
||||
1784283483.1839027,-0.025661097999728377,-0.014377994766167732,0.9995672970420513,0.9594288765988624,2042,0.012797258981502222,28031
|
||||
1784283558.880709,-0.02901405273913087,-0.038144166153403075,0.998850943500637,0.9554734954630025,1768,0.012270678438066111,28788
|
||||
1784283636.4777331,-0.03570548009769577,-0.0034801149872434093,0.9993562965682804,0.9414430863966106,1632,0.012966623651022222,29564
|
||||
|
@@ -1,79 +0,0 @@
|
||||
{
|
||||
"recommended_backend": "open3d_gicp",
|
||||
"selection_reason": "The two X estimates agree closely; Open3D has lower second-batch AX residual, better B loop closure, and lower first-batch auxiliary residual.",
|
||||
"coordinate_convention": "T_body_lidar maps raw LiDAR points into rear-axle body frame",
|
||||
"measured_extrinsic_used_as_initial": false,
|
||||
"second_batch_role": "estimation (dense RTK)",
|
||||
"first_batch_role": "auxiliary check only (sparse RTK)",
|
||||
"backend_difference": {
|
||||
"translation_m": 0.00181035475331947,
|
||||
"rotation_deg": 0.06312194455789993
|
||||
},
|
||||
"open3d_gicp": {
|
||||
"translation_m": [
|
||||
1.2978831677200011,
|
||||
-0.0030997734098957433,
|
||||
0.7217892226151688
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7572070226288585,
|
||||
1.1460424368859559,
|
||||
-0.8797812288284186
|
||||
],
|
||||
"estimation_pairs": 66,
|
||||
"estimation_translation_rms_m": 0.10017183831403174,
|
||||
"estimation_rotation_rms_deg": 1.011529772202344,
|
||||
"bootstrap_std": [
|
||||
0.0020832827985508263,
|
||||
0.002063603632322515,
|
||||
0.001427746471392659,
|
||||
0.07576290622767821,
|
||||
0.06304875844333606,
|
||||
0.07843172452171372
|
||||
],
|
||||
"initial_B_loop_closure": {
|
||||
"count": 106,
|
||||
"translation_rms_m": 0.020350848901853437,
|
||||
"translation_p95_m": 0.04464367942375473,
|
||||
"rotation_rms_deg": 0.2674546762953808,
|
||||
"rotation_p95_deg": 0.5761692075739222
|
||||
},
|
||||
"batch1_auxiliary_pairs": 41,
|
||||
"batch1_auxiliary_translation_rms_m": 0.06627076507951374,
|
||||
"batch1_auxiliary_rotation_rms_deg": 1.0783402768758907
|
||||
},
|
||||
"small_gicp": {
|
||||
"translation_m": [
|
||||
1.2996301155160686,
|
||||
-0.0035647011612625953,
|
||||
0.7218861757826791
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7871563544979889,
|
||||
1.1414557494228486,
|
||||
-0.9357571721886107
|
||||
],
|
||||
"estimation_pairs": 80,
|
||||
"estimation_translation_rms_m": 0.11870623426762615,
|
||||
"estimation_rotation_rms_deg": 1.135091439337232,
|
||||
"bootstrap_std": [
|
||||
0.0017068433472663032,
|
||||
0.0019214288447692426,
|
||||
0.0013180801706094514,
|
||||
0.06849719260762097,
|
||||
0.05792635838163369,
|
||||
0.062093058432709465
|
||||
],
|
||||
"initial_B_loop_closure": {
|
||||
"count": 252,
|
||||
"translation_rms_m": 0.06356464456110195,
|
||||
"translation_p95_m": 0.12253135158224471,
|
||||
"rotation_rms_deg": 0.7286536542725655,
|
||||
"rotation_p95_deg": 1.4911215410143956
|
||||
},
|
||||
"batch1_auxiliary_pairs": 36,
|
||||
"batch1_auxiliary_translation_rms_m": 0.07402020402512643,
|
||||
"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."
|
||||
}
|
||||
@@ -1,328 +0,0 @@
|
||||
{
|
||||
"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": 41,
|
||||
"accepted_pairs": 22,
|
||||
"pairs": [
|
||||
{
|
||||
"i": 0,
|
||||
"j": 1,
|
||||
"open3d_small_translation_m": 0.04084575096493436,
|
||||
"open3d_small_rotation_deg": 0.8091245488258404,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 0,
|
||||
"j": 3,
|
||||
"open3d_small_translation_m": 0.007440836728606337,
|
||||
"open3d_small_rotation_deg": 0.14377171116926005,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 1,
|
||||
"j": 2,
|
||||
"open3d_small_translation_m": 0.012040931709501762,
|
||||
"open3d_small_rotation_deg": 0.09198739647809913,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 2,
|
||||
"j": 3,
|
||||
"open3d_small_translation_m": 0.020167802344555865,
|
||||
"open3d_small_rotation_deg": 0.10088741778579047,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 2,
|
||||
"j": 5,
|
||||
"open3d_small_translation_m": 0.05126263142175136,
|
||||
"open3d_small_rotation_deg": 1.129023564517054,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 3,
|
||||
"j": 4,
|
||||
"open3d_small_translation_m": 0.008340648580577372,
|
||||
"open3d_small_rotation_deg": 0.48893802037297335,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 3,
|
||||
"j": 5,
|
||||
"open3d_small_translation_m": 0.03255543023061846,
|
||||
"open3d_small_rotation_deg": 0.04924738744939371,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 4,
|
||||
"j": 5,
|
||||
"open3d_small_translation_m": 0.01717130804559543,
|
||||
"open3d_small_rotation_deg": 0.18948013657322885,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 5,
|
||||
"j": 6,
|
||||
"open3d_small_translation_m": 0.00790599819083906,
|
||||
"open3d_small_rotation_deg": 0.1334214273599749,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 6,
|
||||
"j": 7,
|
||||
"open3d_small_translation_m": 0.02785621409489221,
|
||||
"open3d_small_rotation_deg": 0.4203987393515618,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 6,
|
||||
"j": 9,
|
||||
"open3d_small_translation_m": 0.012940492880990915,
|
||||
"open3d_small_rotation_deg": 0.16985420735800236,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 11,
|
||||
"j": 12,
|
||||
"open3d_small_translation_m": 0.016762449071916253,
|
||||
"open3d_small_rotation_deg": 0.43689758943546,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 16,
|
||||
"j": 17,
|
||||
"open3d_small_translation_m": 0.038512603544217365,
|
||||
"open3d_small_rotation_deg": 1.3958733432618273,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 16,
|
||||
"j": 18,
|
||||
"accepted": false,
|
||||
"reason": "not_in_small_gicp_refined"
|
||||
},
|
||||
{
|
||||
"i": 17,
|
||||
"j": 18,
|
||||
"open3d_small_translation_m": 0.04386909360158492,
|
||||
"open3d_small_rotation_deg": 0.49818041971185584,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 18,
|
||||
"j": 19,
|
||||
"open3d_small_translation_m": 0.02904786593904068,
|
||||
"open3d_small_rotation_deg": 0.6456312776257432,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 18,
|
||||
"j": 20,
|
||||
"accepted": false,
|
||||
"reason": "not_in_small_gicp_refined"
|
||||
},
|
||||
{
|
||||
"i": 18,
|
||||
"j": 21,
|
||||
"open3d_small_translation_m": 0.06690824468510452,
|
||||
"open3d_small_rotation_deg": 0.5787554058174607,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 19,
|
||||
"j": 20,
|
||||
"accepted": false,
|
||||
"reason": "not_in_small_gicp_refined"
|
||||
},
|
||||
{
|
||||
"i": 20,
|
||||
"j": 21,
|
||||
"open3d_small_translation_m": 0.02975935281075696,
|
||||
"open3d_small_rotation_deg": 0.36957453812106744,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 20,
|
||||
"j": 22,
|
||||
"open3d_small_translation_m": 0.01187767303223306,
|
||||
"open3d_small_rotation_deg": 0.11119975547992203,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 20,
|
||||
"j": 23,
|
||||
"open3d_small_translation_m": 0.02085962034691778,
|
||||
"open3d_small_rotation_deg": 0.14906239098917923,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 21,
|
||||
"j": 22,
|
||||
"open3d_small_translation_m": 0.07344207054217174,
|
||||
"open3d_small_rotation_deg": 0.4720715999477229,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 21,
|
||||
"j": 24,
|
||||
"open3d_small_translation_m": 0.003446026826977358,
|
||||
"open3d_small_rotation_deg": 0.06718280580638468,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 22,
|
||||
"j": 23,
|
||||
"open3d_small_translation_m": 0.0038695246290457396,
|
||||
"open3d_small_rotation_deg": 0.19583405427516354,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 22,
|
||||
"j": 24,
|
||||
"open3d_small_translation_m": 0.008952357752471345,
|
||||
"open3d_small_rotation_deg": 0.2129847177606736,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 23,
|
||||
"j": 24,
|
||||
"open3d_small_translation_m": 0.0569515146956438,
|
||||
"open3d_small_rotation_deg": 0.6801187045572974,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 24,
|
||||
"j": 25,
|
||||
"open3d_small_translation_m": 0.025823784600755004,
|
||||
"open3d_small_rotation_deg": 0.7451009005368011,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 24,
|
||||
"j": 26,
|
||||
"open3d_small_translation_m": 0.005434928313511662,
|
||||
"open3d_small_rotation_deg": 0.38110259637848837,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 25,
|
||||
"j": 26,
|
||||
"open3d_small_translation_m": 0.032394639661318274,
|
||||
"open3d_small_rotation_deg": 0.6672581993183133,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 27,
|
||||
"j": 28,
|
||||
"open3d_small_translation_m": 0.03319908369315011,
|
||||
"open3d_small_rotation_deg": 0.3374096789165904,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 27,
|
||||
"j": 29,
|
||||
"open3d_small_translation_m": 0.064122224643194,
|
||||
"open3d_small_rotation_deg": 0.3369642063017735,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 28,
|
||||
"j": 29,
|
||||
"open3d_small_translation_m": 0.04054098962864038,
|
||||
"open3d_small_rotation_deg": 0.6304817774750828,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 30,
|
||||
"j": 31,
|
||||
"open3d_small_translation_m": 0.06429006702815496,
|
||||
"open3d_small_rotation_deg": 0.6364945448655926,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 30,
|
||||
"j": 33,
|
||||
"open3d_small_translation_m": 0.02846544971259277,
|
||||
"open3d_small_rotation_deg": 0.5396634629075986,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 31,
|
||||
"j": 33,
|
||||
"accepted": false,
|
||||
"reason": "not_in_small_gicp_refined"
|
||||
},
|
||||
{
|
||||
"i": 33,
|
||||
"j": 34,
|
||||
"accepted": false,
|
||||
"reason": "not_in_small_gicp_refined"
|
||||
},
|
||||
{
|
||||
"i": 33,
|
||||
"j": 35,
|
||||
"open3d_small_translation_m": 0.012003505646551895,
|
||||
"open3d_small_rotation_deg": 0.2900810668840737,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 34,
|
||||
"j": 35,
|
||||
"open3d_small_translation_m": 0.034420937161804874,
|
||||
"open3d_small_rotation_deg": 0.3929515224293036,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 34,
|
||||
"j": 37,
|
||||
"open3d_small_translation_m": 0.017073125816226477,
|
||||
"open3d_small_rotation_deg": 0.5761893617071098,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 35,
|
||||
"j": 36,
|
||||
"open3d_small_translation_m": 0.009761763696948316,
|
||||
"open3d_small_rotation_deg": 0.47958651768297733,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@@ -1,530 +0,0 @@
|
||||
{
|
||||
"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": 66,
|
||||
"accepted_pairs": 39,
|
||||
"pairs": [
|
||||
{
|
||||
"i": 0,
|
||||
"j": 1,
|
||||
"open3d_small_translation_m": 0.014112857127352833,
|
||||
"open3d_small_rotation_deg": 0.9322795088817045,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 0,
|
||||
"j": 2,
|
||||
"open3d_small_translation_m": 0.04048559177128157,
|
||||
"open3d_small_rotation_deg": 0.13828514886662066,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 0,
|
||||
"j": 3,
|
||||
"open3d_small_translation_m": 0.043319730028129194,
|
||||
"open3d_small_rotation_deg": 0.18606836567929377,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 1,
|
||||
"j": 2,
|
||||
"open3d_small_translation_m": 0.027224756971621137,
|
||||
"open3d_small_rotation_deg": 0.11107273153325639,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 1,
|
||||
"j": 3,
|
||||
"open3d_small_translation_m": 0.04006763116408136,
|
||||
"open3d_small_rotation_deg": 0.3402294071905194,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 1,
|
||||
"j": 4,
|
||||
"accepted": false,
|
||||
"reason": "not_in_small_gicp_refined"
|
||||
},
|
||||
{
|
||||
"i": 2,
|
||||
"j": 3,
|
||||
"open3d_small_translation_m": 0.01124849125851201,
|
||||
"open3d_small_rotation_deg": 0.08934477097506471,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 2,
|
||||
"j": 4,
|
||||
"open3d_small_translation_m": 0.03581057712566857,
|
||||
"open3d_small_rotation_deg": 0.47251701196497253,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 2,
|
||||
"j": 5,
|
||||
"open3d_small_translation_m": 0.08528072944363045,
|
||||
"open3d_small_rotation_deg": 1.2141759174965312,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 3,
|
||||
"j": 4,
|
||||
"open3d_small_translation_m": 0.0075101104952604815,
|
||||
"open3d_small_rotation_deg": 0.18179062115813846,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 3,
|
||||
"j": 5,
|
||||
"open3d_small_translation_m": 0.024397939276152487,
|
||||
"open3d_small_rotation_deg": 0.3105330721864524,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 4,
|
||||
"j": 5,
|
||||
"open3d_small_translation_m": 0.020705651033865183,
|
||||
"open3d_small_rotation_deg": 0.1233418901694322,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 4,
|
||||
"j": 7,
|
||||
"open3d_small_translation_m": 0.020920545183303704,
|
||||
"open3d_small_rotation_deg": 0.7722300773846386,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 5,
|
||||
"j": 7,
|
||||
"open3d_small_translation_m": 0.04282503694424416,
|
||||
"open3d_small_rotation_deg": 0.5633825712787606,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 5,
|
||||
"j": 8,
|
||||
"open3d_small_translation_m": 0.11029404203405435,
|
||||
"open3d_small_rotation_deg": 0.5325792081092059,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 6,
|
||||
"j": 7,
|
||||
"open3d_small_translation_m": 0.03271497478931517,
|
||||
"open3d_small_rotation_deg": 0.31987628752295666,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 6,
|
||||
"j": 8,
|
||||
"open3d_small_translation_m": 0.07284151111110872,
|
||||
"open3d_small_rotation_deg": 1.4450826858938794,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 7,
|
||||
"j": 8,
|
||||
"open3d_small_translation_m": 0.09279358525836445,
|
||||
"open3d_small_rotation_deg": 0.19167684909579139,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 7,
|
||||
"j": 9,
|
||||
"open3d_small_translation_m": 0.012050834357664957,
|
||||
"open3d_small_rotation_deg": 0.4077277697131033,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 7,
|
||||
"j": 10,
|
||||
"accepted": false,
|
||||
"reason": "not_in_small_gicp_refined"
|
||||
},
|
||||
{
|
||||
"i": 8,
|
||||
"j": 9,
|
||||
"open3d_small_translation_m": 0.026603663511016604,
|
||||
"open3d_small_rotation_deg": 0.3213901608387603,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 8,
|
||||
"j": 10,
|
||||
"open3d_small_translation_m": 0.029568992143279488,
|
||||
"open3d_small_rotation_deg": 0.42606536158015423,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 9,
|
||||
"j": 10,
|
||||
"open3d_small_translation_m": 0.03641531538812563,
|
||||
"open3d_small_rotation_deg": 0.20836252860025806,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 10,
|
||||
"j": 11,
|
||||
"open3d_small_translation_m": 0.013655861114026318,
|
||||
"open3d_small_rotation_deg": 0.7320732922437044,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 11,
|
||||
"j": 12,
|
||||
"open3d_small_translation_m": 0.015611342863539268,
|
||||
"open3d_small_rotation_deg": 0.5694244139356097,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 11,
|
||||
"j": 13,
|
||||
"open3d_small_translation_m": 0.08667727215031616,
|
||||
"open3d_small_rotation_deg": 0.8576430944387251,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 11,
|
||||
"j": 14,
|
||||
"open3d_small_translation_m": 0.013212394743280101,
|
||||
"open3d_small_rotation_deg": 0.5395038717718552,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 12,
|
||||
"j": 13,
|
||||
"open3d_small_translation_m": 0.05511305334837847,
|
||||
"open3d_small_rotation_deg": 1.2808633685978204,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 12,
|
||||
"j": 14,
|
||||
"open3d_small_translation_m": 0.01673887890907281,
|
||||
"open3d_small_rotation_deg": 0.4590349395304042,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 12,
|
||||
"j": 15,
|
||||
"open3d_small_translation_m": 0.09777961576971127,
|
||||
"open3d_small_rotation_deg": 0.6299487235133375,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 13,
|
||||
"j": 14,
|
||||
"open3d_small_translation_m": 0.03968493416626958,
|
||||
"open3d_small_rotation_deg": 1.39604879980664,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 13,
|
||||
"j": 15,
|
||||
"open3d_small_translation_m": 0.04654254454408651,
|
||||
"open3d_small_rotation_deg": 0.19549226846654652,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 13,
|
||||
"j": 16,
|
||||
"open3d_small_translation_m": 0.016539968897939728,
|
||||
"open3d_small_rotation_deg": 0.5036637170277819,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 14,
|
||||
"j": 15,
|
||||
"open3d_small_translation_m": 0.08740655127874042,
|
||||
"open3d_small_rotation_deg": 0.9024809168777701,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 14,
|
||||
"j": 16,
|
||||
"open3d_small_translation_m": 0.007961162148769676,
|
||||
"open3d_small_rotation_deg": 0.3128279997254769,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 15,
|
||||
"j": 16,
|
||||
"open3d_small_translation_m": 0.05660525597010978,
|
||||
"open3d_small_rotation_deg": 0.3498659583909866,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 17,
|
||||
"j": 18,
|
||||
"open3d_small_translation_m": 0.012632921988089662,
|
||||
"open3d_small_rotation_deg": 0.23041873752448738,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 18,
|
||||
"j": 19,
|
||||
"open3d_small_translation_m": 0.02031854418240709,
|
||||
"open3d_small_rotation_deg": 0.10632729898220249,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 20,
|
||||
"j": 21,
|
||||
"open3d_small_translation_m": 0.013503153993963056,
|
||||
"open3d_small_rotation_deg": 0.17004359316703027,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 21,
|
||||
"j": 22,
|
||||
"open3d_small_translation_m": 0.06340422221619042,
|
||||
"open3d_small_rotation_deg": 0.5794375484544898,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 22,
|
||||
"j": 23,
|
||||
"open3d_small_translation_m": 0.0058706045875484576,
|
||||
"open3d_small_rotation_deg": 0.09261171568609482,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 22,
|
||||
"j": 24,
|
||||
"open3d_small_translation_m": 0.035452027277204735,
|
||||
"open3d_small_rotation_deg": 0.344137196022356,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 22,
|
||||
"j": 25,
|
||||
"open3d_small_translation_m": 0.016505964730377052,
|
||||
"open3d_small_rotation_deg": 0.2843410430726553,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 23,
|
||||
"j": 24,
|
||||
"open3d_small_translation_m": 0.00794618091675699,
|
||||
"open3d_small_rotation_deg": 0.3391363354920984,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 24,
|
||||
"j": 25,
|
||||
"open3d_small_translation_m": 0.005640140207369355,
|
||||
"open3d_small_rotation_deg": 0.40156498371331323,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 24,
|
||||
"j": 26,
|
||||
"accepted": false,
|
||||
"reason": "not_in_small_gicp_refined"
|
||||
},
|
||||
{
|
||||
"i": 24,
|
||||
"j": 27,
|
||||
"open3d_small_translation_m": 0.0748996904677792,
|
||||
"open3d_small_rotation_deg": 0.13727707305657308,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 25,
|
||||
"j": 26,
|
||||
"open3d_small_translation_m": 0.03081891880529517,
|
||||
"open3d_small_rotation_deg": 0.36020242073965086,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 25,
|
||||
"j": 27,
|
||||
"open3d_small_translation_m": 0.021168896509812032,
|
||||
"open3d_small_rotation_deg": 0.14597845760153952,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 26,
|
||||
"j": 27,
|
||||
"open3d_small_translation_m": 0.01536711683556009,
|
||||
"open3d_small_rotation_deg": 0.4140655889201126,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 26,
|
||||
"j": 28,
|
||||
"open3d_small_translation_m": 0.00692948322087535,
|
||||
"open3d_small_rotation_deg": 0.2580451959432504,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 26,
|
||||
"j": 29,
|
||||
"open3d_small_translation_m": 0.004434517854459698,
|
||||
"open3d_small_rotation_deg": 0.3814089109711929,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 27,
|
||||
"j": 28,
|
||||
"open3d_small_translation_m": 0.050137370980335605,
|
||||
"open3d_small_rotation_deg": 0.3289989587699738,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 27,
|
||||
"j": 29,
|
||||
"open3d_small_translation_m": 0.05401741972476896,
|
||||
"open3d_small_rotation_deg": 0.5027869137341908,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 27,
|
||||
"j": 30,
|
||||
"open3d_small_translation_m": 0.014426259697867812,
|
||||
"open3d_small_rotation_deg": 0.10299393098756303,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 29,
|
||||
"j": 30,
|
||||
"accepted": false,
|
||||
"reason": "not_in_small_gicp_refined"
|
||||
},
|
||||
{
|
||||
"i": 30,
|
||||
"j": 31,
|
||||
"open3d_small_translation_m": 0.017329917379458395,
|
||||
"open3d_small_rotation_deg": 0.22398877826738903,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 30,
|
||||
"j": 32,
|
||||
"open3d_small_translation_m": 0.014715435206511102,
|
||||
"open3d_small_rotation_deg": 0.11629038752134123,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 31,
|
||||
"j": 32,
|
||||
"open3d_small_translation_m": 0.015582546369975235,
|
||||
"open3d_small_rotation_deg": 0.5827409440555306,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 32,
|
||||
"j": 33,
|
||||
"open3d_small_translation_m": 0.008274791505352475,
|
||||
"open3d_small_rotation_deg": 0.16710510386507704,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 32,
|
||||
"j": 34,
|
||||
"open3d_small_translation_m": 0.009965535682972116,
|
||||
"open3d_small_rotation_deg": 0.25506349516996085,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 32,
|
||||
"j": 35,
|
||||
"open3d_small_translation_m": 0.013983188091914709,
|
||||
"open3d_small_rotation_deg": 0.4717278366783201,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 33,
|
||||
"j": 34,
|
||||
"open3d_small_translation_m": 0.01464477642231769,
|
||||
"open3d_small_rotation_deg": 0.23054883080903335,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 33,
|
||||
"j": 35,
|
||||
"open3d_small_translation_m": 0.02477884255472743,
|
||||
"open3d_small_rotation_deg": 0.21737771891740004,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
},
|
||||
{
|
||||
"i": 34,
|
||||
"j": 35,
|
||||
"open3d_small_translation_m": 0.05732289121946012,
|
||||
"open3d_small_rotation_deg": 0.16151350666473244,
|
||||
"accepted": false,
|
||||
"reason": "backend_disagreement"
|
||||
},
|
||||
{
|
||||
"i": 35,
|
||||
"j": 36,
|
||||
"open3d_small_translation_m": 0.01157700515581757,
|
||||
"open3d_small_rotation_deg": 0.49328772540040833,
|
||||
"accepted": true,
|
||||
"reason": ""
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@@ -1,179 +0,0 @@
|
||||
{
|
||||
"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": 22,
|
||||
"translation_m": {
|
||||
"rms": 0.06067269746244947,
|
||||
"median": 0.042680679229823305,
|
||||
"p90": 0.090942947259565,
|
||||
"p95": 0.10135707648063859,
|
||||
"max": 0.14643003383767556
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 1.002984942285067,
|
||||
"median": 0.707406938077333,
|
||||
"p90": 1.573355332434981,
|
||||
"p95": 1.7757584051966382,
|
||||
"max": 1.8710372365314285
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.048343805321803004,
|
||||
"rotation_deg": 0.6668376546913104,
|
||||
"i": 0,
|
||||
"j": 3
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.0423483041362295,
|
||||
"rotation_deg": 1.7859688557628564,
|
||||
"i": 1,
|
||||
"j": 2
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.02300615185240312,
|
||||
"rotation_deg": 1.8710372365314285,
|
||||
"i": 2,
|
||||
"j": 3
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.09155252198785023,
|
||||
"rotation_deg": 0.6733340854508988,
|
||||
"i": 3,
|
||||
"j": 4
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.03158045213093479,
|
||||
"rotation_deg": 0.2310116592109763,
|
||||
"i": 3,
|
||||
"j": 5
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.07825296974670955,
|
||||
"rotation_deg": 0.7403656481818025,
|
||||
"i": 4,
|
||||
"j": 5
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.03623050776977002,
|
||||
"rotation_deg": 0.29976499205053747,
|
||||
"i": 5,
|
||||
"j": 6
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.017322045818086197,
|
||||
"rotation_deg": 1.0428116209013618,
|
||||
"i": 6,
|
||||
"j": 7
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.037890995883582496,
|
||||
"rotation_deg": 0.5003524050137443,
|
||||
"i": 6,
|
||||
"j": 9
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.055811972906268326,
|
||||
"rotation_deg": 0.9711899476368479,
|
||||
"i": 11,
|
||||
"j": 12
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.10187310566446957,
|
||||
"rotation_deg": 0.48973592009907335,
|
||||
"i": 17,
|
||||
"j": 18
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.0304808468879537,
|
||||
"rotation_deg": 1.3239848803794854,
|
||||
"i": 20,
|
||||
"j": 21
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.04462456608967399,
|
||||
"rotation_deg": 0.2812977599385038,
|
||||
"i": 20,
|
||||
"j": 22
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.03611683783839059,
|
||||
"rotation_deg": 0.7096084761069892,
|
||||
"i": 20,
|
||||
"j": 23
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.07267248449673575,
|
||||
"rotation_deg": 0.6614151319251916,
|
||||
"i": 21,
|
||||
"j": 24
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.04417889214251473,
|
||||
"rotation_deg": 0.537164719319421,
|
||||
"i": 22,
|
||||
"j": 23
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.020100630082582033,
|
||||
"rotation_deg": 1.4866116021028042,
|
||||
"i": 22,
|
||||
"j": 24
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.04301305432341711,
|
||||
"rotation_deg": 0.7052054000476768,
|
||||
"i": 24,
|
||||
"j": 26
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.0344886352240195,
|
||||
"rotation_deg": 1.4977147244033493,
|
||||
"i": 27,
|
||||
"j": 28
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.14643003383767556,
|
||||
"rotation_deg": 0.527768319167481,
|
||||
"i": 33,
|
||||
"j": 35
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.08545677470499786,
|
||||
"rotation_deg": 0.7336105280022196,
|
||||
"i": 34,
|
||||
"j": 35
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.025212589301108413,
|
||||
"rotation_deg": 1.5817598444384953,
|
||||
"i": 35,
|
||||
"j": 36
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,399 +0,0 @@
|
||||
{
|
||||
"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.2977596922478565,
|
||||
-6.733076264476427e-05,
|
||||
0.7204978345266887
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7851511464150316,
|
||||
1.2026608220810453,
|
||||
-0.835510052785851
|
||||
],
|
||||
"quaternion_xyzw": [
|
||||
-0.0067746045444860015,
|
||||
0.010544431385358818,
|
||||
-0.0072186568687935965,
|
||||
0.9998953998759249
|
||||
],
|
||||
"matrix_4x4": [
|
||||
[
|
||||
0.9996734119195402,
|
||||
0.014292934887214408,
|
||||
0.021184463964312037,
|
||||
1.2977596922478565
|
||||
],
|
||||
[
|
||||
-0.01457867229834346,
|
||||
0.9998039914525529,
|
||||
0.013395558575925315,
|
||||
-6.733076264476427e-05
|
||||
],
|
||||
[
|
||||
-0.020988849781798404,
|
||||
-0.013700025104115046,
|
||||
0.9996858394000506,
|
||||
0.7204978345266887
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"estimation": {
|
||||
"stations": 38,
|
||||
"pairs": 39,
|
||||
"residuals": {
|
||||
"pairs": 39,
|
||||
"translation_m": {
|
||||
"rms": 0.07984780651249465,
|
||||
"median": 0.05392926910429046,
|
||||
"p90": 0.11822807898946641,
|
||||
"p95": 0.14420733112402187,
|
||||
"max": 0.2330103519747209
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 0.961176171904301,
|
||||
"median": 0.8002960897011372,
|
||||
"p90": 1.422624767604584,
|
||||
"p95": 1.4793113785217964,
|
||||
"max": 1.7237415928660533
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.1353760421849012,
|
||||
"rotation_deg": 0.5166365681634405
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.11487543918383647,
|
||||
"rotation_deg": 0.5717221816616095
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.06210064976174764,
|
||||
"rotation_deg": 0.4402983357286552
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.054355548674489614,
|
||||
"rotation_deg": 0.5821611725015269
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.02391657882546618,
|
||||
"rotation_deg": 0.32738975448002894
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.07775220171630512,
|
||||
"rotation_deg": 0.8706732532310371
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.06265840922697155,
|
||||
"rotation_deg": 0.8002960897011372
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.09282561040685418,
|
||||
"rotation_deg": 1.0484294819479303
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.034474807960716856,
|
||||
"rotation_deg": 0.40941928556312257
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.13163863821198593,
|
||||
"rotation_deg": 1.1065820279922887
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.0018609877360485794,
|
||||
"rotation_deg": 0.6081452332544832
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.06488404028756532,
|
||||
"rotation_deg": 0.05192051717362457
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.1147488321233841,
|
||||
"rotation_deg": 0.9937108406424444
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.05392926910429046,
|
||||
"rotation_deg": 0.9700546737541248
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.02302185790244543,
|
||||
"rotation_deg": 1.6149869587730064
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.2330103519747209,
|
||||
"rotation_deg": 0.5939965715201481
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.2236889315761065,
|
||||
"rotation_deg": 1.1151964340680336
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.04090994021171706,
|
||||
"rotation_deg": 0.7785618518380144
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.054652520003134704,
|
||||
"rotation_deg": 1.124375763416717
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.04547500551567543,
|
||||
"rotation_deg": 0.6556954445211121
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.02484690940972022,
|
||||
"rotation_deg": 1.7237415928660533
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.056832852413462566,
|
||||
"rotation_deg": 0.5831473606925555
|
||||
},
|
||||
{
|
||||
"pair_index": 22,
|
||||
"translation_m": 0.03998842216950218,
|
||||
"rotation_deg": 1.124691549503354
|
||||
},
|
||||
{
|
||||
"pair_index": 23,
|
||||
"translation_m": 0.052224143195848054,
|
||||
"rotation_deg": 1.1184574012171749
|
||||
},
|
||||
{
|
||||
"pair_index": 24,
|
||||
"translation_m": 0.06305629062353875,
|
||||
"rotation_deg": 0.5252019728243343
|
||||
},
|
||||
{
|
||||
"pair_index": 25,
|
||||
"translation_m": 0.0552093328283033,
|
||||
"rotation_deg": 0.08705258513790126
|
||||
},
|
||||
{
|
||||
"pair_index": 26,
|
||||
"translation_m": 0.08502281683725502,
|
||||
"rotation_deg": 0.6459827373704314
|
||||
},
|
||||
{
|
||||
"pair_index": 27,
|
||||
"translation_m": 0.03727269737723399,
|
||||
"rotation_deg": 0.7631660358041192
|
||||
},
|
||||
{
|
||||
"pair_index": 28,
|
||||
"translation_m": 0.04543722819346571,
|
||||
"rotation_deg": 1.4218618784137362
|
||||
},
|
||||
{
|
||||
"pair_index": 29,
|
||||
"translation_m": 0.02559982081388642,
|
||||
"rotation_deg": 1.388947601285772
|
||||
},
|
||||
{
|
||||
"pair_index": 30,
|
||||
"translation_m": 0.01827234061769129,
|
||||
"rotation_deg": 1.206866980510853
|
||||
},
|
||||
{
|
||||
"pair_index": 31,
|
||||
"translation_m": 0.06863732394647468,
|
||||
"rotation_deg": 1.4642363140494394
|
||||
},
|
||||
{
|
||||
"pair_index": 32,
|
||||
"translation_m": 0.04770629220585725,
|
||||
"rotation_deg": 0.6244903967618446
|
||||
},
|
||||
{
|
||||
"pair_index": 33,
|
||||
"translation_m": 0.027074935362624366,
|
||||
"rotation_deg": 1.3688430767407767
|
||||
},
|
||||
{
|
||||
"pair_index": 34,
|
||||
"translation_m": 0.03301156138156032,
|
||||
"rotation_deg": 1.4256763243679755
|
||||
},
|
||||
{
|
||||
"pair_index": 35,
|
||||
"translation_m": 0.054240160043693975,
|
||||
"rotation_deg": 0.6486412679040612
|
||||
},
|
||||
{
|
||||
"pair_index": 36,
|
||||
"translation_m": 0.021992835671895014,
|
||||
"rotation_deg": 0.23769553016909395
|
||||
},
|
||||
{
|
||||
"pair_index": 37,
|
||||
"translation_m": 0.031890552923517286,
|
||||
"rotation_deg": 1.0832171246083164
|
||||
},
|
||||
{
|
||||
"pair_index": 38,
|
||||
"translation_m": 0.025286131886091672,
|
||||
"rotation_deg": 1.2215923174512224
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ground": {
|
||||
"planes": 38,
|
||||
"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.0061384486036208784,
|
||||
0.006616582082990767,
|
||||
0.004372364137893693
|
||||
],
|
||||
"rotation_deg": [
|
||||
0.06746979098802125,
|
||||
0.05919345389075773,
|
||||
0.16157711056486687
|
||||
],
|
||||
"warning": "conditional local estimate; bootstrap is the primary stability check"
|
||||
},
|
||||
"weighted_jacobian_condition_number": 6.965138763120991,
|
||||
"solver_multistart": {
|
||||
"runs": 12,
|
||||
"candidates_relative_to_best": [
|
||||
{
|
||||
"cost": 152.7941369486616,
|
||||
"success": true,
|
||||
"translation_m": 5.01999140559543e-10,
|
||||
"rotation_deg": 7.693408441139155e-09
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866156,
|
||||
"success": true,
|
||||
"translation_m": 1.7788160768171148e-10,
|
||||
"rotation_deg": 3.2213546311649044e-09
|
||||
},
|
||||
{
|
||||
"cost": 152.7941369486616,
|
||||
"success": true,
|
||||
"translation_m": 2.04052729806573e-10,
|
||||
"rotation_deg": 5.128825141169912e-09
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866287,
|
||||
"success": true,
|
||||
"translation_m": 3.6987521890593636e-09,
|
||||
"rotation_deg": 1.471926437983498e-07
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866153,
|
||||
"success": true,
|
||||
"translation_m": 3.0367491381779985e-10,
|
||||
"rotation_deg": 3.27791256123688e-09
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866173,
|
||||
"success": true,
|
||||
"translation_m": 6.928454212106221e-10,
|
||||
"rotation_deg": 2.8875952395155353e-08
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866153,
|
||||
"success": true,
|
||||
"translation_m": 1.9628898247072475e-10,
|
||||
"rotation_deg": 3.769277991759282e-09
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866167,
|
||||
"success": true,
|
||||
"translation_m": 1.8108640246434077e-09,
|
||||
"rotation_deg": 5.6964069970580913e-08
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866145,
|
||||
"success": true,
|
||||
"translation_m": 0.0,
|
||||
"rotation_deg": 0.0
|
||||
},
|
||||
{
|
||||
"cost": 152.7941369486631,
|
||||
"success": true,
|
||||
"translation_m": 3.8878373558477815e-09,
|
||||
"rotation_deg": 1.567977862312646e-07
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866162,
|
||||
"success": true,
|
||||
"translation_m": 1.928688225276107e-09,
|
||||
"rotation_deg": 6.007537452298471e-08
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866165,
|
||||
"success": true,
|
||||
"translation_m": 6.380398519737792e-10,
|
||||
"rotation_deg": 2.6596239917974983e-08
|
||||
}
|
||||
]
|
||||
},
|
||||
"bootstrap": {
|
||||
"runs": 100,
|
||||
"order": [
|
||||
"x_m",
|
||||
"y_m",
|
||||
"z_m",
|
||||
"roll_deg",
|
||||
"pitch_deg",
|
||||
"yaw_deg"
|
||||
],
|
||||
"std": [
|
||||
0.003223574650236103,
|
||||
0.003334649335095665,
|
||||
0.0016858977028131694,
|
||||
0.0980155224808408,
|
||||
0.07461769310738842,
|
||||
0.11886090357304822
|
||||
],
|
||||
"p025": [
|
||||
1.2916920074190312,
|
||||
-0.005413227092587022,
|
||||
0.7171569502776788,
|
||||
-0.9695959273616203,
|
||||
1.066246526462818,
|
||||
-1.100751980508544
|
||||
],
|
||||
"p975": [
|
||||
1.3034038047298853,
|
||||
0.007138524793626496,
|
||||
0.7235834879340349,
|
||||
-0.6076030002143074,
|
||||
1.3517461178267727,
|
||||
-0.6468477685453492
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
label,roll_correction_deg,pitch_correction_deg,yaw_correction_deg,selected_pair_translation_cm,selected_pair_rotation_deg,all_pair_translation_rms_m,all_pair_rotation_rms_deg,normalized_global_rms,normalized_global_rms_change,improved_pairs,worsened_pairs,global_consistency_signal,ground_normal_tilt_rms_deg,ground_height_rms_m
|
||||
baseline,0.0,0.0,0.0,13.53760421849012,0.5166365681634405,0.07984780651249465,0.961176171904301,2.4991413356769443,0.0,0,0,False,1.6662748432297785,0.03471396517121729
|
||||
pitch_+0.100,0.0,0.1,0.0,13.322368374959654,0.4851311566747633,0.07937622701088871,0.9709178397492695,2.508178616440067,0.009037280763122713,17,22,False,1.661255702204205,0.03471396517121729
|
||||
pitch_+0.200,0.0,0.2,0.0,13.107741962217032,0.45594025406310634,0.07905894857986535,0.991843015836615,2.536757223795175,0.03761588811823069,17,22,False,1.6622470214176333,0.03471396517121729
|
||||
pitch_+0.300,0.0,0.3,0.0,12.89375489636804,0.4295360884271374,0.07889765995849754,1.0232658257505307,2.5842267894606974,0.0850854537837531,16,23,False,1.669238092496052,0.034713965171217276
|
||||
pitch_+0.000_roll_-0.200,-0.2,0.0,0.0,13.395035432680281,0.501501180601739,0.08136434456273667,0.9671396098919116,2.5277457796497282,0.028604443972783944,12,27,False,1.7107124278398285,0.034713965171217304
|
||||
pitch_+0.000_roll_-0.100,-0.1,0.0,0.0,13.466127879921094,0.5071126466746416,0.08054864611850543,0.958376027630505,2.503831503507573,0.004690167830628589,13,26,False,1.685676496509504,0.034713965171217304
|
||||
pitch_+0.000_roll_+0.100,0.1,0.0,0.0,13.609457775458583,0.5298619890141043,0.07926481666577584,0.9754404878748625,2.5137822192795105,0.014640883602566213,23,16,False,1.652705907802981,0.034713965171217304
|
||||
pitch_+0.100_roll_-0.200,-0.2,0.1,0.0,13.180263465884618,0.4689801268726104,0.08100204146829142,0.9768217811391146,2.5379628557651293,0.03882152008818496,14,25,False,1.7058242505297496,0.034713965171217304
|
||||
pitch_+0.100_roll_-0.100,-0.1,0.1,0.0,13.251119920699841,0.47497594758710626,0.08013195956996022,0.9681458624297539,2.5134991588556583,0.014357823178714035,17,22,False,1.6807154082401394,0.03471396517121729
|
||||
pitch_+0.100_roll_+0.100,0.1,0.1,0.0,13.394001942784334,0.4991919434350986,0.07873808044179886,0.9850410981186302,2.5221217227950565,0.022980387118112233,19,20,False,1.6476453039285432,0.0347139651712173
|
||||
pitch_+0.200_roll_-0.200,-0.2,0.2,0.0,12.966120616418092,0.43871598020210434,0.08079188106279227,0.9976230703529106,2.567477045713792,0.0683357100368478,15,24,False,1.7067898021773054,0.034713965171217304
|
||||
pitch_+0.200_roll_-0.100,-0.1,0.2,0.0,13.036731063691272,0.44511961856905025,0.07986863254178682,0.989129669887256,2.5426579402355864,0.04351660455864215,19,20,False,1.6816953294526065,0.03471396517121731
|
||||
pitch_+0.200_roll_+0.100,0.1,0.2,0.0,13.179146202690733,0.4708734484159498,0.07836629319834118,1.0056724288764685,2.5499055866185576,0.0507642509416133,19,20,False,1.648644705864238,0.034713965171217304
|
||||
pitch_+0.300_roll_-0.200,-0.2,0.3,0.0,12.752638042306833,0.4112074527490782,0.08073488194995813,1.0288692761236073,2.6156330810711834,0.11649174539423912,15,24,False,1.7135991876939975,0.03471396517121731
|
||||
pitch_+0.300_roll_-0.100,-0.1,0.3,0.0,12.822991835578721,0.41803263983275235,0.07976001272785865,1.020636005744607,2.5906476559016074,0.0915063202246631,16,23,False,1.6886059172123598,0.0347139651712173
|
||||
pitch_+0.300_roll_+0.100,0.1,0.3,0.0,12.964919880829425,0.44535539842024163,0.07815149226179761,1.036676092226784,2.596507573236926,0.09736623755998153,18,21,False,1.6556931398905776,0.034713965171217304
|
||||
yaw_-0.200_diagnostic,0.0,0.0,-0.2,13.607478813867315,0.5166365681634414,0.08024771376258277,0.961176171904301,2.5042597228312786,0.005118387154334325,18,21,False,1.6662748432297787,0.0347139651712173
|
||||
yaw_+0.200_diagnostic,0.0,0.0,0.2,13.479715314434312,0.5166365681634427,0.08028135387591602,0.961176171904301,2.5046909681249,0.005549632447955588,13,26,False,1.6662748432297787,0.0347139651712173
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,19 +0,0 @@
|
||||
label,roll_correction_deg,pitch_correction_deg,yaw_correction_deg,selected_pair_translation_cm,selected_pair_rotation_deg,all_pair_translation_rms_m,all_pair_rotation_rms_deg,normalized_global_rms,normalized_global_rms_change,improved_pairs,worsened_pairs,global_consistency_signal,ground_normal_tilt_rms_deg,ground_height_rms_m
|
||||
baseline,0.0,0.0,0.0,7.9716047501124,0.5471090190705759,0.10039155672864886,1.0152957563636194,2.855641391442648,0.0,0,0,False,1.6662748432297785,0.03471396517121729
|
||||
pitch_+0.100,0.0,0.1,0.0,7.877722926634115,0.5242415332114175,0.10031155812336309,1.0345690614552345,2.8820645462820917,0.026423154839443797,27,39,False,1.661255702204205,0.03471396517121729
|
||||
pitch_+0.200,0.0,0.2,0.0,7.783902534642328,0.5013877557627758,0.10034501725742666,1.0647782869175946,2.9262023505769332,0.07056095913428528,26,40,False,1.6622470214176333,0.03471396517121729
|
||||
pitch_+0.300,0.0,0.3,0.0,7.69014529426882,0.4785497243321324,0.1004916878666913,1.1050268752403856,2.9872678674890754,0.1316264760464274,25,41,False,1.669238092496052,0.034713965171217276
|
||||
pitch_+0.000_roll_-0.200,-0.2,0.0,0.0,7.822046878606513,0.5457706857344996,0.10257010426899679,1.0267538544989139,2.9026099336312234,0.04696854218857549,22,44,False,1.7107124278398285,0.034713965171217304
|
||||
pitch_+0.000_roll_-0.100,-0.1,0.0,0.0,7.896797905766369,0.545955313109902,0.10143505999644054,1.0151691591975842,2.870174601960012,0.014533210517364115,25,41,False,1.685676496509504,0.034713965171217304
|
||||
pitch_+0.000_roll_+0.100,0.1,0.0,0.0,8.046465471725153,0.5492256932471735,0.09944242267101946,1.0271293323765827,2.859282573021794,0.0036411815791459468,38,28,False,1.652705907802981,0.034713965171217304
|
||||
pitch_+0.100_roll_-0.200,-0.2,0.1,0.0,7.728092854641688,0.5228446714705329,0.10256719458254226,1.0458160126880083,2.929664876976855,0.07402348553420701,24,42,False,1.7058242505297496,0.034713965171217304
|
||||
pitch_+0.100_roll_-0.100,-0.1,0.1,0.0,7.802880223772661,0.5230373912267472,0.10139401948155134,1.0344448200154543,2.896999001946205,0.04135761050355713,31,35,False,1.6807154082401394,0.03471396517121729
|
||||
pitch_+0.100_roll_+0.100,0.1,0.1,0.0,7.952619015892104,0.5264501536349752,0.09932272291285332,1.0461846579706375,2.885136161262053,0.029494769819405242,30,36,False,1.6476453039285432,0.0347139651712173
|
||||
pitch_+0.200_roll_-0.200,-0.2,0.2,0.0,7.634199171873722,0.49992704876652105,0.10267526429269669,1.0757093910702569,2.9741363007059745,0.11849490926332651,27,39,False,1.7067898021773054,0.034713965171217304
|
||||
pitch_+0.200_roll_-0.100,-0.1,0.2,0.0,7.709023440769963,0.5001285987059726,0.10146524807256484,1.0646575627535269,2.9414386837539155,0.08579729231126754,30,36,False,1.6816953294526065,0.03471396517121731
|
||||
pitch_+0.200_roll_+0.100,0.1,0.2,0.0,7.8588344993060915,0.5036965847149959,0.09931755660454081,1.0760678191977628,2.928699135454269,0.07305774401162113,29,37,False,1.648644705864238,0.034713965171217304
|
||||
pitch_+0.300_roll_-0.200,-0.2,0.3,0.0,7.540367539154748,0.47701910095086286,0.102893833307342,1.1155635852142416,3.035256961724302,0.17961557028165398,25,41,False,1.7135991876939975,0.03471396517121731
|
||||
pitch_+0.300_roll_-0.100,-0.1,0.3,0.0,7.615229271779279,0.47723032409407057,0.10164837804314657,1.1049105360171487,3.0027098217989345,0.14706843035628658,25,41,False,1.6886059172123598,0.0347139651712173
|
||||
pitch_+0.300_roll_+0.100,0.1,0.3,0.0,7.7651136462045685,0.48096817789925783,0.09942680753866891,1.1159092500059349,2.989195517179804,0.13355412573715597,28,38,False,1.6556931398905776,0.034713965171217304
|
||||
yaw_-0.200_diagnostic,0.0,0.0,-0.2,7.9342751812671235,0.5471090190705757,0.10053142254152782,1.0152957563636194,2.8576089058597884,0.0019675144171404924,35,31,False,1.6662748432297787,0.0347139651712173
|
||||
yaw_+0.200_diagnostic,0.0,0.0,0.2,8.012589151848083,0.547109019070576,0.10091495789660097,1.0152957563636194,2.8630112438600364,0.007369852417388412,18,48,False,1.6662748432297787,0.0347139651712173
|
||||
|
-28131
File diff suppressed because it is too large
Load Diff
-19
@@ -1,19 +0,0 @@
|
||||
label,roll_correction_deg,pitch_correction_deg,yaw_correction_deg,selected_pair_translation_cm,selected_pair_rotation_deg,all_pair_translation_rms_m,all_pair_rotation_rms_deg,normalized_global_rms,normalized_global_rms_change,improved_pairs,worsened_pairs,global_consistency_signal,ground_normal_tilt_rms_deg,ground_height_rms_m
|
||||
baseline,0.0,0.0,0.0,9.17040157943579,0.3948131792835417,0.11878243181951181,1.1425260172834293,3.296235617224735,0.0,0,0,False,1.6662748432297785,0.03471396517121729
|
||||
pitch_+0.100,0.0,0.1,0.0,9.076928136371041,0.4171107485761563,0.11876672804528438,1.1650719587800913,3.3274291807303316,0.031193563505596433,37,43,False,1.661255702204205,0.03471396517121729
|
||||
pitch_+0.200,0.0,0.2,0.0,8.983515248729091,0.4394867360130287,0.11886418170047355,1.2000618469690334,3.378175724075376,0.08194010685064068,33,47,False,1.6622470214176333,0.03471396517121729
|
||||
pitch_+0.300,0.0,0.3,0.0,8.890164410286015,0.4619296835950138,0.11907438084482405,1.246448116042569,3.4476100262900324,0.1513744090652973,29,51,False,1.669238092496052,0.034713965171217276
|
||||
pitch_+0.000_roll_-0.200,-0.2,0.0,0.0,9.01972941526644,0.4032977537513619,0.12043024872839399,1.1611526935950138,3.3458153318563415,0.049579714631606375,32,48,False,1.7107124278398285,0.034713965171217304
|
||||
pitch_+0.000_roll_-0.100,-0.1,0.0,0.0,9.095041148790378,0.3984113441028921,0.1195670451553767,1.1451882592248208,3.3112438616237037,0.015008244398968529,36,44,False,1.685676496509504,0.034713965171217304
|
||||
pitch_+0.000_roll_+0.100,0.1,0.0,0.0,9.245809148607497,0.39253869750368725,0.1180779565326178,1.153258101553409,3.3010571825949637,0.004821565370228598,39,41,False,1.652705907802981,0.034713965171217304
|
||||
pitch_+0.100_roll_-0.200,-0.2,0.1,0.0,8.926223519858327,0.4251505609368216,0.12047176074785593,1.1833438511380916,3.3773641697603143,0.08112855253557916,35,45,False,1.7058242505297496,0.034713965171217304
|
||||
pitch_+0.100_roll_-0.100,-0.1,0.1,0.0,9.001551548682645,0.4205181630564456,0.1195801596045202,1.1676828282839524,3.342708269995132,0.046472652770396916,34,46,False,1.6807154082401394,0.03471396517121729
|
||||
pitch_+0.100_roll_+0.100,0.1,0.1,0.0,9.152351713867697,0.41495850563128295,0.11803306342745587,1.175598202053685,3.331793234208173,0.035557616983437956,33,47,False,1.6476453039285432,0.0347139651712173
|
||||
pitch_+0.200_roll_-0.200,-0.2,0.2,0.0,8.832778133209484,0.4471243504044202,0.12062476910644687,1.2178088730560497,3.428172658132847,0.13193704090811176,30,50,False,1.7067898021773054,0.034713965171217304
|
||||
pitch_+0.200_roll_-0.100,-0.1,0.2,0.0,8.908122483450981,0.44272195299870193,0.11970563817510238,1.2025967761770837,3.3936310861155006,0.09739546889076545,33,47,False,1.6816953294526065,0.03471396517121731
|
||||
pitch_+0.200_roll_+0.100,0.1,0.2,0.0,9.058954849462527,0.4374446064319599,0.11810204126073977,1.2102837520093128,3.3820679918494174,0.0858323746246823,32,48,False,1.648644705864238,0.034713965171217304
|
||||
pitch_+0.300_roll_-0.200,-0.2,0.3,0.0,8.739394768298625,0.469202063453847,0.1208887180452031,1.263543756747655,3.4973996284538247,0.20116401122908956,29,51,False,1.7135991876939975,0.03471396517121731
|
||||
pitch_+0.300_roll_-0.100,-0.1,0.3,0.0,8.81475545648032,0.46500876133584307,0.11994299492844523,1.2488889095688314,3.4631521547194706,0.16691653749473545,30,50,False,1.6886059172123598,0.0347139651712173
|
||||
pitch_+0.300_roll_+0.100,0.1,0.3,0.0,8.96562003954328,0.45998721539756443,0.11828455597352863,1.2562925755921872,3.4510257337050003,0.1547901164802652,29,51,False,1.6556931398905776,0.034713965171217304
|
||||
yaw_-0.200_diagnostic,0.0,0.0,-0.2,9.118174501598277,0.39481317928354154,0.11873527555886121,1.142526017283429,3.295555956965929,-0.0006796602588061695,45,35,True,1.6662748432297787,0.0347139651712173
|
||||
yaw_+0.200_diagnostic,0.0,0.0,0.2,9.225647367504836,0.39481317928354204,0.1194719055604376,1.142526017283429,3.306187727273662,0.009952110048927043,27,53,False,1.6662748432297787,0.0347139651712173
|
||||
|
-33675
File diff suppressed because it is too large
Load Diff
@@ -1,46 +0,0 @@
|
||||
{
|
||||
"convention": "T_body_lidar maps raw LiDAR points into rear-axle body frame",
|
||||
"translation_m": [
|
||||
1.2977596922478565,
|
||||
-0.00006733076264476427,
|
||||
0.7204978345266887
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7851511464150316,
|
||||
1.2026608220810453,
|
||||
-0.835510052785851
|
||||
],
|
||||
"quaternion_xyzw": [
|
||||
-0.0067746045444860015,
|
||||
0.010544431385358818,
|
||||
-0.0072186568687935965,
|
||||
0.9998953998759249
|
||||
],
|
||||
"matrix_4x4": [
|
||||
[
|
||||
0.9996734119195402,
|
||||
0.014292934887214408,
|
||||
0.021184463964312037,
|
||||
1.2977596922478565
|
||||
],
|
||||
[
|
||||
-0.01457867229834346,
|
||||
0.9998039914525529,
|
||||
0.013395558575925315,
|
||||
-0.00006733076264476427
|
||||
],
|
||||
[
|
||||
-0.020988849781798404,
|
||||
-0.013700025104115046,
|
||||
0.9996858394000506,
|
||||
0.7204978345266887
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,405 +0,0 @@
|
||||
{
|
||||
"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.2977596922478565,
|
||||
-6.733076264476427e-05,
|
||||
0.7204978345266887
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7851511464150316,
|
||||
1.2026608220810453,
|
||||
-0.835510052785851
|
||||
],
|
||||
"quaternion_xyzw": [
|
||||
-0.0067746045444860015,
|
||||
0.010544431385358818,
|
||||
-0.0072186568687935965,
|
||||
0.9998953998759249
|
||||
],
|
||||
"matrix_4x4": [
|
||||
[
|
||||
0.9996734119195402,
|
||||
0.014292934887214408,
|
||||
0.021184463964312037,
|
||||
1.2977596922478565
|
||||
],
|
||||
[
|
||||
-0.01457867229834346,
|
||||
0.9998039914525529,
|
||||
0.013395558575925315,
|
||||
-6.733076264476427e-05
|
||||
],
|
||||
[
|
||||
-0.020988849781798404,
|
||||
-0.013700025104115046,
|
||||
0.9996858394000506,
|
||||
0.7204978345266887
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"estimation": {
|
||||
"stations": 38,
|
||||
"pairs": 39,
|
||||
"residuals": {
|
||||
"pairs": 39,
|
||||
"translation_m": {
|
||||
"rms": 0.07984780651249465,
|
||||
"median": 0.05392926910429046,
|
||||
"p90": 0.11822807898946641,
|
||||
"p95": 0.14420733112402187,
|
||||
"max": 0.2330103519747209
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 0.961176171904301,
|
||||
"median": 0.8002960897011372,
|
||||
"p90": 1.422624767604584,
|
||||
"p95": 1.4793113785217964,
|
||||
"max": 1.7237415928660533
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.1353760421849012,
|
||||
"rotation_deg": 0.5166365681634405
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.11487543918383647,
|
||||
"rotation_deg": 0.5717221816616095
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.06210064976174764,
|
||||
"rotation_deg": 0.4402983357286552
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.054355548674489614,
|
||||
"rotation_deg": 0.5821611725015269
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.02391657882546618,
|
||||
"rotation_deg": 0.32738975448002894
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.07775220171630512,
|
||||
"rotation_deg": 0.8706732532310371
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.06265840922697155,
|
||||
"rotation_deg": 0.8002960897011372
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.09282561040685418,
|
||||
"rotation_deg": 1.0484294819479303
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.034474807960716856,
|
||||
"rotation_deg": 0.40941928556312257
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.13163863821198593,
|
||||
"rotation_deg": 1.1065820279922887
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.0018609877360485794,
|
||||
"rotation_deg": 0.6081452332544832
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.06488404028756532,
|
||||
"rotation_deg": 0.05192051717362457
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.1147488321233841,
|
||||
"rotation_deg": 0.9937108406424444
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.05392926910429046,
|
||||
"rotation_deg": 0.9700546737541248
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.02302185790244543,
|
||||
"rotation_deg": 1.6149869587730064
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.2330103519747209,
|
||||
"rotation_deg": 0.5939965715201481
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.2236889315761065,
|
||||
"rotation_deg": 1.1151964340680336
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.04090994021171706,
|
||||
"rotation_deg": 0.7785618518380144
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.054652520003134704,
|
||||
"rotation_deg": 1.124375763416717
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.04547500551567543,
|
||||
"rotation_deg": 0.6556954445211121
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.02484690940972022,
|
||||
"rotation_deg": 1.7237415928660533
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.056832852413462566,
|
||||
"rotation_deg": 0.5831473606925555
|
||||
},
|
||||
{
|
||||
"pair_index": 22,
|
||||
"translation_m": 0.03998842216950218,
|
||||
"rotation_deg": 1.124691549503354
|
||||
},
|
||||
{
|
||||
"pair_index": 23,
|
||||
"translation_m": 0.052224143195848054,
|
||||
"rotation_deg": 1.1184574012171749
|
||||
},
|
||||
{
|
||||
"pair_index": 24,
|
||||
"translation_m": 0.06305629062353875,
|
||||
"rotation_deg": 0.5252019728243343
|
||||
},
|
||||
{
|
||||
"pair_index": 25,
|
||||
"translation_m": 0.0552093328283033,
|
||||
"rotation_deg": 0.08705258513790126
|
||||
},
|
||||
{
|
||||
"pair_index": 26,
|
||||
"translation_m": 0.08502281683725502,
|
||||
"rotation_deg": 0.6459827373704314
|
||||
},
|
||||
{
|
||||
"pair_index": 27,
|
||||
"translation_m": 0.03727269737723399,
|
||||
"rotation_deg": 0.7631660358041192
|
||||
},
|
||||
{
|
||||
"pair_index": 28,
|
||||
"translation_m": 0.04543722819346571,
|
||||
"rotation_deg": 1.4218618784137362
|
||||
},
|
||||
{
|
||||
"pair_index": 29,
|
||||
"translation_m": 0.02559982081388642,
|
||||
"rotation_deg": 1.388947601285772
|
||||
},
|
||||
{
|
||||
"pair_index": 30,
|
||||
"translation_m": 0.01827234061769129,
|
||||
"rotation_deg": 1.206866980510853
|
||||
},
|
||||
{
|
||||
"pair_index": 31,
|
||||
"translation_m": 0.06863732394647468,
|
||||
"rotation_deg": 1.4642363140494394
|
||||
},
|
||||
{
|
||||
"pair_index": 32,
|
||||
"translation_m": 0.04770629220585725,
|
||||
"rotation_deg": 0.6244903967618446
|
||||
},
|
||||
{
|
||||
"pair_index": 33,
|
||||
"translation_m": 0.027074935362624366,
|
||||
"rotation_deg": 1.3688430767407767
|
||||
},
|
||||
{
|
||||
"pair_index": 34,
|
||||
"translation_m": 0.03301156138156032,
|
||||
"rotation_deg": 1.4256763243679755
|
||||
},
|
||||
{
|
||||
"pair_index": 35,
|
||||
"translation_m": 0.054240160043693975,
|
||||
"rotation_deg": 0.6486412679040612
|
||||
},
|
||||
{
|
||||
"pair_index": 36,
|
||||
"translation_m": 0.021992835671895014,
|
||||
"rotation_deg": 0.23769553016909395
|
||||
},
|
||||
{
|
||||
"pair_index": 37,
|
||||
"translation_m": 0.031890552923517286,
|
||||
"rotation_deg": 1.0832171246083164
|
||||
},
|
||||
{
|
||||
"pair_index": 38,
|
||||
"translation_m": 0.025286131886091672,
|
||||
"rotation_deg": 1.2215923174512224
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ground": {
|
||||
"planes": 38,
|
||||
"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.0061384486036208784,
|
||||
0.006616582082990767,
|
||||
0.004372364137893693
|
||||
],
|
||||
"rotation_deg": [
|
||||
0.06746979098802125,
|
||||
0.05919345389075773,
|
||||
0.16157711056486687
|
||||
],
|
||||
"warning": "conditional local estimate; bootstrap is the primary stability check"
|
||||
},
|
||||
"weighted_jacobian_condition_number": 6.965138763120991,
|
||||
"solver_multistart": {
|
||||
"runs": 12,
|
||||
"candidates_relative_to_best": [
|
||||
{
|
||||
"cost": 152.7941369486616,
|
||||
"success": true,
|
||||
"translation_m": 5.01999140559543e-10,
|
||||
"rotation_deg": 7.693408441139155e-09
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866156,
|
||||
"success": true,
|
||||
"translation_m": 1.7788160768171148e-10,
|
||||
"rotation_deg": 3.2213546311649044e-09
|
||||
},
|
||||
{
|
||||
"cost": 152.7941369486616,
|
||||
"success": true,
|
||||
"translation_m": 2.04052729806573e-10,
|
||||
"rotation_deg": 5.128825141169912e-09
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866287,
|
||||
"success": true,
|
||||
"translation_m": 3.6987521890593636e-09,
|
||||
"rotation_deg": 1.471926437983498e-07
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866153,
|
||||
"success": true,
|
||||
"translation_m": 3.0367491381779985e-10,
|
||||
"rotation_deg": 3.27791256123688e-09
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866173,
|
||||
"success": true,
|
||||
"translation_m": 6.928454212106221e-10,
|
||||
"rotation_deg": 2.8875952395155353e-08
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866153,
|
||||
"success": true,
|
||||
"translation_m": 1.9628898247072475e-10,
|
||||
"rotation_deg": 3.769277991759282e-09
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866167,
|
||||
"success": true,
|
||||
"translation_m": 1.8108640246434077e-09,
|
||||
"rotation_deg": 5.6964069970580913e-08
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866145,
|
||||
"success": true,
|
||||
"translation_m": 0.0,
|
||||
"rotation_deg": 0.0
|
||||
},
|
||||
{
|
||||
"cost": 152.7941369486631,
|
||||
"success": true,
|
||||
"translation_m": 3.8878373558477815e-09,
|
||||
"rotation_deg": 1.567977862312646e-07
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866162,
|
||||
"success": true,
|
||||
"translation_m": 1.928688225276107e-09,
|
||||
"rotation_deg": 6.007537452298471e-08
|
||||
},
|
||||
{
|
||||
"cost": 152.79413694866165,
|
||||
"success": true,
|
||||
"translation_m": 6.380398519737792e-10,
|
||||
"rotation_deg": 2.6596239917974983e-08
|
||||
}
|
||||
]
|
||||
},
|
||||
"bootstrap": {
|
||||
"runs": 100,
|
||||
"order": [
|
||||
"x_m",
|
||||
"y_m",
|
||||
"z_m",
|
||||
"roll_deg",
|
||||
"pitch_deg",
|
||||
"yaw_deg"
|
||||
],
|
||||
"std": [
|
||||
0.003223574650236103,
|
||||
0.003334649335095665,
|
||||
0.0016858977028131694,
|
||||
0.0980155224808408,
|
||||
0.07461769310738842,
|
||||
0.11886090357304822
|
||||
],
|
||||
"p025": [
|
||||
1.2916920074190312,
|
||||
-0.005413227092587022,
|
||||
0.7171569502776788,
|
||||
-0.9695959273616203,
|
||||
1.066246526462818,
|
||||
-1.100751980508544
|
||||
],
|
||||
"p975": [
|
||||
1.3034038047298853,
|
||||
0.007138524793626496,
|
||||
0.7235834879340349,
|
||||
-0.6076030002143074,
|
||||
1.3517461178267727,
|
||||
-0.6468477685453492
|
||||
]
|
||||
},
|
||||
"selection": {
|
||||
"method": "Open3D B gated by Open3D-small_gicp cross-backend agreement",
|
||||
"selection_is_X_independent": true,
|
||||
"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."
|
||||
}
|
||||
}
|
||||
@@ -1,440 +0,0 @@
|
||||
{
|
||||
"recommended_method": "Open3D B gated by Open3D-small_gicp cross-backend agreement",
|
||||
"selection_is_X_independent": true,
|
||||
"second_batch_role": "estimation (dense RTK)",
|
||||
"first_batch_role": "auxiliary check only (sparse RTK)",
|
||||
"consensus": {
|
||||
"translation_m": [
|
||||
1.2977596922478565,
|
||||
-6.733076264476427e-05,
|
||||
0.7204978345266887
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7851511464150316,
|
||||
1.2026608220810453,
|
||||
-0.835510052785851
|
||||
],
|
||||
"estimation": {
|
||||
"pairs": 39,
|
||||
"translation_m": {
|
||||
"rms": 0.07984780651249465,
|
||||
"median": 0.05392926910429046,
|
||||
"p90": 0.11822807898946641,
|
||||
"p95": 0.14420733112402187,
|
||||
"max": 0.2330103519747209
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 0.961176171904301,
|
||||
"median": 0.8002960897011372,
|
||||
"p90": 1.422624767604584,
|
||||
"p95": 1.4793113785217964,
|
||||
"max": 1.7237415928660533
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.1353760421849012,
|
||||
"rotation_deg": 0.5166365681634405
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.11487543918383647,
|
||||
"rotation_deg": 0.5717221816616095
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.06210064976174764,
|
||||
"rotation_deg": 0.4402983357286552
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.054355548674489614,
|
||||
"rotation_deg": 0.5821611725015269
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.02391657882546618,
|
||||
"rotation_deg": 0.32738975448002894
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.07775220171630512,
|
||||
"rotation_deg": 0.8706732532310371
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.06265840922697155,
|
||||
"rotation_deg": 0.8002960897011372
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.09282561040685418,
|
||||
"rotation_deg": 1.0484294819479303
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.034474807960716856,
|
||||
"rotation_deg": 0.40941928556312257
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.13163863821198593,
|
||||
"rotation_deg": 1.1065820279922887
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.0018609877360485794,
|
||||
"rotation_deg": 0.6081452332544832
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.06488404028756532,
|
||||
"rotation_deg": 0.05192051717362457
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.1147488321233841,
|
||||
"rotation_deg": 0.9937108406424444
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.05392926910429046,
|
||||
"rotation_deg": 0.9700546737541248
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.02302185790244543,
|
||||
"rotation_deg": 1.6149869587730064
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.2330103519747209,
|
||||
"rotation_deg": 0.5939965715201481
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.2236889315761065,
|
||||
"rotation_deg": 1.1151964340680336
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.04090994021171706,
|
||||
"rotation_deg": 0.7785618518380144
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.054652520003134704,
|
||||
"rotation_deg": 1.124375763416717
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.04547500551567543,
|
||||
"rotation_deg": 0.6556954445211121
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.02484690940972022,
|
||||
"rotation_deg": 1.7237415928660533
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.056832852413462566,
|
||||
"rotation_deg": 0.5831473606925555
|
||||
},
|
||||
{
|
||||
"pair_index": 22,
|
||||
"translation_m": 0.03998842216950218,
|
||||
"rotation_deg": 1.124691549503354
|
||||
},
|
||||
{
|
||||
"pair_index": 23,
|
||||
"translation_m": 0.052224143195848054,
|
||||
"rotation_deg": 1.1184574012171749
|
||||
},
|
||||
{
|
||||
"pair_index": 24,
|
||||
"translation_m": 0.06305629062353875,
|
||||
"rotation_deg": 0.5252019728243343
|
||||
},
|
||||
{
|
||||
"pair_index": 25,
|
||||
"translation_m": 0.0552093328283033,
|
||||
"rotation_deg": 0.08705258513790126
|
||||
},
|
||||
{
|
||||
"pair_index": 26,
|
||||
"translation_m": 0.08502281683725502,
|
||||
"rotation_deg": 0.6459827373704314
|
||||
},
|
||||
{
|
||||
"pair_index": 27,
|
||||
"translation_m": 0.03727269737723399,
|
||||
"rotation_deg": 0.7631660358041192
|
||||
},
|
||||
{
|
||||
"pair_index": 28,
|
||||
"translation_m": 0.04543722819346571,
|
||||
"rotation_deg": 1.4218618784137362
|
||||
},
|
||||
{
|
||||
"pair_index": 29,
|
||||
"translation_m": 0.02559982081388642,
|
||||
"rotation_deg": 1.388947601285772
|
||||
},
|
||||
{
|
||||
"pair_index": 30,
|
||||
"translation_m": 0.01827234061769129,
|
||||
"rotation_deg": 1.206866980510853
|
||||
},
|
||||
{
|
||||
"pair_index": 31,
|
||||
"translation_m": 0.06863732394647468,
|
||||
"rotation_deg": 1.4642363140494394
|
||||
},
|
||||
{
|
||||
"pair_index": 32,
|
||||
"translation_m": 0.04770629220585725,
|
||||
"rotation_deg": 0.6244903967618446
|
||||
},
|
||||
{
|
||||
"pair_index": 33,
|
||||
"translation_m": 0.027074935362624366,
|
||||
"rotation_deg": 1.3688430767407767
|
||||
},
|
||||
{
|
||||
"pair_index": 34,
|
||||
"translation_m": 0.03301156138156032,
|
||||
"rotation_deg": 1.4256763243679755
|
||||
},
|
||||
{
|
||||
"pair_index": 35,
|
||||
"translation_m": 0.054240160043693975,
|
||||
"rotation_deg": 0.6486412679040612
|
||||
},
|
||||
{
|
||||
"pair_index": 36,
|
||||
"translation_m": 0.021992835671895014,
|
||||
"rotation_deg": 0.23769553016909395
|
||||
},
|
||||
{
|
||||
"pair_index": 37,
|
||||
"translation_m": 0.031890552923517286,
|
||||
"rotation_deg": 1.0832171246083164
|
||||
},
|
||||
{
|
||||
"pair_index": 38,
|
||||
"translation_m": 0.025286131886091672,
|
||||
"rotation_deg": 1.2215923174512224
|
||||
}
|
||||
]
|
||||
},
|
||||
"bootstrap_std": [
|
||||
0.003223574650236103,
|
||||
0.003334649335095665,
|
||||
0.0016858977028131694,
|
||||
0.0980155224808408,
|
||||
0.07461769310738842,
|
||||
0.11886090357304822
|
||||
],
|
||||
"batch1_auxiliary": {
|
||||
"pairs": 22,
|
||||
"translation_m": {
|
||||
"rms": 0.06067269746244947,
|
||||
"median": 0.042680679229823305,
|
||||
"p90": 0.090942947259565,
|
||||
"p95": 0.10135707648063859,
|
||||
"max": 0.14643003383767556
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 1.002984942285067,
|
||||
"median": 0.707406938077333,
|
||||
"p90": 1.573355332434981,
|
||||
"p95": 1.7757584051966382,
|
||||
"max": 1.8710372365314285
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.048343805321803004,
|
||||
"rotation_deg": 0.6668376546913104,
|
||||
"i": 0,
|
||||
"j": 3
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.0423483041362295,
|
||||
"rotation_deg": 1.7859688557628564,
|
||||
"i": 1,
|
||||
"j": 2
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.02300615185240312,
|
||||
"rotation_deg": 1.8710372365314285,
|
||||
"i": 2,
|
||||
"j": 3
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.09155252198785023,
|
||||
"rotation_deg": 0.6733340854508988,
|
||||
"i": 3,
|
||||
"j": 4
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.03158045213093479,
|
||||
"rotation_deg": 0.2310116592109763,
|
||||
"i": 3,
|
||||
"j": 5
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.07825296974670955,
|
||||
"rotation_deg": 0.7403656481818025,
|
||||
"i": 4,
|
||||
"j": 5
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.03623050776977002,
|
||||
"rotation_deg": 0.29976499205053747,
|
||||
"i": 5,
|
||||
"j": 6
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.017322045818086197,
|
||||
"rotation_deg": 1.0428116209013618,
|
||||
"i": 6,
|
||||
"j": 7
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.037890995883582496,
|
||||
"rotation_deg": 0.5003524050137443,
|
||||
"i": 6,
|
||||
"j": 9
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.055811972906268326,
|
||||
"rotation_deg": 0.9711899476368479,
|
||||
"i": 11,
|
||||
"j": 12
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.10187310566446957,
|
||||
"rotation_deg": 0.48973592009907335,
|
||||
"i": 17,
|
||||
"j": 18
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.0304808468879537,
|
||||
"rotation_deg": 1.3239848803794854,
|
||||
"i": 20,
|
||||
"j": 21
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.04462456608967399,
|
||||
"rotation_deg": 0.2812977599385038,
|
||||
"i": 20,
|
||||
"j": 22
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.03611683783839059,
|
||||
"rotation_deg": 0.7096084761069892,
|
||||
"i": 20,
|
||||
"j": 23
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.07267248449673575,
|
||||
"rotation_deg": 0.6614151319251916,
|
||||
"i": 21,
|
||||
"j": 24
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.04417889214251473,
|
||||
"rotation_deg": 0.537164719319421,
|
||||
"i": 22,
|
||||
"j": 23
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.020100630082582033,
|
||||
"rotation_deg": 1.4866116021028042,
|
||||
"i": 22,
|
||||
"j": 24
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.04301305432341711,
|
||||
"rotation_deg": 0.7052054000476768,
|
||||
"i": 24,
|
||||
"j": 26
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.0344886352240195,
|
||||
"rotation_deg": 1.4977147244033493,
|
||||
"i": 27,
|
||||
"j": 28
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.14643003383767556,
|
||||
"rotation_deg": 0.527768319167481,
|
||||
"i": 33,
|
||||
"j": 35
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.08545677470499786,
|
||||
"rotation_deg": 0.7336105280022196,
|
||||
"i": 34,
|
||||
"j": 35
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.025212589301108413,
|
||||
"rotation_deg": 1.5817598444384953,
|
||||
"i": 35,
|
||||
"j": 36
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"separate_backend_results": {
|
||||
"open3d_gicp": {
|
||||
"translation_m": [
|
||||
1.2978831677200011,
|
||||
-0.0030997734098957433,
|
||||
0.7217892226151688
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7572070226288585,
|
||||
1.1460424368859559,
|
||||
-0.8797812288284186
|
||||
]
|
||||
},
|
||||
"small_gicp": {
|
||||
"translation_m": [
|
||||
1.2996301155160686,
|
||||
-0.0035647011612625953,
|
||||
0.7218861757826791
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7871563544979889,
|
||||
1.1414557494228486,
|
||||
-0.9357571721886107
|
||||
]
|
||||
}
|
||||
},
|
||||
"warning": "AX rotation RMS remains about one degree; this is not centimetre-grade absolute certification."
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
-1267
File diff suppressed because it is too large
Load Diff
@@ -1,109 +0,0 @@
|
||||
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,4.069460063439237,24.612641616688823,0.742135248947238,0.1176855237061111,6,4.407651482488117,0.013825313356667012,0.06962701621921227,1.0,True,
|
||||
0,2,8.883155687691525,14.186041609026283,0.6152139070398225,0.12748244203393638,6,7.377377816318336,0.010848197501521375,0.23936253539883626,1.0,True,
|
||||
0,3,5.800196618465403,50.885974946353855,0.7200942109830172,0.11742249635115339,6,5.031984522656203,0.010896220625647894,0.1047126090415015,1.0,True,
|
||||
1,2,4.892046307546544,10.426600007662538,0.7419273778112828,0.11333156226718596,6,4.459403177706152,0.011700301190659394,0.07531112640817904,1.0,True,
|
||||
1,3,1.7315947839093804,26.273333329665036,0.860897030953885,0.10772639754828932,6,3.19377614050938,0.0031419813068167823,0.07553165598013784,1.0,True,
|
||||
1,4,1.6946255625760025,60.40345832959281,0.881875,0.10577894988132426,6,3.092963722704653,0.004385743087150129,0.11984963227966941,1.0,True,
|
||||
2,3,3.2805755806518446,36.69993333732758,0.7933853118712274,0.10942029884827265,6,3.7004807304428255,0.008219359847113026,0.1277049389798412,1.0,True,
|
||||
2,4,4.866335020594746,70.83005833725535,0.7129525942515864,0.11823277244188567,6,3.5207832348575936,0.003926646926802803,0.12676782091003777,1.0,True,
|
||||
2,5,1.8274406190287722,30.448549979291712,0.7434186132740082,0.11591916677323456,6,3.2245913426430066,0.005762289421636631,0.0417195018069042,1.0,True,
|
||||
3,4,1.75881263274858,34.13012499992777,0.8393594395095709,0.11198421236679276,6,2.9955796261301395,0.016040499501420776,0.10475252258183747,1.0,True,
|
||||
3,5,2.1020200425132134,67.14848331661929,0.7942090219957748,0.1150960059583273,6,3.466731955810642,0.01716401750472473,0.19985666972488197,1.0,True,
|
||||
3,6,5.791805311102367,61.163322289150074,0.6534504391468005,0.12221285442048085,6,4.065547866736895,0.010758157432153631,0.2541461196933768,1.0,True,
|
||||
4,5,3.30592832159088,101.27860831654709,0.7519675356615839,0.11239744207499523,6,3.538427973689991,0.007054246334297592,0.24517862996973167,1.0,True,
|
||||
4,6,6.453995240105232,95.29344728907782,0.6228429546865301,0.12861898753238143,6,5.239918976750594,0.01896562608787198,0.25933537698897335,1.0,True,
|
||||
4,7,9.537609568572432,26.32130681988008,0.6193556570268899,0.13116150037214716,6,6.94052030016787,0.01746189088684816,0.36780633600082835,1.0,True,
|
||||
5,6,3.7769167422851373,5.985161027469212,0.7384387717351092,0.11889495868628594,6,3.6057257786167156,0.00882639593332281,0.0737386250122742,1.0,True,
|
||||
5,7,6.565348405821576,74.95730149666699,0.6792642983119174,0.11864042030155272,6,4.820407924638239,0.009720083307578809,0.20972540690307045,1.0,True,
|
||||
5,8,6.3343271669452825,107.99940292217995,0.6467507736253273,0.12542317047495377,6,3.0799731272083655,0.01002585992591628,0.05691592874139322,1.0,True,
|
||||
6,7,3.1558607172566147,68.97214046919777,0.7476148072764279,0.11288592031143596,6,3.5859463118826977,0.010814191328094169,0.0266481566439959,1.0,True,
|
||||
6,8,3.3979014114419868,102.01424189471071,0.6804804804804805,0.11508385505331041,6,2.2706877166387276,0.004482804469688638,0.1044466289150781,1.0,True,
|
||||
6,9,0.28270347875173524,124.11602215258995,0.7371697154471545,0.11682527448508172,6,2.8975705145594723,0.005203408768588573,0.04849411501759064,1.0,True,
|
||||
7,8,4.78580085090425,33.04210142551296,0.664336521952416,0.11766047279270792,6,2.929070995599858,0.0018478739597912201,0.09974755915747875,1.0,True,
|
||||
7,9,2.876695741106431,166.91183737821345,0.6077132839890923,0.1180552047396233,6,3.7184930305903685,0.010919730241803961,0.14576304064343415,1.0,True,
|
||||
7,10,3.5227760858025783,151.5297683494061,0.8481789137380191,0.10615102438506704,6,2.8662462784517695,0.006788694147854834,0.052872203183928275,1.0,True,
|
||||
8,9,3.469611483011297,133.86973595269956,0.5943661971830986,0.11920565901187036,6,3.7883774947006965,0.0042443197269814905,0.10102914613043958,1.0,True,
|
||||
8,10,8.226583602288494,175.42813022508852,0.5924719507781397,0.12046539737502422,6,6.6212639471399966,0.012068925048483609,0.06971570917645852,1.0,True,
|
||||
8,11,1.865267488778983,173.7180803410843,0.6789593030194534,0.1124672015619688,6,2.333957745729889,0.006563181150688944,0.09301162138898374,1.0,True,
|
||||
9,10,5.488028285806731,41.558394272381754,0.6015824400204186,0.11914584090399423,6,5.490861355062907,0.023677817470035802,0.12091279277864625,1.0,True,
|
||||
9,11,4.718056434111957,39.84834438838189,0.5936159475145092,0.12220038333634799,6,2.975477564952316,0.010739868846460122,0.11267510434066752,1.0,True,
|
||||
9,12,4.0664516687652705,11.300244475855449,0.6125753012048193,0.12248054470736866,6,2.850813791288553,0.006578056867618694,0.0648765356282168,1.0,True,
|
||||
10,11,8.48963239412477,1.7100498839998592,0.5922981366459628,0.1252332170275593,6,3.561970732702301,0.0101884878590875,0.04905586883665525,1.0,True,
|
||||
10,12,7.8510898708654135,30.258149796526293,0.5541275333662877,0.12481360204475032,6,3.7517795436266956,0.031261518480906504,0.2822575477830575,1.0,True,
|
||||
10,13,7.303425556850936,93.89697482620899,0.4898572501878287,0.1234709130125476,6,5.011926866876523,0.002887507644989318,0.12861291537137956,1.0,True,
|
||||
11,12,0.684356309096518,28.54809991252644,0.8033488144707895,0.10033649821782255,6,2.8495161791494152,0.0037957676909615035,0.030493386938618566,1.0,True,
|
||||
11,13,4.983180422136547,92.18692494220912,0.48959881129271915,0.13002768142853224,6,7.500744983348576,0.04820000634069387,0.21663658694591276,1.0,True,
|
||||
11,14,7.513058208926106,116.17598776756182,0.5511551155115512,0.1363490361205856,6,8.69179713026475,0.020420243910966678,0.3388561639372597,1.0,True,
|
||||
12,13,4.470221622128888,63.638825029682685,0.5484109386548411,0.12959344453923985,6,6.303133528073185,0.011857268436770598,0.07665557322523474,1.0,True,
|
||||
12,14,7.042432348069883,87.62788785503537,0.5823908549191292,0.13141832933236727,6,7.376965777627224,0.010833935971029728,0.22584716035991784,1.0,True,
|
||||
12,15,9.425648786798952,64.11974003309916,0.5143102812922246,0.13728792513153318,6,10.6657111200586,0.012453922151317217,0.21281971313986298,1.0,True,
|
||||
13,14,2.6059162757855927,23.989062825352686,0.6649008254281138,0.11829356218038511,6,4.46953470312236,0.010710695211339957,0.05103080008067046,1.0,True,
|
||||
13,15,4.985522367267706,0.4809150034164723,0.6433105164903546,0.12280456147298241,6,5.48212715248282,0.002079348825514708,0.08095419399489742,1.0,True,
|
||||
13,16,5.330126890587504,0.570225046299944,0.5092755076460266,0.12767535698436475,6,5.1227851245513,0.01771530501608281,0.1987385247368959,1.0,True,
|
||||
14,15,2.3845573265941185,23.508147821936216,0.7934889434889435,0.10996554201681306,6,3.5978390564938083,0.010537581931095797,0.18886023198851049,1.0,True,
|
||||
14,16,7.871327660405588,24.55928787165262,0.5124335024124707,0.1271130929550258,6,6.773046277884419,0.0367675981786339,0.17067950171934768,1.0,True,
|
||||
14,17,6.334147330965719,0.13339551798522414,0.5997034840622684,0.12123178848040567,6,5.0521521307734485,0.007039639082169618,0.1420706023439064,1.0,True,
|
||||
15,16,10.188241681839806,1.051140049716416,0.4525684289463817,0.1310762605599437,6,10.161233588287896,0.03028489261617412,0.2306307424740811,1.0,True,
|
||||
15,17,8.639041695194567,23.641543339921444,0.5419370943584623,0.12926666329467473,6,7.1208904116826295,0.016749087599431237,0.21516518274709787,1.0,True,
|
||||
15,18,9.620687246763701,76.25281000098852,0.5239486723415068,0.13468232645821807,6,7.765728655204814,0.015824236097669597,0.5418501890608881,1.0,False,forward_reverse_rotation
|
||||
16,17,1.5531467972267479,24.69268338963786,0.725455688246386,0.11626130134637655,6,2.5539312507809044,0.008173066808338859,0.1459219364983215,1.0,True,
|
||||
16,18,0.5677742310084086,77.30395005070493,0.7509598157153826,0.11215936550371307,6,2.72958456426664,0.01007065253007885,0.024451533638690782,1.0,True,
|
||||
16,19,2.9811390265794215,109.91770005034847,0.61725,0.11278472852394253,6,3.8445921585562353,0.013911959588582991,0.09838261866068182,1.0,True,
|
||||
17,18,0.98603936348044,52.61126666106708,0.7936102236421725,0.10947670477666799,6,2.9613430589728713,0.004348617987976676,0.08578297576648478,1.0,True,
|
||||
17,19,3.326868398717413,85.22501666071064,0.6638372238172513,0.11457050422944211,6,4.039052271877423,0.011384309901198326,0.08601325248059774,1.0,True,
|
||||
17,20,1.702964560097507,146.95247656520317,0.6755903523172118,0.11461754659819628,6,2.9771145257220444,0.003070224389531284,0.041777705584758074,1.0,True,
|
||||
18,19,3.0423123591285863,32.61374999964355,0.7679796696315121,0.10951225500902462,6,3.162387301290471,0.0016757410207260358,0.05240557176555545,1.0,True,
|
||||
18,20,1.0853574230860805,94.34120990413592,0.7909488300334276,0.11336174254244849,6,2.472783746978993,0.0011490974177271606,0.05798276029492007,1.0,True,
|
||||
18,21,0.7190584934612743,134.43032499953063,0.7659654868371332,0.11623488568922577,6,2.3334272634442037,0.0007397588392132655,0.049540488476333674,1.0,True,
|
||||
19,20,1.9962827272376449,61.72745990449234,0.7140883977900553,0.1080327967474786,6,2.8867642059111027,0.008102122424322853,0.0646114560547033,1.0,True,
|
||||
19,21,3.133843614009462,101.81657499988698,0.6584615384615384,0.10963878686899117,6,2.8691912248684632,0.012913229197399395,0.08080164801156113,1.0,True,
|
||||
19,22,3.558853688535236,131.87013333415302,0.6261591020009761,0.11484815169172223,6,3.1506020281084415,0.008079663853152794,0.06664730348633674,1.0,True,
|
||||
20,21,1.4312693216245356,40.08911509539463,0.8130212871903398,0.10717601941116739,6,2.598682401671686,0.003986207075465725,0.014468856174509968,1.0,True,
|
||||
20,22,2.8745434122269677,70.1426734296607,0.709279368213228,0.11654592484503022,6,3.3550200552976293,0.004732316748497569,0.04653511032479733,1.0,True,
|
||||
20,23,2.368927629183393,88.7954400941961,0.7151155604993202,0.11440209684434971,6,3.0862044513861178,0.013864191008669256,0.04741774806449891,1.0,True,
|
||||
21,22,1.9888588003695142,30.053558334266054,0.7434966727162734,0.11011755646689264,6,3.014221192692681,0.0010075959724342985,0.03301381213076696,1.0,True,
|
||||
21,23,1.9477165743251885,48.70632499880147,0.7529083858458555,0.11149633235838309,6,3.077926485095861,0.001989351505445817,0.010666288445208057,1.0,True,
|
||||
21,24,3.76075382790461,86.89547500633407,0.7106949236076885,0.11526418670282225,6,3.884216729530811,0.0033123302523526757,0.010450448797924646,1.0,True,
|
||||
22,23,0.8778876913955667,18.652766664535406,0.8800913132284032,0.0910569893232571,6,2.4100478670835583,0.0032245216994413483,0.016462830433921317,1.0,True,
|
||||
22,24,2.2510479983846268,56.84191667206801,0.746915842188836,0.11145740682737049,6,2.851886485949151,0.01259476909551429,0.07575320422516746,1.0,True,
|
||||
22,25,3.452614527841686,105.36038662410485,0.6202953787517865,0.10996904036547328,6,3.4469213215286616,0.01971125516503169,0.10319789629151777,1.0,True,
|
||||
23,24,1.8212773036309853,38.18915000753262,0.7859065329092244,0.11467536863831725,6,2.8422525641977647,0.011606021246419816,0.08140725284903579,1.0,True,
|
||||
23,25,2.999856552735995,86.70761995956946,0.6364070141953955,0.11293944470788622,6,3.2389862166172447,0.02314438992859391,0.07068788850704667,1.0,True,
|
||||
23,26,1.7088514993141615,157.34900000166795,0.6150898203592814,0.11134349524292353,6,3.3995614886239296,0.039322949699257106,0.11562859307450143,1.0,True,
|
||||
24,25,1.2059352225587747,48.51846995203683,0.7858615254031769,0.11149776506996652,6,2.476851261276463,0.011240124367435099,0.1049569848741807,1.0,True,
|
||||
24,26,1.1958827550030364,119.15984999413537,0.7456781105429754,0.10341842736085993,6,2.5300194557440525,0.01395883182919579,0.08780591339848752,1.0,True,
|
||||
24,27,3.786115539231191,149.59794999698258,0.621380846325167,0.10953325191126222,6,3.7363642522268807,0.016637332395867215,0.10353943868518889,1.0,True,
|
||||
25,26,1.8270495459501794,70.64138004209858,0.8347382167873679,0.10115747661888057,6,3.0333095788198037,0.01268722454395532,0.041403863092781025,1.0,True,
|
||||
25,27,4.741885618180033,101.07948004494568,0.624412013026173,0.11277808045896366,6,3.9078457957611743,0.025589655197266314,0.15422514597254583,1.0,True,
|
||||
25,28,3.8640843382258447,141.59343004213218,0.5869307400379506,0.11770827672499123,6,4.799123781945888,0.022027669812843296,0.2897817423195282,1.0,True,
|
||||
26,27,2.939444415707082,30.43810000284707,0.6580285783482683,0.1098010629341849,6,3.5110471043097586,0.0028795138573569803,0.007524827744647535,1.0,True,
|
||||
26,28,2.285770454773634,70.95205000003368,0.6673413501607334,0.11114983317987888,6,3.8873517833668108,0.008151782060846088,0.22733511766651973,1.0,True,
|
||||
26,29,3.6568094249627374,131.92299999999997,0.567654409139593,0.1129321723600836,6,3.929185583738771,0.018525590401292088,0.6411617076853331,1.0,False,forward_reverse_rotation
|
||||
27,28,2.3764785758716087,40.513949997186636,0.795572759162937,0.10258057277674534,6,3.138921602248635,0.0021193681800924964,0.11642323746608753,1.0,True,
|
||||
27,29,4.061689152213973,101.48489999715295,0.7440454600411075,0.10506613395932038,6,3.1227510205159508,0.010617830050775887,0.010252586949293494,1.0,True,
|
||||
27,30,5.033742765789926,178.61309998505533,0.5825184112036702,0.11453665822491028,6,7.650962341345717,2.5431128502617377,2.5742599673919253,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
28,29,1.7860052935263149,60.970949999966315,0.829172610556348,0.101007907265047,6,3.8068503338763042,0.002050657211153992,0.060432422726630436,1.0,True,
|
||||
28,30,7.378510482049102,138.09914998778677,0.5397673314339981,0.12193285407050827,6,9.554349687793176,2.3478431587463846,1.5786016001583607,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
28,31,8.396001985859645,161.15751666826222,0.5045164398410213,0.12642928247376978,6,9.31764609998303,0.020394024193417442,0.4096021180283358,1.0,True,
|
||||
29,30,8.925911734961222,77.12819998782052,0.5217133364973896,0.12674065647229513,6,8.522188842167411,0.029506475723043876,0.11389243918851435,1.0,True,
|
||||
29,31,9.936139535050964,100.18656666829587,0.49500421331407246,0.12930714939449198,6,8.914982386428042,0.09268316078142827,0.5769686714189283,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
29,32,9.719184595429152,159.1482027457047,0.4949034656433625,0.12826034683961704,6,9.48481031343127,0.046228293643484374,0.3497292020413176,0.0,False,multistart_instability
|
||||
30,31,1.0176267260390144,23.058366680475352,0.8362783988460152,0.09839553390448733,6,3.4866604582833345,0.00292801654357991,0.07029435398214784,1.0,True,
|
||||
30,32,0.8427696971904044,82.02000275788396,0.8588193030774758,0.09922846236206209,6,3.665055653691297,0.007868521232743847,0.0646663588791515,1.0,True,
|
||||
30,33,1.1320092061720382,147.1799498371321,0.7985030295829868,0.09950089003213429,6,4.012416511656465,0.002818384349407474,0.04751878128625789,1.0,True,
|
||||
31,32,0.2771314063233405,58.9616360774086,0.8562575941676792,0.09641015722415121,6,3.1475922536183365,0.00743603397476557,0.05749362415769439,1.0,True,
|
||||
31,33,0.5409306841643147,124.12158315665668,0.7594021215043394,0.09971190839470828,6,3.924941555652805,0.008658288176145966,0.04699249624411687,1.0,True,
|
||||
31,34,0.9901318542574941,155.5976733552555,0.7827868852459017,0.09387821156002771,6,3.677769944550314,0.001760438169327793,0.07141137968742438,0.0,False,multistart_instability
|
||||
32,33,0.38765596924480794,65.15994707924807,0.859390009606148,0.09596734045987164,6,3.3457711754162425,0.007599187780672587,0.08086834965344242,1.0,True,
|
||||
32,34,1.0327853226589305,96.63603727784675,0.8306916426512968,0.09663160733562838,6,3.561692133355112,0.008708468398558678,0.031578495955716095,1.0,True,
|
||||
32,35,1.1947451269258382,131.6892972449946,0.8055028462998103,0.09329597448562056,6,3.202004817860687,0.002684669665422271,0.0241000049832631,1.0,True,
|
||||
33,34,0.7453275493729801,31.47609019859864,0.8550154872527996,0.09764473733600805,6,3.153108280248987,0.005560284067502743,0.07666131775182662,1.0,True,
|
||||
33,35,1.0924186931915323,66.52935016574651,0.8344316309719935,0.08989959394950665,6,3.014281766333208,0.0013737288250339052,0.028590963377823297,1.0,True,
|
||||
33,36,3.335020341384374,123.21987515531416,0.7655961609449982,0.10046425727734096,6,3.222688396070449,0.012544124903927084,0.05831564134554671,1.0,True,
|
||||
34,35,0.6186130964444055,35.05325996714787,0.8692633560837845,0.08711586696140278,6,2.9228018947680083,0.006834102546614079,0.04740606842462777,1.0,True,
|
||||
34,36,3.114273556969299,91.74378495671547,0.771256306140027,0.09836949441930562,6,3.7389528980898077,0.004832468349243269,0.046439990812924645,1.0,True,
|
||||
34,37,2.8155528331227235,126.08390993626574,0.722881252293017,0.10001696647063055,6,3.8298681993003196,0.0035748664819913244,0.09211471145637762,1.0,True,
|
||||
35,36,2.4989423629184655,56.69052498956759,0.7697728101081278,0.09462474495647087,6,3.9667933176330195,0.004833519542267701,0.07989067847153554,1.0,True,
|
||||
35,37,2.2182956249874577,91.03064996911786,0.7351769110010868,0.09626480689856566,6,3.604883740945235,0.00826951342075784,0.05772015666601106,1.0,True,
|
||||
36,37,0.5129211474320938,34.34012497955026,0.8790139064475347,0.08686306972783016,6,2.86419132160936,0.0018743847744752261,0.0426177033120738,1.0,True,
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,109 +0,0 @@
|
||||
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,0.503306788400079,13.198324485965863,0.7947725072604066,0.09714510386272111,6,3.1645559924308744,0.00040681040655899406,0.015836974306118006,1.0,True,
|
||||
0,2,1.1601020961002007,26.306295080591493,0.8196783588704571,0.10111548255452249,6,3.1496351272437915,0.0024786662018318395,0.04305117802148083,1.0,True,
|
||||
0,3,1.1328421148283978,41.74134818989305,0.8170202208162759,0.10132889132333661,6,2.9636847958606816,0.001763337668740155,0.0152261810177797,1.0,True,
|
||||
1,2,0.6927979865343085,13.107970594625625,0.7847728726807421,0.08513837010948266,6,2.6465075635845983,0.003621881376895638,0.011153493139183525,1.0,True,
|
||||
1,3,0.7002295454253883,28.543023703927183,0.7885699962401304,0.09713251502799032,6,2.6341764735488145,0.0014094469663425105,0.02902143941632062,1.0,True,
|
||||
1,4,0.8045641659338967,57.731023816949346,0.7363658899355479,0.09863727794945644,6,2.7377680197189993,0.011592408190980286,0.17084480097436408,1.0,True,
|
||||
2,3,0.13949776780243606,15.435053109301553,0.918286915396742,0.07288259780013887,6,2.6383381348446657,0.002273707715582919,0.0026923349652342365,1.0,True,
|
||||
2,4,0.6701726006967371,44.62305322232371,0.8370341514089079,0.09441127521663696,6,3.0939727970407334,0.0041401597740440875,0.03075174550917053,1.0,True,
|
||||
2,5,0.8004226998626774,62.96656300910673,0.8235371293623721,0.10626795357026747,6,2.8027866429960917,0.009148796674106823,0.05256412309062332,1.0,True,
|
||||
3,4,0.5366157827594368,29.188000113022152,0.8850603941513032,0.07613142655207121,6,2.6417590251999084,0.0013904645484531576,0.0259404694028417,1.0,True,
|
||||
3,5,0.6760093701980526,47.53150989980517,0.8740046236835346,0.09072202522560696,6,2.686157540984516,0.006509933107990933,0.02545212192512678,1.0,True,
|
||||
3,6,1.4361364806393455,80.09091141471853,0.6795928884308168,0.10271649349323747,6,3.008166890660092,0.00828154435242913,0.026486510290724834,1.0,True,
|
||||
4,5,0.17861948949299924,18.343509786783002,0.8684444444444445,0.0784387700526441,6,2.6861954442048104,0.0025072579888539386,0.021042298559759365,1.0,True,
|
||||
4,6,1.5807073315069207,50.90291130169636,0.6781301745000636,0.10313081772493418,6,2.8455217243212387,0.003271195715147848,0.14716032493381534,1.0,True,
|
||||
4,7,1.7804201387535592,75.18775779751417,0.7873548387096774,0.09891997778736471,6,3.1802938248442474,0.004633577062239209,0.04472721629193465,1.0,True,
|
||||
5,6,1.5316987521992935,32.55940151491337,0.6911991765311374,0.10152400788085783,6,3.2393513551418907,0.005288907067525738,0.05494235971756111,1.0,True,
|
||||
5,7,1.6091514152462776,56.844248010731185,0.7747360187719984,0.09121609616459708,6,3.123473300580222,0.00421464356720393,0.015634168997181876,1.0,True,
|
||||
5,8,1.1872485760158462,85.67585439000777,0.7829477514946712,0.10577559680144696,6,3.109219016133088,0.0033105282814613057,0.030813019102438145,1.0,True,
|
||||
6,7,1.5692385974903325,24.284846495817817,0.7347979599843075,0.10196810239533251,6,3.458846242963224,0.004020707752206965,0.039850323489805044,1.0,True,
|
||||
6,8,0.5035712140385419,53.11645287509441,0.7155149934810952,0.10460245111398395,6,3.0180670962260874,0.0072368624874882504,0.0055907688631446776,1.0,True,
|
||||
6,9,0.8508108569116883,66.44324365209327,0.6825438366919655,0.10495957402394829,6,3.140616320789838,0.00430894236478819,0.13911475434755866,1.0,True,
|
||||
7,8,1.1230406357307108,28.831606379276582,0.8127890077949531,0.09942756972076687,6,2.9436564519387325,0.008316114154115147,0.01814737917470093,1.0,True,
|
||||
7,9,0.7186795671679719,42.158397156275456,0.8193873491579367,0.09507291602212191,6,3.5012345051117295,0.006751593996528964,0.029293578235221863,1.0,True,
|
||||
7,10,0.39293571356254015,58.25702665650087,0.7940216681895313,0.10356080767641777,6,2.817840996766873,0.006883567504360684,0.016492683422577963,1.0,True,
|
||||
8,9,0.4407680716864947,13.326790776998866,0.8581438392384981,0.09484304022144129,6,3.219825075793889,0.007253035671159373,0.024252719250072975,1.0,True,
|
||||
8,10,0.968166048306331,29.425420277224287,0.8015356585111921,0.10152298131640612,6,3.7446585062478155,0.0017523919908150464,0.05042176209078739,1.0,True,
|
||||
8,11,3.0540124804140354,66.34511043540417,0.688687555052221,0.10536230082368817,6,4.696625415382456,0.0036281146181207165,0.013078005975049522,1.0,True,
|
||||
9,10,0.5276649044820116,16.098629500225417,0.8560606060606061,0.09594368034796862,6,3.2778548903058375,0.010491037599418197,0.0599937188173442,1.0,True,
|
||||
9,11,2.680593454060616,53.0183196584053,0.6966788735951509,0.10384409271666459,6,4.3419055531595605,0.009543265092514783,0.09977883713501384,1.0,True,
|
||||
9,12,3.2944321799753977,73.22024906015783,0.6579243162233046,0.10621203405076814,6,4.293885241325807,0.0028782078295197843,0.0743495992598884,1.0,True,
|
||||
10,11,2.249454986440387,36.91969015817989,0.729195173529046,0.10869447817964137,6,4.322382098282597,0.0028206125960216254,0.014140069566934874,1.0,True,
|
||||
10,12,2.8783779741216167,57.12161955993242,0.6945982527377876,0.10596349826421764,6,4.493186221276381,0.005660464094292755,0.08952914345108036,1.0,True,
|
||||
10,13,3.84803303865234,78.07081297783375,0.6530587074494326,0.1098871098886565,6,4.997105968288151,0.009441275754405344,0.06902225135435515,1.0,True,
|
||||
11,12,0.636223282239137,20.20192940175253,0.865792610250298,0.09248705530398661,6,3.4380496057859116,0.007654923324833218,0.03083951917063289,1.0,True,
|
||||
11,13,2.0145868546459504,41.151122819653864,0.8217656194003106,0.10443913508460159,6,3.957969004992005,0.0019958122994113434,0.04243931133970266,1.0,True,
|
||||
11,14,1.2405786051647103,116.67752660647822,0.7462918660287081,0.10754571546972236,6,4.619857754383166,0.0030226348073827927,0.05528144266002643,1.0,True,
|
||||
12,13,1.5928240921286525,20.949193417901323,0.8347322378531742,0.10791137431619166,6,3.358528082155117,0.0033753816186126483,0.015427430722607398,1.0,True,
|
||||
12,14,0.6774809171975742,96.47559720472566,0.7626657196969697,0.10926443071446633,6,3.847953795189004,0.0011083901763643633,0.03408686226954418,1.0,True,
|
||||
12,15,1.8892292086221258,131.14857460490867,0.7404945183111733,0.10470183850479874,6,3.1806996321008576,0.008442575945215317,0.02844707164454242,1.0,True,
|
||||
13,14,0.9721300146850552,75.52640378682433,0.8138569225293629,0.1125369920515294,6,3.2147734820704015,0.005457899756974233,0.04250371025579654,1.0,True,
|
||||
13,15,2.426469315960194,110.19938118700728,0.7853886616014026,0.10710393317615087,6,2.4365756135744383,0.0023363953219779758,0.003679886698275418,1.0,True,
|
||||
13,16,4.157137927296689,135.66277163100625,0.7461059190031153,0.10791684095774041,6,2.2141337125272007,0.0023169831632091926,0.02473862097872449,1.0,True,
|
||||
14,15,2.176233486689304,34.672977400182965,0.7456694756554307,0.11049010248131722,6,2.3376174680383377,0.0027632919724097076,0.05272762900968177,1.0,True,
|
||||
14,16,3.79947855245853,60.13636784418198,0.7114577084583084,0.11170286188791147,6,2.479974772421199,0.0043726035924820505,0.11525585711885118,1.0,True,
|
||||
14,17,6.190474035537447,15.261944565117341,0.6170986278878855,0.11803645680912848,6,5.206426513766648,0.02802927019183766,0.10048860643286558,1.0,True,
|
||||
15,16,1.7328875589135755,25.463390443999018,0.7687034629476421,0.09834033850996364,6,2.3729567416081196,0.004926598691892943,0.10049788043616295,1.0,True,
|
||||
15,17,8.352264787019024,19.411032835065622,0.5596902808274586,0.12817180913542037,6,8.442537153126064,0.04660873899639204,0.08128930035257874,1.0,True,
|
||||
15,18,6.346037230040679,25.592965647994788,0.6134687462217386,0.11861991782546771,6,5.933642175309751,0.006137337753783083,0.040498570689394164,1.0,True,
|
||||
16,17,9.849975560032544,44.87442327906463,0.589649455234486,0.12715782204597983,6,10.240964391202342,0.016491489842564398,0.29283865924681673,1.0,True,
|
||||
16,18,7.9099649541476005,0.12957520399577063,0.6441329694864798,0.11977657776801591,6,7.973620675877663,0.01581702082704062,0.07681086634765077,1.0,True,
|
||||
16,19,6.609737623005951,34.172763646089344,0.642055375405338,0.11922626532224312,6,5.690723701436521,0.01936736899083179,0.22155509936605944,1.0,True,
|
||||
17,18,2.081596655954183,45.003998483060414,0.761206687666586,0.10248796635270672,6,4.778521884225018,0.003602819302929225,0.04280787772842571,1.0,True,
|
||||
17,19,4.34928579963815,79.047186925154,0.6654080389768575,0.10560001932239894,6,4.647516519431804,0.015683211248127868,0.18051709633786264,1.0,True,
|
||||
17,20,4.4206846692505035,169.37257900760153,0.6377810007251632,0.11215519048187066,6,5.178731668470772,0.016926609942259613,0.20634229894075337,1.0,True,
|
||||
18,19,3.459222336215112,34.04318844209358,0.7556208482370976,0.10994458141969204,6,3.594858191146124,0.004654350735545165,0.12873243616635754,1.0,True,
|
||||
18,20,4.94806857498194,124.36858052454107,0.6686517992904207,0.11525187440612464,6,4.510107356424666,0.022993775653731053,0.1013964892640344,1.0,True,
|
||||
18,21,6.5847443121227816,175.25342056617163,0.5905541093343251,0.1262853354637165,6,5.942345924349615,0.021857815102479028,0.4259066161744867,1.0,True,
|
||||
19,20,3.031758915138065,90.32539208244746,0.7420998980632009,0.12052023632629244,6,3.3463968507926847,0.012566250876576632,0.08500209892702067,1.0,True,
|
||||
19,21,3.732423384308353,141.21023212407198,0.6515019319456562,0.12055764747498063,6,4.076270140910382,0.007120603737667027,0.05561876226347328,1.0,True,
|
||||
19,22,6.37255124464243,175.13200822775684,0.5905501782985226,0.12548545004843537,6,5.705777346141328,0.005772061596466365,0.10356450735473072,1.0,True,
|
||||
20,21,2.057726146362386,50.884840041624386,0.7791517249907258,0.1109933103332085,6,3.525554312141476,0.004882992437392809,0.09954673132586826,1.0,True,
|
||||
20,22,4.388457127616061,94.54259968980386,0.6575290550783224,0.11893104898070972,6,4.203674621017558,0.005511015274661758,0.13108161960065734,1.0,True,
|
||||
20,23,8.256548639868363,126.4903843444735,0.5799237611181702,0.12732395079162134,6,6.120182481367245,0.02421237470645105,0.2728497258921342,1.0,True,
|
||||
21,22,2.665930009787955,43.65775964817948,0.7379804721295267,0.11301282071283571,6,4.252070885311591,0.005342970038949662,0.023692959917636515,1.0,True,
|
||||
21,23,6.670349114267683,75.60554430284907,0.6154133001864512,0.11796945645750438,6,5.503558762374886,0.021862964848253088,0.18671115674675795,1.0,True,
|
||||
21,24,4.0761181240750135,118.87493116884215,0.6688601936925751,0.11271893154362743,6,4.6072424136923145,0.017882487871653564,0.11231417140662198,1.0,True,
|
||||
22,23,4.005228418650323,31.947784654669576,0.7269494538989077,0.11696827793053062,6,3.9354343956207307,0.036708381465019306,0.17149160359500737,1.0,True,
|
||||
22,24,1.4231800329066895,75.21717152066267,0.7625269567423569,0.11122908154278312,6,2.9923801902407035,0.033708002403797385,0.18898419347187523,1.0,True,
|
||||
22,25,0.9824487562406952,165.63918634111403,0.7063042657606644,0.1109686247290255,6,3.260862218157852,0.0237546710240931,0.20388046327310663,1.0,True,
|
||||
23,24,2.6253440212817054,43.26938686599312,0.785377057547531,0.11259637754562075,6,3.1689777161216344,0.008388924730327863,0.09824473511740778,1.0,True,
|
||||
23,25,4.30404511575867,133.69140168644446,0.682445260093659,0.11585305930039552,6,4.459805342354154,0.03262070035564156,0.26820774135203534,1.0,True,
|
||||
23,26,6.580252552934289,159.52196102005493,0.6190717727618564,0.1225437625254746,6,4.748664745468758,0.020450511219618477,0.11876511292532045,1.0,True,
|
||||
24,25,2.0155105379126432,90.4220148204513,0.7662452591656131,0.10751986617832841,6,3.2073569479179214,0.020801978066425954,0.11499836231449187,1.0,True,
|
||||
24,26,4.344602404326578,157.20865211395216,0.7051298290056998,0.11713046861462412,6,4.0423396253765445,0.02866879831073192,0.14020373652670878,1.0,True,
|
||||
24,27,4.194437499675352,171.65485957819877,0.7231216797369087,0.11332956637109663,6,3.5737137574022637,0.0391123663878616,0.31745415833557195,1.0,True,
|
||||
25,26,2.340922525153354,66.78663729350096,0.8146752104535746,0.1067005622933313,6,2.8555177924942416,0.015155094735859666,0.09937091691588736,1.0,True,
|
||||
25,27,2.187150933555911,97.92312560134954,0.8480552070263488,0.10282262567757873,6,2.8008487935140383,0.020178532297188766,0.14259764688967286,1.0,True,
|
||||
25,28,6.688406442287195,171.26720999836604,0.6516274978006786,0.11571138405667894,6,3.5101673009694134,0.012932261164889271,0.1340627397278959,1.0,True,
|
||||
26,27,0.6349061963265976,31.136488307848563,0.8667504714016342,0.10966038141955464,6,2.9297274048756186,0.0016799531047772863,0.021489450960699312,1.0,True,
|
||||
26,28,5.008419104260455,121.94615270813352,0.7044824981113069,0.11528623479803272,6,2.991781333569699,0.011526585390891731,0.12425176309998268,1.0,True,
|
||||
26,29,2.224643201350574,145.73622267800252,0.713654161930024,0.11136018082941974,6,3.2605126809731075,0.0026952303885011083,0.026655596724504224,1.0,True,
|
||||
27,28,5.622863551235285,90.80966440028486,0.7058971457311706,0.1123767383226778,6,3.2376046779603893,0.004853942846193662,0.04151426276015074,1.0,True,
|
||||
27,29,2.458639091699311,114.59973437015381,0.7564328960645812,0.11469589052522192,6,3.205131133212321,0.012664149059349924,0.06847473063899887,1.0,True,
|
||||
27,30,2.614522132166758,143.98503586800658,0.7694542698332492,0.10812761282109745,6,3.5636250205999853,0.029100131201629794,0.2714584305620497,1.0,True,
|
||||
28,29,5.5254251571777075,23.790069969868927,0.6751737207833228,0.11779777341629802,6,4.576892329120707,0.02178556321929983,0.16690946122682282,1.0,True,
|
||||
28,30,6.682895390289165,53.17537146772172,0.6491205871188156,0.12153627244194264,6,5.217063769204219,0.03128065038149053,0.11076032475862632,1.0,True,
|
||||
28,31,11.27338119162288,23.882243944837096,0.5547279383916173,0.13098667045941628,6,8.538477868201968,0.007811024872033181,0.25693805699014277,1.0,True,
|
||||
29,30,1.1998189814142899,29.3853014978528,0.8093424727088093,0.11457686827315132,6,2.757583581977887,0.011632920497220726,0.07792616982135933,1.0,True,
|
||||
29,31,5.755712819539279,0.09217397496817598,0.7190982776089159,0.1179079898277715,6,4.190353867263325,0.010102013331328315,0.05295397679545269,1.0,True,
|
||||
29,32,7.3497160995478215,44.7412737155501,0.683451384417257,0.12293657670032715,6,4.583568719289398,0.015683401555203327,0.1727804303986473,1.0,True,
|
||||
30,31,4.592128513798009,29.29312752288462,0.7552004058853374,0.1130974670000902,6,3.6871413543680527,0.010357085925134528,0.12088315402655661,1.0,True,
|
||||
30,32,6.2188831730504885,74.12657521340287,0.7014059073906874,0.11707558829895812,6,4.009905097582674,0.044382968752358344,0.22757601248033596,1.0,True,
|
||||
30,33,7.344850966128434,112.7430048900433,0.6023929471032745,0.12334051659083738,6,4.260065691019417,0.002643716461244746,0.05342399356841621,1.0,True,
|
||||
31,32,1.7043840283934533,44.83344769051828,0.785355810063055,0.11197405173054666,6,3.256332960817364,0.017947904056538493,0.11867936940390052,1.0,True,
|
||||
31,33,3.3472002644811774,83.44987736715868,0.6260366926363408,0.11401170513833872,6,3.204107721135536,0.005088227871807909,0.05996016929359153,1.0,True,
|
||||
31,34,3.311630046755356,133.49479301359594,0.6536974685122833,0.11166700866683012,6,3.289691648920709,0.01957685602042411,0.06586346108113965,1.0,True,
|
||||
32,33,1.9394369188755196,38.61642967664041,0.7442187300370512,0.11487243540634488,6,2.5670787340169654,0.00371510987119075,0.04386474659625542,1.0,True,
|
||||
32,34,2.1435446082722334,88.6613453230776,0.7408722109533469,0.1145103812359268,6,2.7396880211128143,0.0033854042879271646,0.04345206885157784,1.0,True,
|
||||
32,35,3.1027737257249126,119.84526039487966,0.8249047681597268,0.10651397196801952,6,2.6908216879663684,0.014229552741777998,0.06789311177543367,1.0,True,
|
||||
33,34,0.5704890065278277,50.0449156464372,0.8265015479876161,0.1079360614731508,6,3.0056080815747785,0.005517776656180037,0.04447304678975396,1.0,True,
|
||||
33,35,2.3843314966611664,81.22883071823928,0.7029487179487179,0.11079043369762126,6,2.804837502264682,0.0045321280438173584,0.02066446888667937,1.0,True,
|
||||
33,36,3.5605240220038255,106.66041349586102,0.612932138284251,0.11677728789370431,6,3.2326527799764184,0.011704878383874686,0.04254924292122366,1.0,True,
|
||||
34,35,2.9403442697824866,31.183915071802076,0.7198829665436968,0.11381984857774002,6,3.296185466097946,0.015242618456135898,0.1219677981121258,1.0,True,
|
||||
34,36,4.102710388907318,56.61549784942384,0.6450260449752255,0.11677131628998773,6,3.6854553885932066,0.0029445631740664846,0.0910859237401823,1.0,True,
|
||||
34,37,3.6865711881345757,30.12086856551724,0.6870731404445548,0.11846537329500156,6,4.5399964456315365,0.013941395463696922,0.12307688004234886,1.0,True,
|
||||
35,36,1.2045561534352058,25.431582777621774,0.811216429699842,0.11156358795429076,6,2.5821119008039335,0.003966448406861189,0.11486278330291146,1.0,True,
|
||||
35,37,6.084062615492111,1.063046506284832,0.6916945230136282,0.12226449151266647,6,3.9062079497745845,0.012490325532322776,0.1588294259454204,1.0,True,
|
||||
36,37,7.2781244258509386,26.494629283906598,0.6406009244992296,0.123972843683949,6,4.59789964279208,0.011995188628592031,0.19550165133048591,1.0,True,
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,312 +0,0 @@
|
||||
{
|
||||
"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": 41,
|
||||
"translation_m": {
|
||||
"rms": 0.06627076507951374,
|
||||
"median": 0.047988641017293804,
|
||||
"p90": 0.09181504914902948,
|
||||
"p95": 0.11277678323253028,
|
||||
"max": 0.15600463105844264
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 1.0783402768758907,
|
||||
"median": 0.7259689138952466,
|
||||
"p90": 1.6809461304799602,
|
||||
"p95": 1.7792880941356781,
|
||||
"max": 1.856511169904947
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.023735072067512103,
|
||||
"rotation_deg": 0.35856568622307705,
|
||||
"i": 0,
|
||||
"j": 1
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.05526576799076716,
|
||||
"rotation_deg": 0.688292682153714,
|
||||
"i": 0,
|
||||
"j": 3
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.04806529792477384,
|
||||
"rotation_deg": 1.7792880941356781,
|
||||
"i": 1,
|
||||
"j": 2
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.02732889363320134,
|
||||
"rotation_deg": 1.856511169904947,
|
||||
"i": 2,
|
||||
"j": 3
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.03927257848059381,
|
||||
"rotation_deg": 1.6809461304799602,
|
||||
"i": 2,
|
||||
"j": 5
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.09000097958526627,
|
||||
"rotation_deg": 0.6847419474141874,
|
||||
"i": 3,
|
||||
"j": 4
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.03101397287067455,
|
||||
"rotation_deg": 0.16914815750366516,
|
||||
"i": 3,
|
||||
"j": 5
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.07754221345029244,
|
||||
"rotation_deg": 0.7259689138952466,
|
||||
"i": 4,
|
||||
"j": 5
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.03330333298983308,
|
||||
"rotation_deg": 0.2953381460156314,
|
||||
"i": 5,
|
||||
"j": 6
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.013926178859499422,
|
||||
"rotation_deg": 1.0956547835384745,
|
||||
"i": 6,
|
||||
"j": 7
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.040796788287758956,
|
||||
"rotation_deg": 0.5732579539729787,
|
||||
"i": 6,
|
||||
"j": 9
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.05468973725915344,
|
||||
"rotation_deg": 1.0002199501064295,
|
||||
"i": 11,
|
||||
"j": 12
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.06427358796963496,
|
||||
"rotation_deg": 1.4794289625543822,
|
||||
"i": 16,
|
||||
"j": 17
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.15600463105844264,
|
||||
"rotation_deg": 1.480613890179137,
|
||||
"i": 16,
|
||||
"j": 18
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.10022423249183152,
|
||||
"rotation_deg": 0.4939634910387222,
|
||||
"i": 17,
|
||||
"j": 18
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.11277678323253028,
|
||||
"rotation_deg": 1.4534337020592556,
|
||||
"i": 18,
|
||||
"j": 19
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.09181504914902948,
|
||||
"rotation_deg": 0.5121047642461125,
|
||||
"i": 18,
|
||||
"j": 20
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.07621294129483619,
|
||||
"rotation_deg": 1.2114882514394736,
|
||||
"i": 18,
|
||||
"j": 21
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.05057962673548217,
|
||||
"rotation_deg": 1.7070235499578508,
|
||||
"i": 19,
|
||||
"j": 20
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.028485843207444878,
|
||||
"rotation_deg": 1.282910024621228,
|
||||
"i": 20,
|
||||
"j": 21
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.047988641017293804,
|
||||
"rotation_deg": 0.3479009355224502,
|
||||
"i": 20,
|
||||
"j": 22
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.036673661370321194,
|
||||
"rotation_deg": 0.7294078635231547,
|
||||
"i": 20,
|
||||
"j": 23
|
||||
},
|
||||
{
|
||||
"pair_index": 22,
|
||||
"translation_m": 0.053305241810354,
|
||||
"rotation_deg": 1.5203537906970106,
|
||||
"i": 21,
|
||||
"j": 22
|
||||
},
|
||||
{
|
||||
"pair_index": 23,
|
||||
"translation_m": 0.06724337658756505,
|
||||
"rotation_deg": 0.6388309960595039,
|
||||
"i": 21,
|
||||
"j": 24
|
||||
},
|
||||
{
|
||||
"pair_index": 24,
|
||||
"translation_m": 0.04395944502343888,
|
||||
"rotation_deg": 0.532486384255132,
|
||||
"i": 22,
|
||||
"j": 23
|
||||
},
|
||||
{
|
||||
"pair_index": 25,
|
||||
"translation_m": 0.02014164497275169,
|
||||
"rotation_deg": 1.454337113913715,
|
||||
"i": 22,
|
||||
"j": 24
|
||||
},
|
||||
{
|
||||
"pair_index": 26,
|
||||
"translation_m": 0.015070014725991494,
|
||||
"rotation_deg": 1.3619366988381034,
|
||||
"i": 23,
|
||||
"j": 24
|
||||
},
|
||||
{
|
||||
"pair_index": 27,
|
||||
"translation_m": 0.04337448537472198,
|
||||
"rotation_deg": 0.5946988587087709,
|
||||
"i": 24,
|
||||
"j": 25
|
||||
},
|
||||
{
|
||||
"pair_index": 28,
|
||||
"translation_m": 0.04609106556910267,
|
||||
"rotation_deg": 0.8042445263370658,
|
||||
"i": 24,
|
||||
"j": 26
|
||||
},
|
||||
{
|
||||
"pair_index": 29,
|
||||
"translation_m": 0.08550650491731009,
|
||||
"rotation_deg": 0.4123121681282486,
|
||||
"i": 25,
|
||||
"j": 26
|
||||
},
|
||||
{
|
||||
"pair_index": 30,
|
||||
"translation_m": 0.03526150890834157,
|
||||
"rotation_deg": 1.4877458273245419,
|
||||
"i": 27,
|
||||
"j": 28
|
||||
},
|
||||
{
|
||||
"pair_index": 31,
|
||||
"translation_m": 0.04728048748001428,
|
||||
"rotation_deg": 1.6462112767436325,
|
||||
"i": 27,
|
||||
"j": 29
|
||||
},
|
||||
{
|
||||
"pair_index": 32,
|
||||
"translation_m": 0.038221731232831464,
|
||||
"rotation_deg": 0.32809158958487783,
|
||||
"i": 28,
|
||||
"j": 29
|
||||
},
|
||||
{
|
||||
"pair_index": 33,
|
||||
"translation_m": 0.08450868583143198,
|
||||
"rotation_deg": 0.4200755376297717,
|
||||
"i": 30,
|
||||
"j": 31
|
||||
},
|
||||
{
|
||||
"pair_index": 34,
|
||||
"translation_m": 0.08626234893146881,
|
||||
"rotation_deg": 0.4145763973148079,
|
||||
"i": 30,
|
||||
"j": 33
|
||||
},
|
||||
{
|
||||
"pair_index": 35,
|
||||
"translation_m": 0.031883992409525753,
|
||||
"rotation_deg": 0.47209162292986384,
|
||||
"i": 31,
|
||||
"j": 33
|
||||
},
|
||||
{
|
||||
"pair_index": 36,
|
||||
"translation_m": 0.07512585318274038,
|
||||
"rotation_deg": 0.4948719177387593,
|
||||
"i": 33,
|
||||
"j": 34
|
||||
},
|
||||
{
|
||||
"pair_index": 37,
|
||||
"translation_m": 0.1468426442855739,
|
||||
"rotation_deg": 0.5255877510410011,
|
||||
"i": 33,
|
||||
"j": 35
|
||||
},
|
||||
{
|
||||
"pair_index": 38,
|
||||
"translation_m": 0.0854721649952596,
|
||||
"rotation_deg": 0.7101299092541083,
|
||||
"i": 34,
|
||||
"j": 35
|
||||
},
|
||||
{
|
||||
"pair_index": 39,
|
||||
"translation_m": 0.03486824711848649,
|
||||
"rotation_deg": 1.7800497000791062,
|
||||
"i": 34,
|
||||
"j": 37
|
||||
},
|
||||
{
|
||||
"pair_index": 40,
|
||||
"translation_m": 0.028519367999920175,
|
||||
"rotation_deg": 1.540726633727796,
|
||||
"i": 35,
|
||||
"j": 36
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,744 +0,0 @@
|
||||
{
|
||||
"schema_version": 2,
|
||||
"success": true,
|
||||
"message": "Both `ftol` and `xtol` termination conditions are 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.2962115049352554,
|
||||
-0.0001653420733896053,
|
||||
0.7164468137861116
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7022421146530834,
|
||||
1.3831306856730625,
|
||||
-0.8286069697615047
|
||||
],
|
||||
"quaternion_xyzw": [
|
||||
-0.006040299739348631,
|
||||
0.012113565983787752,
|
||||
-0.007156270443853885,
|
||||
0.9998827751749451
|
||||
],
|
||||
"matrix_4x4": [
|
||||
[
|
||||
0.9996040986249817,
|
||||
0.014164523963697197,
|
||||
0.024310743983262467,
|
||||
1.2962115049352554
|
||||
],
|
||||
[
|
||||
-0.01445720224151504,
|
||||
0.9998246051447864,
|
||||
0.011905807424097893,
|
||||
-0.0001653420733896053
|
||||
],
|
||||
[
|
||||
-0.02413783990927558,
|
||||
-0.012252559240975732,
|
||||
0.9996335525964305,
|
||||
0.7164468137861116
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"estimation": {
|
||||
"stations": 38,
|
||||
"pairs": 108,
|
||||
"residuals": {
|
||||
"pairs": 108,
|
||||
"translation_m": {
|
||||
"rms": 0.19743856479972394,
|
||||
"median": 0.06046352611504703,
|
||||
"p90": 0.21107717888307384,
|
||||
"p95": 0.4320413132492668,
|
||||
"max": 0.9185086085818974
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 1.594164834809931,
|
||||
"median": 0.9846062073478139,
|
||||
"p90": 2.2895871608918337,
|
||||
"p95": 2.7021815285034116,
|
||||
"max": 5.449412955100641
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.07883616778657004,
|
||||
"rotation_deg": 0.5080220774435835
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.13193158825620543,
|
||||
"rotation_deg": 0.4741606069012087
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.11129387971109267,
|
||||
"rotation_deg": 0.5206505897892112
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.06037317704760375,
|
||||
"rotation_deg": 0.4636666105342909
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.0532377491787842,
|
||||
"rotation_deg": 0.6385789459945687
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.036086228084217256,
|
||||
"rotation_deg": 0.7053466734460281
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.024212071864605337,
|
||||
"rotation_deg": 0.35966262441445085
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.07843107284074759,
|
||||
"rotation_deg": 0.9672771351659644
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.1331135483643765,
|
||||
"rotation_deg": 0.9356542123031394
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.06287483417453568,
|
||||
"rotation_deg": 0.8539179575478302
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.09307074193602183,
|
||||
"rotation_deg": 1.1452312070788857
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.10534310615277773,
|
||||
"rotation_deg": 1.2697416838407303
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.034156566922473784,
|
||||
"rotation_deg": 0.4470789762879368
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.05706608980344394,
|
||||
"rotation_deg": 1.4538259192907348
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.21156185043155915,
|
||||
"rotation_deg": 0.32326983959580347
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.04366721285272495,
|
||||
"rotation_deg": 1.1486889953780957
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.19784063737858906,
|
||||
"rotation_deg": 0.4945905742106831
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.13271207797084064,
|
||||
"rotation_deg": 0.8074538026104654
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.13649995064331025,
|
||||
"rotation_deg": 1.035099347913503
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.058892470655748055,
|
||||
"rotation_deg": 0.6808326191608242
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.12809115411885974,
|
||||
"rotation_deg": 0.8895134738281241
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.07473485983007296,
|
||||
"rotation_deg": 0.7244832869216128
|
||||
},
|
||||
{
|
||||
"pair_index": 22,
|
||||
"translation_m": 0.003615738521241208,
|
||||
"rotation_deg": 0.6536825959057917
|
||||
},
|
||||
{
|
||||
"pair_index": 23,
|
||||
"translation_m": 0.06957198571596916,
|
||||
"rotation_deg": 0.7883364856790823
|
||||
},
|
||||
{
|
||||
"pair_index": 24,
|
||||
"translation_m": 0.06578636179058665,
|
||||
"rotation_deg": 0.09595187830987498
|
||||
},
|
||||
{
|
||||
"pair_index": 25,
|
||||
"translation_m": 0.11708949328304538,
|
||||
"rotation_deg": 0.9037314334019761
|
||||
},
|
||||
{
|
||||
"pair_index": 26,
|
||||
"translation_m": 0.2785740172886443,
|
||||
"rotation_deg": 1.2395284599701288
|
||||
},
|
||||
{
|
||||
"pair_index": 27,
|
||||
"translation_m": 0.054803484360171,
|
||||
"rotation_deg": 0.9197207214648975
|
||||
},
|
||||
{
|
||||
"pair_index": 28,
|
||||
"translation_m": 0.2066140285757045,
|
||||
"rotation_deg": 1.4700310072490443
|
||||
},
|
||||
{
|
||||
"pair_index": 29,
|
||||
"translation_m": 0.21086946250515157,
|
||||
"rotation_deg": 1.0216432855984101
|
||||
},
|
||||
{
|
||||
"pair_index": 30,
|
||||
"translation_m": 0.16273991885860312,
|
||||
"rotation_deg": 1.6658320411463268
|
||||
},
|
||||
{
|
||||
"pair_index": 31,
|
||||
"translation_m": 0.17536744938199297,
|
||||
"rotation_deg": 1.603914654640798
|
||||
},
|
||||
{
|
||||
"pair_index": 32,
|
||||
"translation_m": 0.12486444755757231,
|
||||
"rotation_deg": 1.72640237007742
|
||||
},
|
||||
{
|
||||
"pair_index": 33,
|
||||
"translation_m": 0.03629298593419621,
|
||||
"rotation_deg": 0.7021350382463348
|
||||
},
|
||||
{
|
||||
"pair_index": 34,
|
||||
"translation_m": 0.04096591124737788,
|
||||
"rotation_deg": 1.182229412077533
|
||||
},
|
||||
{
|
||||
"pair_index": 35,
|
||||
"translation_m": 0.023876028562682318,
|
||||
"rotation_deg": 2.3067680414707423
|
||||
},
|
||||
{
|
||||
"pair_index": 36,
|
||||
"translation_m": 0.0232665744848516,
|
||||
"rotation_deg": 0.45561721689220397
|
||||
},
|
||||
{
|
||||
"pair_index": 37,
|
||||
"translation_m": 0.0202215693688227,
|
||||
"rotation_deg": 1.7396398605001189
|
||||
},
|
||||
{
|
||||
"pair_index": 38,
|
||||
"translation_m": 0.2386974208323925,
|
||||
"rotation_deg": 0.3084186872525065
|
||||
},
|
||||
{
|
||||
"pair_index": 39,
|
||||
"translation_m": 0.0320417923623188,
|
||||
"rotation_deg": 1.537812332531765
|
||||
},
|
||||
{
|
||||
"pair_index": 40,
|
||||
"translation_m": 0.22893456979179405,
|
||||
"rotation_deg": 0.6120657430945021
|
||||
},
|
||||
{
|
||||
"pair_index": 41,
|
||||
"translation_m": 0.3264153842951392,
|
||||
"rotation_deg": 0.5281733672424023
|
||||
},
|
||||
{
|
||||
"pair_index": 42,
|
||||
"translation_m": 0.1540882733017021,
|
||||
"rotation_deg": 1.9432086107260433
|
||||
},
|
||||
{
|
||||
"pair_index": 43,
|
||||
"translation_m": 0.21054079914538157,
|
||||
"rotation_deg": 1.2442015725741578
|
||||
},
|
||||
{
|
||||
"pair_index": 44,
|
||||
"translation_m": 0.48891681345533766,
|
||||
"rotation_deg": 2.8273101876072357
|
||||
},
|
||||
{
|
||||
"pair_index": 45,
|
||||
"translation_m": 0.10733355603351397,
|
||||
"rotation_deg": 0.8721227552809412
|
||||
},
|
||||
{
|
||||
"pair_index": 46,
|
||||
"translation_m": 0.9185086085818974,
|
||||
"rotation_deg": 4.489220955656682
|
||||
},
|
||||
{
|
||||
"pair_index": 47,
|
||||
"translation_m": 0.7319199589340636,
|
||||
"rotation_deg": 5.449412955100641
|
||||
},
|
||||
{
|
||||
"pair_index": 48,
|
||||
"translation_m": 0.8659475201606082,
|
||||
"rotation_deg": 3.8214376146729045
|
||||
},
|
||||
{
|
||||
"pair_index": 49,
|
||||
"translation_m": 0.7210574374098978,
|
||||
"rotation_deg": 4.561541716053782
|
||||
},
|
||||
{
|
||||
"pair_index": 50,
|
||||
"translation_m": 0.5570099786748203,
|
||||
"rotation_deg": 5.373002500144395
|
||||
},
|
||||
{
|
||||
"pair_index": 51,
|
||||
"translation_m": 0.04582605589663051,
|
||||
"rotation_deg": 0.6822468845946373
|
||||
},
|
||||
{
|
||||
"pair_index": 52,
|
||||
"translation_m": 0.036857756558338325,
|
||||
"rotation_deg": 1.7515216368522777
|
||||
},
|
||||
{
|
||||
"pair_index": 53,
|
||||
"translation_m": 0.043496707068384696,
|
||||
"rotation_deg": 1.7461098288880414
|
||||
},
|
||||
{
|
||||
"pair_index": 54,
|
||||
"translation_m": 0.045832318963813956,
|
||||
"rotation_deg": 1.041278909174025
|
||||
},
|
||||
{
|
||||
"pair_index": 55,
|
||||
"translation_m": 0.060553875182490315,
|
||||
"rotation_deg": 0.8052115259091664
|
||||
},
|
||||
{
|
||||
"pair_index": 56,
|
||||
"translation_m": 0.06652308069145153,
|
||||
"rotation_deg": 0.9632642598400051
|
||||
},
|
||||
{
|
||||
"pair_index": 57,
|
||||
"translation_m": 0.035908234140899456,
|
||||
"rotation_deg": 1.2689384623057567
|
||||
},
|
||||
{
|
||||
"pair_index": 58,
|
||||
"translation_m": 0.060880526853900836,
|
||||
"rotation_deg": 0.5935557534854639
|
||||
},
|
||||
{
|
||||
"pair_index": 59,
|
||||
"translation_m": 0.11419626074713392,
|
||||
"rotation_deg": 0.7130165148085522
|
||||
},
|
||||
{
|
||||
"pair_index": 60,
|
||||
"translation_m": 0.04265037619565028,
|
||||
"rotation_deg": 0.699587177579278
|
||||
},
|
||||
{
|
||||
"pair_index": 61,
|
||||
"translation_m": 0.04378802459846447,
|
||||
"rotation_deg": 0.675205047149443
|
||||
},
|
||||
{
|
||||
"pair_index": 62,
|
||||
"translation_m": 0.08344520239044273,
|
||||
"rotation_deg": 1.3214027680911706
|
||||
},
|
||||
{
|
||||
"pair_index": 63,
|
||||
"translation_m": 0.017638868448433938,
|
||||
"rotation_deg": 0.17533894669557326
|
||||
},
|
||||
{
|
||||
"pair_index": 64,
|
||||
"translation_m": 0.03489149886931174,
|
||||
"rotation_deg": 1.664944154610128
|
||||
},
|
||||
{
|
||||
"pair_index": 65,
|
||||
"translation_m": 0.10079671035324393,
|
||||
"rotation_deg": 0.6171025033257196
|
||||
},
|
||||
{
|
||||
"pair_index": 66,
|
||||
"translation_m": 0.014396578516872966,
|
||||
"rotation_deg": 1.650080935912764
|
||||
},
|
||||
{
|
||||
"pair_index": 67,
|
||||
"translation_m": 0.06023554532048859,
|
||||
"rotation_deg": 0.42594747696355045
|
||||
},
|
||||
{
|
||||
"pair_index": 68,
|
||||
"translation_m": 0.03699195896487648,
|
||||
"rotation_deg": 1.2778861613746475
|
||||
},
|
||||
{
|
||||
"pair_index": 69,
|
||||
"translation_m": 0.046905032676790276,
|
||||
"rotation_deg": 1.132463118089895
|
||||
},
|
||||
{
|
||||
"pair_index": 70,
|
||||
"translation_m": 0.070685940640895,
|
||||
"rotation_deg": 0.6925680609090175
|
||||
},
|
||||
{
|
||||
"pair_index": 71,
|
||||
"translation_m": 0.05072278859454283,
|
||||
"rotation_deg": 0.40553765157890925
|
||||
},
|
||||
{
|
||||
"pair_index": 72,
|
||||
"translation_m": 0.061114192405838416,
|
||||
"rotation_deg": 0.8033058778952246
|
||||
},
|
||||
{
|
||||
"pair_index": 73,
|
||||
"translation_m": 0.12007843139860787,
|
||||
"rotation_deg": 0.9239227811720148
|
||||
},
|
||||
{
|
||||
"pair_index": 74,
|
||||
"translation_m": 0.12118933148474953,
|
||||
"rotation_deg": 1.305746559495919
|
||||
},
|
||||
{
|
||||
"pair_index": 75,
|
||||
"translation_m": 0.05055191131491414,
|
||||
"rotation_deg": 0.20965439069314443
|
||||
},
|
||||
{
|
||||
"pair_index": 76,
|
||||
"translation_m": 0.08360132660274813,
|
||||
"rotation_deg": 0.876573476333775
|
||||
},
|
||||
{
|
||||
"pair_index": 77,
|
||||
"translation_m": 0.02835721910581123,
|
||||
"rotation_deg": 1.5894295378250647
|
||||
},
|
||||
{
|
||||
"pair_index": 78,
|
||||
"translation_m": 0.03908539475543364,
|
||||
"rotation_deg": 0.8083289126351658
|
||||
},
|
||||
{
|
||||
"pair_index": 79,
|
||||
"translation_m": 0.054143804150054306,
|
||||
"rotation_deg": 1.6541418156239664
|
||||
},
|
||||
{
|
||||
"pair_index": 80,
|
||||
"translation_m": 0.026283210691822913,
|
||||
"rotation_deg": 1.6667348211605557
|
||||
},
|
||||
{
|
||||
"pair_index": 81,
|
||||
"translation_m": 0.089350850518513,
|
||||
"rotation_deg": 2.2825286794384145
|
||||
},
|
||||
{
|
||||
"pair_index": 82,
|
||||
"translation_m": 0.03347579217967635,
|
||||
"rotation_deg": 1.9977395380091536
|
||||
},
|
||||
{
|
||||
"pair_index": 83,
|
||||
"translation_m": 0.019000630740619542,
|
||||
"rotation_deg": 1.5515794014919868
|
||||
},
|
||||
{
|
||||
"pair_index": 84,
|
||||
"translation_m": 0.04109198168971092,
|
||||
"rotation_deg": 0.6855676498071515
|
||||
},
|
||||
{
|
||||
"pair_index": 85,
|
||||
"translation_m": 0.04412164134783469,
|
||||
"rotation_deg": 0.6915721855798296
|
||||
},
|
||||
{
|
||||
"pair_index": 86,
|
||||
"translation_m": 0.11294515765470313,
|
||||
"rotation_deg": 2.2385943138303417
|
||||
},
|
||||
{
|
||||
"pair_index": 87,
|
||||
"translation_m": 0.01925918248868863,
|
||||
"rotation_deg": 1.0019352795296634
|
||||
},
|
||||
{
|
||||
"pair_index": 88,
|
||||
"translation_m": 0.07700662983793743,
|
||||
"rotation_deg": 2.187099011126195
|
||||
},
|
||||
{
|
||||
"pair_index": 89,
|
||||
"translation_m": 0.081983290439235,
|
||||
"rotation_deg": 1.2833572216410762
|
||||
},
|
||||
{
|
||||
"pair_index": 90,
|
||||
"translation_m": 0.07413447803071471,
|
||||
"rotation_deg": 1.509039762712118
|
||||
},
|
||||
{
|
||||
"pair_index": 91,
|
||||
"translation_m": 0.05026833056909235,
|
||||
"rotation_deg": 0.6540616669180302
|
||||
},
|
||||
{
|
||||
"pair_index": 92,
|
||||
"translation_m": 0.07040328963228819,
|
||||
"rotation_deg": 1.1208457441248971
|
||||
},
|
||||
{
|
||||
"pair_index": 93,
|
||||
"translation_m": 0.035342214388759695,
|
||||
"rotation_deg": 0.932859896131992
|
||||
},
|
||||
{
|
||||
"pair_index": 94,
|
||||
"translation_m": 0.09059341699612283,
|
||||
"rotation_deg": 2.23170809346331
|
||||
},
|
||||
{
|
||||
"pair_index": 95,
|
||||
"translation_m": 0.0903976819000103,
|
||||
"rotation_deg": 2.3060569509498126
|
||||
},
|
||||
{
|
||||
"pair_index": 96,
|
||||
"translation_m": 0.029370567781526302,
|
||||
"rotation_deg": 1.2512304574145157
|
||||
},
|
||||
{
|
||||
"pair_index": 97,
|
||||
"translation_m": 0.031018252539194446,
|
||||
"rotation_deg": 1.2538724028818724
|
||||
},
|
||||
{
|
||||
"pair_index": 98,
|
||||
"translation_m": 0.05078748646827035,
|
||||
"rotation_deg": 0.3396814347935095
|
||||
},
|
||||
{
|
||||
"pair_index": 99,
|
||||
"translation_m": 0.024770901259540175,
|
||||
"rotation_deg": 0.09062392685294303
|
||||
},
|
||||
{
|
||||
"pair_index": 100,
|
||||
"translation_m": 0.03340161795186317,
|
||||
"rotation_deg": 1.0544497064860483
|
||||
},
|
||||
{
|
||||
"pair_index": 101,
|
||||
"translation_m": 0.032353919411514664,
|
||||
"rotation_deg": 2.4697997330248893
|
||||
},
|
||||
{
|
||||
"pair_index": 102,
|
||||
"translation_m": 0.0369893920228258,
|
||||
"rotation_deg": 0.9428098575535183
|
||||
},
|
||||
{
|
||||
"pair_index": 103,
|
||||
"translation_m": 0.03967084241987133,
|
||||
"rotation_deg": 2.4057498894359104
|
||||
},
|
||||
{
|
||||
"pair_index": 104,
|
||||
"translation_m": 0.032499330822438305,
|
||||
"rotation_deg": 0.5201344456818268
|
||||
},
|
||||
{
|
||||
"pair_index": 105,
|
||||
"translation_m": 0.020738575117572048,
|
||||
"rotation_deg": 1.147380363634985
|
||||
},
|
||||
{
|
||||
"pair_index": 106,
|
||||
"translation_m": 0.02864934739022941,
|
||||
"rotation_deg": 0.9393233353789158
|
||||
},
|
||||
{
|
||||
"pair_index": 107,
|
||||
"translation_m": 0.04427763743614998,
|
||||
"rotation_deg": 2.333163177357132
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ground": {
|
||||
"planes": 38,
|
||||
"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.004408386781524471,
|
||||
0.004767641769352496,
|
||||
0.005598290825790153
|
||||
],
|
||||
"rotation_deg": [
|
||||
0.048493732410523904,
|
||||
0.046658283462926005,
|
||||
0.07519664546145975
|
||||
],
|
||||
"warning": "conditional local estimate; bootstrap is the primary stability check"
|
||||
},
|
||||
"weighted_jacobian_condition_number": 7.050612320852161,
|
||||
"solver_multistart": {
|
||||
"runs": 12,
|
||||
"candidates_relative_to_best": [
|
||||
{
|
||||
"cost": 643.4104764663608,
|
||||
"success": true,
|
||||
"translation_m": 3.912474170044392e-10,
|
||||
"rotation_deg": 6.735629049437961e-10
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663626,
|
||||
"success": true,
|
||||
"translation_m": 5.541272376488872e-09,
|
||||
"rotation_deg": 8.145564755773614e-08
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663621,
|
||||
"success": true,
|
||||
"translation_m": 5.7457948050995e-09,
|
||||
"rotation_deg": 9.303346267795607e-08
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663617,
|
||||
"success": true,
|
||||
"translation_m": 2.194969543097371e-09,
|
||||
"rotation_deg": 6.831261261103626e-08
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663606,
|
||||
"success": true,
|
||||
"translation_m": 0.0,
|
||||
"rotation_deg": 0.0
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663606,
|
||||
"success": true,
|
||||
"translation_m": 2.0328177429825194e-10,
|
||||
"rotation_deg": 5.30535295392565e-10
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663606,
|
||||
"success": true,
|
||||
"translation_m": 2.942069407882596e-10,
|
||||
"rotation_deg": 1.1060405674229135e-09
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663616,
|
||||
"success": true,
|
||||
"translation_m": 2.0219843122070147e-09,
|
||||
"rotation_deg": 6.76470161118562e-08
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663626,
|
||||
"success": true,
|
||||
"translation_m": 4.562054371593163e-09,
|
||||
"rotation_deg": 1.0596545697409183e-07
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663607,
|
||||
"success": true,
|
||||
"translation_m": 1.928078172154913e-10,
|
||||
"rotation_deg": 2.1724633303911955e-09
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663614,
|
||||
"success": true,
|
||||
"translation_m": 4.546336113588724e-09,
|
||||
"rotation_deg": 6.943102831728965e-08
|
||||
},
|
||||
{
|
||||
"cost": 643.4104764663606,
|
||||
"success": true,
|
||||
"translation_m": 2.3977413195330228e-09,
|
||||
"rotation_deg": 3.302215565653965e-08
|
||||
}
|
||||
]
|
||||
},
|
||||
"bootstrap": {
|
||||
"runs": 100,
|
||||
"order": [
|
||||
"x_m",
|
||||
"y_m",
|
||||
"z_m",
|
||||
"roll_deg",
|
||||
"pitch_deg",
|
||||
"yaw_deg"
|
||||
],
|
||||
"std": [
|
||||
0.0019183316339420184,
|
||||
0.0018458296498062193,
|
||||
0.0015077091479455522,
|
||||
0.06309617953577086,
|
||||
0.06679628584461805,
|
||||
0.059116801250773655
|
||||
],
|
||||
"p025": [
|
||||
1.2931455727368442,
|
||||
-0.0034690771097207083,
|
||||
0.7130935831011376,
|
||||
-0.8251808751744363,
|
||||
1.2576102536763605,
|
||||
-0.9269499764475692
|
||||
],
|
||||
"p975": [
|
||||
1.3004042751519689,
|
||||
0.0031684595904240874,
|
||||
0.7192601795844623,
|
||||
-0.5861986801138164,
|
||||
1.5316240168054431,
|
||||
-0.7099716198219946
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,534 +0,0 @@
|
||||
{
|
||||
"schema_version": 2,
|
||||
"success": true,
|
||||
"message": "Both `ftol` and `xtol` termination conditions are 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.2978831677200011,
|
||||
-0.0030997734098957433,
|
||||
0.7217892226151688
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7572070226288585,
|
||||
1.1460424368859559,
|
||||
-0.8797812288284186
|
||||
],
|
||||
"quaternion_xyzw": [
|
||||
-0.006530524361500762,
|
||||
0.01005115598038874,
|
||||
-0.007610830022211968,
|
||||
0.9998991958099549
|
||||
],
|
||||
"matrix_4x4": [
|
||||
[
|
||||
0.9996820990596618,
|
||||
0.015088846999329667,
|
||||
0.020199690985244836,
|
||||
1.2978831677200011
|
||||
],
|
||||
[
|
||||
-0.01535140427529437,
|
||||
0.9997988550358736,
|
||||
0.012906736835176902,
|
||||
-0.0030997734098957433
|
||||
],
|
||||
[
|
||||
-0.020000880141759644,
|
||||
-0.013212727393950824,
|
||||
0.9997126530300434,
|
||||
0.7217892226151688
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"estimation": {
|
||||
"stations": 38,
|
||||
"pairs": 66,
|
||||
"residuals": {
|
||||
"pairs": 66,
|
||||
"translation_m": {
|
||||
"rms": 0.10017183831403174,
|
||||
"median": 0.055359414994267414,
|
||||
"p90": 0.15842638830193137,
|
||||
"p95": 0.2228212283177476,
|
||||
"max": 0.3308905173432371
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 1.011529772202344,
|
||||
"median": 0.80406471347537,
|
||||
"p90": 1.4897684651925762,
|
||||
"p95": 1.743501596940947,
|
||||
"max": 2.0866296585079986
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.08037293687095128,
|
||||
"rotation_deg": 0.5606213555410943
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.13688783822315873,
|
||||
"rotation_deg": 0.5385985764755513
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.1161820533771873,
|
||||
"rotation_deg": 0.6051501049087227
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.06274731030725329,
|
||||
"rotation_deg": 0.43240094308199595
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.05401417992581746,
|
||||
"rotation_deg": 0.5598851592535787
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.031474943657373466,
|
||||
"rotation_deg": 0.4777215600802768
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.02358754528130127,
|
||||
"rotation_deg": 0.31065781541529597
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.07821720458579819,
|
||||
"rotation_deg": 0.8327360477136897
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.13242931760456017,
|
||||
"rotation_deg": 0.7104180024890483
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.06337205097891703,
|
||||
"rotation_deg": 0.7783419276431949
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.09374967709473093,
|
||||
"rotation_deg": 1.0032646553341338
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.03473040865260945,
|
||||
"rotation_deg": 0.38999250019936094
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.21059850723479812,
|
||||
"rotation_deg": 0.3446682830121482
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.19573146558983065,
|
||||
"rotation_deg": 0.48095280922563605
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.1323566970626505,
|
||||
"rotation_deg": 0.7201707943590688
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.12966351135913337,
|
||||
"rotation_deg": 1.112776940821149
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.05614712317985888,
|
||||
"rotation_deg": 0.875368334260281
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.07051356442391056,
|
||||
"rotation_deg": 0.6787378054467239
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.00234867626016906,
|
||||
"rotation_deg": 0.6239120141422153
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.06798198251653766,
|
||||
"rotation_deg": 1.002748878489142
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.06408705260318404,
|
||||
"rotation_deg": 0.03962823745578253
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.112944365872764,
|
||||
"rotation_deg": 1.0217086690617905
|
||||
},
|
||||
{
|
||||
"pair_index": 22,
|
||||
"translation_m": 0.052992189070368054,
|
||||
"rotation_deg": 0.9852776192856918
|
||||
},
|
||||
{
|
||||
"pair_index": 23,
|
||||
"translation_m": 0.15367415365164572,
|
||||
"rotation_deg": 1.6994783049152902
|
||||
},
|
||||
{
|
||||
"pair_index": 24,
|
||||
"translation_m": 0.034245918976706625,
|
||||
"rotation_deg": 0.6364964475716594
|
||||
},
|
||||
{
|
||||
"pair_index": 25,
|
||||
"translation_m": 0.032447856067877326,
|
||||
"rotation_deg": 1.0563370884814496
|
||||
},
|
||||
{
|
||||
"pair_index": 26,
|
||||
"translation_m": 0.013423581617645036,
|
||||
"rotation_deg": 2.0866296585079986
|
||||
},
|
||||
{
|
||||
"pair_index": 27,
|
||||
"translation_m": 0.020771076323520654,
|
||||
"rotation_deg": 0.38738877042810915
|
||||
},
|
||||
{
|
||||
"pair_index": 28,
|
||||
"translation_m": 0.025006531842362605,
|
||||
"rotation_deg": 1.52954100014841
|
||||
},
|
||||
{
|
||||
"pair_index": 29,
|
||||
"translation_m": 0.24776379251997158,
|
||||
"rotation_deg": 0.5631330497861866
|
||||
},
|
||||
{
|
||||
"pair_index": 30,
|
||||
"translation_m": 0.03125984364955898,
|
||||
"rotation_deg": 1.3670046215070957
|
||||
},
|
||||
{
|
||||
"pair_index": 31,
|
||||
"translation_m": 0.23303779095818136,
|
||||
"rotation_deg": 0.6816682778063402
|
||||
},
|
||||
{
|
||||
"pair_index": 32,
|
||||
"translation_m": 0.3308905173432371,
|
||||
"rotation_deg": 0.35773823775063585
|
||||
},
|
||||
{
|
||||
"pair_index": 33,
|
||||
"translation_m": 0.16317862295221702,
|
||||
"rotation_deg": 1.883393614450365
|
||||
},
|
||||
{
|
||||
"pair_index": 34,
|
||||
"translation_m": 0.22689546867873073,
|
||||
"rotation_deg": 1.1173958780054432
|
||||
},
|
||||
{
|
||||
"pair_index": 35,
|
||||
"translation_m": 0.11481327905632552,
|
||||
"rotation_deg": 0.9531859192751095
|
||||
},
|
||||
{
|
||||
"pair_index": 36,
|
||||
"translation_m": 0.03799144229981835,
|
||||
"rotation_deg": 0.7744523894118182
|
||||
},
|
||||
{
|
||||
"pair_index": 37,
|
||||
"translation_m": 0.05628293924136787,
|
||||
"rotation_deg": 1.14782377649109
|
||||
},
|
||||
{
|
||||
"pair_index": 38,
|
||||
"translation_m": 0.044190715841938503,
|
||||
"rotation_deg": 0.6522697817009423
|
||||
},
|
||||
{
|
||||
"pair_index": 39,
|
||||
"translation_m": 0.01566159386457093,
|
||||
"rotation_deg": 0.21165082671261798
|
||||
},
|
||||
{
|
||||
"pair_index": 40,
|
||||
"translation_m": 0.025885925200718387,
|
||||
"rotation_deg": 1.758176027616166
|
||||
},
|
||||
{
|
||||
"pair_index": 41,
|
||||
"translation_m": 0.05672466093666094,
|
||||
"rotation_deg": 0.656889656854011
|
||||
},
|
||||
{
|
||||
"pair_index": 42,
|
||||
"translation_m": 0.04499649801025904,
|
||||
"rotation_deg": 1.202397214867585
|
||||
},
|
||||
{
|
||||
"pair_index": 43,
|
||||
"translation_m": 0.05457170680867596,
|
||||
"rotation_deg": 1.0831506943354967
|
||||
},
|
||||
{
|
||||
"pair_index": 44,
|
||||
"translation_m": 0.061259367696104086,
|
||||
"rotation_deg": 0.4788495792916977
|
||||
},
|
||||
{
|
||||
"pair_index": 45,
|
||||
"translation_m": 0.11550019477035034,
|
||||
"rotation_deg": 0.4484966984286178
|
||||
},
|
||||
{
|
||||
"pair_index": 46,
|
||||
"translation_m": 0.11728514823414202,
|
||||
"rotation_deg": 0.829787499307545
|
||||
},
|
||||
{
|
||||
"pair_index": 47,
|
||||
"translation_m": 0.05724708891657523,
|
||||
"rotation_deg": 0.13864261724965515
|
||||
},
|
||||
{
|
||||
"pair_index": 48,
|
||||
"translation_m": 0.08594624077085096,
|
||||
"rotation_deg": 0.5654259879584598
|
||||
},
|
||||
{
|
||||
"pair_index": 49,
|
||||
"translation_m": 0.03620565055727226,
|
||||
"rotation_deg": 0.7322933697368991
|
||||
},
|
||||
{
|
||||
"pair_index": 50,
|
||||
"translation_m": 0.04214151304995954,
|
||||
"rotation_deg": 1.4499959302367427
|
||||
},
|
||||
{
|
||||
"pair_index": 51,
|
||||
"translation_m": 0.028423032063821733,
|
||||
"rotation_deg": 1.4083884036448566
|
||||
},
|
||||
{
|
||||
"pair_index": 52,
|
||||
"translation_m": 0.07837351471415148,
|
||||
"rotation_deg": 2.059047791320455
|
||||
},
|
||||
{
|
||||
"pair_index": 53,
|
||||
"translation_m": 0.028769288969574303,
|
||||
"rotation_deg": 1.678230006332038
|
||||
},
|
||||
{
|
||||
"pair_index": 54,
|
||||
"translation_m": 0.017809796347028943,
|
||||
"rotation_deg": 1.156650317229778
|
||||
},
|
||||
{
|
||||
"pair_index": 55,
|
||||
"translation_m": 0.016503937937620585,
|
||||
"rotation_deg": 1.0883396698886323
|
||||
},
|
||||
{
|
||||
"pair_index": 56,
|
||||
"translation_m": 0.06654456279831698,
|
||||
"rotation_deg": 1.4361320254246386
|
||||
},
|
||||
{
|
||||
"pair_index": 57,
|
||||
"translation_m": 0.047435323978454284,
|
||||
"rotation_deg": 0.5969029690601318
|
||||
},
|
||||
{
|
||||
"pair_index": 58,
|
||||
"translation_m": 0.03126348405840702,
|
||||
"rotation_deg": 1.1168540542357488
|
||||
},
|
||||
{
|
||||
"pair_index": 59,
|
||||
"translation_m": 0.02474086331243135,
|
||||
"rotation_deg": 1.3807442010221649
|
||||
},
|
||||
{
|
||||
"pair_index": 60,
|
||||
"translation_m": 0.030093157854206205,
|
||||
"rotation_deg": 1.4167630603035772
|
||||
},
|
||||
{
|
||||
"pair_index": 61,
|
||||
"translation_m": 0.0541740507536005,
|
||||
"rotation_deg": 0.698365025436339
|
||||
},
|
||||
{
|
||||
"pair_index": 62,
|
||||
"translation_m": 0.022134680709029235,
|
||||
"rotation_deg": 0.2658404010324305
|
||||
},
|
||||
{
|
||||
"pair_index": 63,
|
||||
"translation_m": 0.029045352917775814,
|
||||
"rotation_deg": 1.1570185249880154
|
||||
},
|
||||
{
|
||||
"pair_index": 64,
|
||||
"translation_m": 0.027405495714480508,
|
||||
"rotation_deg": 1.03451592246849
|
||||
},
|
||||
{
|
||||
"pair_index": 65,
|
||||
"translation_m": 0.026462755506179093,
|
||||
"rotation_deg": 1.2477273813337815
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ground": {
|
||||
"planes": 38,
|
||||
"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.004882663700530851,
|
||||
0.005223180397875539,
|
||||
0.004609821026450364
|
||||
],
|
||||
"rotation_deg": [
|
||||
0.05337730845362286,
|
||||
0.05101978444118743,
|
||||
0.13461471349060455
|
||||
],
|
||||
"warning": "conditional local estimate; bootstrap is the primary stability check"
|
||||
},
|
||||
"weighted_jacobian_condition_number": 6.280132943609949,
|
||||
"solver_multistart": {
|
||||
"runs": 12,
|
||||
"candidates_relative_to_best": [
|
||||
{
|
||||
"cost": 257.9158465208353,
|
||||
"success": true,
|
||||
"translation_m": 1.5339146489710882e-09,
|
||||
"rotation_deg": 8.769019455279312e-08
|
||||
},
|
||||
{
|
||||
"cost": 257.915846520835,
|
||||
"success": true,
|
||||
"translation_m": 1.6096332607990603e-10,
|
||||
"rotation_deg": 3.2573047951731743e-09
|
||||
},
|
||||
{
|
||||
"cost": 257.915846520835,
|
||||
"success": true,
|
||||
"translation_m": 1.7670480374755598e-10,
|
||||
"rotation_deg": 6.1834270102153095e-09
|
||||
},
|
||||
{
|
||||
"cost": 257.915846520835,
|
||||
"success": true,
|
||||
"translation_m": 4.1405468581662865e-10,
|
||||
"rotation_deg": 3.068020689667501e-08
|
||||
},
|
||||
{
|
||||
"cost": 257.9158465208356,
|
||||
"success": true,
|
||||
"translation_m": 2.8335867565734006e-09,
|
||||
"rotation_deg": 1.5660913277854904e-07
|
||||
},
|
||||
{
|
||||
"cost": 257.915846520835,
|
||||
"success": true,
|
||||
"translation_m": 1.0113279249597898e-10,
|
||||
"rotation_deg": 1.1726291770865867e-09
|
||||
},
|
||||
{
|
||||
"cost": 257.91584652083503,
|
||||
"success": true,
|
||||
"translation_m": 8.073503715426879e-10,
|
||||
"rotation_deg": 4.276975901573228e-08
|
||||
},
|
||||
{
|
||||
"cost": 257.91584652083486,
|
||||
"success": true,
|
||||
"translation_m": 3.469446951953614e-18,
|
||||
"rotation_deg": 0.0
|
||||
},
|
||||
{
|
||||
"cost": 257.91584652083515,
|
||||
"success": true,
|
||||
"translation_m": 1.698393313088208e-09,
|
||||
"rotation_deg": 8.683351386297902e-08
|
||||
},
|
||||
{
|
||||
"cost": 257.91584652083503,
|
||||
"success": true,
|
||||
"translation_m": 1.831365187011624e-10,
|
||||
"rotation_deg": 1.6896050804471163e-09
|
||||
},
|
||||
{
|
||||
"cost": 257.91584652083503,
|
||||
"success": true,
|
||||
"translation_m": 1.2207922904627949e-09,
|
||||
"rotation_deg": 2.6207051319974274e-08
|
||||
},
|
||||
{
|
||||
"cost": 257.9158465208349,
|
||||
"success": true,
|
||||
"translation_m": 2.9844783853630704e-10,
|
||||
"rotation_deg": 1.1466486750928911e-08
|
||||
}
|
||||
]
|
||||
},
|
||||
"bootstrap": {
|
||||
"runs": 100,
|
||||
"order": [
|
||||
"x_m",
|
||||
"y_m",
|
||||
"z_m",
|
||||
"roll_deg",
|
||||
"pitch_deg",
|
||||
"yaw_deg"
|
||||
],
|
||||
"std": [
|
||||
0.0020832827985508263,
|
||||
0.002063603632322515,
|
||||
0.001427746471392659,
|
||||
0.07576290622767821,
|
||||
0.06304875844333606,
|
||||
0.07843172452171372
|
||||
],
|
||||
"p025": [
|
||||
1.2941517658812944,
|
||||
-0.0068139260683400035,
|
||||
0.7194879609149559,
|
||||
-0.932759562453139,
|
||||
1.0361273609600192,
|
||||
-1.0172648960899553
|
||||
],
|
||||
"p975": [
|
||||
1.303011833178259,
|
||||
0.0009615093863316334,
|
||||
0.7242819230641808,
|
||||
-0.6514715860744424,
|
||||
1.2471483979735007,
|
||||
-0.7328998428204786
|
||||
]
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
-1107
File diff suppressed because it is too large
Load Diff
@@ -1,109 +0,0 @@
|
||||
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,4.069460063439237,24.612641616688823,0.7376764924448849,0.11846276711125131,6,14.186383674198092,0.007238562624113292,0.02790414903884654,1.0,True,
|
||||
0,2,8.883155687691525,14.186041609026283,0.617186536801874,0.12801123590557925,6,36.79061260583155,0.006865219918284302,0.20055597955733165,1.0,True,
|
||||
0,3,5.800196618465403,50.885974946353855,0.7186066691459031,0.11701588647718943,6,18.363958192984455,0.008227849157773135,0.05354665376691754,1.0,True,
|
||||
1,2,4.892046307546544,10.426600007662538,0.7423043095866315,0.11327867264180574,6,26.05793878332379,0.01880830643908174,0.13698190350335646,1.0,True,
|
||||
1,3,1.7315947839093804,26.273333329665036,0.8389134554643083,0.10681097771213023,6,14.956194090958816,0.0035146019341874887,0.1349785173147079,1.0,True,
|
||||
1,4,1.6946255625760025,60.40345832959281,0.88,0.10289486740770283,6,11.829281279209892,0.006064649004018339,0.061683233541617866,1.0,True,
|
||||
2,3,3.2805755806518446,36.69993333732758,0.795020120724346,0.10968948046836192,6,23.96630628312886,0.006456546110122383,0.030970536985363332,1.0,True,
|
||||
2,4,4.866335020594746,70.83005833725535,0.7190493965409979,0.11680954298455397,6,23.730154915082874,0.005632827193528356,0.03284052493715785,1.0,True,
|
||||
2,5,1.8274406190287722,30.448549979291712,0.7598566308243727,0.11774293624986373,6,16.599379025063065,0.028141707120452414,0.19962462817569399,1.0,True,
|
||||
3,4,1.75881263274858,34.13012499992777,0.83898411109721,0.10512726552504312,6,15.664666117555983,0.006186049607122224,0.016880074405568043,1.0,True,
|
||||
3,5,2.1020200425132134,67.14848331661929,0.7968186901951038,0.11623997504357782,6,18.1548400244513,0.021983524103315014,0.3960603757299183,1.0,True,
|
||||
3,6,5.791805311102367,61.163322289150074,0.6568381430363864,0.12435814704811046,6,25.0151910725651,0.008738020425158864,0.1291569973379011,1.0,True,
|
||||
4,5,3.30592832159088,101.27860831654709,0.7543039842597147,0.11308907219490882,6,19.690455732375476,0.002243469564109645,0.06843841908142442,1.0,True,
|
||||
4,6,6.453995240105232,95.29344728907782,0.6218497827436374,0.12814112793605542,6,41.84651093530334,0.01600824572236542,0.4490447249637784,1.0,True,
|
||||
4,7,9.537609568572432,26.32130681988008,0.6169457128361238,0.13205154815512993,6,36.92786505190044,0.019160428104594212,0.2888349968548246,1.0,True,
|
||||
5,6,3.7769167422851373,5.985161027469212,0.7372055740535208,0.1175976253407229,6,19.32269960027907,0.013833903611932107,0.01952771029395653,1.0,True,
|
||||
5,7,6.565348405821576,74.95730149666699,0.6841773746535651,0.11964187966504931,6,27.33180748081407,0.003240486196092054,0.04738439683023512,1.0,True,
|
||||
5,8,6.3343271669452825,107.99940292217995,0.6521066412758867,0.12472719695199193,6,19.156993592870748,0.0278691016568626,0.41056933218195657,1.0,True,
|
||||
6,7,3.1558607172566147,68.97214046919777,0.7538481109273629,0.11470554120698542,6,17.160170663404163,0.03433121044907878,0.14981218442224864,1.0,True,
|
||||
6,8,3.3979014114419868,102.01424189471071,0.683003003003003,0.11564979549315224,6,20.447019845630425,0.008147035817338538,0.038229943243018406,1.0,True,
|
||||
6,9,0.28270347875173524,124.11602215258995,0.7360264227642277,0.11829700338913093,6,18.21588471622476,0.003942462178993821,0.004948404195791413,1.0,True,
|
||||
7,8,4.78580085090425,33.04210142551296,0.6644591611479028,0.12091344193997677,6,22.65051252921267,0.010087854632047892,0.1144705976875931,1.0,True,
|
||||
7,9,2.876695741106431,166.91183737821345,0.6157641864692897,0.12124276796057824,6,31.889839980753695,2.858085971145254,5.202834749913653,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
7,10,3.5227760858025783,151.5297683494061,0.8421725239616613,0.10512064341715703,6,18.208137447441548,0.00590396821278501,0.011716048666689089,1.0,True,
|
||||
8,9,3.469611483011297,133.86973595269956,0.5997550520514391,0.12251997518546373,6,26.58434328826198,0.1455308769088698,0.6888512968600221,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
8,10,8.226583602288494,175.42813022508852,0.5915068162625166,0.1229044134151169,6,28.111420003057543,0.008997663249148741,0.15439288797351725,1.0,True,
|
||||
8,11,1.865267488778983,173.7180803410843,0.6836137963957513,0.11276660610764273,6,37.61742547586071,0.1113060196402131,0.53316971567076,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
9,10,5.488028285806731,41.558394272381754,0.5969882593159775,0.11948988234049264,6,38.89573848099908,0.0030407162313759195,0.04107484998318919,1.0,True,
|
||||
9,11,4.718056434111957,39.84834438838189,0.593742114559677,0.12239484647700946,6,46.81089854115947,0.035258275490363276,0.11274694382482037,1.0,True,
|
||||
9,12,4.0664516687652705,11.300244475855449,0.6153363453815262,0.12504774785186165,6,23.277303065116303,0.0752860327247449,0.25939502405614967,1.0,True,
|
||||
10,11,8.48963239412477,1.7100498839998592,0.5888198757763975,0.12435475144629402,6,51.68982317778118,0.008996147539897087,0.2187503499467401,1.0,True,
|
||||
10,12,7.8510898708654135,30.258149796526293,0.5523974295600593,0.12600876663407296,6,24.040230371790127,0.0067913142930030295,0.19210976651930364,1.0,True,
|
||||
10,13,7.303425556850936,93.89697482620899,0.48622589531680444,0.12387372192061825,6,40.15734453396082,0.010457065237222635,0.051939983599844905,1.0,True,
|
||||
11,12,0.684356309096518,28.54809991252644,0.8081153752138841,0.09827968392237502,6,14.074429682972724,0.003170825002365958,0.052994059649638055,1.0,True,
|
||||
11,13,4.983180422136547,92.18692494220912,0.4904655770183259,0.13065086109778945,6,59.94917005604024,0.03026165336674197,0.022229096602302635,1.0,True,
|
||||
11,14,7.513058208926106,116.17598776756182,0.5502994743918836,0.13363854913882675,6,76.59552817138297,0.012728663920096705,0.13777836936248603,1.0,True,
|
||||
12,13,4.470221622128888,63.638825029682685,0.5394185760039418,0.1291861812905223,6,40.18929295270992,0.016569656651710556,0.06971243680146068,1.0,True,
|
||||
12,14,7.042432348069883,87.62788785503537,0.5838501763346711,0.13149007038687927,6,46.68047224389145,0.016475747103725697,0.027479170527625274,1.0,True,
|
||||
12,15,9.425648786798952,64.11974003309916,0.512344920771404,0.13771827771927672,6,83.08102250810028,0.1594220156320846,0.7727589642419826,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
13,14,2.6059162757855927,23.989062825352686,0.6685967722064802,0.11944947118678222,6,17.494241627788213,0.00889966253307221,0.1868503363813343,1.0,True,
|
||||
13,15,4.985522367267706,0.4809150034164723,0.6380833851897947,0.12132550246856395,6,19.285114979899365,0.011310526444604854,0.11618951108877962,1.0,True,
|
||||
13,16,5.330126890587504,0.570225046299944,0.5094008523439458,0.12969283093489314,6,23.287780580490335,0.01929138406979036,0.6381307294537529,1.0,False,forward_reverse_rotation
|
||||
14,15,2.3845573265941185,23.508147821936216,0.7915233415233415,0.11297936021484274,6,14.802453343324077,0.04714013527415902,0.5990777245962995,1.0,False,forward_reverse_rotation
|
||||
14,16,7.871327660405588,24.55928787165262,0.515650129902264,0.1258655742770286,6,27.98905523695805,0.019790578845351906,0.2492103704468241,1.0,True,
|
||||
14,17,6.334147330965719,0.13339551798522414,0.6016802569804793,0.12195151942370595,6,25.851285634799194,0.01939980613812204,0.1992615163030762,1.0,True,
|
||||
15,16,10.188241681839806,1.051140049716416,0.4590676165479315,0.13331101566670972,6,37.36189113980903,0.03193705319987942,0.25820325147713563,1.0,True,
|
||||
15,17,8.639041695194567,23.641543339921444,0.5389415876185721,0.1297159188720241,6,23.825996467364362,0.007152603768137945,0.01099978555369691,1.0,True,
|
||||
15,18,9.620687246763701,76.25281000098852,0.5202642612120442,0.13378678930694327,6,39.71428865706424,0.023698091864950893,0.7026335973530661,1.0,False,forward_reverse_rotation
|
||||
16,17,1.5531467972267479,24.69268338963786,0.7229415461973602,0.10903876418375444,6,27.565368871601265,0.004743603748938733,0.03110066538977425,1.0,True,
|
||||
16,18,0.5677742310084086,77.30395005070493,0.75774251343742,0.10672872147965808,6,23.961833593584473,0.00729627345064471,0.5370128665073076,1.0,False,forward_reverse_rotation
|
||||
16,19,2.9811390265794215,109.91770005034847,0.624375,0.11606003815798548,6,43.92870457834769,0.00942822069733503,0.10349184268425643,1.0,True,
|
||||
17,18,0.98603936348044,52.61126666106708,0.8035782747603833,0.11258525838778834,6,10.5263751279628,0.04456291633933312,0.40754887525204303,1.0,True,
|
||||
17,19,3.326868398717413,85.22501666071064,0.667207589564349,0.1151980232980854,6,37.82913063903142,0.002550382605456025,0.05599236133477508,1.0,True,
|
||||
17,20,1.702964560097507,146.95247656520317,0.6696552595024624,0.11181113630432839,6,22.83917826847431,0.009851652453759501,0.030403861001117326,1.0,True,
|
||||
18,19,3.0423123591285863,32.61374999964355,0.7803049555273189,0.10890373850857962,6,14.866928278077225,0.0027074586252039488,0.03345524421318835,1.0,True,
|
||||
18,20,1.0853574230860805,94.34120990413592,0.7890203137053227,0.110891959946164,6,9.73093989119612,0.07641393239305394,0.480643469622101,1.0,True,
|
||||
18,21,0.7190584934612743,134.43032499953063,0.7686106562539362,0.1151576675189467,6,11.132461972272983,0.012325022302827005,0.06184414805686676,1.0,True,
|
||||
19,20,1.9962827272376449,61.72745990449234,0.7206177800100452,0.11075109929370276,6,18.593207910714877,0.06755956873701982,0.6275145294718035,1.0,False,forward_reverse_rotation
|
||||
19,21,3.133843614009462,101.81657499988698,0.6599384615384616,0.1100348641166372,6,24.889550971173787,0.032753113036640115,0.1570816751009414,1.0,True,
|
||||
19,22,3.558853688535236,131.87013333415302,0.6354319180087847,0.11655958277402616,6,35.20679617831266,0.011678083327496752,0.14115606360994692,1.0,True,
|
||||
20,21,1.4312693216245356,40.08911509539463,0.8091622059006598,0.10860060068735904,6,9.844983425406634,0.004342811149796408,0.43079835067471983,1.0,True,
|
||||
20,22,2.8745434122269677,70.1426734296607,0.7075518262586377,0.11619246575360609,6,10.41692741032582,0.03233653011234762,0.3501326921447133,1.0,True,
|
||||
20,23,2.368927629183393,88.7954400941961,0.7127672722778395,0.11187552234677736,6,10.890181651202985,0.0036477332397017036,0.03588537530780425,1.0,True,
|
||||
21,22,1.9888588003695142,30.053558334266054,0.7451905626134301,0.11103160300292489,6,9.138865693353942,0.007025231148999399,0.031656114821116355,1.0,True,
|
||||
21,23,1.9477165743251885,48.70632499880147,0.7537566650508968,0.1091762180475198,6,10.033043192754391,0.0026262958914527778,0.05939834892732321,1.0,True,
|
||||
21,24,3.76075382790461,86.89547500633407,0.7108181370133071,0.1147630411233105,6,12.077810466162274,0.002611195084459223,0.042823121286843194,1.0,True,
|
||||
22,23,0.8778876913955667,18.652766664535406,0.8809323561215908,0.09065520084082093,6,9.426617095196006,0.00074030291113835,0.005760006892562891,1.0,True,
|
||||
22,24,2.2510479983846268,56.84191667206801,0.7459386832783681,0.1116686389188481,6,10.471980698049531,0.010212372381123916,0.01461127103474581,1.0,True,
|
||||
22,25,3.452614527841686,105.36038662410485,0.6250595521676989,0.10935727133461083,6,47.514851436189325,0.013489723519689117,0.0723917800582207,1.0,True,
|
||||
23,24,1.8212773036309853,38.18915000753262,0.7936138977244923,0.11107653584131949,6,10.660643490600723,0.008437497431588122,0.2765568737620497,1.0,True,
|
||||
23,25,2.999856552735995,86.70761995956946,0.6337826553739712,0.11196536842375276,6,43.84810300726168,0.02359951283541323,0.10308564406068685,1.0,True,
|
||||
23,26,1.7088514993141615,157.34900000166795,0.6073053892215569,0.11004156310392302,6,52.70992994760862,0.013062761031411258,0.0548185753269731,1.0,True,
|
||||
24,25,1.2059352225587747,48.51846995203683,0.7898629804777495,0.11080878069613129,6,17.323052863790767,0.024355899665769485,0.10833606018329535,1.0,True,
|
||||
24,26,1.1958827550030364,119.15984999413537,0.7515217920623326,0.10216449744519186,6,27.478293204817643,0.010967953426658109,0.044641472084512177,1.0,True,
|
||||
24,27,3.786115539231191,149.59794999698258,0.6259589210591437,0.11074683701330018,6,26.105827828207687,0.04374270593226806,0.34168251600562055,1.0,True,
|
||||
25,26,1.8270495459501794,70.64138004209858,0.8273774189718628,0.10613402567174812,6,17.478877580241615,0.018863132797671257,0.12251687299132978,1.0,True,
|
||||
25,27,4.741885618180033,101.07948004494568,0.6236883367506936,0.11275084173352168,6,26.65509822252546,0.005757137825848521,0.2558617834036415,1.0,True,
|
||||
25,28,3.8640843382258447,141.59343004213218,0.5871679316888045,0.11732003715351383,6,52.15762909847497,1.0486443236448235,4.536374847153588,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
26,27,2.939444415707082,30.43810000284707,0.6585129571324776,0.10848902314415616,6,30.227639491425478,0.002959097196576797,0.043581628031778105,1.0,True,
|
||||
26,28,2.285770454773634,70.95205000003368,0.6648410525062507,0.11120026543063653,6,45.565898082132684,0.012512803173543077,0.11122589391716618,1.0,True,
|
||||
26,29,3.6568094249627374,131.92299999999997,0.5895513507080804,0.11693751976202812,6,62.1400238672027,2.7672344834891307,9.168367379205225,0.0,False,forward_reverse_translation;forward_reverse_rotation;multistart_instability
|
||||
27,28,2.3764785758716087,40.513949997186636,0.7954517962985364,0.10154002419986238,6,26.01517111533084,0.019135551099374308,0.08227568287606397,1.0,True,
|
||||
27,29,4.061689152213973,101.48489999715295,0.7446499818643453,0.1104935519181424,6,32.698094109014136,0.015390416284740782,0.08645102756020058,1.0,True,
|
||||
27,30,5.033742765789926,178.61309998505533,0.583363515634432,0.11446907648011068,6,105.65813856703667,0.017491035693048888,0.22327775856236398,0.0,False,multistart_instability
|
||||
28,29,1.7860052935263149,60.970949999966315,0.8317879220161674,0.10401467258245657,6,16.856539687156317,0.007126704551442278,0.059447117802805614,1.0,True,
|
||||
28,30,7.378510482049102,138.09914998778677,0.540360873694207,0.1217315596532435,6,243.03186464572013,0.02476143939627759,0.2783665026489561,1.0,True,
|
||||
28,31,8.396001985859645,161.15751666826222,0.5051186318198242,0.12667907013046822,6,145.12677311467613,0.01381623315543165,0.08866229443960012,1.0,True,
|
||||
29,30,8.925911734961222,77.12819998782052,0.5223065970574277,0.12780035193537048,6,94.88866430179526,0.06232017355575957,1.955625956099923,1.0,False,forward_reverse_rotation
|
||||
29,31,9.936139535050964,100.18656666829587,0.49440231130371975,0.12866710903574613,6,130.4988571288183,0.047123741889749056,0.2295904679982487,1.0,True,
|
||||
29,32,9.719184595429152,159.1482027457047,0.49802134548507015,0.12675987702934546,6,49.64602672737782,0.0323736334045635,0.06974950067660468,0.0,False,multistart_instability
|
||||
30,31,1.0176267260390144,23.058366680475352,0.8480586608967424,0.09667505139943416,6,22.5712438700004,0.01573204986385798,0.04061482397026774,1.0,True,
|
||||
30,32,0.8427696971904044,82.02000275788396,0.867680517303317,0.0986734040048058,6,23.367311395821964,0.002023273028745447,0.014811950864385802,1.0,True,
|
||||
30,33,1.1320092061720382,147.1799498371321,0.7995722941665676,0.10006346131537393,6,41.688755802373954,0.00887908049317058,0.048438711468841336,1.0,True,
|
||||
31,32,0.2771314063233405,58.9616360774086,0.8486026731470231,0.09714101002609693,6,27.412782801978597,0.012921368358244189,0.05809273577687571,1.0,True,
|
||||
31,33,0.5409306841643147,124.12158315665668,0.07871263259402121,0.14967084978243636,6,33.0912130689722,2.900706563387122,12.11541439568944,1.0,False,heldout_inlier_ratio;forward_reverse_translation;forward_reverse_rotation
|
||||
31,34,0.9901318542574941,155.5976733552555,0.7813404050144648,0.09211161518215291,6,17.31754498769328,3.351107529092291,8.098567652508597,0.0,False,forward_reverse_translation;forward_reverse_rotation;multistart_instability
|
||||
32,33,0.38765596924480794,65.15994707924807,0.8592699327569645,0.08972486966187442,6,22.68434781952533,0.0035725430520846596,0.009168450597030125,1.0,True,
|
||||
32,34,1.0327853226589305,96.63603727784675,0.8328530259365994,0.09815070141607997,6,23.927327238925002,0.04150636593087017,1.4498937658029205,1.0,False,forward_reverse_rotation
|
||||
32,35,1.1947451269258382,131.6892972449946,0.8031309297912713,0.09391797152520207,6,30.896133075774756,0.007719527793580684,0.006042163579184511,0.0,False,multistart_instability
|
||||
33,34,0.7453275493729801,31.47609019859864,0.8676435549201811,0.0964383255266311,6,26.835745049910184,0.02602048161602559,1.951142742234491,1.0,False,forward_reverse_rotation
|
||||
33,35,1.0924186931915323,66.52935016574651,0.8329018592610026,0.09179860947142506,6,17.934600324801995,0.0072384331805243046,0.028209706778456432,1.0,True,
|
||||
33,36,3.335020341384374,123.21987515531416,0.760797342192691,0.09861359027653524,6,26.32312350297475,0.0022735557932631,0.12221117701824208,1.0,True,
|
||||
34,35,0.6186130964444055,35.05325996714787,0.8649093904448105,0.0788491357224537,6,23.02575456989985,0.0032110784907267375,0.015379666997505564,1.0,True,
|
||||
34,36,3.114273556969299,91.74378495671547,0.7729789590254706,0.09845381444357724,6,36.91664640012635,0.011794412591703963,0.006135949966801849,1.0,True,
|
||||
34,37,2.8155528331227235,126.08390993626574,0.722881252293017,0.09759501600127507,6,42.82845764024001,0.024742240312777743,0.08718512569927171,1.0,True,
|
||||
35,36,2.4989423629184655,56.69052498956759,0.7695298262665533,0.09495386680108024,6,27.978829086780696,0.006644101856716534,0.038610475450088305,1.0,True,
|
||||
35,37,2.2182956249874577,91.03064996911786,0.7217727327617437,0.10621413586570766,6,32.52725359303394,0.04503438705750094,1.5781812743250268,1.0,False,forward_reverse_rotation
|
||||
36,37,0.5129211474320938,34.34012497955026,0.8785082174462705,0.08834636280188386,6,23.324824248042262,0.003787237363253161,0.027331592166342466,1.0,True,
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -1,176 +0,0 @@
|
||||
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,0.503306788400079,13.198324485965863,0.8131655372700871,0.09008834340898543,6,11.429289586039127,0.0005504552049968047,0.0032916777115618487,1.0,True,
|
||||
0,2,1.1601020961002007,26.306295080591493,0.8167658604533367,0.09980570916927256,6,11.00789089021616,0.00205395151868756,0.012799633971915293,1.0,True,
|
||||
0,3,1.1328421148283978,41.74134818989305,0.81441508497705,0.10115686777955255,6,13.837529680361882,0.01247476852224996,0.1726729736128094,1.0,True,
|
||||
0,4,1.0129799192122786,70.92934830291522,0.7761963190184049,0.10269905695661055,6,12.888313335228592,0.019300920937430674,0.12217052794626229,1.0,True,
|
||||
0,5,0.9014321094792815,89.27285808969826,0.7735100978813034,0.10986502690369805,6,24.919203290408266,0.0278108340699398,0.2717481445912482,1.0,True,
|
||||
1,2,0.6927979865343085,13.107970594625625,0.7850287907869482,0.08649388452503427,6,11.757459931907107,0.001960394451155616,0.002128143929965857,1.0,True,
|
||||
1,3,0.7002295454253883,28.543023703927183,0.7901992730918661,0.09109387779670658,6,12.066030386554463,0.004906057223105903,0.018773640398341965,1.0,True,
|
||||
1,4,0.8045641659338967,57.731023816949346,0.7439266236985622,0.09680131928922782,6,12.860596463339792,0.020081946886066578,1.2340284819813434,1.0,False,forward_reverse_rotation
|
||||
1,5,0.7829726518389362,76.07453360373235,0.7313806483915384,0.10148815288043825,6,12.782489568272775,0.016729134900242502,0.06734086907642674,1.0,True,
|
||||
1,6,0.7843480712672012,108.63393511864574,0.6214689265536724,0.10742176387842234,6,26.39069479810122,0.0027238824581310127,0.04004688680398286,1.0,True,
|
||||
2,3,0.13949776780243606,15.435053109301553,0.9176300578034682,0.07082931569628453,6,11.740335220665598,0.0016419682635548487,0.0015051284247814798,1.0,True,
|
||||
2,4,0.6701726006967371,44.62305322232371,0.840540189585768,0.08212714345330237,6,12.917292889611646,0.0015059170263523442,0.004861145455894842,1.0,True,
|
||||
2,5,0.8004226998626774,62.96656300910673,0.8300970873786407,0.0931389934573794,6,15.74858194202481,0.002555949510569182,0.008486377461290648,1.0,True,
|
||||
2,6,1.3845111356101025,95.5259645240201,0.6495130297446696,0.10354826871538153,6,15.262952717632835,0.008359384079660144,0.07441619593698878,1.0,True,
|
||||
2,7,2.161304865409727,119.81081101983789,0.8143257302921169,0.09968516416989152,6,30.540416925007207,0.013121403719342412,0.05039604031914888,1.0,True,
|
||||
3,4,0.5366157827594368,29.188000113022152,0.8855689764780674,0.07250679559229746,6,11.672391892657863,0.0006574625393083392,0.0008548453445728261,1.0,True,
|
||||
3,5,0.6760093701980526,47.53150989980517,0.8759311584895967,0.08543306637795112,6,15.073465050917047,0.0011073394938326227,0.004974962253885575,1.0,True,
|
||||
3,6,1.4361364806393455,80.09091141471853,0.678819891780469,0.10239967326707564,6,23.156860004682848,0.002691305620040523,0.027681404773136364,1.0,True,
|
||||
3,7,2.1008551524156123,104.37575791053635,0.7961101683853283,0.10180989325686585,6,29.756525470837225,0.023292005056525338,0.174639961337377,1.0,True,
|
||||
3,8,1.3108481779402037,133.20736428981294,0.11556480999479438,0.1433106939673773,6,147.35707874920627,1.368389528072986,15.0277123732284,1.0,False,heldout_inlier_ratio;forward_reverse_translation;forward_reverse_rotation
|
||||
4,5,0.17861948949299924,18.343509786783002,0.8685714285714285,0.07604325543622346,6,12.370184068840063,0.003904582263467037,0.011742002375313174,1.0,True,
|
||||
4,6,1.5807073315069207,50.90291130169636,0.6822060883963826,0.10567824422734254,6,18.163522769519293,0.011923922180697284,0.08008579261790838,1.0,True,
|
||||
4,7,1.7804201387535592,75.18775779751417,0.7963870967741935,0.10178391918503964,6,25.315987799570973,0.034377900701078094,0.11532260919614924,1.0,True,
|
||||
4,8,1.2818497736845669,104.01936417679076,0.7430850379518847,0.10189238984319506,6,25.19640114706588,0.034977663635135596,1.5753470469755222,1.0,False,forward_reverse_rotation
|
||||
4,9,1.5141865499370524,117.34615495378958,0.0841833440929632,0.15176056899798168,6,84.88516221869183,3.340127368239112,6.177861200193235,0.0,False,heldout_inlier_ratio;forward_reverse_translation;forward_reverse_rotation;multistart_instability
|
||||
5,6,1.5316987521992935,32.55940151491337,0.6864384971693258,0.10315026388508003,6,11.505426214947052,0.002552272421554712,0.013899678900349944,1.0,True,
|
||||
5,7,1.6091514152462776,56.844248010731185,0.8104549602398644,0.09862238510016193,6,16.517299930207333,0.0037398303757535147,0.02129636862756259,1.0,True,
|
||||
5,8,1.1872485760158462,85.67585439000777,0.7806082661814401,0.10305777405801758,6,17.737819341361416,0.0056799616182010805,0.026182015145595202,1.0,True,
|
||||
5,9,1.380208837139288,99.00264516700663,0.7946777980693973,0.10313535699942489,6,14.147499646203187,0.06270036555847405,0.33857191756776234,1.0,True,
|
||||
5,10,1.7506315276318887,115.10127466723206,0.7847418443359877,0.10018431236036145,6,21.425526326745782,0.005291671170548772,0.044796841001461946,1.0,True,
|
||||
6,7,1.5692385974903325,24.284846495817817,0.7380672159016608,0.1046107504689679,6,13.947054238965462,0.010178220865611676,0.026255002379027764,1.0,True,
|
||||
6,8,0.5035712140385419,53.11645287509441,0.7026075619295958,0.10337241424878332,6,21.232848227388097,0.017447450845101884,0.1292664848366822,1.0,True,
|
||||
6,9,0.8508108569116883,66.44324365209327,0.6714210939544621,0.10949604778423808,6,34.21205543097956,0.09491078892598759,0.32255986251320673,1.0,False,forward_reverse_translation
|
||||
6,10,1.3331914459292633,82.5418731523187,0.6619427982478743,0.10510077922086615,6,31.101566437428897,0.003562383894956786,0.04536548719264196,1.0,True,
|
||||
6,11,3.16887584646763,119.46156331049859,0.638006230529595,0.1061575017783152,6,31.943306843588733,0.0059304520508679575,0.05963953472442965,1.0,True,
|
||||
7,8,1.1230406357307108,28.831606379276582,0.8040692297529396,0.09680052952350976,6,22.21980394474879,0.008328073875015064,0.06350723756646647,1.0,True,
|
||||
7,9,0.7186795671679719,42.158397156275456,0.8274764620076913,0.09296346258223728,6,22.096355228992984,0.0076981468910999155,0.020277033650542,1.0,True,
|
||||
7,10,0.39293571356254015,58.25702665650087,0.7992429186790236,0.10479299924479576,6,30.246845596558646,0.04240408437264065,1.1111803590641476,1.0,False,forward_reverse_rotation
|
||||
7,11,2.4544901278439815,95.17671681468076,0.7502523977788995,0.1028589368143411,6,19.931284665592216,0.005620519728387707,0.0303880139721275,1.0,True,
|
||||
7,12,3.0905023273107046,115.3786462164333,0.7054418372441338,0.10706084863640537,6,10.761985004268995,0.004629206980441498,0.07009059694702204,1.0,True,
|
||||
8,9,0.4407680716864947,13.326790776998866,0.8539132734003173,0.09158655960119419,6,31.292808872701826,0.0036696927581956673,0.014909075167693285,1.0,True,
|
||||
8,10,0.968166048306331,29.425420277224287,0.7989328474752733,0.09757506446655329,6,25.45934970841849,0.008689580645481346,0.052297435035790506,1.0,True,
|
||||
8,11,3.0540124804140354,66.34511043540417,0.6854158802063672,0.10755838259974337,6,42.46956117899474,0.00234148729464824,0.061662020462905004,1.0,True,
|
||||
8,12,3.652970846697932,86.5470398371567,0.6485376477909147,0.11031208403019,6,30.049664340525695,0.013830104055554564,0.11563630256710061,1.0,True,
|
||||
8,13,4.357531202056024,107.49623325505803,0.622879241516966,0.1149201207874094,6,27.04257772502661,0.005835943764379069,0.23887217550290574,1.0,True,
|
||||
9,10,0.5276649044820116,16.098629500225417,0.8486154649947754,0.09691837979566219,6,22.577834737399076,0.007052114296262031,0.2907164943632002,1.0,True,
|
||||
9,11,2.680593454060616,53.0183196584053,0.6963000378835712,0.10535088240045436,6,39.530571540955094,0.0034527207661208545,0.020238883727394828,1.0,True,
|
||||
9,12,3.2944321799753977,73.22024906015783,0.6584238791057825,0.10587631557960675,6,33.498316372288826,0.009482405807021465,0.07225186033919398,1.0,True,
|
||||
9,13,4.1147924441994315,94.16944247805917,0.621557336004006,0.11335203160746431,6,32.6975845279655,0.009011781776631502,0.0416830306778097,1.0,True,
|
||||
9,14,3.748520283907519,169.69584626488452,0.048890560361037984,0.15557197380465354,6,51.54107837707314,1.0864076801076206,7.184564913859941,0.5,False,heldout_inlier_ratio;forward_reverse_translation;forward_reverse_rotation
|
||||
10,11,2.249454986440387,36.91969015817989,0.7156362731683045,0.10422606491110974,6,45.45254669271086,0.004301999273657816,0.02361974788713562,1.0,True,
|
||||
10,12,2.8783779741216167,57.12161955993242,0.692875599852344,0.10691573133186853,6,39.11010182412513,0.004231594662123499,0.01872424915403812,1.0,True,
|
||||
10,13,3.84803303865234,78.07081297783375,0.6594721262950173,0.10871022234744057,6,43.1464607017966,0.006980776690426113,0.21408921607631748,1.0,True,
|
||||
10,14,3.3834992499807997,153.59721676465847,0.062245276028158575,0.15570919185507412,6,59.4104405367878,0.09444016841800375,2.8556589503073977,0.0,False,heldout_inlier_ratio;forward_reverse_translation;forward_reverse_rotation;multistart_instability
|
||||
10,15,1.4957886147833104,171.72980583515965,0.6232518545542989,0.10969245891269987,6,43.00146365447724,3.0001452916434883,4.8522273147326915,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
11,12,0.636223282239137,20.20192940175253,0.8688915375446961,0.08660981428891965,6,18.033297623211222,0.005089530929434581,0.03170796903435614,1.0,True,
|
||||
11,13,2.0145868546459504,41.151122819653864,0.8021741727392188,0.10650327571539893,6,18.339724002801702,0.04485533499047456,0.27313934813876123,1.0,True,
|
||||
11,14,1.2405786051647103,116.67752660647822,0.7455741626794259,0.11063741423489376,6,20.694961222671232,0.007044503253911164,0.40985193451245056,1.0,True,
|
||||
11,15,1.4202907399288436,151.3505040066613,0.7466415272213057,0.10329430650455694,6,27.704214205277534,0.13203399207663835,1.4478079414864902,0.5,False,forward_reverse_translation;forward_reverse_rotation
|
||||
11,16,2.7368971716016928,176.81389445065594,0.78639603721155,0.10318237166131629,6,34.658693494341755,0.008767229441137649,0.032548654712657686,1.0,True,
|
||||
12,13,1.5928240921286525,20.949193417901323,0.8217283366828231,0.10684146627686454,6,16.400323597466677,0.01763325318199382,0.09467538550034012,1.0,True,
|
||||
12,14,0.6774809171975742,96.47559720472566,0.7611268939393939,0.10826784336909262,6,10.635638995146312,0.0015931090432955832,0.024585439481643892,1.0,True,
|
||||
12,15,1.8892292086221258,131.14857460490867,0.7324469325868906,0.11113399174419211,6,19.970471882560926,0.0024416100752998565,0.009279978214820864,1.0,True,
|
||||
12,16,3.349436875941103,156.6119650489076,0.7500298864315601,0.10525785108693746,6,30.70828038440084,0.0024719134275639418,0.013160987022490347,1.0,True,
|
||||
12,17,6.51378754358264,111.73754176984298,0.6198434030618207,0.1221546776649581,6,23.54160456185754,0.013538123192296372,0.06236055877935909,1.0,True,
|
||||
13,14,0.9721300146850552,75.52640378682433,0.8278562107011508,0.10919246415865995,6,12.723402368483741,0.0049872211162087675,0.02566897887278044,1.0,True,
|
||||
13,15,2.426469315960194,110.19938118700728,0.7886616014026885,0.10800229196760061,6,13.66454080002457,0.0038816141140735755,0.020030260506224723,1.0,True,
|
||||
13,16,4.157137927296689,135.66277163100625,0.7477833692786964,0.10901310110319071,6,21.034367079780026,0.0024107551433002806,0.01470679715840447,1.0,True,
|
||||
13,17,6.347445048137873,90.78834835194164,0.6122042632935114,0.12126385638135445,6,27.550293797111443,0.010111269848200304,1.6132660739833655,1.0,False,forward_reverse_rotation
|
||||
13,18,4.26917989710959,135.79234683500215,0.6756988719960765,0.1140499722068077,6,13.668694297489541,0.010188526275029454,0.05757819838859875,1.0,True,
|
||||
14,15,2.176233486689304,34.672977400182965,0.7415730337078652,0.11426627617931512,6,13.437209845730706,0.009280638111078932,0.07287904157175247,1.0,True,
|
||||
14,16,3.79947855245853,60.13636784418198,0.7130173965206958,0.11194096137848975,6,36.60672565292038,0.0004016408999195087,0.020284570842973915,1.0,True,
|
||||
14,17,6.190474035537447,15.261944565117341,0.6118212736015011,0.11991020962112661,6,17.152314443231333,0.020151321868834806,0.2079666531947748,1.0,True,
|
||||
14,18,4.170672674565236,60.26594304817776,0.6756292203806016,0.1138218459710723,6,11.041435170572107,0.023698120255922432,0.1321697884270417,1.0,True,
|
||||
14,19,3.9999134794649294,94.30913149027137,0.6699172941612147,0.112413086617321,6,9.748384934395327,0.018186549996561333,1.2493862686891326,1.0,False,forward_reverse_rotation
|
||||
15,16,1.7328875589135755,25.463390443999018,0.7714218177520388,0.10015132538295435,6,21.49868629780701,0.007439481433750378,0.036349268136368934,1.0,True,
|
||||
15,17,8.352264787019024,19.411032835065622,0.5587657459840518,0.12832496127520593,6,38.53228682833441,0.005430301274456062,0.06530638270069017,1.0,True,
|
||||
15,18,6.346037230040679,25.592965647994788,0.615040502962157,0.11840729454457544,6,21.032065383701333,0.012871328625232324,0.037753566213482644,1.0,True,
|
||||
15,19,5.607512178689573,59.636154090088375,0.6234350309955026,0.11735435665832353,6,16.270394372537467,0.007833445352022574,0.016491686030251827,1.0,True,
|
||||
15,20,8.633248754322691,149.96154617253603,0.5562658304185261,0.13192141621005607,6,26.944324835385952,0.023510650105734523,0.673469393155776,1.0,False,forward_reverse_rotation
|
||||
16,17,9.849975560032544,44.87442327906463,0.5900047370914259,0.1265936504427481,6,90.52736834449948,0.011296955150750666,0.21501790849158783,1.0,True,
|
||||
16,18,7.9099649541476005,0.12957520399577063,0.6471098982882659,0.12019779875781794,6,38.44752656622707,0.016821400599454826,0.06522344447557246,1.0,True,
|
||||
16,19,6.609737623005951,34.172763646089344,0.6280868046894488,0.12242728727104996,6,33.04590657073916,0.06745241310870236,1.6183598806956783,1.0,False,forward_reverse_rotation
|
||||
16,20,9.541288639020653,124.49815572853673,0.5791883197228409,0.127436475456937,6,40.945151692592816,2.599521231663455,5.87323656621683,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
16,21,9.407850320517097,175.38299577015903,0.49424730531670097,0.13389808634231865,6,45.28912477989511,0.04478742358365585,0.10475809279093058,1.0,True,
|
||||
17,18,2.081596655954183,45.003998483060414,0.7629028349890962,0.10358638519274684,6,18.62989302843653,0.007136146106563684,0.13887814859043496,1.0,True,
|
||||
17,19,4.34928579963815,79.047186925154,0.6728380024360536,0.10727518915463004,6,33.81541258417489,0.0017207670327870018,0.035486867252565536,1.0,True,
|
||||
17,20,4.4206846692505035,169.37257900760153,0.6354846507130771,0.11168219002675635,6,38.40506040461897,0.020290214498459216,0.2831192364677464,1.0,True,
|
||||
17,21,6.400116212709096,139.7425809507742,0.5695348561959995,0.1231813524465837,6,57.78224861663297,0.009859208985419086,0.31053558178227947,1.0,True,
|
||||
17,22,8.798226453379533,96.08482130259475,0.5459048079246195,0.1287223998113377,6,62.758312260043155,0.03194615937469955,0.5773515871730924,1.0,False,forward_reverse_rotation
|
||||
18,19,3.459222336215112,34.04318844209358,0.7562595809913132,0.11139160446923307,6,9.605522638453952,0.013156152321531143,0.09121207325672914,1.0,True,
|
||||
18,20,4.94806857498194,124.36858052454107,0.6668778509883426,0.1149564835181103,6,18.76442873201715,0.0076759006397633354,0.11713903044228172,1.0,True,
|
||||
18,21,6.5847443121227816,175.25342056617163,0.5977438948803768,0.12625086545570646,6,26.666713369082085,0.021119392446408227,0.18202979634982344,1.0,True,
|
||||
18,22,9.20681259274594,141.08881978565523,0.5286220871327254,0.13561310095446666,6,65.22594013516775,0.03713510940704989,0.6483189610135184,1.0,False,forward_reverse_rotation
|
||||
18,23,13.164275822166362,109.14103513098563,0.47146496815286626,0.14168298172295804,6,112.91469628781756,0.01208598984738065,0.6082838532521024,1.0,False,forward_reverse_rotation
|
||||
19,20,3.031758915138065,90.32539208244746,0.7409531090723751,0.11651827109675585,6,10.060869835729363,0.0051743650857167135,0.07263138471648796,1.0,True,
|
||||
19,21,3.732423384308353,141.21023212407198,0.6563629565000623,0.12291187901196955,6,15.339627619255575,0.0075358808329252175,0.06620678153945667,1.0,True,
|
||||
19,22,6.37255124464243,175.13200822775684,0.5891492613346918,0.12519472268444526,6,28.30213785955742,0.010212573357042046,0.11056129275235052,1.0,True,
|
||||
19,23,10.37094757900695,143.1842235730793,0.4984627209838586,0.13443006540917718,6,96.22322799212152,0.02229275506707497,0.2903847316754494,1.0,True,
|
||||
19,24,7.752290899896264,99.91483670708607,0.5732565579014716,0.1300803661721533,6,45.37964984018865,0.07078749161909308,0.6582469262123747,1.0,False,forward_reverse_rotation
|
||||
20,21,2.057726146362386,50.884840041624386,0.7808828984790405,0.11119787612354914,6,10.584324886965474,0.0031476308503252674,0.022487168529706673,1.0,True,
|
||||
20,22,4.388457127616061,94.54259968980386,0.6557604850934815,0.11898674179731801,6,16.883756700029306,0.008500396323601164,0.06463449106814506,1.0,True,
|
||||
20,23,8.256548639868363,126.4903843444735,0.5833545108005083,0.12863144503040289,6,48.7242741462686,0.013890482176493085,0.14514813799569015,1.0,True,
|
||||
20,24,5.797339988732605,169.75977121046614,0.6348521385962685,0.11831053318180502,6,31.671029215629257,0.00725649124030166,0.27346756317921195,1.0,True,
|
||||
20,25,3.9584300095978864,99.81821396908215,0.7094296865164296,0.11461231093244224,6,16.207076145397426,0.005999722474434507,0.07369423294061743,1.0,True,
|
||||
21,22,2.665930009787955,43.65775964817948,0.7387220368310469,0.11520069835112393,6,16.025252253059314,0.0021484382611444506,0.09312757978022868,1.0,True,
|
||||
21,23,6.670349114267683,75.60554430284907,0.6238657551274084,0.11987801174807478,6,32.271874238810035,0.007927242611182222,0.08795608522524892,1.0,True,
|
||||
21,24,4.0761181240750135,118.87493116884215,0.6712192699279861,0.11172772070549726,6,21.556821129992922,0.04673963175312233,0.22273623714194987,1.0,True,
|
||||
21,25,2.626640779558244,150.70305401070652,0.699310174919931,0.11234398811200015,6,15.335715959290205,0.018678960705618183,0.1734016933410122,1.0,True,
|
||||
21,26,2.086425835169367,83.91641671720558,0.7166481550043194,0.11091971646336789,6,12.109452825928004,0.00977162867106615,0.0631934229127065,1.0,True,
|
||||
22,23,4.005228418650323,31.947784654669576,0.7252984505969012,0.11644876240570266,6,17.935878140214236,0.013002087545984397,0.11470841251550605,1.0,True,
|
||||
22,24,1.4231800329066895,75.21717152066267,0.7555499175440822,0.1089594430160029,6,14.427403734239578,0.0044919719825295985,0.008669004448985662,1.0,True,
|
||||
22,25,0.9824487562406952,165.63918634111403,0.7088209387190134,0.11165869814478939,6,23.409617344710625,0.005265657588642687,0.10195131255569051,1.0,True,
|
||||
22,26,3.0743977770984916,127.57417636538506,0.6831820474029249,0.11509847268437542,6,18.05320621935197,0.010313466929779696,0.02189018950989812,1.0,True,
|
||||
22,27,3.054692363582515,96.43768805753649,0.712325317889966,0.11297739003609018,6,14.570486778570737,0.006473104665270118,0.07627008321159866,1.0,True,
|
||||
23,24,2.6253440212817054,43.26938686599312,0.787546254944494,0.11112536909525574,6,13.667766137918514,0.003984385308883342,0.012875657690538275,1.0,True,
|
||||
23,25,4.30404511575867,133.69140168644446,0.6839640551828883,0.11561487899989795,6,40.22316701306096,0.009663940236368565,0.2587163051792124,1.0,True,
|
||||
23,26,6.580252552934289,159.52196102005493,0.6214811057570377,0.12356096223549605,6,59.18789907295204,0.03346639663911815,0.040359288659068966,1.0,True,
|
||||
23,27,6.261292051742304,128.3854727122061,0.6439154109155375,0.11883308044324468,6,48.252953818047224,0.01363202571969651,0.268813724284828,1.0,True,
|
||||
23,28,10.83543880539923,37.57580831192121,0.5551750380517504,0.13104613123848732,6,44.00847715074386,0.01592501575703795,0.1925228188054137,1.0,True,
|
||||
24,25,2.0155105379126432,90.4220148204513,0.7610619469026548,0.10446971824743242,6,22.29894236104597,0.01721789520038266,0.09266069416139829,1.0,True,
|
||||
24,26,4.344602404326578,157.20865211395216,0.6986700443318556,0.11795525471114342,6,30.354013262701024,0.0239438468814135,0.2700005297192175,1.0,True,
|
||||
24,27,4.194437499675352,171.65485957819877,0.7233746521629142,0.11505806966234582,6,24.218829066684407,0.0071603040929797065,0.1144565168286882,1.0,True,
|
||||
24,28,8.235813904401468,80.84519517791432,0.618522741669834,0.1218895746871147,6,34.55835443937473,0.008956300116613691,0.24319664279778394,1.0,True,
|
||||
24,29,2.7255497122534083,57.0551252080454,0.7635993899339095,0.11147922533242269,6,11.572525725181164,0.02246832420061709,0.4519372330281508,1.0,True,
|
||||
25,26,2.340922525153354,66.78663729350096,0.8176906646563639,0.1076748622762494,6,10.194320056407282,0.011727583881002021,0.04299213457608308,1.0,True,
|
||||
25,27,2.187150933555911,97.92312560134954,0.8508155583437892,0.10177690901936605,6,9.447407214356089,0.004921098494284399,0.04722324529000337,1.0,True,
|
||||
25,28,6.688406442287195,171.26720999836604,0.6552720874701521,0.1158307449607044,6,16.856702471098828,0.010027166778796438,0.069841684352646,1.0,True,
|
||||
25,29,1.411474020521721,147.47714002849685,0.7434442763489663,0.11227320270489505,6,19.207346965238134,0.005744598995027529,0.30413185830684,1.0,True,
|
||||
25,30,0.5324917816481396,118.09183853064393,0.7986111111111112,0.1061010900656728,6,14.995080416656407,0.004651476537899485,0.06337779258524685,1.0,True,
|
||||
26,27,0.6349061963265976,31.136488307848563,0.8835952231301069,0.10164781558403184,6,8.741658683232068,0.0010243697887392141,0.04630474119881922,1.0,True,
|
||||
26,28,5.008419104260455,121.94615270813352,0.7013346764039284,0.1156303654422143,6,10.39669408260953,0.016692399239017493,0.1408617368634082,1.0,True,
|
||||
26,29,2.224643201350574,145.73622267800252,0.7255273462170014,0.11343814488049828,6,14.171918272295303,0.0030631045126193056,0.10499072900350268,1.0,True,
|
||||
26,30,2.6736935848107626,175.1215241758588,0.7273877292852625,0.11178149175643984,6,20.18904245623208,0.002906139936114469,0.06343916895540856,1.0,True,
|
||||
26,31,6.867005915953627,145.82839665297058,0.6099962135554714,0.12348129729633385,6,43.35600938855713,0.011230201352754812,0.02547666380871279,1.0,True,
|
||||
27,28,5.622863551235285,90.80966440028486,0.7116811266188859,0.11387091842867321,6,10.816842555490693,0.011430300098438593,0.17858658887118406,1.0,True,
|
||||
27,29,2.458639091699311,114.59973437015381,0.7588294651866802,0.10898351788466304,6,11.452504275483305,0.002552411031283606,0.096053889700167,1.0,True,
|
||||
27,30,2.614522132166758,143.98503586800658,0.7699595755432036,0.10809432324457112,6,19.384788093934308,0.006419845852952349,0.09683669503892821,1.0,True,
|
||||
27,31,6.500901961576647,114.69190834512194,0.6407864885303756,0.12195597170279295,6,45.71099685307573,0.03203829198983217,0.21314212616538905,1.0,True,
|
||||
27,32,8.204840364723921,69.85846065460369,0.6120722798923491,0.12793570356778294,6,50.652407095458955,0.02476270066797521,0.18953242722457034,1.0,True,
|
||||
28,29,5.5254251571777075,23.790069969868927,0.6751737207833228,0.11816626627973714,6,15.58130572797597,0.0036062245918322845,0.04228106700822467,1.0,True,
|
||||
28,30,6.682895390289165,53.17537146772172,0.6476021763887132,0.12162303323930705,6,19.56745364015458,0.036760870155111036,0.061189777619461184,1.0,True,
|
||||
28,31,11.27338119162288,23.882243944837096,0.558515338972352,0.1324943729180927,6,46.74937334475135,0.011294835537302048,0.22869636591571527,1.0,True,
|
||||
28,32,12.874594603353637,20.951203745681177,0.5356867779204108,0.13793317141107478,6,47.36276875018484,0.009260784922164039,0.4736145985672847,1.0,True,
|
||||
28,33,13.796424177198949,59.567633422321585,0.49968659897204465,0.13776776698165452,6,59.65569689133837,0.03480709552965627,0.1328751318540718,1.0,True,
|
||||
29,30,1.1998189814142899,29.3853014978528,0.8126428027418127,0.11465616151168853,6,9.73882704495904,0.059123063905753705,0.35885997079417975,1.0,True,
|
||||
29,31,5.755712819539279,0.09217397496817598,0.7178318135764944,0.11831514282300001,6,19.572443598172608,0.03055388488044922,0.16788276176822323,1.0,True,
|
||||
29,32,7.3497160995478215,44.7412737155501,0.6866709594333548,0.12344589693451308,6,19.69654687402097,0.01847461637742171,0.10764991453418553,1.0,True,
|
||||
29,33,8.359102419083325,83.35770339219052,0.6151911468812877,0.12607024585552623,6,19.321252328369155,0.005640558537625966,0.060018922799470055,1.0,True,
|
||||
29,34,8.008340805017072,133.40261903862776,0.6489454636216149,0.1229782406905996,6,19.361211916752247,0.024951598645873194,0.20519725330906424,1.0,True,
|
||||
30,31,4.592128513798009,29.29312752288462,0.76103500761035,0.11418966560335815,6,16.756236396505788,0.010805499433410783,0.0764328342532002,1.0,True,
|
||||
30,32,6.2188831730504885,74.12657521340287,0.7051463949438926,0.11749249261595905,6,20.554466965332146,0.009422682577629085,0.037900377279079585,1.0,True,
|
||||
30,33,7.344850966128434,112.7430048900433,0.6064231738035264,0.12368925274094972,6,20.291143104650924,0.0147669225762263,0.09037435316445036,1.0,True,
|
||||
30,34,7.0347870411064095,162.78792053648075,0.6427946506686664,0.12352381867411776,6,21.47516866844496,3.1821548176867474,2.4099911828321603,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
30,35,9.281470813161304,166.02816439171798,0.690784364483562,0.12252550482763978,6,16.634587270964886,0.009824737708452339,0.14818916841264132,1.0,True,
|
||||
31,32,1.7043840283934533,44.83344769051828,0.7959078625659504,0.10965414855273443,6,12.882067962817517,0.009608345699366565,0.04073745185785107,1.0,True,
|
||||
31,33,3.3472002644811774,83.44987736715868,0.636089469716009,0.11810494837446742,6,13.701242758091343,0.01055590691460776,0.06271370554561609,1.0,True,
|
||||
31,34,3.311630046755356,133.49479301359594,0.6599326599326599,0.11513164519765848,6,15.199690471396346,0.002580333972310516,0.03476275200242535,1.0,True,
|
||||
31,35,4.805055361756335,164.67870808539848,0.7747933884297521,0.1099315236542533,6,13.983106845566315,0.002969158365974405,0.02482993261597952,1.0,True,
|
||||
31,36,5.921091773191984,169.88970913698103,0.79326799071447,0.11165900641583826,6,12.181844458808802,0.004151989866605975,0.032942374858786365,1.0,True,
|
||||
32,33,1.9394369188755196,38.61642967664041,0.7479238533282229,0.1140254726045761,6,12.862133545437658,0.005854383016193307,0.042356141718508426,1.0,True,
|
||||
32,34,2.1435446082722334,88.6613453230776,0.7426470588235294,0.11481351455228676,6,15.077486603426832,0.0025843844761028077,0.009064526838353553,1.0,True,
|
||||
32,35,3.1027737257249126,119.84526039487966,0.8209641402863523,0.10635864973089924,6,10.914008667831691,0.004447738370013908,0.11616784364821804,1.0,True,
|
||||
32,36,4.235311686227635,145.27684317250132,0.7613800341073068,0.10898930843612145,6,12.22686011069426,0.008302372052489307,0.047221847858387886,1.0,True,
|
||||
32,37,3.1931475050378357,118.78221388859481,0.6919923126201153,0.11497666348297753,6,16.91846428853567,0.00567166990415677,0.10190182649448634,1.0,True,
|
||||
33,34,0.5704890065278277,50.0449156464372,0.8247678018575851,0.10774292174748101,6,13.307399451848953,0.005218203824516851,0.054034410494683056,1.0,True,
|
||||
33,35,2.3843314966611664,81.22883071823928,0.7097435897435898,0.11216257584808116,6,12.920219167499932,0.0055472051152683725,0.06161504272529624,1.0,True,
|
||||
33,36,3.5605240220038255,106.66041349586102,0.62202304737516,0.11282494351568334,6,18.491230751066993,0.009207361872581905,0.07430583689659953,1.0,True,
|
||||
33,37,4.013080941901569,80.16578421195443,0.6328828828828829,0.12540757119118434,6,17.018187124475837,0.0036940550280262596,0.12927083795080543,1.0,True,
|
||||
34,35,2.9403442697824866,31.183915071802076,0.7146673451214858,0.11428688542425412,6,13.705016766266674,0.013436446539858737,0.05510481554154184,1.0,True,
|
||||
34,36,4.102710388907318,56.61549784942384,0.6465506288908652,0.11729490897001751,6,19.754334744118587,0.086056763787067,1.0836879727751445,1.0,False,forward_reverse_translation;forward_reverse_rotation
|
||||
34,37,3.6865711881345757,30.12086856551724,0.6899292189246243,0.11937420197560855,6,16.808577408839643,0.005083360744530967,0.10024940937419655,1.0,True,
|
||||
35,36,1.2045561534352058,25.431582777621774,0.8242496050552922,0.10907898456971946,6,9.660062538057792,0.0026096461304541156,0.07595057929078583,1.0,True,
|
||||
35,37,6.084062615492111,1.063046506284832,0.6924659295448702,0.12103303062396852,6,14.36240888115935,0.005914867863779407,0.06573359298031699,1.0,True,
|
||||
36,37,7.2781244258509386,26.494629283906598,0.6402157164869029,0.12413886977390769,6,20.08544982146282,0.008397869289519334,0.08479281990151419,1.0,True,
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,277 +0,0 @@
|
||||
{
|
||||
"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": 36,
|
||||
"translation_m": {
|
||||
"rms": 0.07402020402512643,
|
||||
"median": 0.05314343925871579,
|
||||
"p90": 0.1272969635290951,
|
||||
"p95": 0.14147696290683623,
|
||||
"max": 0.15743855349684896
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 1.1492603033421918,
|
||||
"median": 0.8694109171568597,
|
||||
"p90": 1.8257616608147966,
|
||||
"p95": 1.9151501783565152,
|
||||
"max": 2.3872345295181554
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.026175149113866782,
|
||||
"rotation_deg": 0.6391104344821068,
|
||||
"i": 0,
|
||||
"j": 1
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.05399080656776795,
|
||||
"rotation_deg": 0.7503462279599024,
|
||||
"i": 0,
|
||||
"j": 3
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.05685955205113222,
|
||||
"rotation_deg": 1.7528510918025244,
|
||||
"i": 1,
|
||||
"j": 2
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.04386400899992785,
|
||||
"rotation_deg": 1.8467495197498804,
|
||||
"i": 2,
|
||||
"j": 3
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.05626077366726556,
|
||||
"rotation_deg": 0.8079113372879332,
|
||||
"i": 2,
|
||||
"j": 5
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.09087008636486496,
|
||||
"rotation_deg": 1.026687291127638,
|
||||
"i": 3,
|
||||
"j": 4
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.011511013157318718,
|
||||
"rotation_deg": 0.19484251468537728,
|
||||
"i": 3,
|
||||
"j": 5
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.07294571613929493,
|
||||
"rotation_deg": 0.8223795285339977,
|
||||
"i": 4,
|
||||
"j": 5
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.03068183988034665,
|
||||
"rotation_deg": 0.28683040898343787,
|
||||
"i": 5,
|
||||
"j": 6
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.04275223212349703,
|
||||
"rotation_deg": 0.701351776008062,
|
||||
"i": 6,
|
||||
"j": 7
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.04932770426469867,
|
||||
"rotation_deg": 0.6710714316916605,
|
||||
"i": 6,
|
||||
"j": 9
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.04132200915104361,
|
||||
"rotation_deg": 1.0591594894230583,
|
||||
"i": 11,
|
||||
"j": 12
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.05457596514011665,
|
||||
"rotation_deg": 1.9025587382160285,
|
||||
"i": 16,
|
||||
"j": 17
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.1444364884565483,
|
||||
"rotation_deg": 0.878734531814174,
|
||||
"i": 17,
|
||||
"j": 18
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.08666942413173652,
|
||||
"rotation_deg": 0.8560485527931129,
|
||||
"i": 18,
|
||||
"j": 19
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.1401188917021612,
|
||||
"rotation_deg": 1.596129012793476,
|
||||
"i": 18,
|
||||
"j": 21
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.015218472185905801,
|
||||
"rotation_deg": 1.3639536065690272,
|
||||
"i": 20,
|
||||
"j": 21
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.044288628737202185,
|
||||
"rotation_deg": 0.24234091190374474,
|
||||
"i": 20,
|
||||
"j": 22
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.041873719472882466,
|
||||
"rotation_deg": 0.8630111615428633,
|
||||
"i": 20,
|
||||
"j": 23
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.04766076872791419,
|
||||
"rotation_deg": 1.592170300445217,
|
||||
"i": 21,
|
||||
"j": 22
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.06407386924590294,
|
||||
"rotation_deg": 0.6604716233222132,
|
||||
"i": 21,
|
||||
"j": 24
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.04694855582296258,
|
||||
"rotation_deg": 0.49059371565968823,
|
||||
"i": 22,
|
||||
"j": 23
|
||||
},
|
||||
{
|
||||
"pair_index": 22,
|
||||
"translation_m": 0.01699246526900484,
|
||||
"rotation_deg": 1.4341910287168735,
|
||||
"i": 22,
|
||||
"j": 24
|
||||
},
|
||||
{
|
||||
"pair_index": 23,
|
||||
"translation_m": 0.05229607194966363,
|
||||
"rotation_deg": 1.120879367830044,
|
||||
"i": 23,
|
||||
"j": 24
|
||||
},
|
||||
{
|
||||
"pair_index": 24,
|
||||
"translation_m": 0.020810043376301643,
|
||||
"rotation_deg": 0.5009109191051434,
|
||||
"i": 24,
|
||||
"j": 25
|
||||
},
|
||||
{
|
||||
"pair_index": 25,
|
||||
"translation_m": 0.043831190745566344,
|
||||
"rotation_deg": 0.47571695708233286,
|
||||
"i": 24,
|
||||
"j": 26
|
||||
},
|
||||
{
|
||||
"pair_index": 26,
|
||||
"translation_m": 0.11447503535602893,
|
||||
"rotation_deg": 0.9257799651614966,
|
||||
"i": 25,
|
||||
"j": 26
|
||||
},
|
||||
{
|
||||
"pair_index": 27,
|
||||
"translation_m": 0.061431194585866364,
|
||||
"rotation_deg": 1.8047738018797126,
|
||||
"i": 27,
|
||||
"j": 28
|
||||
},
|
||||
{
|
||||
"pair_index": 28,
|
||||
"translation_m": 0.09966331456020154,
|
||||
"rotation_deg": 1.9529244987779755,
|
||||
"i": 27,
|
||||
"j": 29
|
||||
},
|
||||
{
|
||||
"pair_index": 29,
|
||||
"translation_m": 0.07785577496744421,
|
||||
"rotation_deg": 0.5145378388092755,
|
||||
"i": 28,
|
||||
"j": 29
|
||||
},
|
||||
{
|
||||
"pair_index": 30,
|
||||
"translation_m": 0.14049045439026553,
|
||||
"rotation_deg": 0.83303218231006,
|
||||
"i": 30,
|
||||
"j": 31
|
||||
},
|
||||
{
|
||||
"pair_index": 31,
|
||||
"translation_m": 0.11441845590035929,
|
||||
"rotation_deg": 0.8758106727708561,
|
||||
"i": 30,
|
||||
"j": 33
|
||||
},
|
||||
{
|
||||
"pair_index": 32,
|
||||
"translation_m": 0.15743855349684896,
|
||||
"rotation_deg": 0.5956528317274336,
|
||||
"i": 33,
|
||||
"j": 35
|
||||
},
|
||||
{
|
||||
"pair_index": 33,
|
||||
"translation_m": 0.05714959629699741,
|
||||
"rotation_deg": 0.9388591914539489,
|
||||
"i": 34,
|
||||
"j": 35
|
||||
},
|
||||
{
|
||||
"pair_index": 34,
|
||||
"translation_m": 0.019561513757857227,
|
||||
"rotation_deg": 2.3872345295181554,
|
||||
"i": 34,
|
||||
"j": 37
|
||||
},
|
||||
{
|
||||
"pair_index": 35,
|
||||
"translation_m": 0.04089150700945596,
|
||||
"rotation_deg": 1.264595889658635,
|
||||
"i": 35,
|
||||
"j": 36
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,974 +0,0 @@
|
||||
{
|
||||
"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.2966739731400179,
|
||||
-0.0011818594987371798,
|
||||
0.7180500518063239
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.6862002617473892,
|
||||
1.312299105350799,
|
||||
-0.8320898359211147
|
||||
],
|
||||
"quaternion_xyzw": [
|
||||
-0.005904487870209512,
|
||||
0.0114946916809237,
|
||||
-0.007192110236616905,
|
||||
0.9998906353379331
|
||||
],
|
||||
"matrix_4x4": [
|
||||
[
|
||||
0.9996322912270097,
|
||||
0.014246906812619035,
|
||||
0.02307180059101153,
|
||||
1.2966739731400179
|
||||
],
|
||||
[
|
||||
-0.014518387883026281,
|
||||
0.9998268211466698,
|
||||
0.011642342076367565,
|
||||
-0.0011818594987371798
|
||||
],
|
||||
[
|
||||
-0.02290193768039828,
|
||||
-0.011973026435188067,
|
||||
0.9996660181723022,
|
||||
0.7180500518063239
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"estimation": {
|
||||
"stations": 38,
|
||||
"pairs": 154,
|
||||
"residuals": {
|
||||
"pairs": 154,
|
||||
"translation_m": {
|
||||
"rms": 0.20169832880489094,
|
||||
"median": 0.07246524583191469,
|
||||
"p90": 0.2753897404824865,
|
||||
"p95": 0.4278425490718384,
|
||||
"max": 0.9413768077277793
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 1.6476271943239644,
|
||||
"median": 0.9814049617994354,
|
||||
"p90": 2.2430975893180514,
|
||||
"p95": 3.6234061615039397,
|
||||
"max": 5.555959014778186
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.09160335763349035,
|
||||
"rotation_deg": 0.41678911395678336
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.17342241098897876,
|
||||
"rotation_deg": 0.6069352741159756
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.15362597338796116,
|
||||
"rotation_deg": 0.5006592067754067
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.10307796882842468,
|
||||
"rotation_deg": 0.7631958047896495
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.034854178949377916,
|
||||
"rotation_deg": 0.7924566962483651
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.08229579737538087,
|
||||
"rotation_deg": 0.5218956920191586
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.07756178891403459,
|
||||
"rotation_deg": 0.8901066576751191
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.00515582594404776,
|
||||
"rotation_deg": 1.1480686598732328
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.11902969080451287,
|
||||
"rotation_deg": 0.7250267588731203
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.02041753358033973,
|
||||
"rotation_deg": 0.42666891550326913
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.05329811381948769,
|
||||
"rotation_deg": 1.3070274389810175
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.07255710332913211,
|
||||
"rotation_deg": 1.7485586508142046
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.12913362654704053,
|
||||
"rotation_deg": 1.0437199550859728
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.2784531278023029,
|
||||
"rotation_deg": 0.8165170023642168
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.0583276394617015,
|
||||
"rotation_deg": 0.9536825261286082
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.07766573568009734,
|
||||
"rotation_deg": 1.3734118987942618
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.08519120540755043,
|
||||
"rotation_deg": 1.5504754382194925
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.2392325556096795,
|
||||
"rotation_deg": 0.9306633614951502
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.02049661768665185,
|
||||
"rotation_deg": 0.5434732565644916
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.10141834924376554,
|
||||
"rotation_deg": 0.6801110152223822
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.1927601584704251,
|
||||
"rotation_deg": 0.7704160771388004
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.07237338833469728,
|
||||
"rotation_deg": 1.13355234535889
|
||||
},
|
||||
{
|
||||
"pair_index": 22,
|
||||
"translation_m": 0.2380321686720521,
|
||||
"rotation_deg": 0.6543633179461373
|
||||
},
|
||||
{
|
||||
"pair_index": 23,
|
||||
"translation_m": 0.022956329719636855,
|
||||
"rotation_deg": 0.34448651373739575
|
||||
},
|
||||
{
|
||||
"pair_index": 24,
|
||||
"translation_m": 0.17365496513981085,
|
||||
"rotation_deg": 0.5919072614412411
|
||||
},
|
||||
{
|
||||
"pair_index": 25,
|
||||
"translation_m": 0.26972044137209944,
|
||||
"rotation_deg": 0.394408649127183
|
||||
},
|
||||
{
|
||||
"pair_index": 26,
|
||||
"translation_m": 0.16479297108025018,
|
||||
"rotation_deg": 0.8933837591188238
|
||||
},
|
||||
{
|
||||
"pair_index": 27,
|
||||
"translation_m": 0.029173826915557283,
|
||||
"rotation_deg": 0.9823009311305465
|
||||
},
|
||||
{
|
||||
"pair_index": 28,
|
||||
"translation_m": 0.16558352679496174,
|
||||
"rotation_deg": 1.6354580097985452
|
||||
},
|
||||
{
|
||||
"pair_index": 29,
|
||||
"translation_m": 0.27142725327985545,
|
||||
"rotation_deg": 1.6832228760069097
|
||||
},
|
||||
{
|
||||
"pair_index": 30,
|
||||
"translation_m": 0.03804497310320746,
|
||||
"rotation_deg": 0.6214699590261354
|
||||
},
|
||||
{
|
||||
"pair_index": 31,
|
||||
"translation_m": 0.00988217602887705,
|
||||
"rotation_deg": 0.9654320545457507
|
||||
},
|
||||
{
|
||||
"pair_index": 32,
|
||||
"translation_m": 0.20932389516970148,
|
||||
"rotation_deg": 1.235263404784913
|
||||
},
|
||||
{
|
||||
"pair_index": 33,
|
||||
"translation_m": 0.23596844902340763,
|
||||
"rotation_deg": 0.9742253618504498
|
||||
},
|
||||
{
|
||||
"pair_index": 34,
|
||||
"translation_m": 0.04810773998382127,
|
||||
"rotation_deg": 0.40079885061586873
|
||||
},
|
||||
{
|
||||
"pair_index": 35,
|
||||
"translation_m": 0.1439097271676289,
|
||||
"rotation_deg": 0.5833810515945358
|
||||
},
|
||||
{
|
||||
"pair_index": 36,
|
||||
"translation_m": 0.2770879492836139,
|
||||
"rotation_deg": 1.7217009121491587
|
||||
},
|
||||
{
|
||||
"pair_index": 37,
|
||||
"translation_m": 0.2635733716233143,
|
||||
"rotation_deg": 0.959386216598219
|
||||
},
|
||||
{
|
||||
"pair_index": 38,
|
||||
"translation_m": 0.30076236456889854,
|
||||
"rotation_deg": 0.5341538159367174
|
||||
},
|
||||
{
|
||||
"pair_index": 39,
|
||||
"translation_m": 0.08917523492271737,
|
||||
"rotation_deg": 0.752253926704042
|
||||
},
|
||||
{
|
||||
"pair_index": 40,
|
||||
"translation_m": 0.2283689383450832,
|
||||
"rotation_deg": 1.7644222410834363
|
||||
},
|
||||
{
|
||||
"pair_index": 41,
|
||||
"translation_m": 0.21162807555337518,
|
||||
"rotation_deg": 0.893481051160724
|
||||
},
|
||||
{
|
||||
"pair_index": 42,
|
||||
"translation_m": 0.14042093106101866,
|
||||
"rotation_deg": 1.2907294157599642
|
||||
},
|
||||
{
|
||||
"pair_index": 43,
|
||||
"translation_m": 0.1691423878395439,
|
||||
"rotation_deg": 2.377216518666257
|
||||
},
|
||||
{
|
||||
"pair_index": 44,
|
||||
"translation_m": 0.1169779798191509,
|
||||
"rotation_deg": 1.3815961809053516
|
||||
},
|
||||
{
|
||||
"pair_index": 45,
|
||||
"translation_m": 0.1387832440968286,
|
||||
"rotation_deg": 1.5947217176166877
|
||||
},
|
||||
{
|
||||
"pair_index": 46,
|
||||
"translation_m": 0.030062828340300884,
|
||||
"rotation_deg": 1.0704098135809084
|
||||
},
|
||||
{
|
||||
"pair_index": 47,
|
||||
"translation_m": 0.0680455433006411,
|
||||
"rotation_deg": 1.973549636369647
|
||||
},
|
||||
{
|
||||
"pair_index": 48,
|
||||
"translation_m": 0.031870236699333414,
|
||||
"rotation_deg": 2.4723290530697546
|
||||
},
|
||||
{
|
||||
"pair_index": 49,
|
||||
"translation_m": 0.38250571101706576,
|
||||
"rotation_deg": 1.1600905208267944
|
||||
},
|
||||
{
|
||||
"pair_index": 50,
|
||||
"translation_m": 0.06098547660886484,
|
||||
"rotation_deg": 1.5193006464833663
|
||||
},
|
||||
{
|
||||
"pair_index": 51,
|
||||
"translation_m": 0.020049847803449816,
|
||||
"rotation_deg": 2.0752028054797114
|
||||
},
|
||||
{
|
||||
"pair_index": 52,
|
||||
"translation_m": 0.14976699977401936,
|
||||
"rotation_deg": 0.9032263412060769
|
||||
},
|
||||
{
|
||||
"pair_index": 53,
|
||||
"translation_m": 0.38104623295208556,
|
||||
"rotation_deg": 0.6420289897992424
|
||||
},
|
||||
{
|
||||
"pair_index": 54,
|
||||
"translation_m": 0.6145427269990851,
|
||||
"rotation_deg": 4.320949352504073
|
||||
},
|
||||
{
|
||||
"pair_index": 55,
|
||||
"translation_m": 0.0644413592299437,
|
||||
"rotation_deg": 2.803369589869878
|
||||
},
|
||||
{
|
||||
"pair_index": 56,
|
||||
"translation_m": 0.18425354638764108,
|
||||
"rotation_deg": 0.6171163774519929
|
||||
},
|
||||
{
|
||||
"pair_index": 57,
|
||||
"translation_m": 0.3120883490259661,
|
||||
"rotation_deg": 0.4259486202878496
|
||||
},
|
||||
{
|
||||
"pair_index": 58,
|
||||
"translation_m": 0.418016177718232,
|
||||
"rotation_deg": 5.044083647712121
|
||||
},
|
||||
{
|
||||
"pair_index": 59,
|
||||
"translation_m": 0.07897058451306387,
|
||||
"rotation_deg": 2.708937676342093
|
||||
},
|
||||
{
|
||||
"pair_index": 60,
|
||||
"translation_m": 0.20725234914942078,
|
||||
"rotation_deg": 1.3373510925222083
|
||||
},
|
||||
{
|
||||
"pair_index": 61,
|
||||
"translation_m": 0.5028731993983374,
|
||||
"rotation_deg": 2.560781611577359
|
||||
},
|
||||
{
|
||||
"pair_index": 62,
|
||||
"translation_m": 0.324052710994222,
|
||||
"rotation_deg": 3.4637911605755742
|
||||
},
|
||||
{
|
||||
"pair_index": 63,
|
||||
"translation_m": 0.16594327616277665,
|
||||
"rotation_deg": 1.096300100186063
|
||||
},
|
||||
{
|
||||
"pair_index": 64,
|
||||
"translation_m": 0.9413768077277793,
|
||||
"rotation_deg": 4.623227467412829
|
||||
},
|
||||
{
|
||||
"pair_index": 65,
|
||||
"translation_m": 0.7475763787765258,
|
||||
"rotation_deg": 5.251990934487642
|
||||
},
|
||||
{
|
||||
"pair_index": 66,
|
||||
"translation_m": 0.44609152444282213,
|
||||
"rotation_deg": 5.555959014778186
|
||||
},
|
||||
{
|
||||
"pair_index": 67,
|
||||
"translation_m": 0.8772363359544111,
|
||||
"rotation_deg": 3.919834020370911
|
||||
},
|
||||
{
|
||||
"pair_index": 68,
|
||||
"translation_m": 0.7256840115352385,
|
||||
"rotation_deg": 4.7791807757364335
|
||||
},
|
||||
{
|
||||
"pair_index": 69,
|
||||
"translation_m": 0.5540111498360015,
|
||||
"rotation_deg": 5.404862742811467
|
||||
},
|
||||
{
|
||||
"pair_index": 70,
|
||||
"translation_m": 0.05427710319100646,
|
||||
"rotation_deg": 0.47262999225353286
|
||||
},
|
||||
{
|
||||
"pair_index": 71,
|
||||
"translation_m": 0.03494523113943391,
|
||||
"rotation_deg": 1.5163417215367592
|
||||
},
|
||||
{
|
||||
"pair_index": 72,
|
||||
"translation_m": 0.04639564426856145,
|
||||
"rotation_deg": 1.9306722358716086
|
||||
},
|
||||
{
|
||||
"pair_index": 73,
|
||||
"translation_m": 0.031597675421818384,
|
||||
"rotation_deg": 2.0321950625908634
|
||||
},
|
||||
{
|
||||
"pair_index": 74,
|
||||
"translation_m": 0.06688972458549529,
|
||||
"rotation_deg": 1.0363014892153515
|
||||
},
|
||||
{
|
||||
"pair_index": 75,
|
||||
"translation_m": 0.07495539042883581,
|
||||
"rotation_deg": 0.879604047232473
|
||||
},
|
||||
{
|
||||
"pair_index": 76,
|
||||
"translation_m": 0.07523266019202682,
|
||||
"rotation_deg": 0.6051319351741334
|
||||
},
|
||||
{
|
||||
"pair_index": 77,
|
||||
"translation_m": 0.07099230127095138,
|
||||
"rotation_deg": 1.202238808395327
|
||||
},
|
||||
{
|
||||
"pair_index": 78,
|
||||
"translation_m": 0.06557199988165952,
|
||||
"rotation_deg": 0.6765649678327575
|
||||
},
|
||||
{
|
||||
"pair_index": 79,
|
||||
"translation_m": 0.12154293847124566,
|
||||
"rotation_deg": 0.7325970122680316
|
||||
},
|
||||
{
|
||||
"pair_index": 80,
|
||||
"translation_m": 0.17982574134407248,
|
||||
"rotation_deg": 1.5473661961917022
|
||||
},
|
||||
{
|
||||
"pair_index": 81,
|
||||
"translation_m": 0.04462726734001729,
|
||||
"rotation_deg": 0.6937634461069877
|
||||
},
|
||||
{
|
||||
"pair_index": 82,
|
||||
"translation_m": 0.0613023995980599,
|
||||
"rotation_deg": 0.8119788473937047
|
||||
},
|
||||
{
|
||||
"pair_index": 83,
|
||||
"translation_m": 0.08503096310423741,
|
||||
"rotation_deg": 1.4444141387028644
|
||||
},
|
||||
{
|
||||
"pair_index": 84,
|
||||
"translation_m": 0.07464123857051043,
|
||||
"rotation_deg": 0.7030897752540571
|
||||
},
|
||||
{
|
||||
"pair_index": 85,
|
||||
"translation_m": 0.029868184350228942,
|
||||
"rotation_deg": 0.9135621919993453
|
||||
},
|
||||
{
|
||||
"pair_index": 86,
|
||||
"translation_m": 0.05823954193987833,
|
||||
"rotation_deg": 0.5917544307877486
|
||||
},
|
||||
{
|
||||
"pair_index": 87,
|
||||
"translation_m": 0.0551313637068964,
|
||||
"rotation_deg": 1.4516548104557863
|
||||
},
|
||||
{
|
||||
"pair_index": 88,
|
||||
"translation_m": 0.09827472129882013,
|
||||
"rotation_deg": 0.42188472344008116
|
||||
},
|
||||
{
|
||||
"pair_index": 89,
|
||||
"translation_m": 0.044245224544806644,
|
||||
"rotation_deg": 1.0004748409346111
|
||||
},
|
||||
{
|
||||
"pair_index": 90,
|
||||
"translation_m": 0.018832180352354084,
|
||||
"rotation_deg": 1.51099458595063
|
||||
},
|
||||
{
|
||||
"pair_index": 91,
|
||||
"translation_m": 0.020467010735194163,
|
||||
"rotation_deg": 1.7676261200773673
|
||||
},
|
||||
{
|
||||
"pair_index": 92,
|
||||
"translation_m": 0.0262975474700301,
|
||||
"rotation_deg": 0.8325617740533534
|
||||
},
|
||||
{
|
||||
"pair_index": 93,
|
||||
"translation_m": 0.04446844149309418,
|
||||
"rotation_deg": 1.5739586103283063
|
||||
},
|
||||
{
|
||||
"pair_index": 94,
|
||||
"translation_m": 0.01467330858160615,
|
||||
"rotation_deg": 1.2850817812632396
|
||||
},
|
||||
{
|
||||
"pair_index": 95,
|
||||
"translation_m": 0.06870746700120084,
|
||||
"rotation_deg": 1.7240767243237687
|
||||
},
|
||||
{
|
||||
"pair_index": 96,
|
||||
"translation_m": 0.05666264876403947,
|
||||
"rotation_deg": 1.0206213519210603
|
||||
},
|
||||
{
|
||||
"pair_index": 97,
|
||||
"translation_m": 0.07342527442704463,
|
||||
"rotation_deg": 0.7244552191419976
|
||||
},
|
||||
{
|
||||
"pair_index": 98,
|
||||
"translation_m": 0.054266286757252646,
|
||||
"rotation_deg": 0.4989636190115999
|
||||
},
|
||||
{
|
||||
"pair_index": 99,
|
||||
"translation_m": 0.047207658172525445,
|
||||
"rotation_deg": 0.23696494205729182
|
||||
},
|
||||
{
|
||||
"pair_index": 100,
|
||||
"translation_m": 0.11572080515326105,
|
||||
"rotation_deg": 1.7515941247741897
|
||||
},
|
||||
{
|
||||
"pair_index": 101,
|
||||
"translation_m": 0.06407086244008413,
|
||||
"rotation_deg": 0.46899277183017407
|
||||
},
|
||||
{
|
||||
"pair_index": 102,
|
||||
"translation_m": 0.15305365572855853,
|
||||
"rotation_deg": 0.9523959443915215
|
||||
},
|
||||
{
|
||||
"pair_index": 103,
|
||||
"translation_m": 0.05122753080254304,
|
||||
"rotation_deg": 1.3098743656013143
|
||||
},
|
||||
{
|
||||
"pair_index": 104,
|
||||
"translation_m": 0.0946533848328183,
|
||||
"rotation_deg": 0.7612204831612559
|
||||
},
|
||||
{
|
||||
"pair_index": 105,
|
||||
"translation_m": 0.07481645106107998,
|
||||
"rotation_deg": 0.7174903795296853
|
||||
},
|
||||
{
|
||||
"pair_index": 106,
|
||||
"translation_m": 0.07931651617250869,
|
||||
"rotation_deg": 0.3160868091969118
|
||||
},
|
||||
{
|
||||
"pair_index": 107,
|
||||
"translation_m": 0.0656383441135373,
|
||||
"rotation_deg": 0.7904846161787125
|
||||
},
|
||||
{
|
||||
"pair_index": 108,
|
||||
"translation_m": 0.03241931291657944,
|
||||
"rotation_deg": 1.535299757082846
|
||||
},
|
||||
{
|
||||
"pair_index": 109,
|
||||
"translation_m": 0.06234488990038783,
|
||||
"rotation_deg": 1.5874303211040584
|
||||
},
|
||||
{
|
||||
"pair_index": 110,
|
||||
"translation_m": 0.03506692454461985,
|
||||
"rotation_deg": 0.25002484619548354
|
||||
},
|
||||
{
|
||||
"pair_index": 111,
|
||||
"translation_m": 0.04125822298839504,
|
||||
"rotation_deg": 0.8720293199565927
|
||||
},
|
||||
{
|
||||
"pair_index": 112,
|
||||
"translation_m": 0.051725253480973364,
|
||||
"rotation_deg": 1.5059976851542656
|
||||
},
|
||||
{
|
||||
"pair_index": 113,
|
||||
"translation_m": 0.025726583767115428,
|
||||
"rotation_deg": 1.5673808264017624
|
||||
},
|
||||
{
|
||||
"pair_index": 114,
|
||||
"translation_m": 0.027511376068390752,
|
||||
"rotation_deg": 0.719385406633602
|
||||
},
|
||||
{
|
||||
"pair_index": 115,
|
||||
"translation_m": 0.04557229476188737,
|
||||
"rotation_deg": 0.8566964152790454
|
||||
},
|
||||
{
|
||||
"pair_index": 116,
|
||||
"translation_m": 0.1301226621807897,
|
||||
"rotation_deg": 1.9490463203564985
|
||||
},
|
||||
{
|
||||
"pair_index": 117,
|
||||
"translation_m": 0.08472149919727921,
|
||||
"rotation_deg": 1.4400759566709866
|
||||
},
|
||||
{
|
||||
"pair_index": 118,
|
||||
"translation_m": 0.03305331754412625,
|
||||
"rotation_deg": 1.5282125278120453
|
||||
},
|
||||
{
|
||||
"pair_index": 119,
|
||||
"translation_m": 0.06943760420453976,
|
||||
"rotation_deg": 0.14382473264645845
|
||||
},
|
||||
{
|
||||
"pair_index": 120,
|
||||
"translation_m": 0.1387812176775449,
|
||||
"rotation_deg": 0.9702105493011807
|
||||
},
|
||||
{
|
||||
"pair_index": 121,
|
||||
"translation_m": 0.050472774524194526,
|
||||
"rotation_deg": 0.7112996871542888
|
||||
},
|
||||
{
|
||||
"pair_index": 122,
|
||||
"translation_m": 0.040960987456295526,
|
||||
"rotation_deg": 0.8626492437182947
|
||||
},
|
||||
{
|
||||
"pair_index": 123,
|
||||
"translation_m": 0.1183520030349349,
|
||||
"rotation_deg": 1.9037016305375127
|
||||
},
|
||||
{
|
||||
"pair_index": 124,
|
||||
"translation_m": 0.13482286998475895,
|
||||
"rotation_deg": 1.1180532382465007
|
||||
},
|
||||
{
|
||||
"pair_index": 125,
|
||||
"translation_m": 0.08919768111421818,
|
||||
"rotation_deg": 0.7424305858785966
|
||||
},
|
||||
{
|
||||
"pair_index": 126,
|
||||
"translation_m": 0.03295290503021982,
|
||||
"rotation_deg": 0.8748115525182623
|
||||
},
|
||||
{
|
||||
"pair_index": 127,
|
||||
"translation_m": 0.07050270871439886,
|
||||
"rotation_deg": 2.315052496677334
|
||||
},
|
||||
{
|
||||
"pair_index": 128,
|
||||
"translation_m": 0.08399613707521804,
|
||||
"rotation_deg": 1.3430883907512923
|
||||
},
|
||||
{
|
||||
"pair_index": 129,
|
||||
"translation_m": 0.07635426719286566,
|
||||
"rotation_deg": 0.28938877097974597
|
||||
},
|
||||
{
|
||||
"pair_index": 130,
|
||||
"translation_m": 0.08599980484168654,
|
||||
"rotation_deg": 0.3232792746340014
|
||||
},
|
||||
{
|
||||
"pair_index": 131,
|
||||
"translation_m": 0.08546417597482137,
|
||||
"rotation_deg": 1.3709646380399854
|
||||
},
|
||||
{
|
||||
"pair_index": 132,
|
||||
"translation_m": 0.0586834782862356,
|
||||
"rotation_deg": 0.6222764869215247
|
||||
},
|
||||
{
|
||||
"pair_index": 133,
|
||||
"translation_m": 0.06297920233905209,
|
||||
"rotation_deg": 1.0415437811293622
|
||||
},
|
||||
{
|
||||
"pair_index": 134,
|
||||
"translation_m": 0.0421890137454461,
|
||||
"rotation_deg": 0.6732808756041617
|
||||
},
|
||||
{
|
||||
"pair_index": 135,
|
||||
"translation_m": 0.03384375753290982,
|
||||
"rotation_deg": 0.5098352623359285
|
||||
},
|
||||
{
|
||||
"pair_index": 136,
|
||||
"translation_m": 0.06075109086084829,
|
||||
"rotation_deg": 1.672042116085701
|
||||
},
|
||||
{
|
||||
"pair_index": 137,
|
||||
"translation_m": 0.1123184567166834,
|
||||
"rotation_deg": 1.9991157673182287
|
||||
},
|
||||
{
|
||||
"pair_index": 138,
|
||||
"translation_m": 0.06975029753182684,
|
||||
"rotation_deg": 1.0328391327124684
|
||||
},
|
||||
{
|
||||
"pair_index": 139,
|
||||
"translation_m": 0.04075826846987665,
|
||||
"rotation_deg": 0.4510416388715733
|
||||
},
|
||||
{
|
||||
"pair_index": 140,
|
||||
"translation_m": 0.028766437036440082,
|
||||
"rotation_deg": 1.1094878762620817
|
||||
},
|
||||
{
|
||||
"pair_index": 141,
|
||||
"translation_m": 0.038764927354221934,
|
||||
"rotation_deg": 1.0013714467514025
|
||||
},
|
||||
{
|
||||
"pair_index": 142,
|
||||
"translation_m": 0.04136840051779099,
|
||||
"rotation_deg": 0.3534868458036239
|
||||
},
|
||||
{
|
||||
"pair_index": 143,
|
||||
"translation_m": 0.07880312075185329,
|
||||
"rotation_deg": 1.224811122150423
|
||||
},
|
||||
{
|
||||
"pair_index": 144,
|
||||
"translation_m": 0.022505079629904813,
|
||||
"rotation_deg": 1.0872300390191383
|
||||
},
|
||||
{
|
||||
"pair_index": 145,
|
||||
"translation_m": 0.013450514823594537,
|
||||
"rotation_deg": 0.271332255193449
|
||||
},
|
||||
{
|
||||
"pair_index": 146,
|
||||
"translation_m": 0.05540964657988301,
|
||||
"rotation_deg": 0.9805089924683242
|
||||
},
|
||||
{
|
||||
"pair_index": 147,
|
||||
"translation_m": 0.048893074003320006,
|
||||
"rotation_deg": 2.060862589786143
|
||||
},
|
||||
{
|
||||
"pair_index": 148,
|
||||
"translation_m": 0.021147862897351464,
|
||||
"rotation_deg": 0.5068012746071331
|
||||
},
|
||||
{
|
||||
"pair_index": 149,
|
||||
"translation_m": 0.04215476698638024,
|
||||
"rotation_deg": 1.1176937562359575
|
||||
},
|
||||
{
|
||||
"pair_index": 150,
|
||||
"translation_m": 0.01586414732810156,
|
||||
"rotation_deg": 0.5375200318464232
|
||||
},
|
||||
{
|
||||
"pair_index": 151,
|
||||
"translation_m": 0.012304155965152195,
|
||||
"rotation_deg": 0.6912196843126612
|
||||
},
|
||||
{
|
||||
"pair_index": 152,
|
||||
"translation_m": 0.03401108751100478,
|
||||
"rotation_deg": 0.5348561807666571
|
||||
},
|
||||
{
|
||||
"pair_index": 153,
|
||||
"translation_m": 0.0382087841988423,
|
||||
"rotation_deg": 2.5751575774124302
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ground": {
|
||||
"planes": 38,
|
||||
"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.003426069786439831,
|
||||
0.003661463644230861,
|
||||
0.005894947490840618
|
||||
],
|
||||
"rotation_deg": [
|
||||
0.039743045073798305,
|
||||
0.03697641596170036,
|
||||
0.059566156250294475
|
||||
],
|
||||
"warning": "conditional local estimate; bootstrap is the primary stability check"
|
||||
},
|
||||
"weighted_jacobian_condition_number": 9.240412309046407,
|
||||
"solver_multistart": {
|
||||
"runs": 12,
|
||||
"candidates_relative_to_best": [
|
||||
{
|
||||
"cost": 986.8831673974076,
|
||||
"success": true,
|
||||
"translation_m": 1.781114124910946e-10,
|
||||
"rotation_deg": 1.5745193455937713e-09
|
||||
},
|
||||
{
|
||||
"cost": 986.883167397408,
|
||||
"success": true,
|
||||
"translation_m": 5.536606008158485e-10,
|
||||
"rotation_deg": 2.217262412976666e-08
|
||||
},
|
||||
{
|
||||
"cost": 986.883167397408,
|
||||
"success": true,
|
||||
"translation_m": 5.220783796487502e-10,
|
||||
"rotation_deg": 8.362101120716713e-09
|
||||
},
|
||||
{
|
||||
"cost": 986.883167397408,
|
||||
"success": true,
|
||||
"translation_m": 3.678710827203267e-10,
|
||||
"rotation_deg": 2.260153530135103e-08
|
||||
},
|
||||
{
|
||||
"cost": 986.8831673974075,
|
||||
"success": true,
|
||||
"translation_m": 1.7534776205532575e-10,
|
||||
"rotation_deg": 3.2670580143957554e-09
|
||||
},
|
||||
{
|
||||
"cost": 986.8831673974074,
|
||||
"success": true,
|
||||
"translation_m": 3.469446951953614e-18,
|
||||
"rotation_deg": 0.0
|
||||
},
|
||||
{
|
||||
"cost": 986.8831673974096,
|
||||
"success": true,
|
||||
"translation_m": 1.5270516044070511e-09,
|
||||
"rotation_deg": 7.02719130732361e-08
|
||||
},
|
||||
{
|
||||
"cost": 986.8831673974074,
|
||||
"success": true,
|
||||
"translation_m": 1.2027149370934288e-10,
|
||||
"rotation_deg": 3.250857426548915e-09
|
||||
},
|
||||
{
|
||||
"cost": 986.8831673974076,
|
||||
"success": true,
|
||||
"translation_m": 1.3743999906846494e-10,
|
||||
"rotation_deg": 3.478167640260992e-09
|
||||
},
|
||||
{
|
||||
"cost": 986.8831673974076,
|
||||
"success": true,
|
||||
"translation_m": 7.561012126834818e-11,
|
||||
"rotation_deg": 3.398361215816758e-09
|
||||
},
|
||||
{
|
||||
"cost": 986.8831673974076,
|
||||
"success": true,
|
||||
"translation_m": 1.5936145552789374e-10,
|
||||
"rotation_deg": 3.5265475806436176e-09
|
||||
},
|
||||
{
|
||||
"cost": 986.8831673974076,
|
||||
"success": true,
|
||||
"translation_m": 4.3707227819079805e-10,
|
||||
"rotation_deg": 7.230578566209689e-09
|
||||
}
|
||||
]
|
||||
},
|
||||
"bootstrap": {
|
||||
"runs": 100,
|
||||
"order": [
|
||||
"x_m",
|
||||
"y_m",
|
||||
"z_m",
|
||||
"roll_deg",
|
||||
"pitch_deg",
|
||||
"yaw_deg"
|
||||
],
|
||||
"std": [
|
||||
0.0016135672080709418,
|
||||
0.001712659789326026,
|
||||
0.0010626181065453576,
|
||||
0.04873173241478149,
|
||||
0.04696015710280561,
|
||||
0.05195409090162765
|
||||
],
|
||||
"p025": [
|
||||
1.293581085997522,
|
||||
-0.00451064016109812,
|
||||
0.7160005593474846,
|
||||
-0.782142502478161,
|
||||
1.2412102159858718,
|
||||
-0.9139767554692944
|
||||
],
|
||||
"p975": [
|
||||
1.2994255903325156,
|
||||
0.0023253494861594877,
|
||||
0.7196644226938009,
|
||||
-0.5899348985799792,
|
||||
1.40343833941121,
|
||||
-0.7335620940370134
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,604 +0,0 @@
|
||||
{
|
||||
"schema_version": 2,
|
||||
"success": true,
|
||||
"message": "Both `ftol` and `xtol` termination conditions are 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.2996301155160686,
|
||||
-0.0035647011612625953,
|
||||
0.7218861757826791
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
-0.7871563544979889,
|
||||
1.1414557494228486,
|
||||
-0.9357571721886107
|
||||
],
|
||||
"quaternion_xyzw": [
|
||||
-0.00678727299452357,
|
||||
0.010016439179525593,
|
||||
-0.008096912246155998,
|
||||
0.9998940163254998
|
||||
],
|
||||
"matrix_4x4": [
|
||||
[
|
||||
0.9996682219164817,
|
||||
0.01605613959699911,
|
||||
0.02014066710864661,
|
||||
1.2996301155160686
|
||||
],
|
||||
[
|
||||
-0.016328076825577065,
|
||||
0.9997767458747517,
|
||||
0.013410902850672373,
|
||||
-0.0035647011612625953
|
||||
],
|
||||
[
|
||||
-0.019920843293337136,
|
||||
-0.01373531176689472,
|
||||
0.9997072077429213,
|
||||
0.7218861757826791
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"estimation": {
|
||||
"stations": 38,
|
||||
"pairs": 80,
|
||||
"residuals": {
|
||||
"pairs": 80,
|
||||
"translation_m": {
|
||||
"rms": 0.11870623426762615,
|
||||
"median": 0.06068763803103021,
|
||||
"p90": 0.19284315530447813,
|
||||
"p95": 0.23754716587335756,
|
||||
"max": 0.38871430386214717
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 1.135091439337232,
|
||||
"median": 0.9273339494951451,
|
||||
"p90": 1.649541165022219,
|
||||
"p95": 1.981621584559613,
|
||||
"max": 2.6935053979880266
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.09187263959310249,
|
||||
"rotation_deg": 0.38130732180446597
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.1769336788939164,
|
||||
"rotation_deg": 0.6450700969822144
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.15700274999733538,
|
||||
"rotation_deg": 0.5067710073297588
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.10662491066187467,
|
||||
"rotation_deg": 0.5429917463514751
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.029628667721179554,
|
||||
"rotation_deg": 0.5509223411600718
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.0843749108812327,
|
||||
"rotation_deg": 0.4940771462459488
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.07914868235296937,
|
||||
"rotation_deg": 0.8254472643593804
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.009453498887768107,
|
||||
"rotation_deg": 0.9043821535551515
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.019511765564918175,
|
||||
"rotation_deg": 0.3967737125225238
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.05341682547424797,
|
||||
"rotation_deg": 1.2338229281598583
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.07322963958641442,
|
||||
"rotation_deg": 1.6425496017479204
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.05907844745776598,
|
||||
"rotation_deg": 0.9099755792395827
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.07907007871308952,
|
||||
"rotation_deg": 1.294221003621915
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.02140092032185309,
|
||||
"rotation_deg": 0.5139343819205795
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.19209639243977228,
|
||||
"rotation_deg": 0.9890356204602867
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.23611357668308347,
|
||||
"rotation_deg": 0.7834325452898548
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.023285251634710107,
|
||||
"rotation_deg": 0.17520547335389194
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.26478536048856705,
|
||||
"rotation_deg": 0.710271315591521
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.16006553402191026,
|
||||
"rotation_deg": 0.957610910483182
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.027251092891380724,
|
||||
"rotation_deg": 0.9157938224757094
|
||||
},
|
||||
{
|
||||
"pair_index": 20,
|
||||
"translation_m": 0.04027747409562381,
|
||||
"rotation_deg": 0.5934052344689098
|
||||
},
|
||||
{
|
||||
"pair_index": 21,
|
||||
"translation_m": 0.009702766313815113,
|
||||
"rotation_deg": 0.8792062492068344
|
||||
},
|
||||
{
|
||||
"pair_index": 22,
|
||||
"translation_m": 0.19956402108683025,
|
||||
"rotation_deg": 1.302707349930284
|
||||
},
|
||||
{
|
||||
"pair_index": 23,
|
||||
"translation_m": 0.22208667994405493,
|
||||
"rotation_deg": 0.865060603092117
|
||||
},
|
||||
{
|
||||
"pair_index": 24,
|
||||
"translation_m": 0.04688877706330616,
|
||||
"rotation_deg": 0.35495594456572455
|
||||
},
|
||||
{
|
||||
"pair_index": 25,
|
||||
"translation_m": 0.14151886488940063,
|
||||
"rotation_deg": 0.6501219960603252
|
||||
},
|
||||
{
|
||||
"pair_index": 26,
|
||||
"translation_m": 0.0884069047402769,
|
||||
"rotation_deg": 0.7969404276735993
|
||||
},
|
||||
{
|
||||
"pair_index": 27,
|
||||
"translation_m": 0.16408056565265292,
|
||||
"rotation_deg": 2.4437963646244074
|
||||
},
|
||||
{
|
||||
"pair_index": 28,
|
||||
"translation_m": 0.028664980727987763,
|
||||
"rotation_deg": 1.008490254813876
|
||||
},
|
||||
{
|
||||
"pair_index": 29,
|
||||
"translation_m": 0.07072061490599325,
|
||||
"rotation_deg": 1.909748472867515
|
||||
},
|
||||
{
|
||||
"pair_index": 30,
|
||||
"translation_m": 0.022948436582833444,
|
||||
"rotation_deg": 2.3225092779351595
|
||||
},
|
||||
{
|
||||
"pair_index": 31,
|
||||
"translation_m": 0.38849552688092603,
|
||||
"rotation_deg": 1.2325430499166412
|
||||
},
|
||||
{
|
||||
"pair_index": 32,
|
||||
"translation_m": 0.06230564324556168,
|
||||
"rotation_deg": 1.4474405187186974
|
||||
},
|
||||
{
|
||||
"pair_index": 33,
|
||||
"translation_m": 0.017320969569104998,
|
||||
"rotation_deg": 1.9636801270135327
|
||||
},
|
||||
{
|
||||
"pair_index": 34,
|
||||
"translation_m": 0.15793386431764098,
|
||||
"rotation_deg": 1.0830036872759303
|
||||
},
|
||||
{
|
||||
"pair_index": 35,
|
||||
"translation_m": 0.38871430386214717,
|
||||
"rotation_deg": 0.6522443164627029
|
||||
},
|
||||
{
|
||||
"pair_index": 36,
|
||||
"translation_m": 0.06172089136639702,
|
||||
"rotation_deg": 2.6935053979880266
|
||||
},
|
||||
{
|
||||
"pair_index": 37,
|
||||
"translation_m": 0.1887406405132845,
|
||||
"rotation_deg": 0.5255100746087121
|
||||
},
|
||||
{
|
||||
"pair_index": 38,
|
||||
"translation_m": 0.3189860513403679,
|
||||
"rotation_deg": 0.33497034772867773
|
||||
},
|
||||
{
|
||||
"pair_index": 39,
|
||||
"translation_m": 0.08451339501338925,
|
||||
"rotation_deg": 2.6477889534666375
|
||||
},
|
||||
{
|
||||
"pair_index": 40,
|
||||
"translation_m": 0.21900981683029178,
|
||||
"rotation_deg": 1.2331847283146662
|
||||
},
|
||||
{
|
||||
"pair_index": 41,
|
||||
"translation_m": 0.1713522910564131,
|
||||
"rotation_deg": 1.183067166836572
|
||||
},
|
||||
{
|
||||
"pair_index": 42,
|
||||
"translation_m": 0.0512348407217562,
|
||||
"rotation_deg": 0.6012483843007921
|
||||
},
|
||||
{
|
||||
"pair_index": 43,
|
||||
"translation_m": 0.07445293169404418,
|
||||
"rotation_deg": 1.1211247122462373
|
||||
},
|
||||
{
|
||||
"pair_index": 44,
|
||||
"translation_m": 0.04410762061472433,
|
||||
"rotation_deg": 0.6590595108738039
|
||||
},
|
||||
{
|
||||
"pair_index": 45,
|
||||
"translation_m": 0.033089648474152494,
|
||||
"rotation_deg": 1.0312870469391562
|
||||
},
|
||||
{
|
||||
"pair_index": 46,
|
||||
"translation_m": 0.06760165724961124,
|
||||
"rotation_deg": 0.4565827539034035
|
||||
},
|
||||
{
|
||||
"pair_index": 47,
|
||||
"translation_m": 0.025670738208830455,
|
||||
"rotation_deg": 1.4302485146055521
|
||||
},
|
||||
{
|
||||
"pair_index": 48,
|
||||
"translation_m": 0.028147203494591596,
|
||||
"rotation_deg": 1.830717268006061
|
||||
},
|
||||
{
|
||||
"pair_index": 49,
|
||||
"translation_m": 0.02266261366157945,
|
||||
"rotation_deg": 0.946299184254386
|
||||
},
|
||||
{
|
||||
"pair_index": 50,
|
||||
"translation_m": 0.04935636595094902,
|
||||
"rotation_deg": 1.3964539171127066
|
||||
},
|
||||
{
|
||||
"pair_index": 51,
|
||||
"translation_m": 0.05889812376302877,
|
||||
"rotation_deg": 1.4698930638008505
|
||||
},
|
||||
{
|
||||
"pair_index": 52,
|
||||
"translation_m": 0.05965438469566341,
|
||||
"rotation_deg": 0.9816847661944946
|
||||
},
|
||||
{
|
||||
"pair_index": 53,
|
||||
"translation_m": 0.06606854020326042,
|
||||
"rotation_deg": 0.27458915782550086
|
||||
},
|
||||
{
|
||||
"pair_index": 54,
|
||||
"translation_m": 0.05158448025659227,
|
||||
"rotation_deg": 0.9388740765145809
|
||||
},
|
||||
{
|
||||
"pair_index": 55,
|
||||
"translation_m": 0.07186821989401924,
|
||||
"rotation_deg": 0.7757369232394653
|
||||
},
|
||||
{
|
||||
"pair_index": 56,
|
||||
"translation_m": 0.08608318124462912,
|
||||
"rotation_deg": 0.30616875771444013
|
||||
},
|
||||
{
|
||||
"pair_index": 57,
|
||||
"translation_m": 0.06688749012833557,
|
||||
"rotation_deg": 0.5486461025019678
|
||||
},
|
||||
{
|
||||
"pair_index": 58,
|
||||
"translation_m": 0.05762085648043371,
|
||||
"rotation_deg": 1.372519412009814
|
||||
},
|
||||
{
|
||||
"pair_index": 59,
|
||||
"translation_m": 0.031564793498850025,
|
||||
"rotation_deg": 0.4468008042798917
|
||||
},
|
||||
{
|
||||
"pair_index": 60,
|
||||
"translation_m": 0.039910793641719705,
|
||||
"rotation_deg": 0.7939954067942764
|
||||
},
|
||||
{
|
||||
"pair_index": 61,
|
||||
"translation_m": 0.04407888801173494,
|
||||
"rotation_deg": 1.3107090439391704
|
||||
},
|
||||
{
|
||||
"pair_index": 62,
|
||||
"translation_m": 0.024691509543671615,
|
||||
"rotation_deg": 1.236002055213775
|
||||
},
|
||||
{
|
||||
"pair_index": 63,
|
||||
"translation_m": 0.02262539867961735,
|
||||
"rotation_deg": 0.5097286713719923
|
||||
},
|
||||
{
|
||||
"pair_index": 64,
|
||||
"translation_m": 0.12496365742733645,
|
||||
"rotation_deg": 1.7124652344909004
|
||||
},
|
||||
{
|
||||
"pair_index": 65,
|
||||
"translation_m": 0.07938704275394372,
|
||||
"rotation_deg": 1.136197571772474
|
||||
},
|
||||
{
|
||||
"pair_index": 66,
|
||||
"translation_m": 0.03041340784879668,
|
||||
"rotation_deg": 1.1835741189420788
|
||||
},
|
||||
{
|
||||
"pair_index": 67,
|
||||
"translation_m": 0.08565781637557897,
|
||||
"rotation_deg": 1.325342137093704
|
||||
},
|
||||
{
|
||||
"pair_index": 68,
|
||||
"translation_m": 0.06569851623164084,
|
||||
"rotation_deg": 0.5889885968744448
|
||||
},
|
||||
{
|
||||
"pair_index": 69,
|
||||
"translation_m": 0.028714655898349907,
|
||||
"rotation_deg": 0.6559696801898813
|
||||
},
|
||||
{
|
||||
"pair_index": 70,
|
||||
"translation_m": 0.06483297271989888,
|
||||
"rotation_deg": 1.3915654660441625
|
||||
},
|
||||
{
|
||||
"pair_index": 71,
|
||||
"translation_m": 0.03452933204038689,
|
||||
"rotation_deg": 0.8331166409438662
|
||||
},
|
||||
{
|
||||
"pair_index": 72,
|
||||
"translation_m": 0.026295103775966104,
|
||||
"rotation_deg": 1.2325751495683674
|
||||
},
|
||||
{
|
||||
"pair_index": 73,
|
||||
"translation_m": 0.04043011893578754,
|
||||
"rotation_deg": 1.2125523869736732
|
||||
},
|
||||
{
|
||||
"pair_index": 74,
|
||||
"translation_m": 0.04383537712573055,
|
||||
"rotation_deg": 0.5600272304118834
|
||||
},
|
||||
{
|
||||
"pair_index": 75,
|
||||
"translation_m": 0.0849604176628602,
|
||||
"rotation_deg": 1.2304564930488662
|
||||
},
|
||||
{
|
||||
"pair_index": 76,
|
||||
"translation_m": 0.010862365758746927,
|
||||
"rotation_deg": 0.38357205151967033
|
||||
},
|
||||
{
|
||||
"pair_index": 77,
|
||||
"translation_m": 0.053059282511333926,
|
||||
"rotation_deg": 0.9610287581424943
|
||||
},
|
||||
{
|
||||
"pair_index": 78,
|
||||
"translation_m": 0.04551226086388418,
|
||||
"rotation_deg": 1.1597952394623392
|
||||
},
|
||||
{
|
||||
"pair_index": 79,
|
||||
"translation_m": 0.016850631999927004,
|
||||
"rotation_deg": 0.7568718165305058
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ground": {
|
||||
"planes": 38,
|
||||
"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.004217873072423743,
|
||||
0.004428061325180952,
|
||||
0.004921296107038976
|
||||
],
|
||||
"rotation_deg": [
|
||||
0.04989765234702571,
|
||||
0.04568528000305764,
|
||||
0.12720936620845405
|
||||
],
|
||||
"warning": "conditional local estimate; bootstrap is the primary stability check"
|
||||
},
|
||||
"weighted_jacobian_condition_number": 6.329566115808833,
|
||||
"solver_multistart": {
|
||||
"runs": 12,
|
||||
"candidates_relative_to_best": [
|
||||
{
|
||||
"cost": 354.634716588624,
|
||||
"success": true,
|
||||
"translation_m": 3.20226506801652e-10,
|
||||
"rotation_deg": 2.202963019076451e-08
|
||||
},
|
||||
{
|
||||
"cost": 354.6347165886241,
|
||||
"success": true,
|
||||
"translation_m": 7.896781546182907e-10,
|
||||
"rotation_deg": 1.0169266187599847e-07
|
||||
},
|
||||
{
|
||||
"cost": 354.6347165886238,
|
||||
"success": true,
|
||||
"translation_m": 8.217931179403876e-10,
|
||||
"rotation_deg": 6.93412504585164e-08
|
||||
},
|
||||
{
|
||||
"cost": 354.6347165886237,
|
||||
"success": true,
|
||||
"translation_m": 3.469446951953614e-18,
|
||||
"rotation_deg": 0.0
|
||||
},
|
||||
{
|
||||
"cost": 354.6347165886238,
|
||||
"success": true,
|
||||
"translation_m": 1.3034248658026153e-10,
|
||||
"rotation_deg": 2.7806728416619943e-08
|
||||
},
|
||||
{
|
||||
"cost": 354.6347165886238,
|
||||
"success": true,
|
||||
"translation_m": 2.260359361733417e-10,
|
||||
"rotation_deg": 2.6418689746833837e-08
|
||||
},
|
||||
{
|
||||
"cost": 354.634716588624,
|
||||
"success": true,
|
||||
"translation_m": 7.589395457725227e-10,
|
||||
"rotation_deg": 4.91609016107675e-08
|
||||
},
|
||||
{
|
||||
"cost": 354.6347165886238,
|
||||
"success": true,
|
||||
"translation_m": 1.2750789560311927e-10,
|
||||
"rotation_deg": 7.759775984980414e-10
|
||||
},
|
||||
{
|
||||
"cost": 354.634716588624,
|
||||
"success": true,
|
||||
"translation_m": 7.805526908313695e-10,
|
||||
"rotation_deg": 6.684488070039544e-08
|
||||
},
|
||||
{
|
||||
"cost": 354.634716588624,
|
||||
"success": true,
|
||||
"translation_m": 7.763945275712574e-10,
|
||||
"rotation_deg": 8.931061588988946e-08
|
||||
},
|
||||
{
|
||||
"cost": 354.6347165886244,
|
||||
"success": true,
|
||||
"translation_m": 9.383630927674663e-10,
|
||||
"rotation_deg": 1.3000921411943172e-07
|
||||
},
|
||||
{
|
||||
"cost": 354.634716588624,
|
||||
"success": true,
|
||||
"translation_m": 6.944401937454179e-10,
|
||||
"rotation_deg": 7.954648404736881e-08
|
||||
}
|
||||
]
|
||||
},
|
||||
"bootstrap": {
|
||||
"runs": 100,
|
||||
"order": [
|
||||
"x_m",
|
||||
"y_m",
|
||||
"z_m",
|
||||
"roll_deg",
|
||||
"pitch_deg",
|
||||
"yaw_deg"
|
||||
],
|
||||
"std": [
|
||||
0.0017068433472663032,
|
||||
0.0019214288447692426,
|
||||
0.0013180801706094514,
|
||||
0.06849719260762097,
|
||||
0.05792635838163369,
|
||||
0.062093058432709465
|
||||
],
|
||||
"p025": [
|
||||
1.2968099294514637,
|
||||
-0.006751632579940086,
|
||||
0.7193267956198541,
|
||||
-0.9300082754299475,
|
||||
1.0287033540941326,
|
||||
-1.0774039892205403
|
||||
],
|
||||
"p975": [
|
||||
1.302479553931627,
|
||||
-0.0001961195897526885,
|
||||
0.7244258625906532,
|
||||
-0.6646157463265417,
|
||||
1.254120304082275,
|
||||
-0.8275267997610058
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
# 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` 数值相同;前者是便于下游读取的顶层副本。
|
||||
@@ -1,35 +0,0 @@
|
||||
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
|
||||
|
@@ -1,340 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
]
|
||||
}
|
||||
Binary file not shown.
@@ -1,334 +0,0 @@
|
||||
{
|
||||
"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
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,334 +0,0 @@
|
||||
{
|
||||
"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
|
||||
]
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -1,97 +0,0 @@
|
||||
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
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,414 +0,0 @@
|
||||
{
|
||||
"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
|
||||
]
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -1,156 +0,0 @@
|
||||
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
|
||||
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,489 +0,0 @@
|
||||
{
|
||||
"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
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
# 跨批比较
|
||||
|
||||
- `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 只作为候选。
|
||||
@@ -1,298 +0,0 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
{
|
||||
"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
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -1,207 +0,0 @@
|
||||
{
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
+10
-16
@@ -1,21 +1,15 @@
|
||||
# 结果目录
|
||||
# 当前车辆标定结果
|
||||
|
||||
本目录只归档轻量标定产物,不包含原始 dlog、rscap、逐帧 NPZ 或完整点云。
|
||||
本目录只保存当前车辆、当前传感器安装条件下的最终可交付结果;不保存历史车辆数据、原始采集包、点云帧或中间配准产物。
|
||||
|
||||
| 目录 | 内容 | 使用建议 |
|
||||
|---|---|---|
|
||||
| `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 残差 | 跨批判断依据 |
|
||||
## 2026-08 车辆 / 27 个静止站点
|
||||
|
||||
最终部署文件是 `01_previous_two_batches/final_extrinsic_deployment.json`。`02_data4_calibration/final_extrinsic_data4.json` 不应在没有新增独立证据时覆盖它。
|
||||
目录 [`vehicle_20260808/`](vehicle_20260808/) 对应本机运行目录 `D:\data\rtk_lidar_run\outputs_vehicle_h19165`。
|
||||
|
||||
常见文件:
|
||||
- 外参:`final_T_RTK_lidar.json`
|
||||
- 质量摘要:`summary.json`
|
||||
- 坐标约定:`p_RTK = T_RTK_lidar · p_lidar`,RTK 为车头向前坐标系(`HeadingOffsetDeg=-90`)。
|
||||
- RTK 参考点高度:1.9165 m(ANT1 相位中心)。
|
||||
- 质量:27 个站点、20 个共识运动对、平移 RMS 0.07116 m、旋转 RMS 0.98209°。
|
||||
|
||||
- `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`:每站地面平面参数。
|
||||
这些文件记录的是 host 时间关联版本的现有最终结果。后续采用 RTK 测量时间重新导出后,应写入新的结果目录,不能覆盖本目录。
|
||||
|
||||
@@ -0,0 +1,337 @@
|
||||
{
|
||||
"schema_version": 1,
|
||||
"success": true,
|
||||
"convention": "T_RTK_lidar maps raw LiDAR points into the RTK navigation frame",
|
||||
"equation": "A_RTK_ij X = X B_LiDAR_ij",
|
||||
"frames": {
|
||||
"RTK": {
|
||||
"origin": "GGA positioning reference point; confirm ANT1/reference antenna in receiver configuration",
|
||||
"x_axis": "vehicle forward after applying the configured G90 heading offset",
|
||||
"y_axis": "left of the RTK X/baseline axis (not necessarily vehicle-left)",
|
||||
"z_axis": "up",
|
||||
"yaw_enu_deg": "90 - (rawHeadingDeg + -90)",
|
||||
"frame_mode": "vehicle_forward_heading_offset"
|
||||
},
|
||||
"LiDAR": {
|
||||
"description": "raw Helios sensor frame from points_raw polar decode",
|
||||
"x_axis": "+X at azimuth 0° (forward when aviation connector faces vehicle rear)",
|
||||
"y_axis": "+Y at azimuth +90° (left when +X is vehicle-forward)",
|
||||
"z_axis": "up",
|
||||
"origin_note": "optical/center per Helios manual; mounting height includes 63.5 mm base offset when deriving mechanical ΔZ"
|
||||
}
|
||||
},
|
||||
"backend": "consensus",
|
||||
"measured_lidar_extrinsic_used_as_initial": true,
|
||||
"solver_initial_extrinsic": "D:\\First-dev-dept\\calibration-rtk-run\\run\\rtk_lidar_mechanical_initial.json",
|
||||
"body_heading_offset_deg": -90.0,
|
||||
"body_heading_offset_used": true,
|
||||
"body_antenna_lever_xy_used": false,
|
||||
"translation_m": [
|
||||
0.21782224963960972,
|
||||
-0.41134780227275347,
|
||||
0.1065423366878719
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
0.06623859235262805,
|
||||
0.8096624730962496,
|
||||
-0.5513220563826681
|
||||
],
|
||||
"quaternion_xyzw": [
|
||||
0.00061201333859398,
|
||||
0.007062715262034178,
|
||||
-0.004815137247499642,
|
||||
0.9999632782988027
|
||||
],
|
||||
"coordinate_contract_audit": {
|
||||
"status": "no_near_180_degree_axis_conflict",
|
||||
"requires_physical_axis_confirmation": false,
|
||||
"mechanical_initial_path": "D:\\First-dev-dept\\calibration-rtk-run\\run\\rtk_lidar_mechanical_initial.json",
|
||||
"mechanical_self_consistency": {
|
||||
"baseline_points": "vehicle_right",
|
||||
"frame_mode": "vehicle_forward_heading_offset",
|
||||
"heading_offset_deg": -90.0,
|
||||
"consistent": true,
|
||||
"issues": []
|
||||
},
|
||||
"solution_vs_declared_baseline_side": {
|
||||
"baseline_points": "vehicle_right",
|
||||
"solution_yaw_deg": -0.5513220563826681,
|
||||
"expected_yaw_deg": 0.0,
|
||||
"yaw_error_deg": 0.5513220563826735,
|
||||
"xy_error_m": 0.007516661287052368,
|
||||
"z_error_m": 0.0280423356878719,
|
||||
"mixed_translation_rotation_inheritance": false,
|
||||
"near_expected_pose": true
|
||||
},
|
||||
"solution_relative_to_mechanical_initial": {
|
||||
"translation_m": 0.029032271487700816,
|
||||
"rotation_deg": 0.9820426535863694,
|
||||
"delta_matrix_4x4": [
|
||||
[
|
||||
0.9998538650128304,
|
||||
0.009638565806830942,
|
||||
0.014119017957784103,
|
||||
0.006962889639609726
|
||||
],
|
||||
[
|
||||
-0.009621275903042714,
|
||||
0.9999528797859223,
|
||||
-0.0012919976154994906,
|
||||
0.002831671727246521
|
||||
],
|
||||
[
|
||||
-0.014130805670674627,
|
||||
0.0011559658421926345,
|
||||
0.9998994869856016,
|
||||
0.0280423356878719
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
]
|
||||
},
|
||||
"note": "No automatic 180-degree correction was applied. Confirm static GNHPR left/right vs vehicle heading and Helios +X vs vehicle forward before deployment."
|
||||
},
|
||||
"matrix_4x4": [
|
||||
[
|
||||
0.9998538650128304,
|
||||
0.009638565806830942,
|
||||
0.014119017957784103,
|
||||
0.21782224963960972
|
||||
],
|
||||
[
|
||||
-0.009621275903042714,
|
||||
0.9999528797859223,
|
||||
-0.0012919976154994906,
|
||||
-0.41134780227275347
|
||||
],
|
||||
[
|
||||
-0.014130805670674627,
|
||||
0.0011559658421926345,
|
||||
0.9998994869856016,
|
||||
0.1065423366878719
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"quality": {
|
||||
"stations": 27,
|
||||
"pairs": 20,
|
||||
"residuals": {
|
||||
"pairs": 20,
|
||||
"translation_m": {
|
||||
"rms": 0.07116027693011169,
|
||||
"median": 0.048258124379040895,
|
||||
"p90": 0.10707349630410129,
|
||||
"p95": 0.12100345665884242,
|
||||
"max": 0.1859157912711514
|
||||
},
|
||||
"rotation_deg": {
|
||||
"rms": 0.9820870524210346,
|
||||
"median": 0.6015253089423158,
|
||||
"p90": 1.626986719630708,
|
||||
"p95": 1.7485896823567941,
|
||||
"max": 2.6898815510329674
|
||||
},
|
||||
"per_pair": [
|
||||
{
|
||||
"pair_index": 0,
|
||||
"translation_m": 0.10590532722733068,
|
||||
"rotation_deg": 0.5565962122599133
|
||||
},
|
||||
{
|
||||
"pair_index": 1,
|
||||
"translation_m": 0.11758701799503664,
|
||||
"rotation_deg": 0.36543717366192036
|
||||
},
|
||||
{
|
||||
"pair_index": 2,
|
||||
"translation_m": 0.07568813061789224,
|
||||
"rotation_deg": 1.6990480050580474
|
||||
},
|
||||
{
|
||||
"pair_index": 3,
|
||||
"translation_m": 0.07918615709103373,
|
||||
"rotation_deg": 0.33723851079591255
|
||||
},
|
||||
{
|
||||
"pair_index": 4,
|
||||
"translation_m": 0.04618587731787657,
|
||||
"rotation_deg": 0.21044665580544528
|
||||
},
|
||||
{
|
||||
"pair_index": 5,
|
||||
"translation_m": 0.1859157912711514,
|
||||
"rotation_deg": 2.6898815510329674
|
||||
},
|
||||
{
|
||||
"pair_index": 6,
|
||||
"translation_m": 0.015032558607699278,
|
||||
"rotation_deg": 0.2283712127949818
|
||||
},
|
||||
{
|
||||
"pair_index": 7,
|
||||
"translation_m": 0.013237326674396453,
|
||||
"rotation_deg": 1.6189799101387812
|
||||
},
|
||||
{
|
||||
"pair_index": 8,
|
||||
"translation_m": 0.07003654121179845,
|
||||
"rotation_deg": 0.6464544056247182
|
||||
},
|
||||
{
|
||||
"pair_index": 9,
|
||||
"translation_m": 0.093450766078183,
|
||||
"rotation_deg": 0.6476769159531274
|
||||
},
|
||||
{
|
||||
"pair_index": 10,
|
||||
"translation_m": 0.015054656507824072,
|
||||
"rotation_deg": 1.041955302231996
|
||||
},
|
||||
{
|
||||
"pair_index": 11,
|
||||
"translation_m": 0.02338150242985638,
|
||||
"rotation_deg": 0.9212619385214977
|
||||
},
|
||||
{
|
||||
"pair_index": 12,
|
||||
"translation_m": 0.01577916809950981,
|
||||
"rotation_deg": 0.5021648028537498
|
||||
},
|
||||
{
|
||||
"pair_index": 13,
|
||||
"translation_m": 0.05033037144020521,
|
||||
"rotation_deg": 0.31352985458971655
|
||||
},
|
||||
{
|
||||
"pair_index": 14,
|
||||
"translation_m": 0.059761151158357104,
|
||||
"rotation_deg": 0.8078349560587313
|
||||
},
|
||||
{
|
||||
"pair_index": 15,
|
||||
"translation_m": 0.04160156756834453,
|
||||
"rotation_deg": 0.32936437427192145
|
||||
},
|
||||
{
|
||||
"pair_index": 16,
|
||||
"translation_m": 0.02424387832291359,
|
||||
"rotation_deg": 0.430799739443549
|
||||
},
|
||||
{
|
||||
"pair_index": 17,
|
||||
"translation_m": 0.05938006964566194,
|
||||
"rotation_deg": 0.3855347569405268
|
||||
},
|
||||
{
|
||||
"pair_index": 18,
|
||||
"translation_m": 0.003922740066294881,
|
||||
"rotation_deg": 0.8803664894801937
|
||||
},
|
||||
{
|
||||
"pair_index": 19,
|
||||
"translation_m": 0.02258390614293418,
|
||||
"rotation_deg": 0.9489255319885953
|
||||
}
|
||||
]
|
||||
},
|
||||
"weighted_jacobian_condition_number": 7.551077537197385,
|
||||
"linearized_one_sigma": {
|
||||
"translation_m": [
|
||||
0.01109415838733884,
|
||||
0.011043247019191056,
|
||||
0.0049617743728656676
|
||||
],
|
||||
"rotation_deg": [
|
||||
0.08809558088476348,
|
||||
0.08691570892756702,
|
||||
0.13552099560800782
|
||||
],
|
||||
"warning": "conditional local estimate; bootstrap is the primary stability check"
|
||||
},
|
||||
"bootstrap": {
|
||||
"runs": 200,
|
||||
"order": [
|
||||
"x_m",
|
||||
"y_m",
|
||||
"z_m",
|
||||
"roll_deg",
|
||||
"pitch_deg",
|
||||
"yaw_deg"
|
||||
],
|
||||
"std": [
|
||||
0.006235825930578342,
|
||||
0.004851737742140203,
|
||||
0.0004474159829207979,
|
||||
0.07186455153709871,
|
||||
0.11762318545143821,
|
||||
0.061763211598034336
|
||||
],
|
||||
"p025": [
|
||||
0.20955504469154063,
|
||||
-0.4174678620205485,
|
||||
0.10568919463688603,
|
||||
-0.06202286115194262,
|
||||
0.5207464314096704,
|
||||
-0.6639417037512721
|
||||
],
|
||||
"p975": [
|
||||
0.23211472114546824,
|
||||
-0.4001091835786546,
|
||||
0.1074353326322909,
|
||||
0.23746760471402314,
|
||||
1.0462704287205609,
|
||||
-0.43455346485967655
|
||||
]
|
||||
}
|
||||
},
|
||||
"z_constraint": {
|
||||
"observable_from_planar_AX_XB": false,
|
||||
"method": "LiDAR ground planes plus externally supplied RTK reference-point height above ground",
|
||||
"rtk_reference_height_above_ground_m": 1.9165,
|
||||
"warning": "z is conditional on the supplied RTK antenna height; it is not independently identified by planar Ackermann motion"
|
||||
},
|
||||
"important_limit": "AX residual and bootstrap quantify internal consistency, not independent centimetre-grade absolute certification",
|
||||
"selection": {
|
||||
"recommended": true,
|
||||
"reason": "Uses only motion pairs accepted independently by both Open3D GICP and small_gicp",
|
||||
"open3d_vs_small_gicp": {
|
||||
"translation_m": 0.00312519750472982,
|
||||
"rotation_deg": 0.11907006217018351,
|
||||
"delta_matrix_4x4": [
|
||||
[
|
||||
0.9999996872332217,
|
||||
-0.00030752729270551075,
|
||||
-0.0007286703114418758,
|
||||
0.000533303946557151
|
||||
],
|
||||
[
|
||||
0.00030892706731572284,
|
||||
0.9999981058814015,
|
||||
0.0019216653392719056,
|
||||
-0.002909732881513971
|
||||
],
|
||||
[
|
||||
0.0007280779667146176,
|
||||
-0.0019218898442212235,
|
||||
0.9999978881187204,
|
||||
0.001007919095162138
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"final": {
|
||||
"translation_m": [
|
||||
0.21782224963960972,
|
||||
-0.41134780227275347,
|
||||
0.1065423366878719
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
0.06623859235262805,
|
||||
0.8096624730962496,
|
||||
-0.5513220563826681
|
||||
],
|
||||
"pairs": 20,
|
||||
"translation_rms_m": 0.07116027693011169,
|
||||
"rotation_rms_deg": 0.9820870524210346,
|
||||
"condition_number": 7.551077537197385,
|
||||
"coordinate_contract_status": "no_near_180_degree_axis_conflict",
|
||||
"recommended_for_deployment": true
|
||||
},
|
||||
"backend_difference": {
|
||||
"translation_m": 0.00312519750472982,
|
||||
"rotation_deg": 0.11907006217018351,
|
||||
"delta_matrix_4x4": [
|
||||
[
|
||||
0.9999996872332217,
|
||||
-0.00030752729270551075,
|
||||
-0.0007286703114418758,
|
||||
0.000533303946557151
|
||||
],
|
||||
[
|
||||
0.00030892706731572284,
|
||||
0.9999981058814015,
|
||||
0.0019216653392719056,
|
||||
-0.002909732881513971
|
||||
],
|
||||
[
|
||||
0.0007280779667146176,
|
||||
-0.0019218898442212235,
|
||||
0.9999978881187204,
|
||||
0.001007919095162138
|
||||
],
|
||||
[
|
||||
0.0,
|
||||
0.0,
|
||||
0.0,
|
||||
1.0
|
||||
]
|
||||
]
|
||||
}
|
||||
}
|
||||
+64
-19
@@ -1,27 +1,72 @@
|
||||
# run
|
||||
# run目录
|
||||
|
||||
本目录是 PowerShell 运行入口;完整流程、参数解释、验收方法和代码职责统一见仓库根目录 `README.md`。
|
||||
根 README 含完整复现与本次结果说明;这里只列入口职责。
|
||||
|
||||
| 脚本 | 使用时机 |
|
||||
| 脚本 | 用途 |
|
||||
|---|---|
|
||||
| `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 配准及增量。 |
|
||||
| `run_full_pipeline.ps1` | 站目录导出 `combined/` 后跑到 `T_RTK_lidar` |
|
||||
| `export_multisensor_stations.ps1` | 薄封装:`tools/export_raw_to_combined.py` |
|
||||
| `prepare_multisensor_dataset.ps1` | 每站一帧 + RTK 位姿(默认含双天线 pitch/roll) |
|
||||
| `run_direct_rtk_lidar.ps1` | 从 `combined/` 标定并封装最终结果(**默认车头向前 -90**) |
|
||||
| `run_single_dataset.ps1` | 地面、双 GICP、精筛、共识、AX=XB |
|
||||
| `run_joint_rtk_lidar.ps1` | 多批共识对联合求解 |
|
||||
| `view_result.ps1` | 3D 运动对对比 |
|
||||
| `rtk_lidar_mechanical_initial.json` | 仅 AX=XB 初值;**禁止**用于 pair |
|
||||
|
||||
最常用的 3D 入口:
|
||||
## 默认参数(匹配当前约 2 m 车顶雷达 / 车头向前)
|
||||
|
||||
| 参数 | 默认 |
|
||||
|---|---|
|
||||
| `HeadingOffsetDeg` | `-90`(车头向前;主从装反、基线朝右) |
|
||||
| `GroundZMin/Max` | `-2.5` / `-1.5` |
|
||||
| `ExpectedStations` | `27` |
|
||||
| `MinStations` | `20` |
|
||||
| `RtkReferenceHeightAboveGroundM` | **无默认,必填**(本车 1.9165) |
|
||||
|
||||
pair 注册**不传** `--initial-extrinsic`。
|
||||
|
||||
## 原始 → combined
|
||||
|
||||
站目录:
|
||||
|
||||
```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
|
||||
python tools\export_raw_to_combined.py --stations-root ... --rtk-rscap ... --imu-rscap ... --out ... --overwrite
|
||||
```
|
||||
|
||||
`frames_all` 必须与生成 B 时的站点顺序一致。
|
||||
- `-TimeBasis device_gnss`(默认):设备时 ↔ GNSS
|
||||
- `-TimeBasis host`:主机接收时间
|
||||
|
||||
G90 连续录制 + 站时间窗:
|
||||
|
||||
```powershell
|
||||
python tools\export_g90_h32_windows_to_combined.py `
|
||||
--segments-csv <rtk_lidar_station_segments.csv> `
|
||||
--lidar-dlog <dump_1.zip> --lidar-dlog <dump_2.zip> `
|
||||
--rtk-rscap <g90_1.rscap> --rtk-rscap <g90_2.rscap> `
|
||||
--out <output_root> --expected-stations 27 --frame-stride 5
|
||||
```
|
||||
|
||||
可加 `--reuse-export` 续跑。
|
||||
|
||||
## 已有 combined 复现本次结果
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\run_direct_rtk_lidar.ps1" `
|
||||
-CombinedRoot "D:\data\rtk_lidar_run\combined" `
|
||||
-WorkRoot "D:\data\rtk_lidar_run\prepared_vehicle_h19165" `
|
||||
-OutputRoot "D:\data\rtk_lidar_run\outputs_vehicle_h19165" `
|
||||
-RtkReferenceHeightAboveGroundM 1.9165 `
|
||||
-HeadingOffsetDeg -90 `
|
||||
-ExpectedStations 27 `
|
||||
-GroundZMin -2.5 -GroundZMax -1.5
|
||||
```
|
||||
|
||||
## 可视化本次结果
|
||||
|
||||
```powershell
|
||||
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$Repo\run\view_result.ps1" `
|
||||
-Frames "D:\data\rtk_lidar_run\prepared_vehicle_h19165\frames_all" `
|
||||
-Pairs "D:\data\rtk_lidar_run\outputs_vehicle_h19165\consensus\B_consensus.npz" `
|
||||
-Extrinsic "D:\data\rtk_lidar_run\outputs_vehicle_h19165\final_T_RTK_lidar.json" `
|
||||
-PairIndex 0
|
||||
```
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
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)"
|
||||
@@ -4,86 +4,55 @@ param(
|
||||
[Parameter(Mandatory = $true)][string]$RtkCapture,
|
||||
[Parameter(Mandatory = $true)][string]$ImuCapture,
|
||||
[string]$LidarObject = "frontlidar",
|
||||
[string]$LidarCaptureName = "h32.rscap",
|
||||
[string]$Timezone = "+08:00",
|
||||
[string[]]$StationNames = @(),
|
||||
[int]$Stride = 1,
|
||||
[double]$RtkMaxDtMs = 150.0,
|
||||
[double]$ImuBeforeMs = 100.0,
|
||||
[double]$ImuAfterMs = 100.0,
|
||||
[ValidateSet("device_gnss", "host")][string]$TimeBasis = "device_gnss",
|
||||
[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"
|
||||
}
|
||||
}
|
||||
$Exporter = Join-Path $RepoRoot "tools\export_raw_to_combined.py"
|
||||
|
||||
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)
|
||||
if ($SkipLidarExport -or $SkipSerialParsing) {
|
||||
throw "Partial skip flags are no longer supported; use tools/export_raw_to_combined.py internals or run_direct_rtk_lidar.ps1 on an existing combined/"
|
||||
}
|
||||
|
||||
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,
|
||||
$Args = @(
|
||||
$Exporter,
|
||||
"--stations-root", $DataRoot,
|
||||
"--rtk-rscap", $RtkCapture,
|
||||
"--imu-rscap", $ImuCapture,
|
||||
"--out", $OutputRoot,
|
||||
"--lidar-capture-name", $LidarCaptureName,
|
||||
"--lidar-object", $LidarObject,
|
||||
"--timezone", $Timezone,
|
||||
"--stride", "$Stride",
|
||||
"--rtk-max-dt-ms", "$RtkMaxDtMs",
|
||||
"--imu-before-ms", "$ImuBeforeMs",
|
||||
"--imu-after-ms", "$ImuAfterMs",
|
||||
"--time-basis", $TimeBasis,
|
||||
"--overwrite"
|
||||
)
|
||||
Run-Python "LiDAR/RTK/IMU association" $BuildArgs
|
||||
foreach ($Name in $StationNames) {
|
||||
$Args += @("--station", $Name)
|
||||
}
|
||||
|
||||
Write-Host "Completed stations: $($Stations.Count)"
|
||||
Write-Host "Combined NPZ: $CombinedRoot"
|
||||
Write-Host "[raw → combined one-shot export]"
|
||||
& python @Args
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "export_raw_to_combined failed with Python exit code $LASTEXITCODE"
|
||||
}
|
||||
|
||||
Write-Host "Combined NPZ: $(Join-Path $OutputRoot 'combined')"
|
||||
Write-Host "Summary: $(Join-Path $OutputRoot 'export_summary.json')"
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
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" }
|
||||
@@ -3,7 +3,8 @@ param(
|
||||
[Parameter(Mandatory = $true)][string]$Output,
|
||||
[Parameter(Mandatory = $true)][double]$HeadingOffsetDeg,
|
||||
[Parameter(Mandatory = $true)][double[]]$AntennaLever,
|
||||
[int]$MinStations = 30,
|
||||
[string]$PoseName = "rtk_gga_raw_heading",
|
||||
[int]$MinStations = 20,
|
||||
[int]$ExpectedStations = 0,
|
||||
[double]$HeadingStdLimitDeg = 0.5,
|
||||
[switch]$Overwrite
|
||||
@@ -13,7 +14,7 @@ $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") +
|
||||
"--output", $Output, "--pose-name", $PoseName, "--heading-offset-deg", "$HeadingOffsetDeg", "--antenna-lever") +
|
||||
@($AntennaLever | ForEach-Object { "$_" }) + @("--min-stations", "$MinStations",
|
||||
"--expected-stations", "$ExpectedStations", "--heading-std-limit-deg", "$HeadingStdLimitDeg")
|
||||
if ($Overwrite) { $Args += "--overwrite" }
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
{
|
||||
"schema_version": 3,
|
||||
"convention": "T_RTK_lidar maps raw LiDAR points into the vehicle-forward RTK body frame (X forward, Y left, Z up) after HeadingOffsetDeg=-90",
|
||||
"frame_mode": "vehicle_forward_heading_offset",
|
||||
"heading_offset_deg": -90.0,
|
||||
"baseline_points": "vehicle_right",
|
||||
"baseline_points_note": "Field-confirmed: master/slave assignment reversed vs G90 diagram, antennas left-right symmetric about rear-axle centerline. Master/GGA on vehicle left, slave on right; rawHeading points vehicle right.",
|
||||
"vehicle_flu_lever_master_to_lidar_m": [
|
||||
0.210859360,
|
||||
-0.414179474,
|
||||
0.078500001
|
||||
],
|
||||
"vehicle_flu_note": "Vehicle FLU: LiDAR origin relative to master/GGA = ahead, right, above. CAD drawing X was opposite vehicle-forward; longitudinal sign is +X in true FLU (solver also converges to +X).",
|
||||
"antenna_symmetry_note": "Master/slave are mirrors about the rear-axle centerline; swap flips baseline 180° and the vehicle-Y sign of the master→LiDAR lever",
|
||||
"translation_m": [
|
||||
0.210859360,
|
||||
-0.414179474,
|
||||
0.078500001
|
||||
],
|
||||
"rotation_rpy_deg_xyz": [
|
||||
0.0,
|
||||
0.0,
|
||||
0.0
|
||||
],
|
||||
"matrix_4x4": [
|
||||
[1.0, 0.0, 0.0, 0.210859360],
|
||||
[0.0, 1.0, 0.0, -0.414179474],
|
||||
[0.0, 0.0, 1.0, 0.078500001],
|
||||
[0.0, 0.0, 0.0, 1.0]
|
||||
],
|
||||
"use": "Final AX=XB solver initialization only; never use for LiDAR pair registration",
|
||||
"yaw_note": "In vehicle-forward delivery, LiDAR +X ≈ vehicle forward ⇒ mechanical yaw ≈ 0",
|
||||
"z_note": "78.500001 mm = H_L - H_R with H_L=1994.999879 mm, H_R=1916.499878 mm",
|
||||
"attitude_composition": "R_W_body = Rz(yaw_raw) Ry(-pitch) Rx(roll) Rz(-heading_offset); pitch/roll stay in baseline frame",
|
||||
"baseline_frame_equivalent": {
|
||||
"heading_offset_deg": 0.0,
|
||||
"translation_m": [0.414179474, 0.210859360, 0.078500001],
|
||||
"rotation_rpy_deg_xyz": [0.0, 0.0, 90.0],
|
||||
"note": "Same physical install expressed in rawHeading baseline frame"
|
||||
}
|
||||
}
|
||||
@@ -1,74 +0,0 @@
|
||||
param(
|
||||
[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"
|
||||
$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"
|
||||
|
||||
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 @($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
|
||||
|
||||
Run-Python "batch2 ground planes" @($Code, "ground", "--frames", $B2Frames, "--output", (Join-Path $Common "ground_planes_batch2.csv"))
|
||||
|
||||
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"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user