GTSAM  4.0.2
C++ library for smoothing and mapping (SAM)
Public Types | List of all members
gtsam::PinholePose< CALIBRATION > Class Template Reference

#include <PinholePose.h>

Inheritance diagram for gtsam::PinholePose< CALIBRATION >:
Inheritance graph
[legend]
Collaboration diagram for gtsam::PinholePose< CALIBRATION >:
Collaboration graph
[legend]

Public Types

enum  { dimension = 6 }
 
typedef CALIBRATION CalibrationType
 
typedef Rot3 Rotation
 
typedef Point3 Translation
 
typedef Point2 Measurement
 
typedef Point2Vector MeasurementVector
 

Derivatives

static Matrix26 Dpose (const Point2 &pn, double d)
 
static Matrix23 Dpoint (const Point2 &pn, double d, const Matrix3 &Rt)
 

Static functions

static Pose3 LevelPose (const Pose2 &pose2, double height)
 
static Pose3 LookatPose (const Point3 &eye, const Point3 &target, const Point3 &upVector)
 

Testable

bool equals (const PinholeBase &camera, double tol=1e-9) const
 assert equality up to a tolerance
 

Standard Interface

const Pose3pose () const
 return pose, constant version
 
const Rot3rotation () const
 get rotation
 
const Point3translation () const
 get translation
 
const Pose3getPose (OptionalJacobian< 6, 6 > H) const
 return pose, with derivative
 

Transformations and measurement functions

static Point2 Project (const Point3 &pc, OptionalJacobian< 2, 3 > Dpoint={})
 
static Point2 Project (const Unit3 &pc, OptionalJacobian< 2, 2 > Dpoint={})
 
static Point3 BackprojectFromCamera (const Point2 &p, const double depth, OptionalJacobian< 3, 2 > Dpoint={}, OptionalJacobian< 3, 1 > Ddepth={})
 backproject a 2-dimensional point to a 3-dimensional point at given depth
 

Advanced interface

static std::pair< size_t, size_t > translationInterval ()
 

Transformations and measurement functions

std::pair< Point2, bool > projectSafe (const Point3 &pw) const
 Project a point into the image and check depth.
 
template<class POINT >
Point2 _project (const POINT &pw, OptionalJacobian< 2, 6 > Dpose, OptionalJacobian< 2, FixedDimension< POINT >::value > Dpoint, OptionalJacobian< 2, DimK > Dcal) const
 
Point2 project (const Point3 &pw, OptionalJacobian< 2, 6 > Dpose={}, OptionalJacobian< 2, 3 > Dpoint={}, OptionalJacobian< 2, DimK > Dcal={}) const
 project a 3D point from world coordinates into the image
 
Point2 project (const Unit3 &pw, OptionalJacobian< 2, 6 > Dpose={}, OptionalJacobian< 2, 2 > Dpoint={}, OptionalJacobian< 2, DimK > Dcal={}) const
 project a point at infinity from world coordinates into the image
 
Point2 reprojectionError (const Point3 &pw, const Point2 &measured, OptionalJacobian< 2, 6 > Dpose={}, OptionalJacobian< 2, 3 > Dpoint={}, OptionalJacobian< 2, DimK > Dcal={}) const
 project a 3D point from world coordinates into the image
 
Point3 backproject (const Point2 &p, double depth, OptionalJacobian< 3, 6 > Dresult_dpose={}, OptionalJacobian< 3, 2 > Dresult_dp={}, OptionalJacobian< 3, 1 > Dresult_ddepth={}, OptionalJacobian< 3, DimK > Dresult_dcal={}) const
 backproject a 2-dimensional point to a 3-dimensional point at given depth
 
Unit3 backprojectPointAtInfinity (const Point2 &p) const
 backproject a 2-dimensional point to a 3-dimensional point at infinity
 
double range (const Point3 &point, OptionalJacobian< 1, 6 > Dcamera={}, OptionalJacobian< 1, 3 > Dpoint={}) const
 
double range (const Pose3 &pose, OptionalJacobian< 1, 6 > Dcamera={}, OptionalJacobian< 1, 6 > Dpose={}) const
 
double range (const CalibratedCamera &camera, OptionalJacobian< 1, 6 > Dcamera={}, OptionalJacobian< 1, 6 > Dother={}) const
 
template<class CalibrationB >
double range (const PinholeBaseK< CalibrationB > &camera, OptionalJacobian< 1, 6 > Dcamera={}, OptionalJacobian< 1, 6 > Dother={}) const
 

Standard Constructors

 PinholePose ()
 
 PinholePose (const Pose3 &pose)
 
 PinholePose (const Pose3 &pose, const std::shared_ptr< CALIBRATION > &K)
 

Named Constructors

static PinholePose Level (const std::shared_ptr< CALIBRATION > &K, const Pose2 &pose2, double height)
 
