Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
ec2af88
Added Landmark data type
dragonblade316 Jul 10, 2025
bf974fd
Add landmark input
dragonblade316 Jul 10, 2025
620e95f
Add landmarks.cpp to Cmakelists.txt
dragonblade316 Jul 10, 2025
3cd47e1
added python bindings for landmarks
dragonblade316 Jul 10, 2025
00ba67c
fixed landmark build errors
dragonblade316 Jul 10, 2025
b2fd25c
fixed landmark binding build errors
dragonblade316 Jul 10, 2025
8bc5bab
temp fixes
dragonblade316 Jul 10, 2025
1cc1099
Slight formatting update
dragonblade316 Jul 11, 2025
683ea0c
RTABMap Landmark support compiles
dragonblade316 Jul 11, 2025
2540c37
Added binding to RTABMapSlam::landmarks
dragonblade316 Jul 11, 2025
50a1be2
Added DatatypeEnum::Landmarks to the hiearchy
dragonblade316 Jul 12, 2025
f1f17a3
Fixed landmarks datatype in hirearchy
dragonblade316 Jul 12, 2025
2af9719
Added landmarks datatype to stream message parser
dragonblade316 Jul 12, 2025
13a5bd6
Properly expose landmarks datatype
dragonblade316 Jul 12, 2025
5ca3128
Use correct extrisics matrix for Basalt
viggy96 Jul 3, 2025
8e8a19d
Use Point3d and Quaternion for Landmarks
viggy96 Jul 12, 2025
9548186
Build in debug mode too
Jun 10, 2025
e63f161
Fix libusb name
Jun 13, 2025
27f77dd
Add support for Debug builds
Jun 16, 2025
439047e
Test the Debug builds in CI
Jun 16, 2025
863bab0
Add a debug postfix
Jun 16, 2025
fcb1ad2
Set the OSX_DEPLOYMENT_TARGET sooner
Jun 16, 2025
4c0630e
Add back release only build for VCPKG for performance reasons
Jul 7, 2025
902afab
Release build for docstrings
Jul 8, 2025
341d046
Build shared libraries in release mode
Jul 8, 2025
bf40789
Revert release changes
Jul 8, 2025
4c2ffe8
Update README.md
Jul 8, 2025
0d92300
[RVC2/4 FW] Bump firmware binaries to develop
Jul 9, 2025
c7e16b9
Bump version to v3.0.0-rc.3
Jul 9, 2025
94d1417
Error out in case stub generation fails
Jul 11, 2025
5da4edc
Missed another step (how many of these are there?) and added Landmark…
dragonblade316 Jul 13, 2025
d2bc626
More missing steps for Landmark datatype
viggy96 Jul 13, 2025
5c109ab
Fixed includes
dragonblade316 Jul 15, 2025
082a580
added setUseFeatures method
dragonblade316 Jul 15, 2025
375f55f
Merge branch 'luxonis:develop' into develop
dragonblade316 Jul 15, 2025
868860d
Merge pull request #1 from dragonblade316/slam-landmarks
dragonblade316 Jul 15, 2025
9a8020b
Reorder Landmark datatype in enum
viggy96 Jul 19, 2025
411c110
Added setUseLandmarks(bool) python binding
dragonblade316 Jul 19, 2025
39d85f3
fix input thing
dragonblade316 Jul 19, 2025
d822f24
Fix landmarks typo
viggy96 Jul 19, 2025
b85ac2c
fix input thing (again)
dragonblade316 Jul 19, 2025
84fa73a
added passthrough output binding
dragonblade316 Jul 19, 2025
36b185d
Add landmarks to input map
viggy96 Jul 19, 2025
6d33bcf
Remove docstring file
viggy96 Jul 19, 2025
2721612
Ignore docstrings
viggy96 Jul 19, 2025
8da3a96
Debugging stuff
dragonblade316 Jul 20, 2025
df463e3
Fix landmark covariance
viggy96 Jul 20, 2025
98e2e7a
Remove print
viggy96 Jul 20, 2025
be9f3c2
Remove duplicate binding
viggy96 Jul 21, 2025
b7242bd
Fix features input link on RTABMapSLAM
viggy96 Jul 21, 2025
50b2a36
First try at adding covariance
dragonblade316 Jul 21, 2025
fb68c4f
covariance fixes
dragonblade316 Jul 21, 2025
da49d81
covariance bindings
dragonblade316 Jul 21, 2025
61b2292
Added opencv/Landmarks.cpp to cmake
dragonblade316 Jul 21, 2025
67530fd
rebase issue??
dragonblade316 Jul 21, 2025
aab389e
Add imu link to RTABMapSLAM
viggy96 Jul 22, 2025
025e63e
Tune Basalt config
viggy96 Jul 23, 2025
77d9907
Extra time for Python to build
viggy96 Jul 28, 2025
18ec720
Tighten IMU covariance
viggy96 Jul 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/python-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ jobs:
build-windows-x86_64:
needs: build-docstrings
runs-on: windows-latest
timeout-minutes: 1440 # Set timeout to 24 hours
strategy:
matrix:
python-version: [3.7, 3.8, 3.9, '3.10', '3.11', '3.12', '3.13']
Expand Down Expand Up @@ -336,13 +337,15 @@ jobs:
build-linux-x86_64:
needs: build-docstrings
runs-on: ubuntu-latest
timeout-minutes: 1440 # Set timeout to 24 hours
container:
image: quay.io/pypa/manylinux_2_28_x86_64:2024.12.05-1
env:
PLAT: manylinux_2_28_x86_64
strategy:
matrix:
python-set: ["cp37-cp37m", "cp38-cp38", "cp39-cp39", "cp310-cp310", "cp311-cp311", "cp312-cp312", "cp313-cp313"]
fail-fast: false
env:
DEPTHAI_BUILD_BASALT: ON
DEPTHAI_BUILD_PCL: ON
Expand Down Expand Up @@ -419,6 +422,7 @@ jobs:
strategy:
matrix:
python-set: ["cp37-cp37m", "cp38-cp38", "cp39-cp39", "cp310-cp310", "cp311-cp311", "cp312-cp312", "cp313-cp313"]
fail-fast: false
env:
# workaround required for cache@v3, https://github.com/actions/cache/issues/1428
VCPKG_FORCE_SYSTEM_BINARIES: "1" # Needed so vpckg can bootstrap itself
Expand All @@ -443,7 +447,7 @@ jobs:
with:
submodules: 'recursive'
- name: Installing libusb1-devel dependency
run: yum install -y libusb1-devel perl-core curl zip unzip tar zlib-devel curl-devel libxcb-devel xcb-util-renderutil-devel xcb-util-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-wm-devel mesa-libGL-devel libxkbcommon-devel libxkbcommon-x11-devel libXi-devel libXrandr-devel libXtst-devel libudev-devel lapack-devel nasm libtool autoconf automake libX11-devel pkgconfig
run: yum install -y libusb1-devel perl-core curl zip unzip tar zlib-devel curl-devel libxcb-devel xcb-util-renderutil-devel xcb-util-devel xcb-util-image-devel xcb-util-keysyms-devel xcb-util-wm-devel mesa-libGL-devel libxkbcommon-devel libxkbcommon-x11-devel libXi-devel libXrandr-devel libXtst-devel libudev-devel lapack-devel nasm libtool autoconf automake libX11-devel pkgconfig
- name: Setup ninja required for arm64 builds
run: |
git clone https://github.com/ninja-build/ninja.git
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ build*/*
shared/version.hpp

#pybind11
bindings/python/docstrings/
build/
dist/
_build/
Expand Down
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,7 @@ set(TARGET_CORE_SOURCES
src/pipeline/datatype/SpatialLocationCalculatorConfig.cpp
src/pipeline/datatype/AprilTags.cpp
src/pipeline/datatype/AprilTagConfig.cpp
src/pipeline/datatype/Landmarks.cpp
src/pipeline/datatype/Tracklets.cpp
src/pipeline/datatype/IMUData.cpp
src/pipeline/datatype/StereoDepthConfig.cpp
Expand Down Expand Up @@ -373,6 +374,7 @@ set(TARGET_OPENCV_SOURCES
src/pipeline/node/host/Replay.cpp
src/opencv/RecordReplay.cpp
src/opencv/HolisticRecordReplay.cpp
src/opencv/Landmarks.cpp
)

set(TARGET_PCL_SOURCES src/pcl/PointCloudData.cpp)
Expand Down
1 change: 1 addition & 0 deletions bindings/js/bindings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ EMSCRIPTEN_BINDINGS(depthai_js) {
.value("EdgeDetectorConfig", dai::DatatypeEnum::EdgeDetectorConfig)
.value("AprilTagConfig", dai::DatatypeEnum::AprilTagConfig)
.value("AprilTags", dai::DatatypeEnum::AprilTags)
.value("Landmarks", dai::DatatypeEnum::Landmarks)
.value("Tracklets", dai::DatatypeEnum::Tracklets)
.value("IMUData", dai::DatatypeEnum::IMUData)
.value("StereoDepthConfig", dai::DatatypeEnum::StereoDepthConfig)
Expand Down
1 change: 1 addition & 0 deletions bindings/python/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ set(SOURCE_LIST
src/pipeline/datatype/ADatatypeBindings.cpp
src/pipeline/datatype/AprilTagConfigBindings.cpp
src/pipeline/datatype/AprilTagsBindings.cpp
src/pipeline/datatype/LandmarksBindings.cpp
src/pipeline/datatype/BufferBindings.cpp
src/pipeline/datatype/CameraControlBindings.cpp
src/pipeline/datatype/EdgeDetectorConfigBindings.cpp
Expand Down
3 changes: 3 additions & 0 deletions bindings/python/src/DatatypeBindings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ void bind_benchmarkreport(pybind11::module& m, void* pCallstack);
void bind_pointcloudconfig(pybind11::module& m, void* pCallstack);
void bind_pointclouddata(pybind11::module& m, void* pCallstack);
void bind_transformdata(pybind11::module& m, void* pCallstack);
void bind_landmarks(pybind11::module& m, void* pCallstack);
void bind_rgbddata(pybind11::module& m, void* pCallstack);
void bind_imagealignconfig(pybind11::module& m, void* pCallstack);
void bind_imageannotations(pybind11::module& m, void* pCallstack);
Expand Down Expand Up @@ -68,6 +69,7 @@ void DatatypeBindings::addToCallstack(std::deque<StackFunction>& callstack) {
callstack.push_front(bind_pointcloudconfig);
callstack.push_front(bind_pointclouddata);
callstack.push_front(bind_transformdata);
callstack.push_front(bind_landmarks);
callstack.push_front(bind_imagealignconfig);
callstack.push_front(bind_imageannotations);
callstack.push_front(bind_rgbddata);
Expand Down Expand Up @@ -119,6 +121,7 @@ void DatatypeBindings::bind(pybind11::module& m, void* pCallstack) {
.value("BenchmarkReport", DatatypeEnum::BenchmarkReport)
.value("MessageGroup", DatatypeEnum::MessageGroup)
.value("TransformData", DatatypeEnum::TransformData)
.value("Landmarks", DatatypeEnum::Landmarks)
.value("PointCloudConfig", DatatypeEnum::PointCloudConfig)
.value("PointCloudData", DatatypeEnum::PointCloudData)
.value("ImageAlignConfig", DatatypeEnum::ImageAlignConfig)
Expand Down
54 changes: 54 additions & 0 deletions bindings/python/src/pipeline/datatype/LandmarksBindings.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#include "DatatypeBindings.hpp"
#include "pipeline/CommonBindings.hpp"

// depthai
#include "depthai/pipeline/datatype/Landmarks.hpp"

//pybind
#include <pybind11/chrono.h>
#include <pybind11/numpy.h>



void bind_landmarks(pybind11::module& m, void* pCallstack) {
using namespace dai;

py::class_<Landmark> landmark(m, "Landmark", DOC(dai, Landmark));
py::class_<Landmarks, Py<Landmarks>, Buffer, std::shared_ptr<Landmarks>> landmarks(m, "Landmarks", DOC(dai, Landmarks));

///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
// Call the rest of the type defines, then perform the actual bindings
Callstack* callstack = (Callstack*)pCallstack;
auto cb = callstack->top();
callstack->pop();
cb(m, pCallstack);
// Actual bindings
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////

landmark.def(py::init<>())
.def_readwrite("id", &Landmark::id, DOC(dai, Landmark, id))
.def_readwrite("size", &Landmark::size, DOC(dai, Landmark, size))
.def_readwrite("translation", &Landmark::translation, DOC(dai, Landmark, translation))
.def_readwrite("quaternion", &Landmark::quaternion, DOC(dai, Landmark, quaternion))
.def_readwrite("covariance", &Landmark::covariance, DOC(dai, Landmark, covariance));


// Message
landmarks.def(py::init<>())
.def("__repr__", &Landmarks::str)
.def_property(
"landmarks", [](Landmarks& det) { return &det.landmarks; }, [](Landmarks& det, std::vector<Landmark> val) { det.landmarks = val; })
.def("getTimestamp", &Landmarks::Buffer::getTimestamp, DOC(dai, Buffer, getTimestamp))
.def("getTimestampDevice", &Landmarks::Buffer::getTimestampDevice, DOC(dai, Buffer, getTimestampDevice))
.def("getSequenceNum", &Landmarks::Buffer::getSequenceNum, DOC(dai, Buffer, getSequenceNum))
// .def("setTimestamp", &AprilTags::setTimestamp, DOC(dai, Buffer, setTimestamp))
// .def("setTimestampDevice", &AprilTags::setTimestampDevice, DOC(dai, Buffer, setTimestampDevice))
// .def("setSequenceNum", &AprilTags::setSequenceNum, DOC(dai, Buffer, setSequenceNum))
;


}
12 changes: 10 additions & 2 deletions bindings/python/src/pipeline/node/RTABMapSLAMBindings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,14 @@ void bind_rtabmapslamnode(pybind11::module& m, void* pCallstack) {
"rect", [](RTABMapSLAM& node) { return &node.rect; }, py::return_value_policy::reference_internal)
.def_property_readonly(
"depth", [](RTABMapSLAM& node) { return &node.depth; }, py::return_value_policy::reference_internal)
.def_readonly("features", &RTABMapSLAM::features, DOC(dai, node, RTABMapSLAM, features))
.def_property_readonly(
"features", [](RTABMapSLAM& node) { return &node.features; }, py::return_value_policy::reference_internal)
.def_property_readonly(
"landmarks", [](RTABMapSLAM& node) { return &node.landmarks; }, py::return_value_policy::reference_internal)
// .def_readonly("features", &RTABMapSLAM::features, DOC(dai, node, RTABMapSLAM, features))
// .def_readonly("landmarks", &RTABMapSLAM::landmarks, DOC(dai, node, RTABMapSLAM, landmarks))
.def_readonly("odom", &RTABMapSLAM::odom, DOC(dai, node, RTABMapSLAM, odom))
.def_readonly("imu", &RTABMapSLAM::imu, DOC(dai, node, RTABMapSLAM, imu))
.def_readonly("transform", &RTABMapSLAM::transform, DOC(dai, node, RTABMapSLAM, transform))
.def_readonly("odomCorrection", &RTABMapSLAM::odomCorrection, DOC(dai, node, RTABMapSLAM, odomCorrection))
.def_readonly("obstaclePCL", &RTABMapSLAM::obstaclePCL, DOC(dai, node, RTABMapSLAM, obstaclePCL))
Expand All @@ -42,6 +48,7 @@ void bind_rtabmapslamnode(pybind11::module& m, void* pCallstack) {
.def_readonly("passthroughRect", &RTABMapSLAM::passthroughRect, DOC(dai, node, RTABMapSLAM, passthroughRect))
.def_readonly("passthroughDepth", &RTABMapSLAM::passthroughDepth, DOC(dai, node, RTABMapSLAM, passthroughDepth))
.def_readonly("passthroughFeatures", &RTABMapSLAM::passthroughFeatures, DOC(dai, node, RTABMapSLAM, passthroughFeatures))
.def_readonly("passthroughLandmarks", &RTABMapSLAM::passthroughLandmarks, DOC(dai, node, RTABMapSLAM, passthroughLandmarks))
.def_readonly("passthroughOdom", &RTABMapSLAM::passthroughOdom, DOC(dai, node, RTABMapSLAM, passthroughOdom))
.def("setParams", &RTABMapSLAM::setParams, py::arg("params"), DOC(dai, node, RTABMapSLAM, setParams))
.def("setDatabasePath", &RTABMapSLAM::setDatabasePath, py::arg("path"), DOC(dai, node, RTABMapSLAM, setDatabasePath))
Expand All @@ -57,7 +64,8 @@ void bind_rtabmapslamnode(pybind11::module& m, void* pCallstack) {
.def("setFreq", &RTABMapSLAM::setFreq, py::arg("f"), DOC(dai, node, RTABMapSLAM, setFreq))
.def("setAlphaScaling", &RTABMapSLAM::setAlphaScaling, py::arg("alpha"), DOC(dai, node, RTABMapSLAM, setAlphaScaling))
.def("setUseFeatures", &RTABMapSLAM::setUseFeatures, py::arg("useFeatures"), DOC(dai, node, RTABMapSLAM, setUseFeatures))
.def("setUseLandmarks", &RTABMapSLAM::setUseLandmarks, py::arg("useLandmarks"), DOC(dai, node, RTABMapSLAM, setUseLandmarks))
.def("setLocalTransform", &RTABMapSLAM::setLocalTransform, py::arg("transform"), DOC(dai, node, RTABMapSLAM, setLocalTransform))
.def("getLocalTransform", &RTABMapSLAM::getLocalTransform, DOC(dai, node, RTABMapSLAM, getLocalTransform))
.def("triggerNewMap", &RTABMapSLAM::triggerNewMap, DOC(dai, node, RTABMapSLAM, triggerNewMap));
}
}
3 changes: 2 additions & 1 deletion include/depthai/pipeline/datatype/DatatypeEnum.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,13 @@ enum class DatatypeEnum : std::int32_t {
BenchmarkReport,
MessageGroup,
TransformData,
Landmarks,
PointCloudConfig,
PointCloudData,
RGBDData,
ImageAlignConfig,
ImgAnnotations,
ObjectTrackerConfig
ObjectTrackerConfig,
};
bool isDatatypeSubclassOf(DatatypeEnum parent, DatatypeEnum children);

Expand Down
69 changes: 69 additions & 0 deletions include/depthai/pipeline/datatype/Landmarks.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#pragma once

#include <array>
#include <vector>

#include "depthai/common/Point3d.hpp"
#include "depthai/common/Quaterniond.hpp"
#include "depthai/pipeline/datatype/Buffer.hpp"

// optional
#ifdef DEPTHAI_HAVE_OPENCV_SUPPORT
#include <opencv2/core/mat.hpp>
#include <opencv2/opencv.hpp>
#endif



// #include "utility/Serialization.hpp"

namespace dai {
struct Landmark {
/**
* The ID of the Landmark
*/
int id;

