Skip to content

Commit b03248d

Browse files
authored
Merge pull request #821 from luxonis/tof_vga
ToF support
2 parents 5004cc7 + d9c7f15 commit b03248d

11 files changed

+301
-36
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ pybind11_add_module(${TARGET_NAME}
127127
src/pipeline/node/AprilTagBindings.cpp
128128
src/pipeline/node/DetectionParserBindings.cpp
129129
src/pipeline/node/WarpBindings.cpp
130+
src/pipeline/node/ToFBindings.cpp
130131

131132
src/pipeline/datatype/ADatatypeBindings.cpp
132133
src/pipeline/datatype/AprilTagConfigBindings.cpp
@@ -135,6 +136,7 @@ pybind11_add_module(${TARGET_NAME}
135136
src/pipeline/datatype/CameraControlBindings.cpp
136137
src/pipeline/datatype/EdgeDetectorConfigBindings.cpp
137138
src/pipeline/datatype/FeatureTrackerConfigBindings.cpp
139+
src/pipeline/datatype/ToFConfigBindings.cpp
138140
src/pipeline/datatype/ImageManipConfigBindings.cpp
139141
src/pipeline/datatype/ImgDetectionsBindings.cpp
140142
src/pipeline/datatype/ImgFrameBindings.cpp

src/DatatypeBindings.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ void bind_spatiallocationcalculatordata(pybind11::module& m, void* pCallstack);
2121
void bind_stereodepthconfig(pybind11::module& m, void* pCallstack);
2222
void bind_systeminformation(pybind11::module& m, void* pCallstack);
2323
void bind_trackedfeatures(pybind11::module& m, void* pCallstack);
24+
void bind_tofconfig(pybind11::module& m, void* pCallstack);
2425
void bind_tracklets(pybind11::module& m, void* pCallstack);
2526

2627
void DatatypeBindings::addToCallstack(std::deque<StackFunction>& callstack) {
@@ -46,6 +47,7 @@ void DatatypeBindings::addToCallstack(std::deque<StackFunction>& callstack) {
4647
callstack.push_front(bind_stereodepthconfig);
4748
callstack.push_front(bind_systeminformation);
4849
callstack.push_front(bind_trackedfeatures);
50+
callstack.push_front(bind_tofconfig);
4951
callstack.push_front(bind_tracklets);
5052
}
5153

src/pipeline/datatype/ImgFrameBindings.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,9 @@ void bind_imgframe(pybind11::module& m, void* pCallstack){
202202
break;
203203

204204
case ImgFrame::Type::RAW16:
205+
case ImgFrame::Type::RAW14:
206+
case ImgFrame::Type::RAW12:
207+
case ImgFrame::Type::RAW10:
205208
shape = {img.getHeight(), img.getWidth()};
206209
dtype = py::dtype::of<uint16_t>();
207210
break;
@@ -303,6 +306,9 @@ void bind_imgframe(pybind11::module& m, void* pCallstack){
303306

304307
case ImgFrame::Type::RAW8:
305308
case ImgFrame::Type::RAW16:
309+
case ImgFrame::Type::RAW14:
310+
case ImgFrame::Type::RAW12:
311+
case ImgFrame::Type::RAW10:
306312
case ImgFrame::Type::GRAY8:
307313
case ImgFrame::Type::GRAYF16:
308314
default:
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#include "DatatypeBindings.hpp"
2+
#include "pipeline/CommonBindings.hpp"
3+
#include <unordered_map>
4+
#include <memory>
5+
6+
// depthai
7+
#include "depthai/pipeline/datatype/ToFConfig.hpp"
8+
9+
//pybind
10+
#include <pybind11/chrono.h>
11+
#include <pybind11/numpy.h>
12+
13+
// #include "spdlog/spdlog.h"
14+
15+
void bind_tofconfig(pybind11::module& m, void* pCallstack){
16+
17+
using namespace dai;
18+
19+
py::class_<RawToFConfig, RawBuffer, std::shared_ptr<RawToFConfig>> rawToFConfig(m, "RawToFConfig", DOC(dai, RawToFConfig));
20+
py::class_<RawToFConfig::DepthParams> depthParams(rawToFConfig, "DepthParams", DOC(dai, RawToFConfig, DepthParams));
21+
py::enum_<RawToFConfig::DepthParams::TypeFMod> depthParamsTypeFMod(depthParams, "TypeFMod", DOC(dai, RawToFConfig, DepthParams, TypeFMod));
22+
py::class_<ToFConfig, Buffer, std::shared_ptr<ToFConfig>> toFConfig(m, "ToFConfig", DOC(dai, ToFConfig));
23+
24+
///////////////////////////////////////////////////////////////////////
25+
///////////////////////////////////////////////////////////////////////
26+
///////////////////////////////////////////////////////////////////////
27+
// Call the rest of the type defines, then perform the actual bindings
28+
Callstack* callstack = (Callstack*) pCallstack;
29+
auto cb = callstack->top();
30+
callstack->pop();
31+
cb(m, pCallstack);
32+
// Actual bindings
33+
///////////////////////////////////////////////////////////////////////
34+
///////////////////////////////////////////////////////////////////////
35+
///////////////////////////////////////////////////////////////////////
36+
37+
// Metadata / raw
38+
rawToFConfig
39+
.def(py::init<>())
40+
.def_readwrite("depthParams", &RawToFConfig::depthParams, DOC(dai, RawToFConfig, depthParams))
41+
;
42+
43+
depthParamsTypeFMod
44+
.value("ALL", RawToFConfig::DepthParams::TypeFMod::F_MOD_ALL)
45+
.value("MIN", RawToFConfig::DepthParams::TypeFMod::F_MOD_MIN)
46+
.value("MAX", RawToFConfig::DepthParams::TypeFMod::F_MOD_MAX)
47+
;
48+
49+
depthParams
50+
.def(py::init<>())
51+
.def_readwrite("enable", &RawToFConfig::DepthParams::enable, DOC(dai, RawToFConfig, DepthParams, enable))
52+
.def_readwrite("freqModUsed", &RawToFConfig::DepthParams::freqModUsed, DOC(dai, RawToFConfig, DepthParams, freqModUsed))
53+
.def_readwrite("avgPhaseShuffle", &RawToFConfig::DepthParams::avgPhaseShuffle, DOC(dai, RawToFConfig, DepthParams, avgPhaseShuffle))
54+
.def_readwrite("minimumAmplitude", &RawToFConfig::DepthParams::minimumAmplitude, DOC(dai, RawToFConfig, DepthParams, minimumAmplitude))
55+
;
56+
57+
// Message
58+
toFConfig
59+
.def(py::init<>())
60+
.def(py::init<std::shared_ptr<RawToFConfig>>())
61+
62+
.def("setDepthParams", static_cast<ToFConfig&(ToFConfig::*)(dai::ToFConfig::DepthParams)>(&ToFConfig::setDepthParams), py::arg("config"), DOC(dai, ToFConfig, setDepthParams))
63+
.def("setFreqModUsed", static_cast<ToFConfig&(ToFConfig::*)(dai::ToFConfig::DepthParams::TypeFMod)>(&ToFConfig::setFreqModUsed), DOC(dai, ToFConfig, setFreqModUsed))
64+
.def("setAvgPhaseShuffle", &ToFConfig::setAvgPhaseShuffle, DOC(dai, ToFConfig, setAvgPhaseShuffle))
65+
.def("setMinAmplitude", &ToFConfig::setMinAmplitude, DOC(dai, ToFConfig, setMinAmplitude))
66+
67+
.def("set", &ToFConfig::set, py::arg("config"), DOC(dai, ToFConfig, set))
68+
.def("get", &ToFConfig::get, DOC(dai, ToFConfig, get))
69+
;
70+
71+
// add aliases
72+
m.attr("ToFConfig").attr("DepthParams") = m.attr("RawToFConfig").attr("DepthParams");
73+
74+
}

src/pipeline/node/CameraBindings.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ void bind_camera(pybind11::module& m, void* pCallstack){
159159
.def("setCalibrationAlpha", &Camera::setCalibrationAlpha, py::arg("alpha"), DOC(dai, node, Camera, setCalibrationAlpha))
160160
.def("getCalibrationAlpha", &Camera::getCalibrationAlpha, DOC(dai, node, Camera, getCalibrationAlpha))
161161

162+
.def("setRawOutputPacked", &Camera::setRawOutputPacked, py::arg("packed"), DOC(dai, node, Camera, setRawOutputPacked))
162163
;
163164
// ALIAS
164165
daiNodeModule.attr("Camera").attr("Properties") = cameraProperties;

src/pipeline/node/ColorCameraBindings.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,8 @@ void bind_colorcamera(pybind11::module& m, void* pCallstack){
188188
.def("getIspNumFramesPool", &ColorCamera::getIspNumFramesPool, DOC(dai, node, ColorCamera, getIspNumFramesPool))
189189
.def("setCamera", &ColorCamera::setCamera, py::arg("name"), DOC(dai, node, ColorCamera, setCamera))
190190
.def("getCamera", &ColorCamera::getCamera, DOC(dai, node, ColorCamera, getCamera))
191+
192+
.def("setRawOutputPacked", &ColorCamera::setRawOutputPacked, py::arg("packed"), DOC(dai, node, ColorCamera, setRawOutputPacked))
191193
;
192194
// ALIAS
193195
daiNodeModule.attr("ColorCamera").attr("Properties") = colorCameraProperties;

src/pipeline/node/MonoCameraBindings.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ void bind_monocamera(pybind11::module& m, void* pCallstack){
9292
.def("getRawNumFramesPool", &MonoCamera::getRawNumFramesPool, DOC(dai, node, MonoCamera, getRawNumFramesPool))
9393
.def("setCamera", &MonoCamera::setCamera, py::arg("name"), DOC(dai, node, MonoCamera, setCamera))
9494
.def("getCamera", &MonoCamera::getCamera, DOC(dai, node, MonoCamera, getCamera))
95+
96+
.def("setRawOutputPacked", &MonoCamera::setRawOutputPacked, py::arg("packed"), DOC(dai, node, MonoCamera, setRawOutputPacked))
9597
;
9698
// ALIAS
9799
daiNodeModule.attr("MonoCamera").attr("Properties") = monoCameraProperties;

src/pipeline/node/NodeBindings.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ void bind_edgedetector(pybind11::module& m, void* pCallstack);
114114
void bind_featuretracker(pybind11::module& m, void* pCallstack);
115115
void bind_apriltag(pybind11::module& m, void* pCallstack);
116116
void bind_detectionparser(pybind11::module& m, void* pCallstack);
117+
void bind_tof(pybind11::module& m, void* pCallstack);
117118

118119
void NodeBindings::addToCallstack(std::deque<StackFunction>& callstack) {
119120
// Bind Node et al
@@ -143,6 +144,7 @@ void NodeBindings::addToCallstack(std::deque<StackFunction>& callstack) {
143144
callstack.push_front(bind_featuretracker);
144145
callstack.push_front(bind_apriltag);
145146
callstack.push_front(bind_detectionparser);
147+
callstack.push_front(bind_tof);
146148
}
147149

148150
void NodeBindings::bind(pybind11::module& m, void* pCallstack){

src/pipeline/node/ToFBindings.cpp

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#include "NodeBindings.hpp"
2+
#include "Common.hpp"
3+
4+
#include "depthai/pipeline/Pipeline.hpp"
5+
#include "depthai/pipeline/Node.hpp"
6+
#include "depthai/pipeline/node/ToF.hpp"
7+
8+
void bind_tof(pybind11::module& m, void* pCallstack){
9+
10+
using namespace dai;
11+
using namespace dai::node;
12+
13+
// Node and Properties declare upfront
14+
py::class_<ToFProperties> tofProperties(m, "ToFProperties", DOC(dai, ToFProperties));
15+
auto tof = ADD_NODE(ToF);
16+
17+
///////////////////////////////////////////////////////////////////////
18+
///////////////////////////////////////////////////////////////////////
19+
///////////////////////////////////////////////////////////////////////
20+
// Call the rest of the type defines, then perform the actual bindings
21+
Callstack* callstack = (Callstack*) pCallstack;
22+
auto cb = callstack->top();
23+
callstack->pop();
24+
cb(m, pCallstack);
25+
// Actual bindings
26+
///////////////////////////////////////////////////////////////////////
27+
///////////////////////////////////////////////////////////////////////
28+
///////////////////////////////////////////////////////////////////////
29+
30+
// Properties
31+
tofProperties
32+
.def_readwrite("initialConfig", &ToFProperties::initialConfig, DOC(dai, ToFProperties, initialConfig))
33+
;
34+
35+
// Node
36+
tof
37+
.def_readonly("inputConfig", &ToF::inputConfig, DOC(dai, node, ToF, inputConfig), DOC(dai, node, ToF, inputConfig))
38+
.def_readonly("input", &ToF::input, DOC(dai, node, ToF, input), DOC(dai, node, ToF, input))
39+
.def_readonly("depth", &ToF::depth, DOC(dai, node, ToF, depth), DOC(dai, node, ToF, depth))
40+
.def_readonly("amplitude", &ToF::amplitude, DOC(dai, node, ToF, amplitude), DOC(dai, node, ToF, amplitude))
41+
.def_readonly("error", &ToF::error, DOC(dai, node, ToF, error), DOC(dai, node, ToF, error))
42+
.def_readonly("initialConfig", &ToF::initialConfig, DOC(dai, node, ToF, initialConfig), DOC(dai, node, ToF, initialConfig))
43+
;
44+
// ALIAS
45+
daiNodeModule.attr("ToF").attr("Properties") = tofProperties;
46+
47+
}

0 commit comments

Comments
 (0)