static PinholePose Level (const Pose2 &pose2, double height)
 PinholePose::level with default calibration.
 
static PinholePose Lookat (const Point3 &eye, const Point3 &target, const Point3 &upVector, const std::shared_ptr< CALIBRATION > &K=std::make_shared< CALIBRATION >())
 

Advanced Constructors

 PinholePose (const Vector &v)
 Init from 6D vector.
 
 PinholePose (const Vector &v, const Vector &K)
 Init from Vector and calibration.
 
 PinholePose (const Pose3 &pose, const Vector &K)
 

Testable

bool equals (const Base &camera, double tol=1e-9) const
 assert equality up to a tolerance
 
void print (const std::string &s="PinholePose") const override
 print
 
std::ostream & operator<< (std::ostream &os, const PinholePose &camera)
 stream operator
 

Standard Interface

 ~PinholePose () override
 
const std::shared_ptr< CALIBRATION > & sharedCalibration () const
 return shared pointer to calibration
 
const CALIBRATION & calibration () const override
 return calibration
 
Point2 project2 (const Point3 &pw, OptionalJacobian< 2, 6 > Dpose={}, OptionalJacobian< 2, 3 > Dpoint={}) const
 
Point2 project2 (const Unit3 &pw, OptionalJacobian< 2, 6 > Dpose={}, OptionalJacobian< 2, 2 > Dpoint={}) const
 project2 version for point at infinity
 

Manifold

size_t dim () const
 
PinholePose retract (const Vector6 &d) const
 move a cameras according to d
 
Vector6 localCoordinates (const PinholePose &p) const
 return canonical coordinate
 
Matrix34 cameraProjectionMatrix () const
 for Linear Triangulation
 
Vector defaultErrorWhenTriangulatingBehindCamera () const
 for Nonlinear Triangulation
 
static size_t Dim ()
 
static PinholePose Identity ()
 for Canonical
 

Detailed Description

template<typename CALIBRATION>
class gtsam::PinholePose< CALIBRATION >

A pinhole camera class that has a Pose3 and a fixed Calibration. Instead of using this class, one might consider calibrating the measurements and using CalibratedCamera, which would then be faster.

Member Typedef Documentation

◆ Measurement

Some classes template on either PinholeCamera or StereoCamera, and this typedef informs those classes what "project" returns.

◆ Rotation

Pose Concept requirements

Constructor & Destructor Documentation

◆ PinholePose() [1/3]

template<typename CALIBRATION >
gtsam::PinholePose< CALIBRATION >::PinholePose ( )
inline

default constructor

◆ PinholePose() [2/3]

template<typename CALIBRATION >
gtsam::PinholePose< CALIBRATION >::PinholePose ( const Pose3 pose)
inlineexplicit

constructor with pose, uses default calibration

◆ PinholePose() [3/3]

template<typename CALIBRATION >
gtsam::PinholePose< CALIBRATION >::PinholePose ( const Pose3 pose,
const std::shared_ptr< CALIBRATION > &  K 
)
inline

constructor with pose and calibration

Member Function Documentation

◆ _project()

template<typename CALIBRATION>
template<class POINT >
Point2 gtsam::PinholeBaseK< CALIBRATION >::_project ( const POINT &  pw,
OptionalJacobian< 2, 6 >  Dpose,
OptionalJacobian< 2, FixedDimension< POINT >::value >  Dpoint,
OptionalJacobian< 2, DimK >  Dcal 
) const
inlineinherited

Templated projection of a point (possibly at infinity) from world coordinate to the image

Parameters
pwis a 3D point or a Unit3 (point at infinity) in world coordinates
Dposeis the Jacobian w.r.t. pose3
Dpointis the Jacobian w.r.t. point3
Dcalis the Jacobian w.r.t. calibration

◆ dim()

template<typename CALIBRATION >
size_t gtsam::PinholePose< CALIBRATION >::dim ( ) const
inline

◆ Dim()

template<typename CALIBRATION >
static size_t gtsam::PinholePose< CALIBRATION >::Dim ( )
inlinestatic

◆ Dpoint()

static Matrix23 gtsam::PinholeBase::Dpoint ( const Point2 pn,
double  d,
const Matrix3 &  Rt 
)
staticprotectedinherited

Calculate Jacobian with respect to point

Parameters
pnprojection in normalized coordinates
ddisparity (inverse depth)
Rttransposed rotation matrix

◆ Dpose()

static Matrix26 gtsam::PinholeBase::Dpose ( const Point2 pn,
double  d 
)
staticprotectedinherited

Calculate Jacobian with respect to pose

Parameters
pnprojection in normalized coordinates
ddisparity (inverse depth)

◆ Level()

template<typename CALIBRATION >
static PinholePose gtsam::PinholePose< CALIBRATION >::Level ( const std::shared_ptr< CALIBRATION > &  K,
const Pose2 pose2,
double  height 
)
inlinestatic

