Further improvements to DepthAI integration (#1458)

* Reorganize DepthAI params

* Advanced Tuning of DepthAI’s SGBM Pipeline

* Update IMU Local Transform for OAK-D LR, OAK-D SR, and PoE Devices

* Reorganiz the usage of DepthAI. Get params before creating the pipeline, and automatically determine the resolution of different models.

* Identify the IMU type to specifically handle BMI270 and BNO085/086
This commit is contained in:
Borong Yuan
2025-03-08 11:30:11 -08:00
committed by GitHub
parent 4eea83d1af
commit d88353dc1b
4 changed files with 608 additions and 611 deletions
@@ -50,21 +50,20 @@ public:
public:
CameraDepthAI(
const std::string & mxidOrName = "",
int resolution = 1, // 0=720p, 1=800p, 2=400p
float imageRate=0.0f,
int imageWidth = 1280, // 640 or 1280
float imageRate = 0.0f,
const Transform & localTransform = Transform::getIdentity());
virtual ~CameraDepthAI();
void setOutputMode(int outputMode = 0);
void setDepthProfile(int confThreshold = 200, int lrcThreshold = 5);
void setExtendedDisparity(bool extendedDisparity);
void setSubpixelMode(bool enabled, int fractionalBits = 3);
void setCompanding(bool enabled, int width=96);
void setRectification(bool useSpecTranslation, float alphaScaling = 0.0f, bool enabled=true);
void setExtendedDisparity(bool extendedDisparity = false, bool enableCompanding = false);
void setSubpixelMode(bool enabled = false, int fractionalBits = 3);
void setDisparityWidthAndFilter(int disparityWidth = 96, int medianFilter = 5);
void setRectification(bool useSpecTranslation = false, float alphaScaling = 0.0f, bool enabled = true);
void setIMU(bool imuPublished, bool publishInterIMU);
void setIrIntensity(float dotIntensity = 0.0f, float floodIntensity = 0.0f);
void setDetectFeatures(int detectFeatures = 0);
void setBlobPath(const std::string & blobPath);
void setDetectFeatures(int detectFeatures = 0, const std::string & blobPath = "");
void setGFTTDetector(bool useHarrisDetector = false, float minDistance = 7.0f, int numTargetFeatures = 1000);
void setSuperPointDetector(float threshold = 0.01f, bool nms = true, int nmsRadius = 4);
@@ -84,10 +83,12 @@ private:
int outputMode_;
int confThreshold_;
int lrcThreshold_;
int resolution_;
int imageWidth_;
bool extendedDisparity_;
bool enableCompanding_;
int subpixelFractionalBits_;
int compandingWidth_;
int disparityWidth_;
int medianFilter_;
bool useSpecTranslation_;
float alphaScaling_;
bool imagesRectified_;
@@ -103,7 +104,7 @@ private:
bool nms_;
int nmsRadius_;
std::string blobPath_;
std::shared_ptr<dai::Device> device_;
std::unique_ptr<dai::Device> device_;
std::shared_ptr<dai::DataOutputQueue> cameraQueue_;
std::map<double, cv::Vec3f> accBuffer_;
std::map<double, cv::Vec3f> gyroBuffer_;