diff --git a/gtsam/geometry/triangulation.h b/gtsam/geometry/triangulation.h index 660d9fa3c..f0810105f 100644 --- a/gtsam/geometry/triangulation.h +++ b/gtsam/geometry/triangulation.h @@ -20,6 +20,7 @@ #pragma once +#include "gtsam/geometry/Point3.h" #include #include #include @@ -33,6 +34,8 @@ #include #include +#include + namespace gtsam { /// Exception thrown by triangulateDLT when SVD returns rank < 3 @@ -656,6 +659,10 @@ class TriangulationResult : public std::optional { bool outlier() const { return status == OUTLIER; } bool farPoint() const { return status == FAR_POINT; } bool behindCamera() const { return status == BEHIND_CAMERA; } + const gtsam::Point3& get() const { + if (!has_value()) throw std::runtime_error("TriangulationResult has no value"); + return value(); + } // stream to output friend std::ostream& operator<<(std::ostream& os, const TriangulationResult& result) { diff --git a/python/gtsam/preamble/geometry.h b/python/gtsam/preamble/geometry.h index bd0441d06..f36221d38 100644 --- a/python/gtsam/preamble/geometry.h +++ b/python/gtsam/preamble/geometry.h @@ -12,13 +12,6 @@ */ #include -// Support for binding boost::optional types in C++11. -// https://pybind11.readthedocs.io/en/stable/advanced/cast/stl.html -namespace pybind11 { namespace detail { - template - struct type_caster> : optional_caster> {}; -}} - PYBIND11_MAKE_OPAQUE( std::vector>); PYBIND11_MAKE_OPAQUE(gtsam::Point2Pairs);