├── .gitignore ├── CMakeLists.txt ├── LICENSE ├── Log ├── dbg.txt ├── fast_livo_time_log.csv ├── guide.md ├── imu.txt ├── mat_out.txt ├── mat_pre.txt ├── plot.py └── pos_log.txt ├── README.md ├── config ├── M2DGR.yaml ├── NTU_VIRAL.yaml ├── NTU_new.yaml ├── atlivo.yaml ├── avia_mine.yaml ├── avia_resize.yaml ├── camera_NTU_VIRAL.yaml ├── camera_NTU_new.yaml ├── camera_pinhole.yaml ├── camera_pinhole_atlivo.yaml ├── camera_pinhole_hilti.yaml ├── camera_pinhole_mine.yaml ├── camera_pinhole_r3.yaml ├── camera_pinhole_resize.yaml ├── camera_pinhole_urban_local.yaml ├── hilti.yaml ├── r3.yaml └── urban_local.yaml ├── image └── README │ ├── 1679635705400.png │ ├── 1680179515403.png │ ├── car1.png │ └── car2.png ├── img ├── Framework.svg ├── Screenshot from 2023-03-24 11-22-28.png └── cover.bmp ├── include ├── FOV_Checker │ ├── FOV_Checker.cpp │ └── FOV_Checker.h ├── IKFoM_toolkit │ ├── esekfom │ │ ├── esekfom.hpp │ │ └── util.hpp │ └── mtk │ │ ├── build_manifold.hpp │ │ ├── src │ │ ├── SubManifold.hpp │ │ ├── mtkmath.hpp │ │ └── vectview.hpp │ │ ├── startIdx.hpp │ │ └── types │ │ ├── S2.hpp │ │ ├── SOn.hpp │ │ ├── vect.hpp │ │ └── wrapped_cv_mat.hpp ├── IMU_Processing.h ├── common_lib.h ├── feature.h ├── frame.h ├── ikd-Tree │ ├── .vscode │ │ ├── c_cpp_properties.json │ │ └── settings.json │ ├── README.md │ ├── ikd_Tree.cpp │ └── ikd_Tree.h ├── ivox3d │ ├── eigen_types.h │ ├── hilbert.hpp │ ├── ivox3d.h │ └── ivox3d_node.hpp ├── lidar_selection.h ├── map.h ├── point.h ├── preprocess.h ├── so3_math.h └── use-ikfom.hpp ├── launch ├── atlivo.launch ├── hilti.launch ├── mapping_avia.launch ├── mapping_avia_ntu.launch ├── mine.launch ├── ntu_new.launch ├── r3.launch └── urban_local.launch ├── msg ├── Pose6D.msg └── States.msg ├── package.xml ├── rviz_cfg ├── .gitignore ├── loam_livox.rviz └── loam_livox_ouster.rviz └── src ├── IMU_Processing.cpp ├── frame.cpp ├── laserMapping.cpp ├── lidar_selection.cpp ├── map.cpp ├── point.cpp ├── preprocess.cpp ├── run_nty.py └── save_data.cpp /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/.gitignore -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/CMakeLists.txt -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/LICENSE -------------------------------------------------------------------------------- /Log/dbg.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Log/fast_livo_time_log.csv: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/Log/fast_livo_time_log.csv -------------------------------------------------------------------------------- /Log/guide.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/Log/guide.md -------------------------------------------------------------------------------- /Log/imu.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/Log/imu.txt -------------------------------------------------------------------------------- /Log/mat_out.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/Log/mat_out.txt -------------------------------------------------------------------------------- /Log/mat_pre.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/Log/mat_pre.txt -------------------------------------------------------------------------------- /Log/plot.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/Log/plot.py -------------------------------------------------------------------------------- /Log/pos_log.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/README.md -------------------------------------------------------------------------------- /config/M2DGR.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/M2DGR.yaml -------------------------------------------------------------------------------- /config/NTU_VIRAL.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/NTU_VIRAL.yaml -------------------------------------------------------------------------------- /config/NTU_new.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/NTU_new.yaml -------------------------------------------------------------------------------- /config/atlivo.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/atlivo.yaml -------------------------------------------------------------------------------- /config/avia_mine.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/avia_mine.yaml -------------------------------------------------------------------------------- /config/avia_resize.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/avia_resize.yaml -------------------------------------------------------------------------------- /config/camera_NTU_VIRAL.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/camera_NTU_VIRAL.yaml -------------------------------------------------------------------------------- /config/camera_NTU_new.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/camera_NTU_new.yaml -------------------------------------------------------------------------------- /config/camera_pinhole.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/camera_pinhole.yaml -------------------------------------------------------------------------------- /config/camera_pinhole_atlivo.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/camera_pinhole_atlivo.yaml -------------------------------------------------------------------------------- /config/camera_pinhole_hilti.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/camera_pinhole_hilti.yaml -------------------------------------------------------------------------------- /config/camera_pinhole_mine.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/camera_pinhole_mine.yaml -------------------------------------------------------------------------------- /config/camera_pinhole_r3.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/camera_pinhole_r3.yaml -------------------------------------------------------------------------------- /config/camera_pinhole_resize.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/camera_pinhole_resize.yaml -------------------------------------------------------------------------------- /config/camera_pinhole_urban_local.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/camera_pinhole_urban_local.yaml -------------------------------------------------------------------------------- /config/hilti.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/hilti.yaml -------------------------------------------------------------------------------- /config/r3.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/r3.yaml -------------------------------------------------------------------------------- /config/urban_local.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/config/urban_local.yaml -------------------------------------------------------------------------------- /image/README/1679635705400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/image/README/1679635705400.png -------------------------------------------------------------------------------- /image/README/1680179515403.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/image/README/1680179515403.png -------------------------------------------------------------------------------- /image/README/car1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/image/README/car1.png -------------------------------------------------------------------------------- /image/README/car2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/image/README/car2.png -------------------------------------------------------------------------------- /img/Framework.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/img/Framework.svg -------------------------------------------------------------------------------- /img/Screenshot from 2023-03-24 11-22-28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/img/Screenshot from 2023-03-24 11-22-28.png -------------------------------------------------------------------------------- /img/cover.bmp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/img/cover.bmp -------------------------------------------------------------------------------- /include/FOV_Checker/FOV_Checker.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/FOV_Checker/FOV_Checker.cpp -------------------------------------------------------------------------------- /include/FOV_Checker/FOV_Checker.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/FOV_Checker/FOV_Checker.h -------------------------------------------------------------------------------- /include/IKFoM_toolkit/esekfom/esekfom.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/esekfom/esekfom.hpp -------------------------------------------------------------------------------- /include/IKFoM_toolkit/esekfom/util.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/esekfom/util.hpp -------------------------------------------------------------------------------- /include/IKFoM_toolkit/mtk/build_manifold.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/mtk/build_manifold.hpp -------------------------------------------------------------------------------- /include/IKFoM_toolkit/mtk/src/SubManifold.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/mtk/src/SubManifold.hpp -------------------------------------------------------------------------------- /include/IKFoM_toolkit/mtk/src/mtkmath.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/mtk/src/mtkmath.hpp -------------------------------------------------------------------------------- /include/IKFoM_toolkit/mtk/src/vectview.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/mtk/src/vectview.hpp -------------------------------------------------------------------------------- /include/IKFoM_toolkit/mtk/startIdx.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/mtk/startIdx.hpp -------------------------------------------------------------------------------- /include/IKFoM_toolkit/mtk/types/S2.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/mtk/types/S2.hpp -------------------------------------------------------------------------------- /include/IKFoM_toolkit/mtk/types/SOn.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/mtk/types/SOn.hpp -------------------------------------------------------------------------------- /include/IKFoM_toolkit/mtk/types/vect.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/mtk/types/vect.hpp -------------------------------------------------------------------------------- /include/IKFoM_toolkit/mtk/types/wrapped_cv_mat.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IKFoM_toolkit/mtk/types/wrapped_cv_mat.hpp -------------------------------------------------------------------------------- /include/IMU_Processing.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/IMU_Processing.h -------------------------------------------------------------------------------- /include/common_lib.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/common_lib.h -------------------------------------------------------------------------------- /include/feature.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/feature.h -------------------------------------------------------------------------------- /include/frame.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/frame.h -------------------------------------------------------------------------------- /include/ikd-Tree/.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/ikd-Tree/.vscode/c_cpp_properties.json -------------------------------------------------------------------------------- /include/ikd-Tree/.vscode/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/ikd-Tree/.vscode/settings.json -------------------------------------------------------------------------------- /include/ikd-Tree/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/ikd-Tree/README.md -------------------------------------------------------------------------------- /include/ikd-Tree/ikd_Tree.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/ikd-Tree/ikd_Tree.cpp -------------------------------------------------------------------------------- /include/ikd-Tree/ikd_Tree.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/ikd-Tree/ikd_Tree.h -------------------------------------------------------------------------------- /include/ivox3d/eigen_types.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/ivox3d/eigen_types.h -------------------------------------------------------------------------------- /include/ivox3d/hilbert.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/ivox3d/hilbert.hpp -------------------------------------------------------------------------------- /include/ivox3d/ivox3d.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/ivox3d/ivox3d.h -------------------------------------------------------------------------------- /include/ivox3d/ivox3d_node.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/ivox3d/ivox3d_node.hpp -------------------------------------------------------------------------------- /include/lidar_selection.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/lidar_selection.h -------------------------------------------------------------------------------- /include/map.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/map.h -------------------------------------------------------------------------------- /include/point.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/point.h -------------------------------------------------------------------------------- /include/preprocess.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/preprocess.h -------------------------------------------------------------------------------- /include/so3_math.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/so3_math.h -------------------------------------------------------------------------------- /include/use-ikfom.hpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/include/use-ikfom.hpp -------------------------------------------------------------------------------- /launch/atlivo.launch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/launch/atlivo.launch -------------------------------------------------------------------------------- /launch/hilti.launch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/launch/hilti.launch -------------------------------------------------------------------------------- /launch/mapping_avia.launch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/launch/mapping_avia.launch -------------------------------------------------------------------------------- /launch/mapping_avia_ntu.launch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/launch/mapping_avia_ntu.launch -------------------------------------------------------------------------------- /launch/mine.launch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/launch/mine.launch -------------------------------------------------------------------------------- /launch/ntu_new.launch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/launch/ntu_new.launch -------------------------------------------------------------------------------- /launch/r3.launch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/launch/r3.launch -------------------------------------------------------------------------------- /launch/urban_local.launch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/launch/urban_local.launch -------------------------------------------------------------------------------- /msg/Pose6D.msg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/msg/Pose6D.msg -------------------------------------------------------------------------------- /msg/States.msg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/msg/States.msg -------------------------------------------------------------------------------- /package.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/package.xml -------------------------------------------------------------------------------- /rviz_cfg/.gitignore: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /rviz_cfg/loam_livox.rviz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/rviz_cfg/loam_livox.rviz -------------------------------------------------------------------------------- /rviz_cfg/loam_livox_ouster.rviz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/rviz_cfg/loam_livox_ouster.rviz -------------------------------------------------------------------------------- /src/IMU_Processing.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/src/IMU_Processing.cpp -------------------------------------------------------------------------------- /src/frame.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/src/frame.cpp -------------------------------------------------------------------------------- /src/laserMapping.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/src/laserMapping.cpp -------------------------------------------------------------------------------- /src/lidar_selection.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/src/lidar_selection.cpp -------------------------------------------------------------------------------- /src/map.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/src/map.cpp -------------------------------------------------------------------------------- /src/point.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/src/point.cpp -------------------------------------------------------------------------------- /src/preprocess.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/src/preprocess.cpp -------------------------------------------------------------------------------- /src/run_nty.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/src/run_nty.py -------------------------------------------------------------------------------- /src/save_data.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ToutDonner/FAST-LIVO-DiffTime/HEAD/src/save_data.cpp --------------------------------------------------------------------------------