/**
* The size of the landmark in meters
*/
double size;

/**
* The translation of the landmark reletive to base_frame (the camera)
*/
dai::Point3d translation;

/**
* The orientation of the landmark relative to base_frame (the camera)
*/
dai::Quaterniond quaternion;

/**
* The covariance of the landmark. If you do not know what this means, you can probably just fill with 0.01.
*/
std::array<std::array<double, 6>, 6> covariance;

#ifdef DEPTHAI_HAVE_OPENCV_SUPPORT
cv::Mat getCovarianceAsCvMat();
#endif
};

DEPTHAI_SERIALIZE_EXT(Landmark, id, size, translation, quaternion, covariance);

class Landmarks : public Buffer {
public:
Landmarks() = default;
virtual ~Landmarks() = default;

public:
std::vector<Landmark> landmarks;

DEPTHAI_SERIALIZE(Landmarks, Buffer::sequenceNum, Buffer::ts, Buffer::tsDevice, landmarks);
void serialize(std::vector<std::uint8_t>& metadata, DatatypeEnum& datatype) const override {
metadata = utility::serialize(*this);
datatype = DatatypeEnum::Landmarks;
}
};

} // namespace dai
25 changes: 24 additions & 1 deletion include/depthai/rtabmap/RTABMapSLAM.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class RTABMapSLAM : public dai::NodeCRTP<dai::node::ThreadedHostNode, RTABMapSLA
std::string rectInputName = "rect";
std::string depthInputName = "depth";
std::string featuresInputName = "features";
std::string landmarksInputName = "landmarks";

/**
* Input rectified image on which SLAM is performed.
Expand All @@ -46,14 +47,26 @@ class RTABMapSLAM : public dai::NodeCRTP<dai::node::ThreadedHostNode, RTABMapSLA
* Input depth image on which SLAM is performed.
*/
Input& depth = inputs[depthInputName];

Input& landmarks = inputs[landmarksInputName];

Input& features = inputs[featuresInputName];
/**
* Input tracked features on which SLAM is performed (optional).
*/
Input features{*this, {featuresInputName, DEFAULT_GROUP, DEFAULT_BLOCKING, 15, {{{DatatypeEnum::TrackedFeatures, true}}}}};
// Input features{*this, {featuresInputName, DEFAULT_GROUP, DEFAULT_BLOCKING, 15, {{{DatatypeEnum::TrackedFeatures, true}}}}};
/**
* Input odometry pose.
*/
Input odom{*this, {"odom", DEFAULT_GROUP, DEFAULT_BLOCKING, 15, {{{dai::DatatypeEnum::TransformData, true}}}}};
/**
* Input imu
*/
Input imu{*this, {"imu", DEFAULT_GROUP, DEFAULT_BLOCKING, 15, {{DatatypeEnum::IMUData, true}}}};
/**
* Input Landmark poses (optional).
*/
// Input landmarks{*this, {landmarksInputName, DEFAULT_GROUP, DEFAULT_BLOCKING, 15, {{{dai::DatatypeEnum::Landmarks, true}}}}};

/**
* Output transform.
Expand Down Expand Up @@ -88,6 +101,10 @@ class RTABMapSLAM : public dai::NodeCRTP<dai::node::ThreadedHostNode, RTABMapSLA
* Output passthrough features.
*/
Output passthroughFeatures{*this, {"passthroughFeatures", DEFAULT_GROUP, {{{dai::DatatypeEnum::TrackedFeatures, true}}}}};
/**
* Output passthrough landmarks.
*/
Output passthroughLandmarks{*this, {"passthroughLandmarks", DEFAULT_GROUP, {{{dai::DatatypeEnum::Landmarks, true}}}}};
/**
* Output passthrough odometry pose.
*/
Expand Down Expand Up @@ -166,6 +183,11 @@ class RTABMapSLAM : public dai::NodeCRTP<dai::node::ThreadedHostNode, RTABMapSLA
* Whether to use input features for SLAM. False by default.
*/
void setUseFeatures(bool use);
/**
* WhWhether to use input landmarks for SLAM. False by default.
*/
void setUseLandmarks(bool use);

void setLocalTransform(std::shared_ptr<TransformData> transform) {
localTransform = transform->getRTABMapTransform();
}
Expand Down Expand Up @@ -202,6 +224,7 @@ class RTABMapSLAM : public dai::NodeCRTP<dai::node::ThreadedHostNode, RTABMapSLA
rtabmap::SensorData sensorData;
float alphaScaling = -1.0;
bool useFeatures = false;
bool useLandmarks = false;
bool initialized = false;
std::map<std::string, std::string> rtabParams;
std::string databasePath = "";
Expand Down
4 changes: 2 additions & 2 deletions src/basalt/BasaltVIO.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -260,11 +260,11 @@ void BasaltVIO::setDefaultVIOConfig() {
vioConfig.vio_min_triangulation_dist = 0.05;
vioConfig.vio_max_iterations = 7;
vioConfig.vio_enforce_realtime = false;
vioConfig.vio_use_lm = true;
vioConfig.vio_use_lm = false;
vioConfig.vio_lm_lambda_initial = 1e-4;
vioConfig.vio_lm_lambda_min = 1e-6;
vioConfig.vio_lm_lambda_max = 1e2;
vioConfig.vio_scale_jacobian = false;
vioConfig.vio_scale_jacobian = true;
vioConfig.vio_init_pose_weight = 1e8;
vioConfig.vio_init_ba_weight = 1e1;
vioConfig.vio_init_bg_weight = 1e2;
Expand Down
17 changes: 17 additions & 0 deletions src/opencv/Landmarks.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#include "depthai/pipeline/datatype/Landmarks.hpp"
#include "iostream"

namespace dai {
cv::Mat Landmark::getCovarianceAsCvMat() {
//The matrix will always be 6x6 since that is what rtabmap expects.
cv::Mat cvMat(6, 6, CV_64F);

for (int i = 0; i < 6; i++) {
for (int j = 0; j < 6; j++) {
cvMat.at<double>(i, j) = covariance.at(i).at(j);
}
}

return cvMat;
}
}
Loading