Skip to content

Commit 699a226

Browse files
authored
Merge pull request #4645 from bfulkers-i/motion-intrinsics
python: add _repr_ for motion_device_intrinsics
2 parents 339b92b + 39c27ca commit 699a226

File tree

1 file changed

+33
-4
lines changed

1 file changed

+33
-4
lines changed

wrappers/python/python.cpp

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,28 @@ std::string array_to_string(const T(&arr)[N])
8787
return oss.str();
8888
}
8989

90+
template <typename T, size_t N, size_t M>
91+
std::string matrix_to_string(const T(&arr)[N][M])
92+
{
93+
std::ostringstream oss;
94+
oss << "[";
95+
for (int i = 0; i < N; i++)
96+
{
97+
if (i != 0)
98+
oss << ", ";
99+
oss << "[";
100+
for (int j = 0; j < M; j++)
101+
{
102+
if (j != 0)
103+
oss << ", ";
104+
oss << arr[i][j];
105+
}
106+
oss << "]";
107+
}
108+
oss << "]";
109+
return oss.str();
110+
}
111+
90112
#define BIND_RAW_ARRAY_GETTER(T, member, valueT, SIZE) [](const T& self) -> const std::array<valueT, SIZE>& { return reinterpret_cast<const std::array<valueT, SIZE>&>(self.member); }
91113
#define BIND_RAW_ARRAY_SETTER(T, member, valueT, SIZE) [](T& self, const std::array<valueT, SIZE>& src) { copy_raw_array(self.member, src); }
92114

@@ -189,11 +211,18 @@ PYBIND11_MODULE(NAME, m) {
189211
return ss.str();
190212
});
191213

192-
py::class_<rs2_motion_device_intrinsic> motion_device_inrinsic(m, "motion_device_intrinsic", "Motion device intrinsics: scale, bias, and variances.");
193-
motion_device_inrinsic.def(py::init<>())
194-
.def_property(BIND_RAW_2D_ARRAY_PROPERTY(rs2_motion_device_intrinsic, data, float, 3, 4), "Interpret data array values")
214+
py::class_<rs2_motion_device_intrinsic> motion_device_intrinsic(m, "motion_device_intrinsic", "Motion device intrinsics: scale, bias, and variances.");
215+
motion_device_intrinsic.def(py::init<>())
216+
.def_property(BIND_RAW_2D_ARRAY_PROPERTY(rs2_motion_device_intrinsic, data, float, 3, 4), "3x4 matrix with 3x3 scale and cross axis and 3x1 biases")
195217
.def_property(BIND_RAW_ARRAY_PROPERTY(rs2_motion_device_intrinsic, noise_variances, float, 3), "Variance of noise for X, Y, and Z axis")
196-
.def_property(BIND_RAW_ARRAY_PROPERTY(rs2_motion_device_intrinsic, bias_variances, float, 3), "Variance of bias for X, Y, and Z axis");
218+
.def_property(BIND_RAW_ARRAY_PROPERTY(rs2_motion_device_intrinsic, bias_variances, float, 3), "Variance of bias for X, Y, and Z axis")
219+
.def("__repr__", [](const rs2_motion_device_intrinsic& self) {
220+
std::stringstream ss;
221+
ss << "data: " << matrix_to_string(self.data) << ", ";
222+
ss << "noise_variances: " << array_to_string(self.noise_variances) << ", ";
223+
ss << "bias_variances: " << array_to_string(self.bias_variances);
224+
return ss.str();
225+
});
197226

198227
/* rs2_types.hpp */
199228
py::class_<rs2::option_range> option_range(m, "option_range"); // No docstring in C++

0 commit comments

Comments
 (0)