Coder Social home page Coder Social logo

hkust-aerial-robotics / d2slam Goto Github PK

View Code? Open in Web Editor NEW
253.0 14.0 28.0 131.74 MB

$D^2$SLAM: Decentralized and Distributed Collaborative Visual-inertial SLAM System for Aerial Swarm

CMake 0.50% C++ 28.00% Jupyter Notebook 44.33% Shell 0.07% Python 26.93% Dockerfile 0.15% Makefile 0.02%

d2slam's Issues

所依赖库的版本问题(dependency library)

您好!您的工作让我耳目一新,感谢您在该项目上投入的时间和精力!
我最近尝试在我的ubuntu18系统上成功运行,但遇到了一些编译上的问题,由于编译过程中涉及到的库较多所以相互之间依赖程度也较高 在我的本地编译过程中一直存在各包版本无法匹配的错误
我的电脑CUDA为11.6版本
所以想请教您一下,您的这些依赖是什么版本的呢?

  • opencv -v 3.4.10
  • ceres -v 1.14.0
  • faiss -v 1.5.0
  • glog
  • libtorch -v cuda11.6
  • mpfr -v 4.0.1
  • onnxruntime -v 1.14.1
  • openBLAS -v 0.3.23
  • SuiteSparse -v 5.11.0
  • lapack -v 3.9.1

(以上列出的版本为我本地安装的版本)

when enable_loop:=true, the process died after a while

Thanks for your great work!

I compiled the program from the source code and then got the results in TUM corridor4_512 dataset as the following pic:

It's obvious that $D^2SLAM$ gets a better result by using a single drone compared with the GT (the topic /vrpn_client/raw_transform) in yellow.

However, when I enable_loop:=true, then got error messages from the terminal just as the follow pic. From the call stack, we know that the ERROR is about the loop_detector module.

I try to find this bug but get nothing yet. And I believe the author can find it faster!

So if you have time, could you give me some advice or fix it in the future.

Looking forward to your reply!

配置文件参数含义问题

我发现配置文件的参数含义不明确,比如示例的配置文件quad_cam_calib-camchain-imucam-7-inch-n3.yaml中的T_cam_imu和T_cn_cnm1。按照普遍的理解:T_cam_imu代表imu到相机的变换,T_cn_cnm1代表cam_n-1到cam_n的变换,但我验证配置文件参数的时候发现cam0、cam1和imu之间的变换并不闭合,其他相机也一样。验证方式如下:

`import numpy as np

R_cam0_imu = np.array([
[0.6995150680047804, -0.006181389503964796, -0.7145911138952596],
[-0.7145403512501514, -0.02077639601444403, -0.6992856553683635],
[-0.01052407096032343, 0.9997650382927239, -0.01895025429831509]
])

R_cam1_imu = np.array([
[-0.7147794998773036, -0.009332937698944332, -0.6992876109506441],
[-0.6984124144580395, -0.04223022429446699, 0.7144485338265667],
[-0.03619897631209307, 0.9990643144612597, 0.02366705904859923]
])

R_cam1_cam0 = np.array([
[-0.00953816615977554, -0.0008626872194280964, 0.9999541385268998],
[0.010536511115216777, 0.9999440255403149, 0.0009631820976882342],
[-0.9998989975591693, 0.010545214886185546, -0.009528542552601715]
])

R_cam0_cam1 = np.dot(R_cam0_imu, np.linalg.inv(R_cam1_imu))

result = np.dot(R_cam1_cam0, R_cam0_cam1)

print(result)
`
输出的result为:
[ 0.01058242 -0.03888021 0.99918784]
[ 0.99988705 -0.01025317 -0.0109888 ]
[ 0.01067209 0.99919127 0.03876732]

非单位矩阵,相邻相机与imu之间的旋转不闭合。请问配置文件中的T_cam_imu和T_cn_cnm1具体表示的是什么?

真机部署

您好 感谢您的工作!
我想把您的代码部署到真实的4架无人机上面,请问这样可行吗

Assembling a FPV drone shown in the paper

Thank you so much for your excellent work!

I have a drone and try to fix the quad-cam mentioned in #2 (comment).
However, due to the difference of the drone structure, I have some difficulties. Therefore, I would like to ask the author for some details about drone hardware.

Next I plan to use OddityRC XI35Pro and the official recommended motor (Stream 2006 motor), propeller (Gemfan D90-3.5).
I especially want to know the type of flight controller with four integrated electronic speed controls (ESCs) you writted in paper. If possible, can you share the drawings of other parts for the convenience of direct 3D printing.

Thank you.

enable_loop=true error

I can run d2vins with enable_loop=false successfully in single drone situation, however, when setting enable_loop=true, the process terminated by the same error @yinloonga mentioned in #1 . I think the reason is that remote_index is empty. In single drone situation, the drone will not get remote images, as a result, remote_index will be empty. It means that d2vins can not support for state estimation of single drone?

Looking forward to your reply.
@xuhao1 @Peize-Liu @yinloonga
Thanks.

Jetson Orin上运行错误

你们的这项工作非常有创造力。
我尝试在jetson orin上运行,宿主机的jetpack版本是r35,2.1,使用的是make jetson 进行docker容器的创建。
图片
相机使用的是intel的realsense d435i相机,运行roslaunch d2vins realsense.launch 时出现错误。
2023-10-07_09-08
经过搜索,这个错误可能和onnxruntime以及pytorch的版本相关,想请问是否有解决方案。

superpoint在jetson NX平台的推理耗时问题

您好,我们在jetson NX平台上进行测试。使用develop分支构建镜像。使用realsense D435i双目相机。
开启tensonrt加速,进行superpoint前向推理时,单张图片的耗时在30ms以上,影响到了实时性。而在jetson orin上,单张推理的耗时在15ms左右,想请问你们在进行测试时的耗时情况,以及如何解决推理耗时问题。
image
image