Create a level camera at the given 2D pose and height

Parameters
Kthe calibration
pose2specifies the location and viewing direction (theta 0 = looking in direction of positive X axis)
heightcamera height

◆ LevelPose()

static Pose3 gtsam::PinholeBase::LevelPose ( const Pose2 pose2,
double  height 
)
staticinherited

Create a level pose at the given 2D pose and height

Parameters
Kthe calibration
pose2specifies the location and viewing direction (theta 0 = looking in direction of positive X axis)
heightcamera height

◆ Lookat()

template<typename CALIBRATION >
static PinholePose gtsam::PinholePose< CALIBRATION >::Lookat ( const Point3 eye,
const Point3 target,
const Point3 upVector,
const std::shared_ptr< CALIBRATION > &  K = std::make_shared<CALIBRATION>() 
)
inlinestatic

Create a camera at the given eye position looking at a target point in the scene with the specified up direction vector.

Parameters
eyespecifies the camera position
targetthe point to look at
upVectorspecifies the camera up direction vector, doesn't need to be on the image plane nor orthogonal to the viewing axis
Koptional calibration parameter

◆ LookatPose()

static Pose3 gtsam::PinholeBase::LookatPose ( const Point3 eye,
const Point3 target,
const Point3 upVector 
)
staticinherited

Create a camera pose at the given eye position looking at a target point in the scene with the specified up direction vector.

Parameters
eyespecifies the camera position
targetthe point to look at
upVectorspecifies the camera up direction vector, doesn't need to be on the image plane nor orthogonal to the viewing axis

◆ Project() [1/2]

static Point2 gtsam::PinholeBase::Project ( const Point3 pc,
OptionalJacobian< 2, 3 >  Dpoint = {} 
)
staticinherited

Project from 3D point in camera coordinates into image Does not throw a CheiralityException, even if pc behind image plane

Parameters
pcpoint in camera coordinates

◆ Project() [2/2]

static Point2 gtsam::PinholeBase::Project ( const Unit3 pc,
OptionalJacobian< 2, 2 >  Dpoint = {} 
)
staticinherited

Project from 3D point at infinity in camera coordinates into image Does not throw a CheiralityException, even if pc behind image plane

Parameters
pcpoint in camera coordinates

◆ project2()

template<typename CALIBRATION >
Point2 gtsam::PinholePose< CALIBRATION >::project2 ( const Point3 pw,
OptionalJacobian< 2, 6 >  Dpose = {},
OptionalJacobian< 2, 3 >  Dpoint = {} 
) const
inline

project a point from world coordinate to the image, 2 derivatives only

Parameters
pwis a point in world coordinates
Dposeis the Jacobian w.r.t. the whole camera (really only the pose)
Dpointis the Jacobian w.r.t. point3

◆ range() [1/4]

template<typename CALIBRATION>
double gtsam::PinholeBaseK< CALIBRATION >::range ( const Point3 point,
OptionalJacobian< 1, 6 >  Dcamera = {},
OptionalJacobian< 1, 3 >  Dpoint = {} 
) const
inlineinherited

Calculate range to a landmark

Parameters
point3D location of landmark
Returns
range (double)

◆ range() [2/4]

template<typename CALIBRATION>
double gtsam::PinholeBaseK< CALIBRATION >::range ( const Pose3 pose,
OptionalJacobian< 1, 6 >  Dcamera = {},
OptionalJacobian< 1, 6 >  Dpose = {} 
) const
inlineinherited

Calculate range to another pose

Parameters
poseOther SO(3) pose
Returns
range (double)

◆ range() [3/4]

template<typename CALIBRATION>
double gtsam::PinholeBaseK< CALIBRATION >::range ( const CalibratedCamera camera,
OptionalJacobian< 1, 6 >  Dcamera = {},
OptionalJacobian< 1, 6 >  Dother = {} 
) const
inlineinherited

Calculate range to a CalibratedCamera

Parameters
cameraOther camera
Returns
range (double)

◆ range() [4/4]

template<typename CALIBRATION>
template<class CalibrationB >
double gtsam::PinholeBaseK< CALIBRATION >::range ( const PinholeBaseK< CalibrationB > &  camera,
OptionalJacobian< 1, 6 >  Dcamera = {},
OptionalJacobian< 1, 6 >  Dother = {} 
) const
inlineinherited

Calculate range to a PinholePoseK derived class

Parameters
cameraOther camera
Returns
range (double)

◆ translationInterval()

static std::pair<size_t, size_t> gtsam::PinholeBase::translationInterval ( )
inlinestaticinherited

Return the start and end indices (inclusive) of the translation component of the exponential map parameterization

Returns
a pair of [start, end] indices into the tangent space vector

The documentation for this class was generated from the following file: