mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2025-01-01 12:46:12 +00:00
d/dai: Autodetect OAK-D vs OAK-D Lite
Co-authored-by: Jakob Bornecrantz <jakob@collabora.com>
This commit is contained in:
parent
1abf73dfbe
commit
a5024060eb
|
@ -136,6 +136,7 @@ struct depthai_fs
|
||||||
dai::CameraImageOrientation image_orientation;
|
dai::CameraImageOrientation image_orientation;
|
||||||
uint32_t fps;
|
uint32_t fps;
|
||||||
bool interleaved;
|
bool interleaved;
|
||||||
|
bool oak_d_lite;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -248,15 +249,49 @@ depthai_get_gray_cameras_calibration(struct depthai_fs *depthai, struct t_stereo
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
depthai_print_connected_cameras(struct depthai_fs *depthai)
|
depthai_guess_camera_type(struct depthai_fs *depthai)
|
||||||
{
|
{
|
||||||
|
// We could be a lot more pedantic here, but let's just not.
|
||||||
|
// For now, ov7251 == oak-d lite, and ov9282 == oak-d/oak-d S2/oak-d pro
|
||||||
std::ostringstream oss = {};
|
std::ostringstream oss = {};
|
||||||
for (const auto &cam : depthai->device->getConnectedCameras()) {
|
std::vector<dai::CameraBoardSocket> sockets = depthai->device->getConnectedCameras();
|
||||||
oss << "'" << static_cast<int>(cam) << "' ";
|
std::unordered_map<dai::CameraBoardSocket, std::string> sensornames = depthai->device->getCameraSensorNames();
|
||||||
|
|
||||||
|
bool ov9282 = false;
|
||||||
|
|
||||||
|
bool ov7251 = false;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
for (size_t i = 0; i < sockets.size(); i++) {
|
||||||
|
dai::CameraBoardSocket sock = sockets[i];
|
||||||
|
std::string sensorname = sensornames.at(sock);
|
||||||
|
if (sensorname == "OV9282" || sensorname == "OV9*82") {
|
||||||
|
ov9282 = true;
|
||||||
|
} else if (sensorname == "OV7251") {
|
||||||
|
ov7251 = true;
|
||||||
|
}
|
||||||
|
oss << "'" << static_cast<int>(sock) << "': " << sensorname << ", ";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::string str = oss.str();
|
std::string str = oss.str();
|
||||||
|
|
||||||
DEPTHAI_DEBUG(depthai, "DepthAI: Connected cameras: %s", str.c_str());
|
DEPTHAI_DEBUG(depthai, "DepthAI: Connected cameras: %s", str.c_str());
|
||||||
|
|
||||||
|
if (ov9282 && !ov7251) {
|
||||||
|
// OAK-D
|
||||||
|
DEPTHAI_DEBUG(depthai, "DepthAI: Found an OAK-D!");
|
||||||
|
depthai->oak_d_lite = false;
|
||||||
|
} else if (ov7251 && !ov9282) {
|
||||||
|
// OAK-D Lite
|
||||||
|
DEPTHAI_DEBUG(depthai, "DepthAI: Found and OAK-D Lite!");
|
||||||
|
depthai->oak_d_lite = true;
|
||||||
|
} else {
|
||||||
|
DEPTHAI_WARN(depthai,
|
||||||
|
"DepthAI: Not sure what kind of device this is - going to pretend this is an OAK-D.");
|
||||||
|
depthai->oak_d_lite = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -473,8 +508,13 @@ depthai_setup_monocular_pipeline(struct depthai_fs *depthai, enum depthai_camera
|
||||||
static void
|
static void
|
||||||
depthai_setup_stereo_grayscale_pipeline(struct depthai_fs *depthai)
|
depthai_setup_stereo_grayscale_pipeline(struct depthai_fs *depthai)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// Get the camera calibration
|
||||||
|
struct t_stereo_camera_calibration *calib = NULL;
|
||||||
|
depthai_get_gray_cameras_calibration(depthai, &calib);
|
||||||
|
|
||||||
// Hardcoded to OV_9282 L/R
|
// Hardcoded to OV_9282 L/R
|
||||||
if (true) {
|
if (!depthai->oak_d_lite) {
|
||||||
// OV_9282 L/R
|
// OV_9282 L/R
|
||||||
depthai->width = 1280;
|
depthai->width = 1280;
|
||||||
depthai->height = 800;
|
depthai->height = 800;
|
||||||
|
@ -737,7 +777,7 @@ depthai_create_and_do_minimal_setup(void)
|
||||||
depthai->device = d;
|
depthai->device = d;
|
||||||
|
|
||||||
// Some debug printing.
|
// Some debug printing.
|
||||||
depthai_print_connected_cameras(depthai);
|
depthai_guess_camera_type(depthai);
|
||||||
depthai_print_calib(depthai);
|
depthai_print_calib(depthai);
|
||||||
|
|
||||||
// Make sure that the thread helper is initialised.
|
// Make sure that the thread helper is initialised.
|
||||||
|
|
|
@ -39,6 +39,7 @@ depthai_fs_monocular_rgb(struct xrt_frame_context *xfctx);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Create a DepthAI frameserver using two gray cameras.
|
* Create a DepthAI frameserver using two gray cameras.
|
||||||
|
* Either OAK-D or OAK-D Lite. Custom FFC setups may or may not work.
|
||||||
*
|
*
|
||||||
* @ingroup drv_depthai
|
* @ingroup drv_depthai
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue