From 32d8af8ed989cef94fbfede3666a6a5a46000bfb Mon Sep 17 00:00:00 2001 From: "lichun.qu" <16975270+zzqlc@user.noreply.gitee.com> Date: Tue, 25 Aug 2026 10:21:43 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=81=E7=A7=BBRTK-IMU=E6=A0=87=E5=AE=9A?= =?UTF-8?q?=E5=88=B0=E7=8B=AC=E7=AB=8B=E9=A1=B6=E5=B1=82=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/rtk_imu_calibration.md | 8 ++++---- docs/rtk_imu_multisource_v3.md | 2 +- pyproject.toml | 4 ++-- rtk_imu/README.md | 11 +++++++++++ rtk_imu/__init__.py | 1 + {imu_lidar => rtk_imu}/rtk_attitude.py | 0 {imu_lidar => rtk_imu}/rtk_imu_engineering.py | 4 ++-- {imu_lidar => rtk_imu}/rtk_imu_multisource.py | 6 +++--- {imu_lidar => rtk_imu}/rtk_imu_node_graph.py | 4 ++-- {imu_lidar => rtk_imu}/rtk_imu_replay.py | 2 +- {imu_lidar => rtk_imu}/rtk_imu_rotation.py | 8 ++++---- {imu_lidar => rtk_imu}/rtk_imu_translation.py | 2 +- {imu_lidar => rtk_imu}/rtk_io.py | 2 +- tests/test_rtk_imu_calibration.py | 6 +++--- tests/test_rtk_imu_engineering.py | 6 +++--- tests/test_rtk_imu_multisource.py | 2 +- tools/audit_rtk_imu_factor_consistency.py | 4 ++-- tools/audit_rtk_imu_factor_yield.py | 4 ++-- tools/audit_rtk_imu_heldout_innovation.py | 6 +++--- tools/audit_rtk_imu_innovation_noise.py | 6 +++--- tools/audit_rtk_imu_lever_excitation.py | 4 ++-- tools/audit_rtk_imu_motion_excitation.py | 4 ++-- tools/audit_rtk_imu_multihorizon.py | 4 ++-- tools/audit_rtk_imu_propagation_bias_root_cause.py | 6 +++--- tools/refine_rtk_imu_windows_by_actual_information.py | 6 +++--- tools/retry_rtk_imu_heldout_nonconverged.py | 6 +++--- tools/run_rtk_imu_calibration.py | 2 +- tools/run_rtk_imu_engineering_6dof.py | 4 ++-- tools/run_rtk_imu_engineering_free_base.py | 4 ++-- tools/run_rtk_imu_mechanical_prior_branch.py | 6 +++--- tools/run_rtk_imu_mechanical_prior_heldout.py | 6 +++--- ...n_rtk_imu_mechanical_prior_rotation_sensitivity.py | 6 +++--- tools/run_rtk_imu_multisource.py | 2 +- tools/run_rtk_imu_node_graph_fixed_lever.py | 6 +++--- tools/run_rtk_imu_node_graph_free_circle.py | 6 +++--- tools/run_rtk_imu_node_graph_free_joint.py | 6 +++--- tools/run_rtk_imu_node_graph_free_selected.py | 6 +++--- tools/run_rtk_imu_node_graph_p05.py | 6 +++--- tools/select_rtk_imu_windows_by_lever_information.py | 6 +++--- tools/validate_rtk_hpr_dropout_bridge.py | 4 ++-- 40 files changed, 100 insertions(+), 88 deletions(-) create mode 100644 rtk_imu/README.md create mode 100644 rtk_imu/__init__.py rename {imu_lidar => rtk_imu}/rtk_attitude.py (100%) rename {imu_lidar => rtk_imu}/rtk_imu_engineering.py (99%) rename {imu_lidar => rtk_imu}/rtk_imu_multisource.py (99%) rename {imu_lidar => rtk_imu}/rtk_imu_node_graph.py (99%) rename {imu_lidar => rtk_imu}/rtk_imu_replay.py (99%) rename {imu_lidar => rtk_imu}/rtk_imu_rotation.py (98%) rename {imu_lidar => rtk_imu}/rtk_imu_translation.py (99%) rename {imu_lidar => rtk_imu}/rtk_io.py (99%) diff --git a/docs/rtk_imu_calibration.md b/docs/rtk_imu_calibration.md index 1037691..32326a0 100644 --- a/docs/rtk_imu_calibration.md +++ b/docs/rtk_imu_calibration.md @@ -158,10 +158,10 @@ frozen / not run ## 代码入口 -- `imu_lidar/rtk_attitude.py`:GNHPR 基线语义及零 roll 数学补全。 -- `imu_lidar/rtk_io.py`:RTK CSV、Q4/Q5 和 checksum 质量门禁。 -- `imu_lidar/rtk_imu_rotation.py`:时间审计、连续段、基线审计、旧式诊断和重优化 LOO。 -- `imu_lidar/rtk_imu_replay.py`:坐标定义、参考点、平移冻结和 JSON 输出。 +- `rtk_imu/rtk_attitude.py`:GNHPR 基线语义及零 roll 数学补全。 +- `rtk_imu/rtk_io.py`:RTK CSV、Q4/Q5 和 checksum 质量门禁。 +- `rtk_imu/rtk_imu_rotation.py`:时间审计、连续段、基线审计、旧式诊断和重优化 LOO。 +- `rtk_imu/rtk_imu_replay.py`:坐标定义、参考点、平移冻结和 JSON 输出。 - `tools/rscap_v2/g90_rtk.py`:原始 GNHPR 解析及质量字段。 - `tools/export_g90_rtk_to_sessions.py`:GNHPR 质量字段导出。 - `tools/run_rtk_imu_calibration.py`:端到端命令行入口。 diff --git a/docs/rtk_imu_multisource_v3.md b/docs/rtk_imu_multisource_v3.md index 0e3a061..1615794 100644 --- a/docs/rtk_imu_multisource_v3.md +++ b/docs/rtk_imu_multisource_v3.md @@ -170,6 +170,6 @@ R2V 与 R2G 的 SO(3) 差异为 9.3119°。R3 最终: - tools/rscap_v2/g90_rtk.py:GGA/GNHPR/BESTNAVA/PVTSLNA 和双 checksum。 - tools/rscap_v2/hi13_imu.py:HI91 system_time、惯性、姿态和四元数。 - tools/export_rtk_imu_unified.py:55 组配对、原生异步导出和断点续导。 -- imu_lidar/rtk_imu_multisource.py:R1b/R2V/R2G/R3。 +- rtk_imu/rtk_imu_multisource.py:R1b/R2V/R2G/R3。 - tools/run_rtk_imu_multisource.py:多源旋转命令行入口。 - artifacts/rtk_imu_calibration_v3/multisource_result.json:首轮 R3 结果。 diff --git a/pyproject.toml b/pyproject.toml index 5142c16..ca79290 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "lidar-imu-calibration" version = "0.3.0" -description = "LiDAR–IMU extrinsic calibration from continuous-motion keyframes (imu_lidar)" +description = "LiDAR-IMU and RTK-IMU extrinsic calibration algorithms" requires-python = ">=3.10" dependencies = [ "numpy>=1.26", @@ -21,7 +21,7 @@ requires = ["setuptools>=68", "wheel"] build-backend = "setuptools.build_meta" [tool.setuptools] -packages = ["imu_lidar", "tools"] +packages = ["imu_lidar", "rtk_imu", "tools"] [tool.pytest.ini_options] testpaths = ["tests"] diff --git a/rtk_imu/README.md b/rtk_imu/README.md new file mode 100644 index 0000000..dbd069a --- /dev/null +++ b/rtk_imu/README.md @@ -0,0 +1,11 @@ +# RTK-IMU Calibration Package + +`rtk_imu/` contains the independent RTK-IMU calibration pipeline: G90 observation I/O, antenna-baseline rotation, V1 replay, V3 multisource stages, engineering 6DoF, and the node-state factor graph. + +## Boundary + +This package may import only shared `imu_lidar` utilities: `contracts`, `geometry`, `geodesy`, `imu_io`, `imu_preintegration`, and the generic `rotation_handeye` initializer. + +It must not import LiDAR-specific modules such as `lidar_io`, `lidar_deskew`, `registration`, `pipeline`, `phase_a`, or `joint_optimizer`. The LiDAR-IMU pipeline remains in `imu_lidar/`. + +## Entrypoints diff --git a/rtk_imu/__init__.py b/rtk_imu/__init__.py new file mode 100644 index 0000000..2cae0b5 --- /dev/null +++ b/rtk_imu/__init__.py @@ -0,0 +1 @@ +"""RTK-IMU extrinsic calibration algorithms and data interfaces.""" diff --git a/imu_lidar/rtk_attitude.py b/rtk_imu/rtk_attitude.py similarity index 100% rename from imu_lidar/rtk_attitude.py rename to rtk_imu/rtk_attitude.py diff --git a/imu_lidar/rtk_imu_engineering.py b/rtk_imu/rtk_imu_engineering.py similarity index 99% rename from imu_lidar/rtk_imu_engineering.py rename to rtk_imu/rtk_imu_engineering.py index a190842..0166b13 100644 --- a/imu_lidar/rtk_imu_engineering.py +++ b/rtk_imu/rtk_imu_engineering.py @@ -14,8 +14,8 @@ import numpy as np from scipy.optimize import least_squares from scipy.spatial.transform import Rotation -from .geometry import make_transform, so3_exp -from .imu_preintegration import apply_bias_correction_imu, preintegrate_imu +from imu_lidar.geometry import make_transform, so3_exp +from imu_lidar.imu_preintegration import apply_bias_correction_imu, preintegrate_imu from .rtk_attitude import gnhpr_to_baseline_enu from .rtk_imu_multisource import UnifiedSession, _f, _nearest_index, _truth diff --git a/imu_lidar/rtk_imu_multisource.py b/rtk_imu/rtk_imu_multisource.py similarity index 99% rename from imu_lidar/rtk_imu_multisource.py rename to rtk_imu/rtk_imu_multisource.py index 016ce1c..7ee51db 100644 --- a/imu_lidar/rtk_imu_multisource.py +++ b/rtk_imu/rtk_imu_multisource.py @@ -11,9 +11,9 @@ import numpy as np from scipy.optimize import least_squares from scipy.spatial.transform import Rotation -from .contracts import ImuSeries -from .geometry import so3_exp, so3_log -from .imu_preintegration import apply_bias_jacobian_correction, preintegrate_gyro +from imu_lidar.contracts import ImuSeries +from imu_lidar.geometry import so3_exp, so3_log +from imu_lidar.imu_preintegration import apply_bias_jacobian_correction, preintegrate_gyro from .rtk_attitude import gnhpr_to_baseline_enu diff --git a/imu_lidar/rtk_imu_node_graph.py b/rtk_imu/rtk_imu_node_graph.py similarity index 99% rename from imu_lidar/rtk_imu_node_graph.py rename to rtk_imu/rtk_imu_node_graph.py index 6c1ebe4..3dd1e18 100644 --- a/imu_lidar/rtk_imu_node_graph.py +++ b/rtk_imu/rtk_imu_node_graph.py @@ -4,8 +4,8 @@ from dataclasses import dataclass import numpy as np from scipy.optimize import least_squares from scipy.sparse import lil_matrix -from .geometry import so3_exp, so3_log -from .imu_preintegration import apply_bias_correction_imu, residual_whiten_matrix +from imu_lidar.geometry import so3_exp, so3_log +from imu_lidar.imu_preintegration import apply_bias_correction_imu, residual_whiten_matrix from .rtk_imu_engineering import ( G_ENU, HPR_DIRECT_ANGULAR_SIGMA_RAD, _Segment, _world_rtk) diff --git a/imu_lidar/rtk_imu_replay.py b/rtk_imu/rtk_imu_replay.py similarity index 99% rename from imu_lidar/rtk_imu_replay.py rename to rtk_imu/rtk_imu_replay.py index 2fa96dd..caf1600 100644 --- a/imu_lidar/rtk_imu_replay.py +++ b/rtk_imu/rtk_imu_replay.py @@ -10,7 +10,7 @@ from typing import Any import numpy as np -from .imu_io import load_imu_samples +from imu_lidar.imu_io import load_imu_samples from .rtk_imu_rotation import RotationCalibrationResult, RotationSession, solve_rtk_imu_rotation from .rtk_imu_translation import TranslationCalibrationResult, solve_rtk_imu_translation from .rtk_io import load_rtk_csv diff --git a/imu_lidar/rtk_imu_rotation.py b/rtk_imu/rtk_imu_rotation.py similarity index 98% rename from imu_lidar/rtk_imu_rotation.py rename to rtk_imu/rtk_imu_rotation.py index 2a3fbe1..6682f8f 100644 --- a/imu_lidar/rtk_imu_rotation.py +++ b/rtk_imu/rtk_imu_rotation.py @@ -8,10 +8,10 @@ import numpy as np from scipy.optimize import least_squares from scipy.sparse import lil_matrix -from .contracts import ImuSeries, MotionPair -from .geometry import orthonormalize_rotation, rpy_deg_xyz, so3_exp, so3_log -from .imu_preintegration import apply_bias_jacobian_correction, preintegrate_gyro -from .rotation_handeye import estimate_rotation_handeye_initial +from imu_lidar.contracts import ImuSeries, MotionPair +from imu_lidar.geometry import orthonormalize_rotation, rpy_deg_xyz, so3_exp, so3_log +from imu_lidar.imu_preintegration import apply_bias_jacobian_correction, preintegrate_gyro +from imu_lidar.rotation_handeye import estimate_rotation_handeye_initial from .rtk_attitude import GNHPR_CANDIDATES, GnhprConvention, gnhpr_to_rotation_enu_rtk from .rtk_io import RtkSeries diff --git a/imu_lidar/rtk_imu_translation.py b/rtk_imu/rtk_imu_translation.py similarity index 99% rename from imu_lidar/rtk_imu_translation.py rename to rtk_imu/rtk_imu_translation.py index 2172ea1..b94dded 100644 --- a/imu_lidar/rtk_imu_translation.py +++ b/rtk_imu/rtk_imu_translation.py @@ -9,7 +9,7 @@ from scipy.sparse import coo_matrix, csr_matrix, eye from scipy.sparse.linalg import lsqr, splu from scipy.spatial.transform import Rotation, Slerp -from .geometry import make_transform, orthonormalize_rotation, so3_exp +from imu_lidar.geometry import make_transform, orthonormalize_rotation, so3_exp from .rtk_imu_rotation import RotationCalibrationResult, RotationSession, _attitude_rows diff --git a/imu_lidar/rtk_io.py b/rtk_imu/rtk_io.py similarity index 99% rename from imu_lidar/rtk_io.py rename to rtk_imu/rtk_io.py index d9b63a5..d694035 100644 --- a/imu_lidar/rtk_io.py +++ b/rtk_imu/rtk_io.py @@ -7,7 +7,7 @@ from pathlib import Path import numpy as np -from .geodesy import geodetic_to_enu +from imu_lidar.geodesy import geodetic_to_enu @dataclass(frozen=True) diff --git a/tests/test_rtk_imu_calibration.py b/tests/test_rtk_imu_calibration.py index bfd2c61..c377a68 100644 --- a/tests/test_rtk_imu_calibration.py +++ b/tests/test_rtk_imu_calibration.py @@ -7,9 +7,9 @@ import numpy as np from imu_lidar.geodesy import geodetic_to_enu from imu_lidar.geometry import so3_exp from imu_lidar.imu_preintegration import preintegrate_gyro, preintegrate_imu -from imu_lidar.rtk_attitude import gnhpr_to_baseline_enu, gnhpr_to_rotation_enu_rtk -from imu_lidar.rtk_imu_translation import _preintegrate_translation_interval -from imu_lidar.rtk_io import load_rtk_csv +from rtk_imu.rtk_attitude import gnhpr_to_baseline_enu, gnhpr_to_rotation_enu_rtk +from rtk_imu.rtk_imu_translation import _preintegrate_translation_interval +from rtk_imu.rtk_io import load_rtk_csv def test_geodetic_to_enu_has_expected_axis_and_scale() -> None: diff --git a/tests/test_rtk_imu_engineering.py b/tests/test_rtk_imu_engineering.py index 72cbb3f..46278e0 100644 --- a/tests/test_rtk_imu_engineering.py +++ b/tests/test_rtk_imu_engineering.py @@ -7,7 +7,7 @@ import pytest from scipy.spatial.transform import Rotation from imu_lidar.contracts import ImuSeries -from imu_lidar.rtk_imu_engineering import ( +from rtk_imu.rtk_imu_engineering import ( G0, HPR_DIRECT_ANGULAR_SIGMA_RAD, ResidualAudit, @@ -23,8 +23,8 @@ from imu_lidar.rtk_imu_engineering import ( _segments, solve_engineering_6dof, ) -from imu_lidar.rtk_imu_multisource import UnifiedSession -from imu_lidar.rtk_imu_node_graph import ( +from rtk_imu.rtk_imu_multisource import UnifiedSession +from rtk_imu.rtk_imu_node_graph import ( _additive_marginal_lever_information, _free_residual, _free_sparsity, diff --git a/tests/test_rtk_imu_multisource.py b/tests/test_rtk_imu_multisource.py index 13d681f..749db2e 100644 --- a/tests/test_rtk_imu_multisource.py +++ b/tests/test_rtk_imu_multisource.py @@ -3,7 +3,7 @@ from __future__ import annotations import numpy as np from imu_lidar.contracts import ImuSeries -from imu_lidar.rtk_imu_multisource import R1bResult, UnifiedSession, solve_r2g +from rtk_imu.rtk_imu_multisource import R1bResult, UnifiedSession, solve_r2g def _level_session(session_id: str) -> UnifiedSession: diff --git a/tools/audit_rtk_imu_factor_consistency.py b/tools/audit_rtk_imu_factor_consistency.py index 668c448..aae18f6 100644 --- a/tools/audit_rtk_imu_factor_consistency.py +++ b/tools/audit_rtk_imu_factor_consistency.py @@ -9,14 +9,14 @@ from scipy.spatial.transform import Rotation ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) from imu_lidar.imu_preintegration import preintegrate_imu -from imu_lidar.rtk_imu_engineering import ( +from rtk_imu.rtk_imu_engineering import ( G_ENU, MIN_SEGMENT_DURATION_S, MIN_SEGMENT_NODE_COUNT, NUISANCE_DOF_PER_SEGMENT, _Segment, _all_hpr, _audit, _dense_colored_jacobian, _enu, _height_reference, _hpr_factor_observation, _initial_parameters, _marginal_lever_information, _motion_flags, _nodes, _position_valid, _residual, _segment_residual_size, _world_rtk) -from imu_lidar.rtk_imu_multisource import _f, _truth, load_unified_sessions +from rtk_imu.rtk_imu_multisource import _f, _truth, load_unified_sessions MECHANICAL_L_I_M = np.array([-0.45072, -0.25682, 0.73208]) def _jsonable(value): diff --git a/tools/audit_rtk_imu_factor_yield.py b/tools/audit_rtk_imu_factor_yield.py index 088c56a..dfbfff1 100644 --- a/tools/audit_rtk_imu_factor_yield.py +++ b/tools/audit_rtk_imu_factor_yield.py @@ -15,13 +15,13 @@ ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) -from imu_lidar.rtk_imu_engineering import ( +from rtk_imu.rtk_imu_engineering import ( _all_hpr, _height_reference, _nodes, _position_valid, ) -from imu_lidar.rtk_imu_multisource import _f, _nearest_index, _truth, load_unified_sessions +from rtk_imu.rtk_imu_multisource import _f, _nearest_index, _truth, load_unified_sessions def _finite_doppler(row: dict[str, str]) -> bool: diff --git a/tools/audit_rtk_imu_heldout_innovation.py b/tools/audit_rtk_imu_heldout_innovation.py index 8e766b8..b0646c3 100644 --- a/tools/audit_rtk_imu_heldout_innovation.py +++ b/tools/audit_rtk_imu_heldout_innovation.py @@ -7,9 +7,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import build_problem +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import build_problem from tools.audit_rtk_imu_factor_consistency import _jsonable from tools.audit_rtk_imu_innovation_noise import ( _factor_report,_hpr_innovations,_interval_innovations) diff --git a/tools/audit_rtk_imu_innovation_noise.py b/tools/audit_rtk_imu_innovation_noise.py index d28c732..1b777ea 100644 --- a/tools/audit_rtk_imu_innovation_noise.py +++ b/tools/audit_rtk_imu_innovation_noise.py @@ -9,11 +9,11 @@ ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) from imu_lidar.geometry import so3_log from imu_lidar.imu_preintegration import apply_bias_correction_imu,preintegrate_gyro -from imu_lidar.rtk_imu_engineering import ( +from rtk_imu.rtk_imu_engineering import ( G_ENU,HPR_DIRECT_ANGULAR_SIGMA_RAD,_all_hpr,_height_reference, _world_rtk) -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import build_problem +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import build_problem from tools.audit_rtk_imu_factor_consistency import MECHANICAL_L_I_M,_jsonable from tools.run_rtk_imu_node_graph_fixed_lever import _select_window diff --git a/tools/audit_rtk_imu_lever_excitation.py b/tools/audit_rtk_imu_lever_excitation.py index ce72e14..ba91633 100644 --- a/tools/audit_rtk_imu_lever_excitation.py +++ b/tools/audit_rtk_imu_lever_excitation.py @@ -17,8 +17,8 @@ ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) -from imu_lidar.rtk_imu_engineering import _fit_segments, _fit_summary, _segments -from imu_lidar.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_engineering import _fit_segments, _fit_summary, _segments +from rtk_imu.rtk_imu_multisource import load_unified_sessions def _jsonable(value): diff --git a/tools/audit_rtk_imu_motion_excitation.py b/tools/audit_rtk_imu_motion_excitation.py index d97a044..13f6baf 100644 --- a/tools/audit_rtk_imu_motion_excitation.py +++ b/tools/audit_rtk_imu_motion_excitation.py @@ -23,7 +23,7 @@ if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) from imu_lidar.imu_audit import audit_imu -from imu_lidar.rtk_imu_engineering import ( +from rtk_imu.rtk_imu_engineering import ( MIN_SEGMENT_DURATION_S, MIN_SEGMENT_NODE_COUNT, _all_hpr, @@ -37,7 +37,7 @@ from imu_lidar.rtk_imu_engineering import ( _segments, _source_nodes, ) -from imu_lidar.rtk_imu_multisource import _f, _truth, load_unified_sessions +from rtk_imu.rtk_imu_multisource import _f, _truth, load_unified_sessions RAW_GAP_S = 1.5 diff --git a/tools/audit_rtk_imu_multihorizon.py b/tools/audit_rtk_imu_multihorizon.py index 16fe59e..bcc5992 100644 --- a/tools/audit_rtk_imu_multihorizon.py +++ b/tools/audit_rtk_imu_multihorizon.py @@ -8,9 +8,9 @@ from scipy.spatial.transform import Rotation ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) from imu_lidar.imu_preintegration import preintegrate_imu -from imu_lidar.rtk_imu_engineering import ( +from rtk_imu.rtk_imu_engineering import ( G_ENU, _all_hpr, _height_reference, _hpr_factor_observation, _world_rtk) -from imu_lidar.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_multisource import load_unified_sessions from tools.audit_rtk_imu_factor_consistency import ( MECHANICAL_L_I_M, _best_arrays, _jsonable, _nearest_imu, _summary) diff --git a/tools/audit_rtk_imu_propagation_bias_root_cause.py b/tools/audit_rtk_imu_propagation_bias_root_cause.py index 46befe1..d89f41d 100644 --- a/tools/audit_rtk_imu_propagation_bias_root_cause.py +++ b/tools/audit_rtk_imu_propagation_bias_root_cause.py @@ -7,9 +7,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import G0,G_ENU,_height_reference,_nodes,_world_rtk -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import build_problem +from rtk_imu.rtk_imu_engineering import G0,G_ENU,_height_reference,_nodes,_world_rtk +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import build_problem from tools.audit_rtk_imu_factor_consistency import _jsonable from tools.audit_rtk_imu_heldout_innovation import _calibration_biases from tools.audit_rtk_imu_innovation_noise import _factor_report,_interval_innovations diff --git a/tools/refine_rtk_imu_windows_by_actual_information.py b/tools/refine_rtk_imu_windows_by_actual_information.py index 6daba4f..9513e0c 100644 --- a/tools/refine_rtk_imu_windows_by_actual_information.py +++ b/tools/refine_rtk_imu_windows_by_actual_information.py @@ -7,9 +7,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import build_problem,linearized_lever_information +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import build_problem,linearized_lever_information from tools.audit_rtk_imu_factor_consistency import _jsonable from tools.run_rtk_imu_node_graph_free_selected import _restore_segments from tools.select_rtk_imu_windows_by_lever_information import ( diff --git a/tools/retry_rtk_imu_heldout_nonconverged.py b/tools/retry_rtk_imu_heldout_nonconverged.py index 154ddfe..c2bab13 100644 --- a/tools/retry_rtk_imu_heldout_nonconverged.py +++ b/tools/retry_rtk_imu_heldout_nonconverged.py @@ -8,9 +8,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import ( +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import ( build_problem,fit_states_at_fixed_lever,summarize_fixed_state_values) from tools.audit_rtk_imu_factor_consistency import _jsonable from tools.run_rtk_imu_node_graph_free_selected import _restore_segments diff --git a/tools/run_rtk_imu_calibration.py b/tools/run_rtk_imu_calibration.py index 163a1e7..8239433 100644 --- a/tools/run_rtk_imu_calibration.py +++ b/tools/run_rtk_imu_calibration.py @@ -12,7 +12,7 @@ ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) -from imu_lidar.rtk_imu_replay import ( +from rtk_imu.rtk_imu_replay import ( DEFAULT_RTK_FRAME_DEFINITION, DEFAULT_RTK_REFERENCE_POINT, load_inventory, diff --git a/tools/run_rtk_imu_engineering_6dof.py b/tools/run_rtk_imu_engineering_6dof.py index d2bb960..ac5145b 100644 --- a/tools/run_rtk_imu_engineering_6dof.py +++ b/tools/run_rtk_imu_engineering_6dof.py @@ -17,12 +17,12 @@ ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) -from imu_lidar.rtk_imu_engineering import ( +from rtk_imu.rtk_imu_engineering import ( DEFAULT_MANUAL_L_I_M, DEFAULT_MANUAL_L_I_COVARIANCE_M2, solve_engineering_6dof, ) -from imu_lidar.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_multisource import load_unified_sessions def _jsonable(value): diff --git a/tools/run_rtk_imu_engineering_free_base.py b/tools/run_rtk_imu_engineering_free_base.py index e1bd4fa..334b29d 100644 --- a/tools/run_rtk_imu_engineering_free_base.py +++ b/tools/run_rtk_imu_engineering_free_base.py @@ -20,7 +20,7 @@ ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) -from imu_lidar.rtk_imu_engineering import ( +from rtk_imu.rtk_imu_engineering import ( MIN_SEGMENT_DURATION_S, MIN_SEGMENT_NODE_COUNT, NUISANCE_DOF_PER_SEGMENT, @@ -36,7 +36,7 @@ from imu_lidar.rtk_imu_engineering import ( _world_rtk, ) from imu_lidar.imu_preintegration import preintegrate_imu -from imu_lidar.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_multisource import load_unified_sessions MANUAL_REFERENCE_L_I_M = np.array([-0.45072, -0.25682, 0.73208], dtype=float) diff --git a/tools/run_rtk_imu_mechanical_prior_branch.py b/tools/run_rtk_imu_mechanical_prior_branch.py index 2a292c4..aa6d754 100644 --- a/tools/run_rtk_imu_mechanical_prior_branch.py +++ b/tools/run_rtk_imu_mechanical_prior_branch.py @@ -9,9 +9,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import ( +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import ( NODE_DOF,build_problem,fit_states_at_fixed_lever,solve_free_lever_many, summarize_fixed_state_values) from tools.audit_rtk_imu_factor_consistency import MECHANICAL_L_I_M,_jsonable diff --git a/tools/run_rtk_imu_mechanical_prior_heldout.py b/tools/run_rtk_imu_mechanical_prior_heldout.py index 4c7ce15..053530b 100644 --- a/tools/run_rtk_imu_mechanical_prior_heldout.py +++ b/tools/run_rtk_imu_mechanical_prior_heldout.py @@ -9,9 +9,9 @@ from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) from imu_lidar.geometry import make_transform -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import build_problem,fit_states_at_fixed_lever,residual +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import build_problem,fit_states_at_fixed_lever,residual from tools.audit_rtk_imu_factor_consistency import _jsonable from tools.run_rtk_imu_node_graph_free_selected import _restore_segments diff --git a/tools/run_rtk_imu_mechanical_prior_rotation_sensitivity.py b/tools/run_rtk_imu_mechanical_prior_rotation_sensitivity.py index c365d1c..29f5fcb 100644 --- a/tools/run_rtk_imu_mechanical_prior_rotation_sensitivity.py +++ b/tools/run_rtk_imu_mechanical_prior_rotation_sensitivity.py @@ -10,9 +10,9 @@ from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) from imu_lidar.geometry import make_transform -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import ( +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import ( build_problem,solve_free_lever_many,summarize_fixed_state_values) from tools.audit_rtk_imu_factor_consistency import _jsonable from tools.run_rtk_imu_node_graph_free_selected import _restore_segments diff --git a/tools/run_rtk_imu_multisource.py b/tools/run_rtk_imu_multisource.py index 0474acf..70c917b 100644 --- a/tools/run_rtk_imu_multisource.py +++ b/tools/run_rtk_imu_multisource.py @@ -12,7 +12,7 @@ ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) -from imu_lidar.rtk_imu_multisource import ( +from rtk_imu.rtk_imu_multisource import ( load_unified_sessions, result_to_jsonable, solve_r3, diff --git a/tools/run_rtk_imu_node_graph_fixed_lever.py b/tools/run_rtk_imu_node_graph_fixed_lever.py index 0f3a143..7c7fa5b 100644 --- a/tools/run_rtk_imu_node_graph_fixed_lever.py +++ b/tools/run_rtk_imu_node_graph_fixed_lever.py @@ -8,9 +8,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import build_problem, solve_fixed_lever +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import build_problem, solve_fixed_lever from tools.audit_rtk_imu_factor_consistency import ( MECHANICAL_L_I_M, _build_segment, _jsonable, _qualified_runs) diff --git a/tools/run_rtk_imu_node_graph_free_circle.py b/tools/run_rtk_imu_node_graph_free_circle.py index bd6daa8..78821e4 100644 --- a/tools/run_rtk_imu_node_graph_free_circle.py +++ b/tools/run_rtk_imu_node_graph_free_circle.py @@ -8,9 +8,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import build_problem,solve_free_lever +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import build_problem,solve_free_lever from tools.audit_rtk_imu_factor_consistency import MECHANICAL_L_I_M,_jsonable from tools.run_rtk_imu_node_graph_fixed_lever import _select_window diff --git a/tools/run_rtk_imu_node_graph_free_joint.py b/tools/run_rtk_imu_node_graph_free_joint.py index 2753bba..15720ff 100644 --- a/tools/run_rtk_imu_node_graph_free_joint.py +++ b/tools/run_rtk_imu_node_graph_free_joint.py @@ -8,9 +8,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import build_problem,solve_free_lever_many +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import build_problem,solve_free_lever_many from tools.audit_rtk_imu_factor_consistency import MECHANICAL_L_I_M,_jsonable from tools.run_rtk_imu_node_graph_fixed_lever import _select_window diff --git a/tools/run_rtk_imu_node_graph_free_selected.py b/tools/run_rtk_imu_node_graph_free_selected.py index b9eb9fc..aa09712 100644 --- a/tools/run_rtk_imu_node_graph_free_selected.py +++ b/tools/run_rtk_imu_node_graph_free_selected.py @@ -9,9 +9,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import ( +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import ( build_problem,fit_states_at_fixed_lever,solve_free_lever_many) from tools.audit_rtk_imu_factor_consistency import MECHANICAL_L_I_M,_build_segment,_jsonable,_qualified_runs diff --git a/tools/run_rtk_imu_node_graph_p05.py b/tools/run_rtk_imu_node_graph_p05.py index 83d42f9..06ee3f7 100644 --- a/tools/run_rtk_imu_node_graph_p05.py +++ b/tools/run_rtk_imu_node_graph_p05.py @@ -8,9 +8,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import _height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import ( +from rtk_imu.rtk_imu_engineering import _height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import ( build_problem,solve_fixed_lever,solve_fixed_lever_many) from tools.audit_rtk_imu_factor_consistency import MECHANICAL_L_I_M,_jsonable from tools.run_rtk_imu_node_graph_fixed_lever import _select_window diff --git a/tools/select_rtk_imu_windows_by_lever_information.py b/tools/select_rtk_imu_windows_by_lever_information.py index 5413a4f..042f0e5 100644 --- a/tools/select_rtk_imu_windows_by_lever_information.py +++ b/tools/select_rtk_imu_windows_by_lever_information.py @@ -7,9 +7,9 @@ import numpy as np from scipy.spatial.transform import Rotation ROOT=Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0,str(ROOT)) -from imu_lidar.rtk_imu_engineering import _all_hpr,_height_reference -from imu_lidar.rtk_imu_multisource import load_unified_sessions -from imu_lidar.rtk_imu_node_graph import build_problem,linearized_lever_information +from rtk_imu.rtk_imu_engineering import _all_hpr,_height_reference +from rtk_imu.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_node_graph import build_problem,linearized_lever_information from tools.audit_rtk_imu_factor_consistency import _build_segment,_jsonable,_qualified_runs from tools.run_rtk_imu_node_graph_fixed_lever import _select_window diff --git a/tools/validate_rtk_hpr_dropout_bridge.py b/tools/validate_rtk_hpr_dropout_bridge.py index 0db9dea..dfdf23f 100644 --- a/tools/validate_rtk_hpr_dropout_bridge.py +++ b/tools/validate_rtk_hpr_dropout_bridge.py @@ -21,8 +21,8 @@ ROOT = Path(__file__).resolve().parents[1] if str(ROOT) not in sys.path: sys.path.insert(0, str(ROOT)) -from imu_lidar.rtk_imu_engineering import _all_hpr, _baseline_angle_deg, _interpolate_baseline, _world_rtk -from imu_lidar.rtk_imu_multisource import load_unified_sessions +from rtk_imu.rtk_imu_engineering import _all_hpr, _baseline_angle_deg, _interpolate_baseline, _world_rtk +from rtk_imu.rtk_imu_multisource import load_unified_sessions GAPS_S = (0.2, 0.3, 0.4, 0.5, 0.6, 0.8) R2G_RPY_DEG = (0.4543066225, -0.0026392019, 0.0122384129)