GPU not supported after building the image

Thank you for your excellent job at first.
I have a problem. When I have successfully built an image, it is shown that:

WARNING: Detected NVIDIA NVIDIA GeForce RTX 4060 Laptop GPU GPU, which is not yet supported in this version of the container

I believe that using nvcr.io/nvidia/tensorrt:22.08-py3 as the base image on my laptop may not be appropriate. Can you please help me modify the Dockerfile to make it more suitable for it even various GPUs? Thank you for your assistance.

[Help] How to generate the dense map?

Dear Dr. Xu,

After running the demo, we obtain the following visualization results with the sparse map.
Screenshot from 2023-06-25 15-06-36
We have a question about generating a dense map by modifying the config file, like the teaser figure shown in the readme.
dense_ri_2

Yours,
Dapeng.

How to evaluate multi-TUM dataset on single PC?

Hello, Thanks for sharing great work!
I'm trying to evaluate D2SLAM on single PC with multi-robot datasets, especially TUM datasets.
But i cannot find any guidance how to deal with TUM datasets in a multi-robot manner.
can you show me how to use sync_bag_player with TUM dataset?

Additionally, By using sync_bag_player, can i get multi-trajectory file?
For example, if i played 3 bag files. Does the agent give 3 trajectory file (.txt) respectively ?

Kitti, Masala, EuRoC

Hi, and thanks for ur great job.
I do love what u have accomplished.
I'm new would u mind helping me?
can I use ur repo to see the results on Kitti and other datasets?
and can I use only 1 swarm?
thanks

[d2vins_node-1] Segmentation fault (Address not mapped to object [0x7ffe67c8aff8])

Hey, I meet an error:

