diff --git a/python/src/mrpt/math/TPoint2D.cpp b/python/src/mrpt/math/TPoint2D.cpp
index 80c7704f4..d137dc43c 100644
--- a/python/src/mrpt/math/TPoint2D.cpp
+++ b/python/src/mrpt/math/TPoint2D.cpp
@@ -37,7 +37,7 @@ void bind_mrpt_math_TPoint2D(std::function< pybind11::module &(std::string const
 		cl.def( pybind11::init<const struct mrpt::math::TPose3D &>(), pybind11::arg("p") );
 
 		cl.def( pybind11::init( [](mrpt::math::TPoint2D_<double> const &o){ return new mrpt::math::TPoint2D_<double>(o); } ) );
-		cl.def("__getitem__", (double & (mrpt::math::TPoint2D_<double>::*)(size_t)) &mrpt::math::TPoint2D_<double>::operator[], "C++: mrpt::math::TPoint2D_<double>::operator[](size_t) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::math::TPoint2D_<double>::*)(size_t)) &mrpt::math::TPoint2D_<double>::operator[], "C++: mrpt::math::TPoint2D_<double>::operator[](size_t) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("__iadd__", (struct mrpt::math::TPoint2D_<double> & (mrpt::math::TPoint2D_<double>::*)(const struct mrpt::math::TPoint2D_<double> &)) &mrpt::math::TPoint2D_<double>::operator+=, "C++: mrpt::math::TPoint2D_<double>::operator+=(const struct mrpt::math::TPoint2D_<double> &) --> struct mrpt::math::TPoint2D_<double> &", pybind11::return_value_policy::automatic, pybind11::arg("p"));
 		cl.def("__isub__", (struct mrpt::math::TPoint2D_<double> & (mrpt::math::TPoint2D_<double>::*)(const struct mrpt::math::TPoint2D_<double> &)) &mrpt::math::TPoint2D_<double>::operator-=, "C++: mrpt::math::TPoint2D_<double>::operator-=(const struct mrpt::math::TPoint2D_<double> &) --> struct mrpt::math::TPoint2D_<double> &", pybind11::return_value_policy::automatic, pybind11::arg("p"));
 		cl.def("__imul__", (struct mrpt::math::TPoint2D_<double> & (mrpt::math::TPoint2D_<double>::*)(double)) &mrpt::math::TPoint2D_<double>::operator*=, "C++: mrpt::math::TPoint2D_<double>::operator*=(double) --> struct mrpt::math::TPoint2D_<double> &", pybind11::return_value_policy::automatic, pybind11::arg("d"));
@@ -71,7 +71,7 @@ void bind_mrpt_math_TPoint2D(std::function< pybind11::module &(std::string const
 		cl.def( pybind11::init<const struct mrpt::math::TPose3D &>(), pybind11::arg("p") );
 
 		cl.def( pybind11::init( [](mrpt::math::TPoint2D_<float> const &o){ return new mrpt::math::TPoint2D_<float>(o); } ) );
-		cl.def("__getitem__", (float & (mrpt::math::TPoint2D_<float>::*)(size_t)) &mrpt::math::TPoint2D_<float>::operator[], "C++: mrpt::math::TPoint2D_<float>::operator[](size_t) --> float &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (float & (mrpt::math::TPoint2D_<float>::*)(size_t)) &mrpt::math::TPoint2D_<float>::operator[], "C++: mrpt::math::TPoint2D_<float>::operator[](size_t) --> float &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("__iadd__", (struct mrpt::math::TPoint2D_<float> & (mrpt::math::TPoint2D_<float>::*)(const struct mrpt::math::TPoint2D_<float> &)) &mrpt::math::TPoint2D_<float>::operator+=, "C++: mrpt::math::TPoint2D_<float>::operator+=(const struct mrpt::math::TPoint2D_<float> &) --> struct mrpt::math::TPoint2D_<float> &", pybind11::return_value_policy::automatic, pybind11::arg("p"));
 		cl.def("__isub__", (struct mrpt::math::TPoint2D_<float> & (mrpt::math::TPoint2D_<float>::*)(const struct mrpt::math::TPoint2D_<float> &)) &mrpt::math::TPoint2D_<float>::operator-=, "C++: mrpt::math::TPoint2D_<float>::operator-=(const struct mrpt::math::TPoint2D_<float> &) --> struct mrpt::math::TPoint2D_<float> &", pybind11::return_value_policy::automatic, pybind11::arg("p"));
 		cl.def("__imul__", (struct mrpt::math::TPoint2D_<float> & (mrpt::math::TPoint2D_<float>::*)(float)) &mrpt::math::TPoint2D_<float>::operator*=, "C++: mrpt::math::TPoint2D_<float>::operator*=(float) --> struct mrpt::math::TPoint2D_<float> &", pybind11::return_value_policy::automatic, pybind11::arg("d"));
@@ -106,7 +106,7 @@ void bind_mrpt_math_TPoint2D(std::function< pybind11::module &(std::string const
 
 		cl.def( pybind11::init( [](mrpt::math::TPoint3D_<double> const &o){ return new mrpt::math::TPoint3D_<double>(o); } ) );
 		cl.def("cast", (struct mrpt::math::TPoint3D_<float> (mrpt::math::TPoint3D_<double>::*)() const) &mrpt::math::TPoint3D_<double>::cast<float>, "C++: mrpt::math::TPoint3D_<double>::cast() const --> struct mrpt::math::TPoint3D_<float>");
-		cl.def("__getitem__", (double & (mrpt::math::TPoint3D_<double>::*)(size_t)) &mrpt::math::TPoint3D_<double>::operator[], "C++: mrpt::math::TPoint3D_<double>::operator[](size_t) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::math::TPoint3D_<double>::*)(size_t)) &mrpt::math::TPoint3D_<double>::operator[], "C++: mrpt::math::TPoint3D_<double>::operator[](size_t) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("distanceTo", (double (mrpt::math::TPoint3D_<double>::*)(const struct mrpt::math::TPoint3D_<double> &) const) &mrpt::math::TPoint3D_<double>::distanceTo, "C++: mrpt::math::TPoint3D_<double>::distanceTo(const struct mrpt::math::TPoint3D_<double> &) const --> double", pybind11::arg("p"));
 		cl.def("sqrDistanceTo", (double (mrpt::math::TPoint3D_<double>::*)(const struct mrpt::math::TPoint3D_<double> &) const) &mrpt::math::TPoint3D_<double>::sqrDistanceTo, "C++: mrpt::math::TPoint3D_<double>::sqrDistanceTo(const struct mrpt::math::TPoint3D_<double> &) const --> double", pybind11::arg("p"));
 		cl.def("sqrNorm", (double (mrpt::math::TPoint3D_<double>::*)() const) &mrpt::math::TPoint3D_<double>::sqrNorm, "C++: mrpt::math::TPoint3D_<double>::sqrNorm() const --> double");
diff --git a/python/src/mrpt/math/TPoint3D_1.cpp b/python/src/mrpt/math/TPoint3D_1.cpp
index 56de0f82f..d1349ee97 100644
--- a/python/src/mrpt/math/TPoint3D_1.cpp
+++ b/python/src/mrpt/math/TPoint3D_1.cpp
@@ -39,7 +39,7 @@ void bind_mrpt_math_TPoint3D_1(std::function< pybind11::module &(std::string con
 		cl.def( pybind11::init<const struct mrpt::math::TPose3D &>(), pybind11::arg("p") );
 
 		cl.def( pybind11::init( [](mrpt::math::TPoint3D_<float> const &o){ return new mrpt::math::TPoint3D_<float>(o); } ) );
-		cl.def("__getitem__", (float & (mrpt::math::TPoint3D_<float>::*)(size_t)) &mrpt::math::TPoint3D_<float>::operator[], "C++: mrpt::math::TPoint3D_<float>::operator[](size_t) --> float &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (float & (mrpt::math::TPoint3D_<float>::*)(size_t)) &mrpt::math::TPoint3D_<float>::operator[], "C++: mrpt::math::TPoint3D_<float>::operator[](size_t) --> float &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("distanceTo", (float (mrpt::math::TPoint3D_<float>::*)(const struct mrpt::math::TPoint3D_<float> &) const) &mrpt::math::TPoint3D_<float>::distanceTo, "C++: mrpt::math::TPoint3D_<float>::distanceTo(const struct mrpt::math::TPoint3D_<float> &) const --> float", pybind11::arg("p"));
 		cl.def("sqrDistanceTo", (float (mrpt::math::TPoint3D_<float>::*)(const struct mrpt::math::TPoint3D_<float> &) const) &mrpt::math::TPoint3D_<float>::sqrDistanceTo, "C++: mrpt::math::TPoint3D_<float>::sqrDistanceTo(const struct mrpt::math::TPoint3D_<float> &) const --> float", pybind11::arg("p"));
 		cl.def("sqrNorm", (float (mrpt::math::TPoint3D_<float>::*)() const) &mrpt::math::TPoint3D_<float>::sqrNorm, "C++: mrpt::math::TPoint3D_<float>::sqrNorm() const --> float");
@@ -103,9 +103,9 @@ void bind_mrpt_math_TPoint3D_1(std::function< pybind11::module &(std::string con
 		cl.def("rows", (int (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)() const) &mrpt::math::CMatrixFixed<double, 4, 1>::rows, "C++: mrpt::math::CMatrixFixed<double, 4, 1>::rows() const --> int");
 		cl.def("cols", (int (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)() const) &mrpt::math::CMatrixFixed<double, 4, 1>::cols, "C++: mrpt::math::CMatrixFixed<double, 4, 1>::cols() const --> int");
 		cl.def("data", (double * (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)()) &mrpt::math::CMatrixFixed<double, 4, 1>::data, "C++: mrpt::math::CMatrixFixed<double, 4, 1>::data() --> double *", pybind11::return_value_policy::automatic);
-		cl.def("__call__", (double & (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)(int, int)) &mrpt::math::CMatrixFixed<double, 4, 1>::operator(), "C++: mrpt::math::CMatrixFixed<double, 4, 1>::operator()(int, int) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("row"), pybind11::arg("col"));
-		cl.def("__call__", (double & (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)(int)) &mrpt::math::CMatrixFixed<double, 4, 1>::operator(), "C++: mrpt::math::CMatrixFixed<double, 4, 1>::operator()(int) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
-		cl.def("__getitem__", (double & (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)(int)) &mrpt::math::CMatrixFixed<double, 4, 1>::operator[], "C++: mrpt::math::CMatrixFixed<double, 4, 1>::operator[](int) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__call__", (double & (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)(int, int)) &mrpt::math::CMatrixFixed<double, 4, 1>::operator(), "C++: mrpt::math::CMatrixFixed<double, 4, 1>::operator()(int, int) --> double &", pybind11::return_value_policy::reference, pybind11::arg("row"), pybind11::arg("col"));
+		cl.def("__call__", (double & (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)(int)) &mrpt::math::CMatrixFixed<double, 4, 1>::operator(), "C++: mrpt::math::CMatrixFixed<double, 4, 1>::operator()(int) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)(int)) &mrpt::math::CMatrixFixed<double, 4, 1>::operator[], "C++: mrpt::math::CMatrixFixed<double, 4, 1>::operator[](int) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("cast_float", (class mrpt::math::CMatrixFixed<float, 4, 1> (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)() const) &mrpt::math::CMatrixFixed<double, 4, 1>::cast_float, "C++: mrpt::math::CMatrixFixed<double, 4, 1>::cast_float() const --> class mrpt::math::CMatrixFixed<float, 4, 1>");
 		cl.def("sum_At", (void (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)(const class mrpt::math::CMatrixFixed<double, 4, 1> &)) &mrpt::math::CMatrixFixed<double, 4, 1>::sum_At, "C++: mrpt::math::CMatrixFixed<double, 4, 1>::sum_At(const class mrpt::math::CMatrixFixed<double, 4, 1> &) --> void", pybind11::arg("A"));
 		cl.def("assign", (class mrpt::math::CMatrixFixed<double, 4, 1> & (mrpt::math::CMatrixFixed<double,4UL,1UL>::*)(const class mrpt::math::CMatrixFixed<double, 4, 1> &)) &mrpt::math::CMatrixFixed<double, 4, 1>::operator=, "C++: mrpt::math::CMatrixFixed<double, 4, 1>::operator=(const class mrpt::math::CMatrixFixed<double, 4, 1> &) --> class mrpt::math::CMatrixFixed<double, 4, 1> &", pybind11::return_value_policy::automatic, pybind11::arg(""));
diff --git a/python/src/mrpt/math/TPose2D.cpp b/python/src/mrpt/math/TPose2D.cpp
index 5f646bcc1..c19e8495d 100644
--- a/python/src/mrpt/math/TPose2D.cpp
+++ b/python/src/mrpt/math/TPose2D.cpp
@@ -41,7 +41,7 @@ void bind_mrpt_math_TPose2D(std::function< pybind11::module &(std::string const
 		cl.def_readwrite("y", &mrpt::math::TPose2D::y);
 		cl.def_readwrite("phi", &mrpt::math::TPose2D::phi);
 		cl.def_static("Identity", (struct mrpt::math::TPose2D (*)()) &mrpt::math::TPose2D::Identity, "Returns the identity transformation \n\nC++: mrpt::math::TPose2D::Identity() --> struct mrpt::math::TPose2D");
-		cl.def("__getitem__", (double & (mrpt::math::TPose2D::*)(size_t)) &mrpt::math::TPose2D::operator[], "Coordinate access using operator[]. Order: x,y,phi \n\nC++: mrpt::math::TPose2D::operator[](size_t) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::math::TPose2D::*)(size_t)) &mrpt::math::TPose2D::operator[], "Coordinate access using operator[]. Order: x,y,phi \n\nC++: mrpt::math::TPose2D::operator[](size_t) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("asString", (void (mrpt::math::TPose2D::*)(std::string &) const) &mrpt::math::TPose2D::asString, "Returns a human-readable textual representation of the object (eg: \"[x y\n yaw]\", yaw in degrees)\n \n\n fromString\n\nC++: mrpt::math::TPose2D::asString(std::string &) const --> void", pybind11::arg("s"));
 		cl.def("asString", (std::string (mrpt::math::TPose2D::*)() const) &mrpt::math::TPose2D::asString, "C++: mrpt::math::TPose2D::asString() const --> std::string");
 		cl.def("__add__", (struct mrpt::math::TPose2D (mrpt::math::TPose2D::*)(const struct mrpt::math::TPose2D &) const) &mrpt::math::TPose2D::operator+, "Operator \"oplus\" pose composition: \"ret=this \\oplus b\"  \n CPose2D \n\nC++: mrpt::math::TPose2D::operator+(const struct mrpt::math::TPose2D &) const --> struct mrpt::math::TPose2D", pybind11::arg("b"));
diff --git a/python/src/mrpt/math/TPose3DQuat.cpp b/python/src/mrpt/math/TPose3DQuat.cpp
index 7c7f381bb..eecb99047 100644
--- a/python/src/mrpt/math/TPose3DQuat.cpp
+++ b/python/src/mrpt/math/TPose3DQuat.cpp
@@ -33,7 +33,7 @@ void bind_mrpt_math_TPose3DQuat(std::function< pybind11::module &(std::string co
 		cl.def_readwrite("qx", &mrpt::math::TPose3DQuat::qx);
 		cl.def_readwrite("qy", &mrpt::math::TPose3DQuat::qy);
 		cl.def_readwrite("qz", &mrpt::math::TPose3DQuat::qz);
-		cl.def("__getitem__", (double & (mrpt::math::TPose3DQuat::*)(size_t)) &mrpt::math::TPose3DQuat::operator[], "Coordinate access using operator[]. Order: x,y,z,qr,qx,qy,qz \n\nC++: mrpt::math::TPose3DQuat::operator[](size_t) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::math::TPose3DQuat::*)(size_t)) &mrpt::math::TPose3DQuat::operator[], "Coordinate access using operator[]. Order: x,y,z,qr,qx,qy,qz \n\nC++: mrpt::math::TPose3DQuat::operator[](size_t) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("norm", (double (mrpt::math::TPose3DQuat::*)() const) &mrpt::math::TPose3DQuat::norm, "Pose's spatial coordinates (x,y,z) norm. \n\nC++: mrpt::math::TPose3DQuat::norm() const --> double");
 		cl.def("asString", (void (mrpt::math::TPose3DQuat::*)(std::string &) const) &mrpt::math::TPose3DQuat::asString, "Returns a human-readable textual representation of the object as \"[x y z\n qr qx qy qz]\"\n \n\n fromString\n\nC++: mrpt::math::TPose3DQuat::asString(std::string &) const --> void", pybind11::arg("s"));
 		cl.def("asString", (std::string (mrpt::math::TPose3DQuat::*)() const) &mrpt::math::TPose3DQuat::asString, "C++: mrpt::math::TPose3DQuat::asString() const --> std::string");
diff --git a/python/src/mrpt/math/TTwist2D.cpp b/python/src/mrpt/math/TTwist2D.cpp
index d6ce25687..f17212aaf 100644
--- a/python/src/mrpt/math/TTwist2D.cpp
+++ b/python/src/mrpt/math/TTwist2D.cpp
@@ -32,7 +32,7 @@ void bind_mrpt_math_TTwist2D(std::function< pybind11::module &(std::string const
 		cl.def_readwrite("vx", &mrpt::math::TTwist2D::vx);
 		cl.def_readwrite("vy", &mrpt::math::TTwist2D::vy);
 		cl.def_readwrite("omega", &mrpt::math::TTwist2D::omega);
-		cl.def("__getitem__", (double & (mrpt::math::TTwist2D::*)(size_t)) &mrpt::math::TTwist2D::operator[], "Coordinate access using operator[]. Order: vx,vy,vphi \n\nC++: mrpt::math::TTwist2D::operator[](size_t) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::math::TTwist2D::*)(size_t)) &mrpt::math::TTwist2D::operator[], "Coordinate access using operator[]. Order: vx,vy,vphi \n\nC++: mrpt::math::TTwist2D::operator[](size_t) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("rotate", (void (mrpt::math::TTwist2D::*)(const double)) &mrpt::math::TTwist2D::rotate, "Transform the (vx,vy) components for a counterclockwise rotation of\n `ang` radians. \n\nC++: mrpt::math::TTwist2D::rotate(const double) --> void", pybind11::arg("ang"));
 		cl.def("rotated", (struct mrpt::math::TTwist2D (mrpt::math::TTwist2D::*)(const double) const) &mrpt::math::TTwist2D::rotated, "Like rotate(), but returning a copy of the rotated twist.\n  \n\n New in MRPT 2.3.2 \n\nC++: mrpt::math::TTwist2D::rotated(const double) const --> struct mrpt::math::TTwist2D", pybind11::arg("ang"));
 		cl.def("__eq__", (bool (mrpt::math::TTwist2D::*)(const struct mrpt::math::TTwist2D &) const) &mrpt::math::TTwist2D::operator==, "C++: mrpt::math::TTwist2D::operator==(const struct mrpt::math::TTwist2D &) const --> bool", pybind11::arg("o"));
diff --git a/python/src/mrpt/math/TTwist3D.cpp b/python/src/mrpt/math/TTwist3D.cpp
index 9d00d4fc3..174b12b14 100644
--- a/python/src/mrpt/math/TTwist3D.cpp
+++ b/python/src/mrpt/math/TTwist3D.cpp
@@ -38,8 +38,8 @@ void bind_mrpt_math_TTwist3D(std::function< pybind11::module &(std::string const
 		cl.def_readwrite("wx", &mrpt::math::TTwist3D::wx);
 		cl.def_readwrite("wy", &mrpt::math::TTwist3D::wy);
 		cl.def_readwrite("wz", &mrpt::math::TTwist3D::wz);
-		cl.def("__getitem__", (double & (mrpt::math::TTwist3D::*)(size_t)) &mrpt::math::TTwist3D::operator[], "Coordinate access using operator[]. Order: vx,vy,vz, wx, wy, wz \n\nC++: mrpt::math::TTwist3D::operator[](size_t) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
-		cl.def("__call__", (double & (mrpt::math::TTwist3D::*)(int, int)) &mrpt::math::TTwist3D::operator(), "(i,0) access operator (provided for API compatibility with matrices).\n \n\n operator[] \n\nC++: mrpt::math::TTwist3D::operator()(int, int) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("row"), pybind11::arg("col"));
+		cl.def("__getitem__", (double & (mrpt::math::TTwist3D::*)(size_t)) &mrpt::math::TTwist3D::operator[], "Coordinate access using operator[]. Order: vx,vy,vz, wx, wy, wz \n\nC++: mrpt::math::TTwist3D::operator[](size_t) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
+		cl.def("__call__", (double & (mrpt::math::TTwist3D::*)(int, int)) &mrpt::math::TTwist3D::operator(), "(i,0) access operator (provided for API compatibility with matrices).\n \n\n operator[] \n\nC++: mrpt::math::TTwist3D::operator()(int, int) --> double &", pybind11::return_value_policy::reference, pybind11::arg("row"), pybind11::arg("col"));
 		cl.def("__imul__", (void (mrpt::math::TTwist3D::*)(const double)) &mrpt::math::TTwist3D::operator*=, "Scale factor \n\nC++: mrpt::math::TTwist3D::operator*=(const double) --> void", pybind11::arg("k"));
 		cl.def("__eq__", (bool (mrpt::math::TTwist3D::*)(const struct mrpt::math::TTwist3D &) const) &mrpt::math::TTwist3D::operator==, "C++: mrpt::math::TTwist3D::operator==(const struct mrpt::math::TTwist3D &) const --> bool", pybind11::arg("o"));
 		cl.def("__ne__", (bool (mrpt::math::TTwist3D::*)(const struct mrpt::math::TTwist3D &) const) &mrpt::math::TTwist3D::operator!=, "C++: mrpt::math::TTwist3D::operator!=(const struct mrpt::math::TTwist3D &) const --> bool", pybind11::arg("o"));
diff --git a/python/src/mrpt/math/wrap2pi.cpp b/python/src/mrpt/math/wrap2pi.cpp
index 50524dca2..5628504b1 100644
--- a/python/src/mrpt/math/wrap2pi.cpp
+++ b/python/src/mrpt/math/wrap2pi.cpp
@@ -63,7 +63,7 @@ void bind_mrpt_math_wrap2pi(std::function< pybind11::module &(std::string const
 		cl.def_readwrite("roll", &mrpt::math::TPose3D::roll);
 		cl.def_static("Identity", (struct mrpt::math::TPose3D (*)()) &mrpt::math::TPose3D::Identity, "Returns the identity transformation, T=eye(4) \n\nC++: mrpt::math::TPose3D::Identity() --> struct mrpt::math::TPose3D");
 		cl.def_static("FromString", (struct mrpt::math::TPose3D (*)(const std::string &)) &mrpt::math::TPose3D::FromString, "See fromString() for a description of the expected string format. \n\nC++: mrpt::math::TPose3D::FromString(const std::string &) --> struct mrpt::math::TPose3D", pybind11::arg("s"));
-		cl.def("__getitem__", (double & (mrpt::math::TPose3D::*)(size_t)) &mrpt::math::TPose3D::operator[], "Coordinate access using operator[]. Order: x,y,z,yaw,pitch,roll \n\nC++: mrpt::math::TPose3D::operator[](size_t) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::math::TPose3D::*)(size_t)) &mrpt::math::TPose3D::operator[], "Coordinate access using operator[]. Order: x,y,z,yaw,pitch,roll \n\nC++: mrpt::math::TPose3D::operator[](size_t) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("translation", (struct mrpt::math::TPoint3D_<double> (mrpt::math::TPose3D::*)() const) &mrpt::math::TPose3D::translation, "Returns the (x,y,z) translational part of the SE(3) transformation. \n\nC++: mrpt::math::TPose3D::translation() const --> struct mrpt::math::TPoint3D_<double>");
 		cl.def("norm", (double (mrpt::math::TPose3D::*)() const) &mrpt::math::TPose3D::norm, "Pose's spatial coordinates norm.\n\nC++: mrpt::math::TPose3D::norm() const --> double");
 		cl.def("asString", (void (mrpt::math::TPose3D::*)(std::string &) const) &mrpt::math::TPose3D::asString, "Returns a human-readable textual representation of the object (eg: \"[x y\n z yaw pitch roll]\", angles in degrees.)\n \n\n fromString\n\nC++: mrpt::math::TPose3D::asString(std::string &) const --> void", pybind11::arg("s"));
diff --git a/python/src/mrpt/obs/CObservation2DRangeScan.cpp b/python/src/mrpt/obs/CObservation2DRangeScan.cpp
index 504ee1f42..897f7d819 100644
--- a/python/src/mrpt/obs/CObservation2DRangeScan.cpp
+++ b/python/src/mrpt/obs/CObservation2DRangeScan.cpp
@@ -263,7 +263,7 @@ void bind_mrpt_obs_CObservation2DRangeScan(std::function< pybind11::module &(std
 		cl.def("resizeScanAndAssign", [](mrpt::obs::CObservation2DRangeScan &o, size_t const & a0, const float & a1, const bool & a2) -> void { return o.resizeScanAndAssign(a0, a1, a2); }, "", pybind11::arg("len"), pybind11::arg("rangeVal"), pybind11::arg("rangeValidity"));
 		cl.def("resizeScanAndAssign", (void (mrpt::obs::CObservation2DRangeScan::*)(size_t, const float, const bool, const int)) &mrpt::obs::CObservation2DRangeScan::resizeScanAndAssign, "Resizes all data vectors to allocate a given number of scan rays and\n assign default values. \n\nC++: mrpt::obs::CObservation2DRangeScan::resizeScanAndAssign(size_t, const float, const bool, const int) --> void", pybind11::arg("len"), pybind11::arg("rangeVal"), pybind11::arg("rangeValidity"), pybind11::arg("rangeIntensity"));
 		cl.def("getScanSize", (size_t (mrpt::obs::CObservation2DRangeScan::*)() const) &mrpt::obs::CObservation2DRangeScan::getScanSize, "Get number of scan rays \n\nC++: mrpt::obs::CObservation2DRangeScan::getScanSize() const --> size_t");
-		cl.def("getScanRange", (float & (mrpt::obs::CObservation2DRangeScan::*)(size_t)) &mrpt::obs::CObservation2DRangeScan::getScanRange, "C++: mrpt::obs::CObservation2DRangeScan::getScanRange(size_t) --> float &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("getScanRange", (float & (mrpt::obs::CObservation2DRangeScan::*)(size_t)) &mrpt::obs::CObservation2DRangeScan::getScanRange, "C++: mrpt::obs::CObservation2DRangeScan::getScanRange(size_t) --> float &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("setScanRange", (void (mrpt::obs::CObservation2DRangeScan::*)(size_t, const float)) &mrpt::obs::CObservation2DRangeScan::setScanRange, "C++: mrpt::obs::CObservation2DRangeScan::setScanRange(size_t, const float) --> void", pybind11::arg("i"), pybind11::arg("val"));
 		cl.def("getScanIntensity", (int & (mrpt::obs::CObservation2DRangeScan::*)(size_t)) &mrpt::obs::CObservation2DRangeScan::getScanIntensity, "C++: mrpt::obs::CObservation2DRangeScan::getScanIntensity(size_t) --> int &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
 		cl.def("setScanIntensity", (void (mrpt::obs::CObservation2DRangeScan::*)(size_t, const int)) &mrpt::obs::CObservation2DRangeScan::setScanIntensity, "C++: mrpt::obs::CObservation2DRangeScan::setScanIntensity(size_t, const int) --> void", pybind11::arg("i"), pybind11::arg("val"));
diff --git a/python/src/mrpt/opengl/TTriangle.cpp b/python/src/mrpt/opengl/TTriangle.cpp
index 61e842a30..157bb222a 100644
--- a/python/src/mrpt/opengl/TTriangle.cpp
+++ b/python/src/mrpt/opengl/TTriangle.cpp
@@ -307,15 +307,15 @@ void bind_mrpt_opengl_TTriangle(std::function< pybind11::module &(std::string co
 
 		cl.def( pybind11::init( [](mrpt::opengl::TTriangle const &o){ return new mrpt::opengl::TTriangle(o); } ) );
 		cl.def_readwrite("vertices", &mrpt::opengl::TTriangle::vertices);
-		cl.def("x", (float & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::x, "C++: mrpt::opengl::TTriangle::x(size_t) --> float &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
-		cl.def("y", (float & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::y, "C++: mrpt::opengl::TTriangle::y(size_t) --> float &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
-		cl.def("z", (float & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::z, "C++: mrpt::opengl::TTriangle::z(size_t) --> float &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("x", (float & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::x, "C++: mrpt::opengl::TTriangle::x(size_t) --> float &", pybind11::return_value_policy::reference, pybind11::arg("i"));
+		cl.def("y", (float & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::y, "C++: mrpt::opengl::TTriangle::y(size_t) --> float &", pybind11::return_value_policy::reference, pybind11::arg("i"));
+		cl.def("z", (float & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::z, "C++: mrpt::opengl::TTriangle::z(size_t) --> float &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("r", (unsigned char & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::r, "C++: mrpt::opengl::TTriangle::r(size_t) --> unsigned char &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
 		cl.def("g", (unsigned char & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::g, "C++: mrpt::opengl::TTriangle::g(size_t) --> unsigned char &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
 		cl.def("b", (unsigned char & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::b, "C++: mrpt::opengl::TTriangle::b(size_t) --> unsigned char &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
 		cl.def("a", (unsigned char & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::a, "C++: mrpt::opengl::TTriangle::a(size_t) --> unsigned char &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
-		cl.def("u", (float & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::u, "C++: mrpt::opengl::TTriangle::u(size_t) --> float &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
-		cl.def("v", (float & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::v, "C++: mrpt::opengl::TTriangle::v(size_t) --> float &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("u", (float & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::u, "C++: mrpt::opengl::TTriangle::u(size_t) --> float &", pybind11::return_value_policy::reference, pybind11::arg("i"));
+		cl.def("v", (float & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::v, "C++: mrpt::opengl::TTriangle::v(size_t) --> float &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("vertex", (struct mrpt::math::TPoint3D_<float> & (mrpt::opengl::TTriangle::*)(size_t)) &mrpt::opengl::TTriangle::vertex, "C++: mrpt::opengl::TTriangle::vertex(size_t) --> struct mrpt::math::TPoint3D_<float> &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
 		cl.def("setColor", (void (mrpt::opengl::TTriangle::*)(const struct mrpt::img::TColor &)) &mrpt::opengl::TTriangle::setColor, "Sets the color of all vertices \n\nC++: mrpt::opengl::TTriangle::setColor(const struct mrpt::img::TColor &) --> void", pybind11::arg("c"));
 		cl.def("setColor", (void (mrpt::opengl::TTriangle::*)(const struct mrpt::img::TColorf &)) &mrpt::opengl::TTriangle::setColor, "C++: mrpt::opengl::TTriangle::setColor(const struct mrpt::img::TColorf &) --> void", pybind11::arg("c"));
diff --git a/python/src/mrpt/poses/CPoint.cpp b/python/src/mrpt/poses/CPoint.cpp
index bea27be77..0648de184 100644
--- a/python/src/mrpt/poses/CPoint.cpp
+++ b/python/src/mrpt/poses/CPoint.cpp
@@ -213,7 +213,7 @@ void bind_mrpt_poses_CPoint(std::function< pybind11::module &(std::string const
 		cl.def("__imul__", (void (mrpt::poses::CPoint<mrpt::poses::CPoint3D,3UL>::*)(const double)) &mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::operator*=, "C++: mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::operator*=(const double) --> void", pybind11::arg("s"));
 		cl.def("asString", (std::string (mrpt::poses::CPoint<mrpt::poses::CPoint3D,3UL>::*)() const) &mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::asString, "C++: mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::asString() const --> std::string");
 		cl.def("fromString", (void (mrpt::poses::CPoint<mrpt::poses::CPoint3D,3UL>::*)(const std::string &)) &mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::fromString, "C++: mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::fromString(const std::string &) --> void", pybind11::arg("s"));
-		cl.def("__getitem__", (double & (mrpt::poses::CPoint<mrpt::poses::CPoint3D,3UL>::*)(unsigned int)) &mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::operator[], "C++: mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::operator[](unsigned int) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::poses::CPoint<mrpt::poses::CPoint3D,3UL>::*)(unsigned int)) &mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::operator[], "C++: mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::operator[](unsigned int) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("assign", (class mrpt::poses::CPoint<class mrpt::poses::CPoint3D, 3> & (mrpt::poses::CPoint<mrpt::poses::CPoint3D,3UL>::*)(const class mrpt::poses::CPoint<class mrpt::poses::CPoint3D, 3> &)) &mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::operator=, "C++: mrpt::poses::CPoint<mrpt::poses::CPoint3D, 3>::operator=(const class mrpt::poses::CPoint<class mrpt::poses::CPoint3D, 3> &) --> class mrpt::poses::CPoint<class mrpt::poses::CPoint3D, 3> &", pybind11::return_value_policy::automatic, pybind11::arg(""));
 		cl.def("derived", (class mrpt::poses::CPoint3D & (mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint3D,3UL>::*)()) &mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint3D, 3>::derived, "C++: mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint3D, 3>::derived() --> class mrpt::poses::CPoint3D &", pybind11::return_value_policy::automatic);
 		cl.def("x", (double & (mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint3D,3UL>::*)()) &mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint3D, 3>::x, "C++: mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint3D, 3>::x() --> double &", pybind11::return_value_policy::automatic);
@@ -242,7 +242,7 @@ void bind_mrpt_poses_CPoint(std::function< pybind11::module &(std::string const
 		cl.def("__imul__", (void (mrpt::poses::CPoint<mrpt::poses::CPoint2D,2UL>::*)(const double)) &mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::operator*=, "C++: mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::operator*=(const double) --> void", pybind11::arg("s"));
 		cl.def("asString", (std::string (mrpt::poses::CPoint<mrpt::poses::CPoint2D,2UL>::*)() const) &mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::asString, "C++: mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::asString() const --> std::string");
 		cl.def("fromString", (void (mrpt::poses::CPoint<mrpt::poses::CPoint2D,2UL>::*)(const std::string &)) &mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::fromString, "C++: mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::fromString(const std::string &) --> void", pybind11::arg("s"));
-		cl.def("__getitem__", (double & (mrpt::poses::CPoint<mrpt::poses::CPoint2D,2UL>::*)(unsigned int)) &mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::operator[], "C++: mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::operator[](unsigned int) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::poses::CPoint<mrpt::poses::CPoint2D,2UL>::*)(unsigned int)) &mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::operator[], "C++: mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::operator[](unsigned int) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("assign", (class mrpt::poses::CPoint<class mrpt::poses::CPoint2D, 2> & (mrpt::poses::CPoint<mrpt::poses::CPoint2D,2UL>::*)(const class mrpt::poses::CPoint<class mrpt::poses::CPoint2D, 2> &)) &mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::operator=, "C++: mrpt::poses::CPoint<mrpt::poses::CPoint2D, 2>::operator=(const class mrpt::poses::CPoint<class mrpt::poses::CPoint2D, 2> &) --> class mrpt::poses::CPoint<class mrpt::poses::CPoint2D, 2> &", pybind11::return_value_policy::automatic, pybind11::arg(""));
 		cl.def("derived", (class mrpt::poses::CPoint2D & (mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint2D,2UL>::*)()) &mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint2D, 2>::derived, "C++: mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint2D, 2>::derived() --> class mrpt::poses::CPoint2D &", pybind11::return_value_policy::automatic);
 		cl.def("x", (double & (mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint2D,2UL>::*)()) &mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint2D, 2>::x, "C++: mrpt::poses::CPoseOrPoint<mrpt::poses::CPoint2D, 2>::x() --> double &", pybind11::return_value_policy::automatic);
diff --git a/python/src/mrpt/poses/CPose2D.cpp b/python/src/mrpt/poses/CPose2D.cpp
index 0763a3145..8199b0b56 100644
--- a/python/src/mrpt/poses/CPose2D.cpp
+++ b/python/src/mrpt/poses/CPose2D.cpp
@@ -201,7 +201,7 @@ void bind_mrpt_poses_CPose2D(std::function< pybind11::module &(std::string const
 		cl.def("fromString", (void (mrpt::poses::CPose2D::*)(const std::string &)) &mrpt::poses::CPose2D::fromString, "Set the current object value from a string generated by 'asString' (eg:\n \"[0.02 1.04 -0.8]\" )\n \n\n asString\n \n\n std::exception On invalid format\n\nC++: mrpt::poses::CPose2D::fromString(const std::string &) --> void", pybind11::arg("s"));
 		cl.def("fromStringRaw", (void (mrpt::poses::CPose2D::*)(const std::string &)) &mrpt::poses::CPose2D::fromStringRaw, "Same as fromString, but without requiring the square brackets in the\n string \n\nC++: mrpt::poses::CPose2D::fromStringRaw(const std::string &) --> void", pybind11::arg("s"));
 		cl.def_static("FromString", (class mrpt::poses::CPose2D (*)(const std::string &)) &mrpt::poses::CPose2D::FromString, "C++: mrpt::poses::CPose2D::FromString(const std::string &) --> class mrpt::poses::CPose2D", pybind11::arg("s"));
-		cl.def("__getitem__", (double & (mrpt::poses::CPose2D::*)(unsigned int)) &mrpt::poses::CPose2D::operator[], "C++: mrpt::poses::CPose2D::operator[](unsigned int) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::poses::CPose2D::*)(unsigned int)) &mrpt::poses::CPose2D::operator[], "C++: mrpt::poses::CPose2D::operator[](unsigned int) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def("changeCoordinatesReference", (void (mrpt::poses::CPose2D::*)(const class mrpt::poses::CPose2D &)) &mrpt::poses::CPose2D::changeCoordinatesReference, "makes: this = p (+) this \n\nC++: mrpt::poses::CPose2D::changeCoordinatesReference(const class mrpt::poses::CPose2D &) --> void", pybind11::arg("p"));
 		cl.def("distance2DFrobeniusTo", (double (mrpt::poses::CPose2D::*)(const class mrpt::poses::CPose2D &) const) &mrpt::poses::CPose2D::distance2DFrobeniusTo, "Returns the 2D distance from this pose/point to a 2D pose using the\n Frobenius distance. \n\nC++: mrpt::poses::CPose2D::distance2DFrobeniusTo(const class mrpt::poses::CPose2D &) const --> double", pybind11::arg("p"));
 		cl.def_static("is_3D", (bool (*)()) &mrpt::poses::CPose2D::is_3D, "C++: mrpt::poses::CPose2D::is_3D() --> bool");
diff --git a/python/src/mrpt/poses/CPose3DQuat.cpp b/python/src/mrpt/poses/CPose3DQuat.cpp
index d9d2b595e..da863d735 100644
--- a/python/src/mrpt/poses/CPose3DQuat.cpp
+++ b/python/src/mrpt/poses/CPose3DQuat.cpp
@@ -198,7 +198,7 @@ void bind_mrpt_poses_CPose3DQuat(std::function< pybind11::module &(std::string c
 		cl.def("fromString", (void (mrpt::poses::CPose3DQuat::*)(const std::string &)) &mrpt::poses::CPose3DQuat::fromString, "Set the current object value from a string generated by 'asString' (eg:\n \"[0.02 1.04 -0.8 1 0 0 0]\" )\n \n\n asString\n \n\n std::exception On invalid format\n\nC++: mrpt::poses::CPose3DQuat::fromString(const std::string &) --> void", pybind11::arg("s"));
 		cl.def("fromStringRaw", (void (mrpt::poses::CPose3DQuat::*)(const std::string &)) &mrpt::poses::CPose3DQuat::fromStringRaw, "Same as fromString, but without requiring the square brackets in the\n string \n\nC++: mrpt::poses::CPose3DQuat::fromStringRaw(const std::string &) --> void", pybind11::arg("s"));
 		cl.def_static("FromString", (class mrpt::poses::CPose3DQuat (*)(const std::string &)) &mrpt::poses::CPose3DQuat::FromString, "C++: mrpt::poses::CPose3DQuat::FromString(const std::string &) --> class mrpt::poses::CPose3DQuat", pybind11::arg("s"));
-		cl.def("__getitem__", (double & (mrpt::poses::CPose3DQuat::*)(unsigned int)) &mrpt::poses::CPose3DQuat::operator[], "Read/write [] operator \n\nC++: mrpt::poses::CPose3DQuat::operator[](unsigned int) --> double &", pybind11::return_value_policy::automatic, pybind11::arg("i"));
+		cl.def("__getitem__", (double & (mrpt::poses::CPose3DQuat::*)(unsigned int)) &mrpt::poses::CPose3DQuat::operator[], "Read/write [] operator \n\nC++: mrpt::poses::CPose3DQuat::operator[](unsigned int) --> double &", pybind11::return_value_policy::reference, pybind11::arg("i"));
 		cl.def_static("is_3D", (bool (*)()) &mrpt::poses::CPose3DQuat::is_3D, "C++: mrpt::poses::CPose3DQuat::is_3D() --> bool");
 		cl.def_static("is_PDF", (bool (*)()) &mrpt::poses::CPose3DQuat::is_PDF, "C++: mrpt::poses::CPose3DQuat::is_PDF() --> bool");
 		cl.def("getPoseMean", (class mrpt::poses::CPose3DQuat & (mrpt::poses::CPose3DQuat::*)()) &mrpt::poses::CPose3DQuat::getPoseMean, "C++: mrpt::poses::CPose3DQuat::getPoseMean() --> class mrpt::poses::CPose3DQuat &", pybind11::return_value_policy::automatic);
