Giter Club home page Giter Club logo

xrslam's Introduction



DocumentationactionsLICENSE

Introduction

OpenXRLab Visual-inertial SLAM Toolbox and Benchmark. It is a part of the OpenXRLab project.

XRSLAM-PC.mp4
XRSLAM-Demo.mp4

Major Features

  • Robust and Lightweight optimization-based Visual Inertial Odometry
  • Both desktop and mobile platforms are supported
  • An interactive and real-time AR application on iPhone
  • Visual localization module for running XRARDemo on prebuilt scenarios
  • Compared to other state-of-the-art systems, XRSLAM achieves competitive accuracy

Installation

We provide detailed installation tutorial for XRSLAM, users can install from scratch or use provided Dockerfile.

Getting Started

Please refer to quick start for the basic usage of XRSLAM.

License

The license of our codebase is Apache-2.0. Note that this license only applies to code in our library, the dependencies of which are separate and individually licensed. We would like to pay tribute to open-source implementations to which we rely on. Please be aware that using the content of dependencies may affect the license of our codebase. Some supported methods may carry additional licenses.

FAQ

Please refer to FAQ for frequently asked questions.

Citation

If you use this toolbox or benchmark in your research, please cite this project.

@misc{xrslam,
    title={OpenXRLab Visual-inertial SLAM Toolbox and Benchmark},
    author={XRSLAM Contributors},
    howpublished = {\url{https://github.com/openxrlab/xrslam}},
    year={2022}
}

If you use the Robust Visual-Inertial Odometry in your research, please cite:

@article{li2023rd,
  title={RD-VIO: Robust Visual-Inertial Odometry for Mobile Augmented Reality in Dynamic Environments},
  author={Li, Jinyu and Pan, Xiaokun and Huang, Gan and Zhang, Ziyang and Wang, Nan and Bao, Hujun and Zhang, Guofeng},
  journal={arXiv preprint arXiv:2310.15072},
  year={2023}
}

Contributing

We appreciate all contributions to improve XRSLAM. Please refer to CONTRIBUTING.md for the contributing guideline.

Acknowledgement

XRSLAM is an open source project that is contributed by researchers and engineers from both the academia and the industry. We appreciate all the contributors who implement their methods or add new features, as well as users who give valuable feedbacks. We wish that the toolbox and benchmark could serve the growing research community by providing a flexible toolkit to reimplement existing methods and develop their own new models.

Projects in OpenXRLab

  • XRPrimer: OpenXRLab foundational library for XR-related algorithms.
  • XRSLAM: OpenXRLab Visual-inertial SLAM Toolbox and Benchmark.
  • XRSfM: OpenXRLab Structure-from-Motion Toolbox and Benchmark.
  • XRLocalization: OpenXRLab Visual Localization Toolbox and Server.
  • XRMoCap: OpenXRLab Multi-view Motion Capture Toolbox and Benchmark.
  • XRMoGen: OpenXRLab Human Motion Generation Toolbox and Benchmark.
  • XRNeRF: OpenXRLab Neural Radiance Field (NeRF) Toolbox and Benchmark.

xrslam's People

Contributors

eugenelyj avatar huanggan52 avatar panxkun avatar wangnancpp avatar wangxiaomeng030 avatar zibyang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

xrslam's Issues

error: too few arguments to function ‘int XRSLAMCreate

Hello, I am very interested in trying out XRSLAM, while building for ROS, I got this error, and how to resolve this issue

/home/noetic/xrslam/xrslam-ros/src/xrslam-ros/src/xrslam_node.cpp: In function ‘int main(int, char**)’:
/home/noetic/xrslam/xrslam-ros/src/xrslam-ros/src/xrslam_node.cpp:143:79: error: too few arguments to function ‘int XRSLAMCreate(const char*, const char*, const char*, const char*, void**)’
  143 |         slam_config_path.c_str(), device_config_path.c_str(), "", "XRSLAM ROS");

Update:
I had to modify the function declaration in xrslam-interface/include/XRSLAM.h :

int XRSLAMCreate(const char *slam_config_path, const char *device_config_path,
                 const char *license_path, const char *product_name,
                 void **config);

, to be:

int XRSLAMCreate(const char *slam_config_path, const char *device_config_path,
                 const char *license_path, const char *product_name);

After that I was able to build, but once I do roslaunch xrslam_ros euroc.launch
I get process has died

Custom Dataset

Hi, Thanks for your great job.
I have and OAKD which has IMU + Camera integrated. is there any trick i should do to be able to use my data?
cuz I get in the following loop all the time.

        case DatasetReader::AGAIN:{
            continue;
            }

would u mind guiding me? do I have to get Synced data? may I use unsynced data??

More than a single camera

Considering most VR headsets use 2+ headsets (4 on quest 2/ quest pro/ pico 4/ etc...) are there any plans to be able to add more than just monocular visual-inertial slam?

when i try to build xrslam, under tag.h, error occurs all are related to constexpr error: non-type template argument is not a constant expression

@huanggan52 @wangnancpp

when i try to build xrslam, under tag.h, error occurs all are related to only constexpr
error: non-type template argument is not a constant expression
Kindly help

home/xrslam/xrslam/src/xrslam/utility/tag.h:13:53: error: no return statement in constexpr function
[[nodiscard]] static constexpr std::string_view enum_value_name() noexcept {
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:42:39: error: constexpr variable 'valid' must be initialized by a constant expression
constexpr std::array<bool, n> valid{
^ ~
/home/xrslam/xrslam/src/xrslam/utility/tag.h:51:16: note: in instantiation of function template specialization 'xrslam_0_5_0::Tagged<xrslam_0_5_0::FrameTag, void>::enum_value_count<0, 1, 2, 3, 4, 5, 6, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127>' requested here
return enum_value_count(all_possible_tags);
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:54:45: note: in instantiation of member function 'xrslam_0_5_0::Tagged<xrslam_0_5_0::FrameTag, void>::enum_size' requested here
static constexpr size_t tag_enum_size = enum_size();
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:55:32: note: in instantiation of static data member 'xrslam_0_5_0::Tagged<xrslam_0_5_0::FrameTag, void>::tag_enum_size' requested here
using bitset = std::bitset<tag_enum_size>;
^
/home/xrslam/xrslam/src/xrslam/map/frame.h:24:22: note: in instantiation of template class 'xrslam_0_5_0::Tagged<xrslam_0_5_0::FrameTag, void>' requested here
class Frame : public Tagged, public Identifiable {
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:36:5: note: control reached end of constexpr function
}
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:43:15: note: in call to 'enum_value_name()'
{!enum_value_name<static_cast(I)>().empty()...}};
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:44:23: error: constexpr variable 'num_valid' must be initialized by a constant expression
constexpr int num_valid = ((valid[I] ? 1 : 0) + ...);
^ ~~~~~~~~~~~~~~~~~~
/home/xrslam/xrslam/src/xrslam/utility/tag.h:44:37: note: initializer of 'valid' is not a constant expression
constexpr int num_valid = ((valid[I] ? 1 : 0) + ...);
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:42:39: note: declared here
constexpr std::array<bool, n> valid{
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:54:29: error: constexpr variable 'tag_enum_size' must be initialized by a constant expression
static constexpr size_t tag_enum_size = enum_size();
^ ~~~~~~~~~~~
/home/xrslam/xrslam/src/xrslam/utility/tag.h:55:32: note: in instantiation of static data member 'xrslam_0_5_0::Tagged<xrslam_0_5_0::FrameTag, void>::tag_enum_size' requested here
using bitset = std::bitset<tag_enum_size>;
^
/home/xrslam/xrslam/src/xrslam/map/frame.h:24:22: note: in instantiation of template class 'xrslam_0_5_0::Tagged<xrslam_0_5_0::FrameTag, void>' requested here
class Frame : public Tagged, public Identifiable {
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:36:5: note: control reached end of constexpr function
}
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:43:15: note: in call to 'enum_value_name()'
{!enum_value_name<static_cast(I)>().empty()...}};
^
/home/xrslam/xrslam/src/xrslam/utility/tag.h:51:16: note: in call to 'enum_value_count({})'
return enum_value_count(all_possible_tags);

Windows, runtime error

Hi! This code looks great, thank you for making it available.

I have it built and compiled on Windows, but when i try to run the euroc dataset, i see:

`Microsoft Windows [Version 10.0.22000.856]
(c) Microsoft Corporation. All rights reserved.

D:\testing\xrprimer-main\xrslam-main\build\xrslam-pc\player\Release>xrslam-pc-player -c configs/euroc.yaml --tum trajectory.tum euroc:///D:/datasets/MH_05_difficult
2022-09-02 16:33:44.656 - [XRSLAM][info]
ΓûêΓûêΓòù ΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓûêΓûêΓòù ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓòù ΓûêΓûêΓûêΓûêΓûêΓòù ΓûêΓûêΓûêΓòù ΓûêΓûêΓûêΓòù
ΓòÜΓûêΓûêΓòùΓûêΓûêΓòöΓò¥ΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓòöΓòÉΓòÉΓòÉΓòÉΓò¥ΓûêΓûêΓòæ ΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòùΓûêΓûêΓûêΓûêΓòù ΓûêΓûêΓûêΓûêΓòæ
ΓòÜΓûêΓûêΓûêΓòöΓò¥ ΓûêΓûêΓûêΓûêΓûêΓûêΓòöΓò¥ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓòæ ΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòæΓûêΓûêΓòöΓûêΓûêΓûêΓûêΓòöΓûêΓûêΓòæ
ΓûêΓûêΓòöΓûêΓûêΓòù ΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòùΓòÜΓòÉΓòÉΓòÉΓòÉΓûêΓûêΓòæΓûêΓûêΓòæ ΓûêΓûêΓòöΓòÉΓòÉΓûêΓûêΓòæΓûêΓûêΓòæΓòÜΓûêΓûêΓòöΓò¥ΓûêΓûêΓòæ
ΓûêΓûêΓòöΓò¥ ΓûêΓûêΓòùΓûêΓûêΓòæ ΓûêΓûêΓòæΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòæΓûêΓûêΓûêΓûêΓûêΓûêΓûêΓòùΓûêΓûêΓòæ ΓûêΓûêΓòæΓûêΓûêΓòæ ΓòÜΓòÉΓò¥ ΓûêΓûêΓòæ
ΓòÜΓòÉΓò¥ ΓòÜΓòÉΓò¥ΓòÜΓòÉΓò¥ ΓòÜΓòÉΓò¥ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ΓòÜΓòÉΓòÉΓòÉΓòÉΓòÉΓòÉΓò¥ΓòÜΓòÉΓò¥ ΓòÜΓòÉΓò¥ΓòÜΓòÉΓò¥ ΓòÜΓòÉΓò¥
2022-09-02 16:33:44.656 - [XRSLAM][info] Configurations:
Config::camera_intrinsic:
4.58654e+02 0.00000e+00 3.67215e+02
0.00000e+00 4.57296e+02 2.48375e+02
0.00000e+00 0.00000e+00 1.00000e+00

Config::camera_to_body_rotation:
-7.70718e-03 1.04993e-02 7.01753e-01 7.12301e-01

Config::camera_to_body_translation:
-2.16401e-02 -6.46770e-02 9.81073e-03

Config::imu_to_body_rotation:
0.00000e+00 0.00000e+00 0.00000e+00 1.00000e+00

Config::imu_to_body_translation:
0.00000e+00 0.00000e+00 0.00000e+00

Config::keypoint_noise_cov:
5.00000e-01 0.00000e+00
0.00000e+00 5.00000e-01

Config::gyroscope_noise_cov:
2.87913e-08 0.00000e+00 0.00000e+00
0.00000e+00 2.87913e-08 0.00000e+00
0.00000e+00 0.00000e+00 2.87913e-08

Config::accelerometer_noise_cov:
4.00000e-06 0.00000e+00 0.00000e+00
0.00000e+00 4.00000e-06 0.00000e+00
0.00000e+00 0.00000e+00 4.00000e-06

Config::gyroscope_bias_noise_cov:
3.76088e-10 0.00000e+00 0.00000e+00
0.00000e+00 3.76088e-10 0.00000e+00
0.00000e+00 0.00000e+00 3.76088e-10

Config::accelerometer_bias_noise_cov:
9.00000e-06 0.00000e+00 0.00000e+00
0.00000e+00 9.00000e-06 0.00000e+00
0.00000e+00 0.00000e+00 9.00000e-06

Config::sliding_window_size: 10
Config::sliding_window_force_keyframe_landmarks: 35
Config::sliding_window_tracker_frequent: 1
Config::feature_tracker_min_keypoint_distance: 1.00000e+01
Config::feature_tracker_max_keypoint_detection: 1000
Config::feature_tracker_max_init_frames: 60
Config::feature_tracker_max_frames: 20
Config::feature_tracker_predict_keypoints: true
Config::initializer_keyframe_gap: 5
Config::initializer_min_matches: 50
Config::initializer_min_parallax: 1.00000e+01
Config::initializer_min_triangulation: 20
Config::initializer_min_landmarks: 30
Config::initializer_refine_imu: true
Config::visual_localization_enable: false
Config::visual_localization_config_ip: 0.0.0.0
Config::visual_localization_config_port: 0
Config::solver_iteration_limit: 30
Config::solver_time_limit: 1.00000e+06

THREADING DISABLE

GLFW Error: WGL: Failed to make context current: The handle is invalid.
GLFW Error: WGL: Failed to make context current: The requested transformation operation is not supported.
GLFW Error: WGL: Failed to make context current: The requested transformation operation is not supported.
GLFW Error: WGL: Failed to make context current: The requested transformation operation is not supported.
`

And an empty UI:

image

I press the 'Stopped' button, but nothing happens.
What am i missing?
Thanks!

Help getting started

I'm interested in building the sample iOS app that has some videos posted, but I'm not clear on how to reproduce those results. A couple specific questions. Thanks in advance for your help.

What exactly do these instructions build? Is this building an iOS framework or the sample application?

### iOS
- In XRPrimer, run `./build-ios.sh` to configure some common dependencies.
- In XRSLAM, run `./build-ios.sh` to generate the XCode project using cmake.
+ If it is the first time to run its iOS version, `build-ios.conf` will be automatically generated, you need to assign the `IOS_DEVELOPMENT_TEAM` with your own development id, then run `./build-ios.sh` again to generate the xcode project.
+ It will cost about several minutes (Apple M1 Pro). Then the XCode project `xrslam-superbuild` will be automatically open. if not, you can also open this Xcode project manually by the path `project_path/build/iOS/xrslam-superbuild.xcodeproj`
- The target `xrslam-ios-visulaizer` is what you need to download to the iPhone, and an APP named `XRSLAM` will start automatically.
+ Be sure that your iPhone is supported by checking the [supported devices list](./supported_devices.md)
+ If the project failed to build in Xcode, try to clean the build folder using `cmd+shift+k`

Is this line up-to-date? I don't see a build-ios.sh script in the primer repository.

- In XRPrimer, run `./build-ios.sh` to configure some common dependencies.

About coordinate

Hi, I got some problem about coordinate transformation.

I'm confused about landmark get from track->get_landmark_point(); on inspect_debug(sliding_window_landmarks, landmarks) .Is that at the cameara coordinate or IMU/Body coordinate ?

And about the LightVis, is it the same as Pagolin which using OpenCV coord ? OR , is it using the original OpenGL coord ?

请教个问题,我不能成功的编译,环境是正常的。

我使用了unbuntu,
执行 cmake -S. -Bbuild -DBUILD_EXTERNAL=ON -DCMAKE_BUILD_TYPE=Release -DENABLE_PRECOMPILED_HEADERS=OFF && cmake --build build --target install -j8 这个命令的时候,
`
gmake[2]: *** [CMakeFiles/pybind11-populate.dir/build.make:99: pybind11-populate-prefix/src/pybind11-populate-stamp/pybind11-populate-download] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:83: CMakeFiles/pybind11-populate.dir/all] Error 2
gmake: *** [Makefile:91: all] Error 2

CMake Error at /usr/share/cmake-3.22/Modules/FetchContent.cmake:1087 (message):
Build step for pybind11 failed: 2
Call Stack (most recent call first):
/usr/share/cmake-3.22/Modules/FetchContent.cmake:1216:EVAL:2 (__FetchContent_directPopulate)
/usr/share/cmake-3.22/Modules/FetchContent.cmake:1216 (cmake_language)
/usr/share/cmake-3.22/Modules/FetchContent.cmake:1259 (FetchContent_Populate)
cmake/external/pybind11.cmake:17 (FetchContent_MakeAvailable)
CMakeLists.txt:71 (include)`

就卡到这里了。 这是为什么,c++,gcc,cmake,都符合要求

Empty GUI

Followed instruction, I construct my folder structure like this (the MH_03_medium folder contains dataset):
OpenXRLab
├── xrprimer
├── xrslam
│ ├── data
│ │ ├── EuRoC
│ │ │ ├── MH_03_medium
When I try to run XRSLAM by the following command:
./build/xrslam-pc/player/xrslam-pc-player -c configs/euroc.yaml --tum trajectory.tum euroc:///data/EuRoC/MH_03_medium/mav0
I can see a GUI opened, but nothing happened
1

The terminal showed like this:

`2023-01-18 12:09:20.940 - [XRSLAM][info]
██╗ ██╗██████╗ ███████╗██╗ █████╗ ███╗ ███╗
╚██╗██╔╝██╔══██╗██╔════╝██║ ██╔══██╗████╗ ████║
╚███╔╝ ██████╔╝███████╗██║ ███████║██╔████╔██║
██╔██╗ ██╔══██╗╚════██║██║ ██╔══██║██║╚██╔╝██║
██╔╝ ██╗██║ ██║███████║███████╗██║ ██║██║ ╚═╝ ██║
╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝width is not integer
2023-01-18 12:09:20.940 - [XRSLAM][info] Configurations:
Config::camera_intrinsic:
4.58654e+02 0.00000e+00 3.67215e+02
0.00000e+00 4.57296e+02 2.48375e+02
0.00000e+00 0.00000e+00 1.00000e+00

Config::camera_to_body_rotation:
-7.70718e-03 1.04993e-02 7.01753e-01 7.12301e-01

Config::camera_to_body_translation:
-2.16401e-02 -6.46770e-02 9.81073e-03

Config::imu_to_body_rotation:
0.00000e+00 0.00000e+00 0.00000e+00 1.00000e+00

Config::imu_to_body_translation:
0.00000e+00 0.00000e+00 0.00000e+00

Config::keypoint_noise_cov:
5.00000e-01 0.00000e+00
0.00000e+00 5.00000e-01

Config::gyroscope_noise_cov:
2.87913e-08 0.00000e+00 0.00000e+00
0.00000e+00 2.87913e-08 0.00000e+00
0.00000e+00 0.00000e+00 2.87913e-08

Config::accelerometer_noise_cov:
4.00000e-06 0.00000e+00 0.00000e+00
0.00000e+00 4.00000e-06 0.00000e+00
0.00000e+00 0.00000e+00 4.00000e-06

Config::gyroscope_bias_noise_cov:
3.76088e-10 0.00000e+00 0.00000e+00
0.00000e+00 3.76088e-10 0.00000e+00
0.00000e+00 0.00000e+00 3.76088e-10

Config::accelerometer_bias_noise_cov:
9.00000e-06 0.00000e+00 0.00000e+00
0.00000e+00 9.00000e-06 0.00000e+00
0.00000e+00 0.00000e+00 9.00000e-06

Config::sliding_window_size: 10
Config::sliding_window_force_keyframe_landmarks: 35
Config::sliding_window_tracker_frequent: 1
Config::feature_tracker_min_keypoint_distance: 1.00000e+01
Config::feature_tracker_max_keypoint_detection: 1000
Config::feature_tracker_max_init_frames: 60
Config::feature_tracker_max_frames: 20
Config::feature_tracker_predict_keypoints: true
Config::initializer_keyframe_gap: 5
Config::initializer_min_matches: 50
Config::initializer_min_parallax: 1.00000e+01
Config::initializer_min_triangulation: 20
Config::initializer_min_landmarks: 30
Config::initializer_refine_imu: true
Config::visual_localization_enable: true
Config::visual_localization_config_ip: 0.0.0.0
Config::visual_localization_config_port: 0
Config::solver_iteration_limit: 30
Config::solver_time_limit: 1.00000e+06

THREADING DISABLE
`
How can I run it successfully? Thanks!

Initializing failed when porting to Android

hi,
Trying to porting this project to android device, met initializing always failed, is there any special configuration should be done? Any potential reasons will cause initializing fail?
Thanks

imu initialization question

firstly, thanks for this great work!
recently, i read imu initialized codes, i find some questions
likes here, take an example

A.block<3, 3>(i * 6, 0) =  -0.5 * delta.t * delta.t * matrix<3>::Identity();

i think it should be

A.block<3, 3>(i * 6, 0) += -0.5 * delta.t * delta.t * matrix<3>::Identity();

do i miss some parts?

The data recorder for iphone and android cameras and IMU external parameter calibration

Could you please provide the data recorder for iphone Recently, I want to test on some phones of android and iphone, and the external parameter calibration adopts the Kalibr method suggested by you.
There are several open source projects that find loggers for android phones:
https://github.com/DavidGillsjo/VideoIMUCapture-Android
And the iphone's recorder:
https://github.com/Varvrar/ios_logger

At present, there is no test for the above two methods, so I would like to ask if you have a special data collector and can you provide it?
Thank you very muchand android cameras and IMU external parameter calibration

Localize drift severely when I run phone dataset, what should I do to get right location?

when I run xrslam algorithm using https://github.com/zju3dv/LSFB dataset,the trajectory drift is very serious.
I think it's mainly related to imu parameters,how should I adjust the parameters in configs.
below is the parameters I use now, refer to the calibration parameters provided by the dataset author.

imu:
gyroscope_noise_density: 0.01 # [ rad / s / sqrt(Hz) ]
gyroscope_random_walk: 4.0e-05 # [ rad / s^2 / sqrt(Hz) ]
accelerometer_noise_density: 0.1 # [ m / s^2 / sqrt(Hz) ]
accelerometer_random_walk: 0.001 # [ m / s^3 / sqrt(Hz) ]
accelerometer_bias: [0.0, 0.0, 0.0] # acc bias prior
gyroscope_bias: [0.0, 0.0, 0.0] # gyro bias prior
extrinsic:
q_bi: [ 0.0, 0.0, 0.0, 1.0 ] # x y z w
p_bi: [ 0.0, 0.0, 0.0 ] # x y z [m]
noise:
cov_g: [
1.0e-4, 0.0, 0.0,
0.0, 1.0e-04, 0.0,
0.0, 0.0, 1.0e-04]
cov_a: [
1.0e-02, 0.0, 0.0,
0.0, 1.0e-02, 0.0,
0.0, 0.0, 1.0e-02]
cov_bg: [
1.6e-09, 0.0, 0.0,
0.0, 1.6e-09, 0.0,
0.0, 0.0, 1.6e-09]
cov_ba: [
1.0e-06, 0.0, 0.0,
0.0, 1.0e-06, 0.0,
0.0, 0.0, 1.0e-06]

cam0:
T_BS:
cols: 4
rows: 4
data: [8.46506888e-04, -9.99991260e-01, 4.09432961e-03, -0.029662108648194,
-9.99941627e-01, -8.02348468e-04, 1.07749069e-02, 0.011143028268905,
-1.07715276e-02, -4.10321164e-03, -9.99933567e-01, -0.040172455026093,
0.0, 0.0, 0.0, 1.0]
resolution: [640, 480] # resolution of camera
camera_model: pinhole # camera model
distortion_model: radtan # distortion model
intrinsics: [482.7586673503097, 483.47632911991485, 314.6192613895542, 242.05073350615314] # fu, fv, cu, cv
camera_distortion_flag: 1 # use distortion model or not
distortion: [0.06279855179475724, -0.09438935292666413, -0.0009430695847365444, -0.0026745910116436067] # k1, k2, p1, p2, xi
camera_readout_time: 0.015465744080604192 # camera readout time
time_offset: 0.0 # camera time delay wrt. IMU
extrinsic:
q_bc: [ 0.707386461220603, -0.706803493087095, -0.002359812629834, -0.005258129517616 ] # x y z w
p_bc: [ -0.029662108648194, 0.011143028268905, -0.040172455026093 ] # x y z [m]
noise: [
0.5, 0.0,
0.0, 0.5] # [pixel^2]

no gui in mac pc binary

My mac is 14.3 with m2 chip.
When i run the binary, the output comes to:

xxxxxxxxxx

-----------------Create XRSLAM v0.1.0 successfully-----------
create SLAM success: 1
create visualizer thread ...
2024-03-03 21:27:00.335 xrslam-pc-player[60096:9723475] *** Assertion failure in -[NSMenu _setMenuName:], NSMenu.m:772
2024-03-03 21:27:00.336 xrslam-pc-player[60096:9723475] *** Assertion failure in -[NSMenu _setMenuName:], NSMenu.m:772

no gui but only a terminal icon is shown.

I do not compile pybind11 in xrprimer, but it seems not to be this problem.
How can i solve this problem? Thanks!

有关ios下的imu参数问题

您好,这是一个非常棒的项目,有关imu有个问题请教一下sigma_u: 0.5,sigma_w: 4.e-8,sigma_a: 4.e-6,sigma_bg: 1.0e-10,sigma_ba: 1.0e-8,他们的IMU是多少HZ下标定得到的呢,是100HZ吗

FindTBB error

according to ceres-solver/ceres-solver#669
when building XRPrimer in Unbuntu 22.04, I got an error:

CMake Error at cmake/FindTBB.cmake:434 (file):
  file STRINGS file "/usr/local/include/tbb/tbb_stddef.h" cannot be read.
Call Stack (most recent call first):

Before XRPrimer gets an update, you need to:

  1. build xrprimer first to get the same error (in order to download some dependences)
  2. comment Line 40 in cmake/external/ceres.cmake
  3. change Line 435 in _ext/ceres-solver/cmake/FindTBB.cmake to "${TBB_INCLUDE_DIR}/oneapi/tbb/version.h"

Initializer::mirror_keyframe_map init_frame_index_last might cause crash

Hi

`void Initializer::mirror_keyframe_map(Map *feature_tracking_map,
size_t init_frame_id) {
size_t init_frame_index_last =
feature_tracking_map->frame_index_by_id(init_frame_id);
size_t init_frame_index_gap = config->initializer_keyframe_gap();
size_t init_frame_index_distance =
init_frame_index_gap * (config->initializer_keyframe_num() - 1);

...
}`

in the Initializer.cpp, in some cases above code the value init_frame_index_last could be nil(), it's size_t(-1), the value is not handle, that could cause out of bound

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.