[d2vins_node-1] Stack trace (most recent call last):
[d2vins_node-1] 31 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 30 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 29 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 28 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 27 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 26 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 25 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 24 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 23 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 22 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 21 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 20 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 19 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 18 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 17 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 16 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 15 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 14 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 13 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 12 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 11 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 10 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 9 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 8 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 7 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 6 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 5 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 4 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 3 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 2 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 1 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 32, in searchClosest [0x7f89ab2fe6fb]
[d2vins_node-1] 29: return i0;
[d2vins_node-1] 30: }
[d2vins_node-1] 31: if (buf[i].t > t - eps) {
[d2vins_node-1] > 32: return searchClosest(t, i0, i);
[d2vins_node-1] 33: } else {
[d2vins_node-1] 34: return searchClosest(t, i, i1);
[d2vins_node-1] 35: }
[d2vins_node-1] 0 Source "/root/D2SLAM/src/D2SLAM/d2common/src/d2imu.cpp", line 20, in searchClosest [0x7f89ab2fe651]
[d2vins_node-1] 17: return searchClosest(t, 0, buf.size());
[d2vins_node-1] 18: }
[d2vins_node-1] 19:
[d2vins_node-1] > 20: size_t IMUBuffer::searchClosest(double t, int i0, int i1) const {
[d2vins_node-1] 21: const double eps = 5e-4;
[d2vins_node-1] 22: const Guard lock(buf_lock);
[d2vins_node-1] 23: // printf("IMUBuffer::searchClosest: t=%f, i0=%d, i1=%d\n", t, i0, i1);
[d2vins_node-1] Segmentation fault (Address not mapped to object [0x7ffe67c8aff8])

** it seems to occur randomly on the TUM dataset.**

terminate called after throwing an instance of 'std::out_of_range' inTUM dataset

[d2vins_node-1] terminate called after throwing an instance of 'std::out_of_range'
[d2vins_node-1] what(): vector::M_range_check: n (which is 18446744073709551615) >= this->size() (which is 0)
[d2vins_node-1] Stack trace (most recent call last):
[d2vins_node-1] 31 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9affa2626, in void message_filters::Synchronizer<message_filters::sync_policies::ExactTime<sensor_msgs::msg::Image
<std::allocator >, sensor_msgs::msg::Image
<std::allocator >, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType> >::cb<1>(std::tuple_element<1, std::tuple<message_filters::MessageEvent<sensor_msgs::msg::Image
<std::allocator > const>, message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const> > >::type const&)
[d2vins_node-1] 30 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9affa6aa3, in void message_filters::sync_policies::ExactTime<sensor_msgs::msg::Image_<std::allocator >, sensor_msgs::msg::Image_<std::allocator >, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType>::add<1>(std::tuple_element<1, std::tuple<message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const>, message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const> > >::type const&)
[d2vins_node-1] 29 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9affab3fb, in message_filters::sync_policies::ExactTime<sensor_msgs::msg::Image_<std::allocator >, sensor_msgs::msg::Image_<std::allocator >, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType>::checkTuple(std::tuple<message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const>, message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const>, message_filters::MessageEvent<message_filters::NullType const> >&)
[d2vins_node-1] 28 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9affae528, in message_filters::Synchronizer<message_filters::sync_policies::ExactTime<sensor_msgs::msg::Image_<std::allocator >, sensor_msgs::msg::Image_<std::allocator >, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType> >::signal(message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const> const&, message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&)
[d2vins_node-1] 27 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9affae897, in message_filters::Signal9<sensor_msgs::msg::Image_<std::allocator >, sensor_msgs::msg::Image_<std::allocator >, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType, message_filters::NullType>::call(message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const> const&, message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&)
[d2vins_node-1] 26 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9affdaf79, in message_filters::CallbackHelper9T<std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&>::call(bool, message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const> const&, message_filters::MessageEvent<sensor_msgs::msg::Image_<std::allocator > const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&, message_filters::MessageEvent<message_filters::NullType const> const&)
[d2vins_node-1] 25 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9affde168, in std::function<void (std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>)>::operator()(std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>) const
[d2vins_node-1] 24 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9aff8228d, in std::Function_handler<void (std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>, std::shared_ptr<message_filters::NullType const>), std::function<void (std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&)> >::M_invoke(std::Any_data const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>&&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>&&, std::shared_ptr<message_filters::NullType const>&&, std::shared_ptr<message_filters::NullType const>&&, std::shared_ptr<message_filters::NullType const>&&, std::shared_ptr<message_filters::NullType const>&&, std::shared_ptr<message_filters::NullType const>&&, std::shared_ptr<message_filters::NullType const>&&, std::shared_ptr<message_filters::NullType const>&&)
[d2vins_node-1] 23 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9aff8785e, in std::function<void (std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&)>::operator()(std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&) const
[d2vins_node-1] 22 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9aff7a703, in std::Function_handler<void (std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image_<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&), std::_Bind<std::_Bind<void (D2FrontEnd::D2Frontend::(D2FrontEnd::D2Frontend, std::Placeholder<1>, std::Placeholder<2>))(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)> (std::_Placeholder<1>, std::_Placeholder<2>, std::_Placeholder<3>, std::_Placeholder<4>, std::_Placeholder<5>, std::_Placeholder<6>, std::_Placeholder<7>, std::_Placeholder<8>, std::_Placeholder<9>)> >::M_invoke(std::Any_data const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&)
[d2vins_node-1] 21 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9aff8201d, in void std::_Bind<std::_Bind<void (D2FrontEnd::D2Frontend::(D2FrontEnd::D2Frontend, std::Placeholder<1>, std::Placeholder<2>))(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)> (std::_Placeholder<1>, std::Placeholder<2>, std::Placeholder<3>, std::Placeholder<4>, std::Placeholder<5>, std::Placeholder<6>, std::Placeholder<7>, std::Placeholder<8>, std::Placeholder<9>)>::operator()<std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, void>(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&)
[d2vins_node-1] 20 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9aff87689, in void std::Bind<std::Bind<void (D2FrontEnd::D2Frontend::(D2FrontEnd::D2Frontend, std::Placeholder<1>, std::Placeholder<2>))(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)> (std::Placeholder<1>, std::Placeholder<2>, std::Placeholder<3>, std::Placeholder<4>, std::Placeholder<5>, std::Placeholder<6>, std::Placeholder<7>, std::Placeholder<8>, std::Placeholder<9>)>::call<void, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul>(std::tuple<std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&>&&, std::Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul, 8ul>)
[d2vins_node-1] 19 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9aff9029e, in std::invoke_result<std::Bind<void (D2FrontEnd::D2Frontend::(D2FrontEnd::D2Frontend, std::Placeholder<1>, std::Placeholder<2>))(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)>&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&>::type std::invoke<std::Bind<void (D2FrontEnd::D2Frontend::(D2FrontEnd::D2Frontend, std::Placeholder<1>, std::Placeholder<2>))(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)>&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&>(std::Bind<void (D2FrontEnd::D2Frontend::(D2FrontEnd::D2Frontend, std::Placeholder<1>, std::Placeholder<2>))(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)>&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&)
[d2vins_node-1] 18 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9aff986ec, in void std::invoke_impl<void, std::Bind<void (D2FrontEnd::D2Frontend::(D2FrontEnd::D2Frontend, std::Placeholder<1>, std::Placeholder<2>))(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)>&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&>(std::invoke_other, std::Bind<void (D2FrontEnd::D2Frontend::(D2FrontEnd::D2Frontend, std::Placeholder<1>, std::Placeholder<2>))(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)>&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&)
[d2vins_node-1] 17 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9aff9e15b, in void std::Bind<void (D2FrontEnd::D2Frontend::(D2FrontEnd::D2Frontend, std::Placeholder<1>, std::Placeholder<2>))(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)>::operator()<std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, void>(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&)
[d2vins_node-1] 16 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9affa2d02, in void std::Bind<void (D2FrontEnd::D2Frontend::(D2FrontEnd::D2Frontend, std::Placeholder<1>, std::Placeholder<2>))(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)>::call<void, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, 0ul, 1ul, 2ul>(std::tuple<std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&, std::shared_ptr<message_filters::NullType const> const&>&&, std::Index_tuple<0ul, 1ul, 2ul>)
[d2vins_node-1] 15 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9affa7b2e, in std::invoke_result<void (D2FrontEnd::D2Frontend::*&)(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>), D2FrontEnd::D2Frontend*&, std::shared_ptr<sensor_msgs::msg::Image
<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&>::type std::invoke<void (D2FrontEnd::D2Frontend::*&)(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>), D2FrontEnd::D2Frontend*&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&>(void (D2FrontEnd::D2Frontend::*&)(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>), D2FrontEnd::D2Frontend*&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&)
[d2vins_node-1] 14 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9affac65d, in void std::invoke_impl<void, void (D2FrontEnd::D2Frontend::*&)(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>), D2FrontEnd::D2Frontend*&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&>(std::invoke_memfun_deref, void (D2FrontEnd::D2Frontend::*&)(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>), D2FrontEnd::D2Frontend*&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const> const&)
[d2vins_node-1] 13 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9aff5639a, in D2FrontEnd::D2Frontend::stereoImagesCallback(std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>, std::shared_ptr<sensor_msgs::msg::Image<std::allocator > const>)
[d2vins_node-1] 12 Object "/root/D2SLAM/install/d2frontend/lib/liblibd2frontend.so", at 0x7fb9aff573c1, in D2FrontEnd::D2Frontend::processStereoframe(D2Common::StereoFrame const&)
[d2vins_node-1] 11 Object "/root/D2SLAM/install/d2vins/lib/d2vins/d2vins_node", at 0x55cac3534df6, in D2VINSNode::getMotionPredict(double) const
[d2vins_node-1] 10 Object "/root/D2SLAM/install/d2vins/lib/d2vins/d2vins_node", at 0x55cac3612b95, in D2VINS::D2Estimator::getMotionPredict(double) const
[d2vins_node-1] 9 Object "/root/D2SLAM/install/d2vins/lib/d2vins/d2vins_node", at 0x55cac3616cd6, in D2Common::IMUBuffer::operator
[d2vins_node-1] 8 Object "/root/D2SLAM/install/d2vins/lib/d2vins/d2vins_node", at 0x55cac361e3c2, in std::vector<D2Common::IMUData, std::allocatorD2Common::IMUData >::at(unsigned long)
[d2vins_node-1] 7 Object "/root/D2SLAM/install/d2vins/lib/d2vins/d2vins_node", at 0x55cac3626579, in std::vector<D2Common::IMUData, std::allocatorD2Common::IMUData >::_M_range_check(unsigned long) const
[d2vins_node-1] 6 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28", at 0x7fb995386368, in
[d2vins_node-1] 5 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28", at 0x7fb99538f698, in __cxa_throw
[d2vins_node-1] 4 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28", at 0x7fb99538f3e6, in std::terminate()
[d2vins_node-1] 3 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28", at 0x7fb99538f37b, in
[d2vins_node-1] 2 Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28", at 0x7fb9953838d0, in
[d2vins_node-1] 1 Object "/usr/lib/x86_64-linux-gnu/libc-2.31.so", at 0x7fb994fa9858, in abort
[d2vins_node-1] 0 Object "/usr/lib/x86_64-linux-gnu/libc-2.31.so", at 0x7fb994fca00b, in raise
[d2vins_node-1] Aborted (Signal sent by tkill() 6778 0)

关于Libtorch版本的问题 Issues about Libtorch version

您好,我依据Dockfile下载了libtorch,但编译的时候遇上了C++版本不统一的问题。libtorch里用的是17,而我们项目里用的是14,我直接docker编译,在pc上编译不过,想问下您用的torch版本是多少,具体是怎么解决的

Hello, I downloaded libtorch based on the Dockfile, but encountered a problem of inconsistent C++ versions during compilation. The libtorch version is compiled with C++17, while our project uses C++14. I tried to compile it directly with Docker, but it failed on my PC. I would like to ask what version of Torch you are using and how you specifically resolved this issue.

run D2SLAM docker on Xavier AGX

首先,非常感谢您可以分享这个工作内容
我在尝试着复现您的工作,按照教程中的方法,镜像是在Ubuntu18.04的电脑上以save方式打包为.tar文件的,之后在Xavier AGX上用load转化为了镜像,进一步在将镜像实例化为容器时,出现了以下错误:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused "process_linux.go:432: running prestart hook 0 caused \"error running hook: exit status 1, stdout: , stderr: exec command: [/usr/bin/nvidia-container-cli --load-kmods configure --ldconfig=@/sbin/ldconfig.real --device=all --compute --compat32 --graphics --utility --video --display --pid=666 /media/nvidia/ssd/dockerimages/overlay2/dd869bbb4187ebab72ff2bba6055da31f08b8e1c0ea3e81661cb864c37bed94a/merged]\\nnvidia-container-cli: mount error: file creation failed: /media/nvidia/ssd/dockerimages/overlay2/dd869bbb4187ebab72ff2bba6055da31f08b8e1c0ea3e81661cb864c37bed94a/merged/usr/lib/aarch64-linux-gnu/libcudnn_adv_infer_static_v8.a: file exists\\n\""": unknown.
ERRO[0005] error waiting for container: context canceled
实例化的命令是
sudo docker run -it --gpus all d2slam:jetson

docker image build failed for pc

Hello, when I build docker image for pc,
I meet this error about opencv and opencv_contrib

fatal error: opencv2/objdetect/aruco_board.hpp: No such file or directory
| #include <opencv2/objdetect/aruco_board.hpp>

How to solve this problem?

some problems running D^2-SLAM in Airsim

Thank you so much for your excellent work!

I try to run d^2-slam in Microsoft Airsim simulator, while I meet some problems:

  1. the estimated path from the ros topic /d2vins/path is serrated, what's worse, it is shifted away. The result is as follow:
path_serrated
  1. I observe that there always have some points from ros topic /d2vins/point_cloud showed following the perspective of origin, but I do not know why? I think the points in history will disappear with time goes on. The result is as follow:
point_show

I would like to seek help from the authors.

Thanks very much.

docker images build failed

Thank you for your wonderful job!
在使用make pc命令构建docker images时,出现如下报错:

Errors << d2frontend:make /home/yc/d2slam_ws/logs/d2frontend/build.make.000.log
In file included from /home/yc/d2slam_ws/src/D2SLAM/d2frontend/include/d2frontend/CNN/superpoint_common.h:2,
from /home/yc/d2slam_ws/src/D2SLAM/d2frontend/src/CNN/superpoint_common.cpp:1:
/usr/local/include/ATen/ATen.h:4:2: error: #error C++17 or later compatible compiler is required to use ATen.
4 | #error C++17 or later compatible compiler is required to use ATen.
| ^~~~~
In file included from /usr/local/include/c10/util/string_view.h:4,
from /usr/local/include/c10/util/StringUtil.h:6,
from /usr/local/include/c10/util/Exception.h:5,
from /usr/local/include/ATen/core/Generator.h:11,
from /usr/local/include/ATen/CPUGeneratorImpl.h:3,
from /usr/local/include/ATen/Context.h:3,
from /usr/local/include/ATen/ATen.h:7,
from /home/yc/d2slam_ws/src/D2SLAM/d2frontend/include/d2frontend/CNN/superpoint_common.h:2,
from /home/yc/d2slam_ws/src/D2SLAM/d2frontend/src/CNN/superpoint_common.cpp:1:
/usr/local/include/c10/util/C++17.h:27:2: error: #error You need C++17 to compile PyTorch
27 | #error You need C++17 to compile PyTorch
| ^~~~~

我将swarm_ws/src/D2SLAM/d2fronted/CMakeLists.txt中的 CXX_STANDARD 都由14修改为17后,全部包都build成功了。
这是一个bug吗?

failed to generate depth

when i run the command
roslaunch d2vins quadcam.launch enable_pgo:=true enable_loop:=true
the following error appeares
a33039b47a4688e213eeb17109a4c92c
and here is my quadcam_single.yaml

`%YAML:1.0

#inputs
imu: 1

imu_topic: "/mavros/imu/data_raw"

imu_topic: "/dji_sdk_1/dji_sdk/imu"
image0_topic: "/arducam/image"

is_compressed_images: 1

imu_freq: 400
image_freq: 16
frame_step: 2

#Camera configuration
camera_configuration: 3 #STEREO_PINHOLE = 0, STEREO_FISHEYE = 1, PINHOLE_DEPTH = 2, FOURCORNER_FISHEYE = 3
calib_file_path: "quad_cam_calib-camchain-imucam-7-inch-n3.yaml"
image_width: 1280
image_height: 800
enable_undistort_image: 1
undistort_fov: 200
width_undistort: 800
height_undistort: 400
photometric_calib: "mask.png"
avg_photometric: 0.7

#estimation
estimate_extrinsic: 0 # 0 Have an accurate extrinsic parameters. We will trust the following imu^R_cam, imu^T_cam, don't change it.
estimate_td: 0 # online estimate time offset between camera and imu
td: -0.186 # For new datasets with filter
estimation_mode: 0
double_counting_common_feature: 0
min_inv_dep: 0.01 #100 meter away.

#optimization parameters
max_solver_time: 0.08 # max solver itration time (ms), to guarantee real time
max_num_iterations: 8 # max solver itrations, to guarantee real time
consensus_max_steps: 4
timout_wait_sync: 100
rho_landmark: 1.0
rho_frame_T: 100
rho_frame_theta: 100
relaxation_alpha: 0.
consensus_sync_for_averaging: 0
consensus_sync_to_start: 0 #Is sync on start of the solving..
consensus_trigger_time_err_us: 100

#depth fusing
depth_far_thres: 3.0 # The max depth in frontend
depth_near_thres: 0.3
fuse_dep: 1 #if fuse depth measurement
max_depth_to_fuse: 5.0
min_depth_to_fuse: 0.3

#Multi-drone
track_remote_netvlad_thres: 0.5

#Initialization
init_method: 0 #0 IMU, 1 PnP
depth_estimate_baseline: 0.03

#sliding window
max_sld_win_size: 11
landmark_estimate_tracks: 4 #when use depth or stereo, 3 is OK.
min_solve_frames: 6

#solver
multiple_thread: 1

#outlier rejection
thres_outlier : 10.0
perform_outlier_rejection_num: 10000
tri_max_err: 0.2

#Marginalization
enable_marginalization: 1
margin_sparse_solver: 1
always_fixed_first_pose: 0
remove_base_when_margin_remote: 2

When set to 2, will use the all relevant measurements of the removing frames to compute the prior,

and the baseFrame (where!=removeID) will not be removed. This may lead to double counting of this baseFrame measurement: but it's stable.

When set to 1, will remove the baseframe's measurements of those measurements which is not base on current frame.

set to 0 those measurements (which on a landmark's baseFrame is not been removed) will be ignore.

#feature tracker parameters
max_cnt: 150 # max feature number in feature tracking
max_superpoint_cnt: 100 # max feature extraction by superpoint
max_solve_cnt: 1000
check_essential: 0
enable_lk_optical_flow: 1 #enable lk opticalflow featuretrack to enhance ego-motion estimation.
remote_min_match_num: 20
enable_superglue_local: 0
enable_superglue_remote: 0
ransacReprojThreshold: 10.0
enable_search_local_aera: 1
search_local_max_dist: 0.05
parallex_thres: 0.012
knn_match_ratio: 0.8 #This apply to superpoint feature track & loop clouse detection.

#CNN
cnn_use_onnx: 1
enable_pca_superpoint: 1
superpoint_pca_dims: 64

acc_n: 0.1 # accelerometer measurement noise standard deviation. #0.2 0.04
gyr_n: 0.05 # gyroscope measurement noise standard deviation. #0.05 0.004
acc_w: 0.002 # accelerometer bias random work noise standard deviation. #0.002
gyr_w: 0.0004 # gyroscope bias random work noise standard deviation. #4.0e-5
g_norm: 9.805 # gravity magnitude

#Loop Closure Detection
loop_detection_netvlad_thres: 0.8
enable_homography_test: 0
accept_loop_max_yaw: 10
accept_loop_max_pos: 1.0
loop_inlier_feature_num: 50
gravity_check_thres: 0.03
pgo_solver_time: 1.0
solver_timer_freq: 1.0
enable_pcm: 1
pcm_thres: 2.8

#PGO
pgo_solver_time: 0.5 # Max time to solve PGO each update in D2PGO
pgo_mode: 1 # PGO MODE=0, D2PGO collects all information and solve it in non-distributed; 1: D2PGO works in distributed mode.
pgo_rho_frame_T: 0.84 # rho for translation
pgo_rho_frame_theta: 0.25 # rho for rotation
pgo_eta_k: 0.1 # eta_k for PGO
write_g2o: 0 # If output g2o file, debug only
g2o_output_path: "output.g2o" # PGO file path
write_pgo_to_file: 1 # If write pgo data as csv.

#outputs
output_path: "/root/output/"
debug_print_sldwin: 0
debug_print_states: 0
enable_perf_output: 0
debug_write_margin_matrix: 0
show_track_id: 0`

SIOCADDRT: Operation not permitted

Some errors occurred in the docker container.

root@294f8aca6b95:~/swarm_ws/src/sync_bag_player/scripts# rosrun sync_bag_player environment_setup.sh
SIOCADDRT: Operation not permitted
xhost:  unable to open display ""
root@294f8aca6b95:~/swarm_ws/src/sync_bag_player/scripts# 

四目鱼眼相机标定问题

您好 感谢您的工作!
请问下您四目鱼眼相机的内参以及外参您是采用什么方法标定的呢?

SuperGlue and NetVLAD stuck with tensorRT

Hi, I tried to speed up CNN inference using tensorRT, but the following two problems occurred. Have these issues been addressed?

SuperGlue stuck with warning:

[W:onnxruntime:SuperGlueOnnx, tensorrt_execution_provider.h:60 log] [2024-07-29 02:30:30 WARNING] - Subnormal FP16 values ​​detected.
[W:onnxruntime:SuperGlueOnnx, tensorrt_execution_provider.h:60 log] [2024-07-29 02:30:30 WARNING] If this is not the desired behavior, please modify the weights or retrain with regularization to reduce the magnitude of the weights.
[W:onnxruntime:SuperGlueOnnx, tensorrt_execution_provider.h:60 log] [2024-07-29 02:30:30 WARNING] Weights [name=pred/vlad/memberships/Conv2D.weight] had the following issues when converted to FP16:

NetVLAD issues a warning and gets stuck when quantizing to int8:

[W:onnxruntime:, tensorrt_execution_provider.h:60 log] [2024-07-29 02:36:04 WARNING] Calibrator is not being used. Users must provide dynamic range for all tensors that are not Int32 or Bool. 
[W:onnxruntime:, tensorrt_execution_provider.h:60 log] [2024-07-29 02:36:04 WARNING] Missing scale and zero-point for tensor (Unnamed Layer* 1) [Shuffle]_output, expect fall back to non-int8 implementation for any layer consuming or producing given tensor

How to visualize SLAM data by remote pc

Thank you for the great SLAM system.
I'm currently trying to run D2SLAM on Xavier NX, but am struggling with how to visualize it.
If I run a ROS node on Xavier NX, is there a launch file or something to visualize the data remotely?
Furthermore, if I create a map using a depth camera, is there a pipeline to remotely visualize the resulting point cloud or map? At first glance, it doesn't seem like there is any pub/sub of point clouds in the LCM system.

interruptions and errors

Thanks for your great work!
When I'm running roslaunch d2vins quadcam.launch enable_pgo:=true enable_loop:=true
roslaunch d2vins tum.launch , I get the following interruptions and errors.

6b1321f0221ae70ed9e56fb795f4f90 be2bb4957b89fafe8bb10309a1e6527 f68d13a3caeab39be8bacad34cdf524 I hope you can suggest a fix.

数据集轨迹漂移问题

你们的工作非常优秀,对我们的启发很大。
我在进行数据集测试时,使用你们提供的Quad-camera omnidirectional 数据集,以及sync_bag_player工具,对应d2vins.yaml配置。
开始的时候轨迹是正常的,后面突然出现漂移,请问你们遇到过类似问题吗
2023-11-07_14-56

多机通信问题

感谢你们出色的工作!
我在复现你们的工作时,使用D435i+IMU进行多机测试时出现通信卡顿的现象。同时出现当使用带有公共网络的无线路由进行多机之间的通信时,能够在各自的主机的RVIZ中找到彼此的VINS与PGO轨迹,尽管也会出现卡顿以及轨迹不平滑现象。但是在使用不连接网络的无线路由之间进行多机通信时,则找不到彼此的任何轨迹,尽管我已经利用ntp进行过多机之间的时间同步操作。
我想请问,你们的工作在多机通信方面的配置是怎么样的?出现我这样问题的原因是什么?怎么解决呢?是一定要利用公网进行多机之间的通信吗?
非常期待能够得到你们的帮助与回复!谢谢

段错误 (对于映射对象的权限无效 [0x242ff4000])

[D2VINS] solve_count 4515 landmarks 150 odom Pose T [-2.104,+1.200,+0.756] YPR [+56.1,-1.2,+5.4] Vel 0.56 0.55 -0.07 td 1.0ms opti_time 16.8ms
[D2Frontend::LoopCam] KF Count 916 loop_cam cost avg 13.1ms cur 12.9ms
#4 Source "/home/hzbz/project/swarm_ws/D2SLAM/d2frontend/src/loop_detector.cpp", line 151, in processImageArray [0x7f719dcc9678]
148: printf("Compute loop connection %ld and %ld\n", image_array.frame_id, _old_fisheye_img.frame_id);
149: swarm_msgs::LoopEdge ret;
150: if (_old_fisheye_img.drone_id == self_id) {
> 151: success = computeLoop(_old_fisheye_img, image_array, camera_index_old, camera_index, ret);
152: } else if (image_array.drone_id == self_id) {
153: success = computeLoop(image_array, _old_fisheye_img, camera_index, camera_index_old, ret);
154: } else {
[D2VINS] force landmarks 0 to broadcast
[LoopNet@1] broadcast image array: 1000915 lazy: 0 size 47016 need_send_features 1
#3 Source "/home/hzbz/project/swarm_ws/D2SLAM/d2frontend/src/loop_detector.cpp", line 602, in computeLoop [0x7f719dcc71a4]
599: }
600:
601: if (params->show) {
> 602: drawMatched(frame_array_a, frame_array_b, main_dir_a, main_dir_b, success, inliers, DP_old_to_new, index2dirindex_a, index2dirindex_b);
603: }
604:
605: return success;
[D2Frontend::LoopCam] KF Count 917 loop_cam cost avg 13.1ms cur 11.8ms
#2 Source "/home/hzbz/project/swarm_ws/D2SLAM/d2frontend/src/loop_detector.cpp", line 638, in drawMatched [0x7f719dcc0319]
635: int new_dir_id = index2dirindex_a[i].first;
636: auto pt_old = frame_array_b.images[old_dir_id].landmarks[old_pt_id].pt2d;
637: auto pt_new = frame_array_a.images[new_dir_id].landmarks[new_pt_id].pt2d;
> 638: if (_matched_imgs[old_dir_id].empty()) {
639: continue;
640: }
641: cv::Scalar color(rand() % 255, rand() % 255, rand() % 255);
#1 Object "/usr/local/lib/libopencv_core.so.4.5.3", at 0x7f719e594303, in cv::Mat::empty() const
#0 Object "/usr/local/lib/libopencv_core.so.4.5.3", at 0x7f719e5942cc, in cv::Mat::total() const
段错误 (对于映射对象的权限无效 [0x242ff4000])
SWARM_LOCAL 0 new loops, 0 total loops
[D2PGO::solve@1] solve_count 24 mode single,0 total frames 257 loops 0 opti_time 0.8ms iters 1 initial cost 6.63e-28 final cost 6.63e-28

Failed to replace the workspace in Docker

Thanks for this great job!
But I meet some problem of workspace with docker pc


Problem generation

When I config the workspace and run as instructions

rosrun sync_bag_player docker_swarm_test.py /home/zph/hard_disk/rosbag/d2slam/D2SLAMDataset/quadcam_7inch_n3_2023_1_14/d2vins.yaml -z -t

The d2vins.yaml is as follows:

dataset:
  swarm1: #drone 1
    id: 1
    config_path: "Configs/"
    bag: "eight_noyaw_1-sync.bag"
  # swarm2: #drone 2
  #   id: 2
  #   config_path: "Configs/"
  #   bag: "eight_noyaw_2-sync.bag"
  # swarm5: #drone 3
  #   id: 5
  #   config_path: "Configs/"
  #   bag: "eight_noyaw_5-sync.bag"
  # swarm6: #drone 4
  #   id: 6
  #   config_path: "Configs/"
  #   bag: "eight_noyaw_6-sync.bag"
  # swarm7: #drone 5
  #   id: 7
  #   config_path: "Configs/"
  #   bag: "eight_noyaw_7-sync.bag"

output_path: "outputs/d2vins-5-sync/"
# workspace: "/home/xuhao/d2slam_ws/"
# workspace: "/home/zyh/d2slam_ws"
workspace: "/home/zph/ros_ws/d2slam_ws" # should be your d2slam ws
# workspace: ""
image_name: "d2slam:pc"
exclude_topics: ["/uwb_node/incoming_broadcast_data"]
rate: 0.1
t_start: 0
duration: 1000
start_latency: 10

entry_point_script: |
  #!/bin/bash
  RVIZ=false
  SHOW=true
  if [ $DRONE_ID -eq 1 ] 
  then
    SHOW=true
    RVIZ=true
  fi
  echo "ready to roslaunch d2vins"
  roslaunch d2vins quadcam.launch show:=$SHOW self_id:=$DRONE_ID \
    config:=/root/SwarmConfig/quadcam/quadcam_multi.yaml \
    enable_loop:=false rviz:=$RVIZ send_whole_img_desc:=false send_img:=false enable_pgo:=false \
    main_id:=1

Screenshot from 2023-10-11 15-44-26

I find I can not souce the workspace correctly, Because it has remapped to my worksapce of my host. I have compiled D2SLAM successfully on my host.

Some trys

But when I change the line in docker_swarm_test.py as follow:

    # -v {workspace}:/root/swarm_ws/ \
    # -v {workspace_mount} \
    cmd = f"""docker run --name {container_name} --gpus all --rm -it \
    -v {output_path}:/root/output/ \
    -v {swarm_config_path}:/root/SwarmConfig/ \
    -v {config_path}:/root/config.yaml \
    -v {dataset_path}:/root/bags/ \
    -v {entry_point_path}:/root/entry_point.sh \
    -v {docker_entry_point}:/root/docker_entrypoint.sh \
    --env='DRONE_ID={_id}' \
    --env='DISPLAY' --volume='/tmp/.X11-unix:/tmp/.X11-unix:rw' \
    --privileged \
    {image_name} /root/docker_entrypoint.sh /root/bags/{bag_path} {token}"""

That will not replace the workspace of docker with the workspace of host. It can run with the original code.
But I can not change the code in host and run it in the docker.


Hopes

I hope I can change the code in /home/zph/ros_ws/d2slam_ws and run it in docker
Could you give some suggestions?
Best !

Running on PC

When I'd like to run this project on my PC, I chose to run
“roslaunch d2vins realsense.launch”
and then I changed the params in d435_single.yaml such as
"

imu_topic: "/dji_sdk_1/dji_sdk/imu"

image0_topic: "/camera/infra1/image_rect_raw"

image1_topic: "/camera/infra2/image_rect_raw"

"
and left.yaml and right.yaml
"projection_parameters:"
to my params, then I try to roslaunch, but when the terminal writes

[ INFO] [1683553483.037062515]: D2VINS node 1 initialized. Ready to start.
[ INFO] [1683553483.037151392]: Starting d2vins_net lcm.


then it cannot write anything on the screen, just looks like to wait for some other topics???
but there are any other input topics except imu and camera/infra1 /infra2 ?

使用情况询问

感谢您们出色的工作!请问可以单独使用你们一架无人机中的多目VINS吗?

docker: invalid reference format: repository name must be lowercase.

Hi,when I want to evaluate multir-robot datasets on my PC with docker, I have met a strange problem.

rosrun sync_bag_player docker_swarm_test.py /home/mwy/BAG/D2SLAM/tum_corr/d2vins.yaml

Start swarm docker test
Launching docker swarm1
docker run --name swarm1_319961 --gpus all --rm -it -v -v /home/mwy/BAG/D2SLAM/tum_corr/outputs/d2vins/swarm1:/root/output/ -v /home/mwy/BAG/D2SLAM/tum_corr/Configs:/root/SwarmConfig/ -v /home/mwy/BAG/D2SLAM/tum_corr/d2vins.yaml:/root/config.yaml -v /home/mwy/BAG/D2SLAM/tum_corr:/root/bags/ -v /tmp/swarm1_319961_entry_point.sh:/root/entry_point.sh -v /home/mwy/D2SLAM_sync_bag_player/src/sync_bag_player/scripts/docker_entrypoint.sh:/root/docker_entrypoint.sh --env='DRONE_ID=1' --env='DISPLAY' --volume='/tmp/.X11-unix:/tmp/.X11-unix:rw' --privileged d2slam:pc /root/docker_entrypoint.sh /root/bags/dataset-corridor1_512_16-sync-comp.bag 319961
Launching docker swarm2
docker run --name swarm2_319961 --gpus all --rm -it -v -v /home/mwy/BAG/D2SLAM/tum_corr/outputs/d2vins/swarm2:/root/output/ -v /home/mwy/BAG/D2SLAM/tum_corr/Configs:/root/SwarmConfig/ -v /home/mwy/BAG/D2SLAM/tum_corr/d2vins.yaml:/root/config.yaml -v /home/mwy/BAG/D2SLAM/tum_corr:/root/bags/ -v /tmp/swarm2_319961_entry_point.sh:/root/entry_point.sh -v /home/mwy/D2SLAM_sync_bag_player/src/sync_bag_player/scripts/docker_entrypoint.sh:/root/docker_entrypoint.sh --env='DRONE_ID=2' --env='DISPLAY' --volume='/tmp/.X11-unix:/tmp/.X11-unix:rw' --privileged d2slam:pc /root/docker_entrypoint.sh /root/bags/dataset-corridor2_512_16-sync-comp.bag 319961
Launching docker swarm3
docker run --name swarm3_319961 --gpus all --rm -it -v -v /home/mwy/BAG/D2SLAM/tum_corr/outputs/d2vins/swarm3:/root/output/ -v /home/mwy/BAG/D2SLAM/tum_corr/Configs:/root/SwarmConfig/ -v /home/mwy/BAG/D2SLAM/tum_corr/d2vins.yaml:/root/config.yaml -v /home/mwy/BAG/D2SLAM/tum_corr:/root/bags/ -v /tmp/swarm3_319961_entry_point.sh:/root/entry_point.sh -v /home/mwy/D2SLAM_sync_bag_player/src/sync_bag_player/scripts/docker_entrypoint.sh:/root/docker_entrypoint.sh --env='DRONE_ID=3' --env='DISPLAY' --volume='/tmp/.X11-unix:/tmp/.X11-unix:rw' --privileged d2slam:pc /root/docker_entrypoint.sh /root/bags/dataset-corridor3_512_16-sync-comp.bag 319961
docker: invalid reference format: repository name must be lowercase.
See 'docker run --help'.
docker: invalid reference format: repository name must be lowercase.
See 'docker run --help'.
docker: invalid reference format: repository name must be lowercase.
See 'docker run --help'.
^CKeyboardInterrupt
Error response from daemon: Cannot kill container: swarm1_319961: No such container: swarm1_319961
Error response from daemon: Cannot kill container: swarm2_319961: No such container: swarm2_319961
Error response from daemon: Cannot kill container: swarm3_319961: No such container: swarm3_319961

I think this docker container name id valid ,and In the previous several runs, the terminal didn't indicate any issues with the names of the Docker containers. However, the instantiated containers had empty 'swarm_ws' directories, which prevented subsequent operations. Strangely enough, after a certain test, the terminal suddenly started pointing out problems with the Docker container names.

Missing header files

The following files are missing when compiling the project in docker
#include <swarm_msgs/DistributedPGOData_t.hpp>
#include <swarm_msgs/DPGOData.h>
#include <swarm_msgs/Odometry.h>
#include <swarm_msgs/Landmark.h>

[Help] A dataset download link for China's mainland

Dear Dr. Xu,

Thank you for the excellent work. But since the Internet policy, it is unconnected to Dropbox from China's mainland. Could you provide a dataset download link for China's mainland?

Best regards,
Dapeng

地图可视化

非常感谢你们这么优秀的工作!对个这个项目,如何实时地可视化估计的轨迹和点云地图?

Question about the configuration.

Hello, earlier I consulted about D2SLAM configuration issues. According to your advice, I tried to run it using Dockerfile. However, after trying it on two computers, I found that the problem still exists. The specific error is related to the LibTorch version, and after my testing, I found that the version(https://download.pytorch.org/libtorch/cu113/libtorch-shared-with-deps-1.10.1%2Bcu113.zip )is more suitable.
image
However, when I am running the D2SLAM algorithm with a monocular fisheye camera, the algorithm prompts that it cannot receive the message, and I suspect this is related to the ROS communication method. Therefore, I am looking for relevant debugging and configuration methods. If you have any suggestions or solutions, please feel free to share them. Additionally, I would greatly appreciate it if you could update the Dockerfile for our direct use.

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.