Open HJMGARMIN opened 1 year ago
Hi, I kind of forgot the reason, but I believe it's because the new version of g2o uses smart pointers in its code. I've also implemented it in some of the code. You can find an example here: https://github.com/MarvinChung/Orbeez-SLAM/blob/5298376a0e35ec3bcdb5383b6b4ea71648336c8f/src/Optimizer.cu#L77-L79
Using smart pointers can help prevent memory leaks, especially in optimization processes where you might create numerous new vertices and edges, potentially consuming a significant amount of memory. I can't recall whether the older g2o library would lead to a program crash, but I suspect that this could be the reason behind the issue with ORB-SLAM3 + instant-ngp crashing during the PoseOptimization function.
Thanks for your reply. I will try the new version of g2o later. I have another question about System.cu as follows:
void to_json(nlohmann::json& j, const SLAMCameraKeyFrame& p) {
j = nlohmann::json{{"R", p.R}, {"T", p.T}, {"slice", p.slice}, {"scale", p.scale}, {"fov", p.fov}, {"dof", p.dof}};
}
// Use for Trajectory
void to_json(nlohmann::json& j, const Trajectory& p) {
j = nlohmann::json{{"timestamp", p.timestamp}, {"quat", p.quat}, {"t", p.t}};
}
These code will cause the problem when I use the g2o of ORB-SLAM3:
没有与参数列表匹配的构造函数 "nlohmann::basic_json<ObjectType, ArrayType, StringType, BooleanType, NumberIntegerType, NumberUnsignedType, NumberFloatType, AllocatorType, JSONSerializer, BinaryType>::basic_json [其中 ObjectType=std::map, ArrayType=std::vector, StringType=std::__cxx11::string, BooleanType=bool, NumberIntegerType=int64_t, NumberUnsignedType=uint64_t, NumberFloatType=double, AllocatorType=std::allocator, JSONSerializer=nlohmann::adl_serializer, BinaryType=std::vector<uchar, std::allocator
>]" 实例C/C++(289) System.cu(1284, 23): 参数类型为: ({...}, {...}, {...}, {...}, {...}, {...}) using nlohmann::json = nlohmann::basic_json<> namespace for Niels Lohmann
My project is able to use nlohmann because it is under my Thirdparty (instant-ngp-kf -> dependencies -> tiny_cuda_nn -> dependencies -> json)
You may need to add it to your Thirdparty and modify your CMakeLists.txt.
Hello, thanks for your great work! Now, I want to combine ORB-SLAM3 and instant-ngp. However, the project aborted in the function of PoseOptimization. I found that the g2o library in Orbeez-SLAM is different from original ORB-SLAM2. Why do not you use the g2o library of original ORB-SLAM2? I link the libg2o.so of ORB-SLAM3 in the same way as libDBoW2.go. I think the problem is caused by g2o. But I do not know how to fix it.
Hello, have you successfully combined ORB-SLAM3 and instant-ngp? Thank you very much for your reply.
Hello, thanks for your great work! Now, I want to combine ORB-SLAM3 and instant-ngp. However, the project aborted in the function of PoseOptimization. I found that the g2o library in Orbeez-SLAM is different from original ORB-SLAM2. Why do not you use the g2o library of original ORB-SLAM2? I link the libg2o.so of ORB-SLAM3 in the same way as libDBoW2.go. I think the problem is caused by g2o. But I do not know how to fix it.