27 #include <gtsam/dllexport.h> 28 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 29 #include <boost/serialization/nvp.hpp> 83 static Matrix26 Dpose(
const Point2& pn,
double d);
91 static Matrix23 Dpoint(
const Point2& pn,
double d,
const Matrix3& Rt);
147 virtual void print(
const std::string&
s =
"PinholeBase")
const;
192 std::pair<Point2, bool> projectSafe(
const Point3& pw)
const;
233 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 235 friend class boost::serialization::access;
236 template<
class Archive>
237 void serialize(Archive & ar,
const unsigned int ) {
238 ar & BOOST_SERIALIZATION_NVP(pose_);
322 void print(
const std::string&
s =
"CalibratedCamera")
const override {
327 inline size_t dim()
const {
332 inline static size_t Dim() {
354 Matrix31 Dpoint_ddepth;
356 Dresult_dp ? &Dpoint_dpn : 0,
357 Dresult_ddepth ? &Dpoint_ddepth : 0);
359 Matrix33 Dresult_dpoint;
362 Dresult_dp) ? &Dresult_dpoint : 0);
365 *Dresult_dp = Dresult_dpoint * Dpoint_dpn;
367 *Dresult_ddepth = Dresult_dpoint * Dpoint_ddepth;
380 return pose().range(point, Dcamera, Dpoint);
390 return this->
pose().range(pose, Dcamera, Dpose);
401 return pose().range(camera.
pose(), H1, H2);
411 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION 413 friend class boost::serialization::access;
414 template<
class Archive>
415 void serialize(Archive & ar,
const unsigned int ) {
417 & boost::serialization::make_nvp(
"PinholeBase",
418 boost::serialization::base_object<PinholeBase>(*
this));
433 template <
typename T>
PinholeBase(const Pose3 &pose)
Constructor with pose.
void print(const Matrix &A, const string &s, ostream &stream)
double range(const CalibratedCamera &camera, OptionalJacobian< 1, 6 > H1={}, OptionalJacobian< 1, 6 > H2={}) const
Both ManifoldTraits and Testable.
Point2_ project(const Point3_ &p_cam)
Expression version of PinholeBase::Project.
Pose3_ getPose(const Expression< PinholeCamera< CALIBRATION > > &cam)
const Point3 & translation(OptionalJacobian< 3, 6 > Hself={}) const
get translation
static std::pair< size_t, size_t > translationInterval()
static Point3 BackprojectFromCamera(const CalibratedCamera &camera, const Point2 &point, const double &depth)
std::string serialize(const T &input)
serializes to a string
int RealScalar int RealScalar int RealScalar * pc
Point2_ project2(const Expression< CAMERA > &camera_, const Expression< POINT > &p_)
Pose2_ Expmap(const Vector3_ &xi)
Pose3 pose_
3D pose of camera
static const Pose3 T2(Rot3::Rodrigues(0.3, 0.2, 0.1), P2)
PinholeBase()
Default constructor.
set noclip points set clip one set noclip two set bar set border lt lw set xdata set ydata set zdata set x2data set y2data set boxwidth set dummy y set format x g set format y g set format x2 g set format y2 g set format z g set angles radians set nogrid set key title set key left top Right noreverse box linetype linewidth samplen spacing width set nolabel set noarrow set nologscale set logscale x set set pointsize set encoding default set nopolar set noparametric set set set set surface set nocontour set clabel set mapping cartesian set nohidden3d set cntrparam order set cntrparam linear set cntrparam levels auto set cntrparam points set size set set xzeroaxis lt lw set x2zeroaxis lt lw set yzeroaxis lt lw set y2zeroaxis lt lw set tics in set ticslevel set tics set mxtics default set mytics default set mx2tics default set my2tics default set xtics border mirror norotate autofreq set ytics border mirror norotate autofreq set ztics border nomirror norotate autofreq set nox2tics set noy2tics set timestamp bottom norotate set rrange [*:*] noreverse nowriteback set trange [*:*] noreverse nowriteback set urange [*:*] noreverse nowriteback set vrange [*:*] noreverse nowriteback set xlabel matrix size set x2label set timefmt d m y n H
const Point3 & translation() const
get translation
double range(const Pose3 &pose, OptionalJacobian< 1, 6 > Dcamera={}, OptionalJacobian< 1, 6 > Dpose={}) const
Rot3 is a 3D rotation represented as a rotation matrix if the preprocessor symbol GTSAM_USE_QUATERNIO...
virtual void print(const std::string &s="PinholeBase") const
print
Represents a 3D point on a unit sphere.
void print(const std::string &s="CalibratedCamera") const override
print
CalibratedCamera(const Pose3 &pose)
construct with pose
const Pose3 & pose() const
return pose, constant version
Base class and basic functions for Manifold types.
Base exception type that uses tbb_allocator if GTSAM is compiled with TBB.
Key nearbyVariable() const
Array< int, Dynamic, 1 > v
Array< double, 1, 3 > e(1./3., 0.5, 2.)
CalibratedCamera(const Vector &v)
construct from vector
static CalibratedCamera Create(const Pose3 &pose, OptionalJacobian< dimension, 6 > H1={})
double range(const Point3 &point, OptionalJacobian< 1, 6 > Dcamera={}, OptionalJacobian< 1, 3 > Dpoint={}) const
Point3 backproject(const Point2 &pn, double depth, OptionalJacobian< 3, 6 > Dresult_dpose={}, OptionalJacobian< 3, 2 > Dresult_dp={}, OptionalJacobian< 3, 1 > Dresult_ddepth={}) const
backproject a 2-dimensional point to a 3-dimensional point at given depth
PinholeBase(const Vector &v)
static const Pose3 pose(Rot3(Vector3(1, -1, -1).asDiagonal()), Point3(0, 0, 0.5))
std::vector< Point2, Eigen::aligned_allocator< Point2 > > Point2Vector
CalibratedCamera()
default constructor
Point2(* Project)(const Point3 &, OptionalJacobian< 2, 3 >)
const Rot3 & rotation() const
get rotation
const Rot3 & rotation(OptionalJacobian< 3, 6 > Hself={}) const
get rotation
CheiralityException(Key j)
Point2Vector MeasurementVector
static const CalibratedCamera camera(kDefaultPose)
std::uint64_t Key
Integer nonlinear key type.