docs fixed and error threshold reduced
parent
02e94730a6
commit
cc54b18fe5
|
@ -18,14 +18,14 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <gtsam/geometry/PinholeCamera.h>
|
||||
#include <gtsam/geometry/Cal3_S2.h>
|
||||
#include <gtsam/geometry/Cal3Bundler.h>
|
||||
#include <gtsam/geometry/CameraSet.h>
|
||||
#include <gtsam/geometry/PinholeCamera.h>
|
||||
#include <gtsam/geometry/Pose2.h>
|
||||
#include <gtsam/slam/TriangulationFactor.h>
|
||||
#include <gtsam/nonlinear/NonlinearFactorGraph.h>
|
||||
#include <gtsam/inference/Symbol.h>
|
||||
#include <gtsam/geometry/Cal3_S2.h>
|
||||
#include <gtsam/geometry/Cal3Bundler.h>
|
||||
|
||||
namespace gtsam {
|
||||
|
||||
|
@ -496,6 +496,7 @@ TriangulationResult triangulateSafe(const CameraSet<CAMERA>& cameras,
|
|||
}
|
||||
}
|
||||
|
||||
// Vector of Cameras - used by the Python/MATLAB wrapper
|
||||
typedef CameraSet<PinholeCamera<Cal3Bundler>> CameraSetCal3Bundler;
|
||||
typedef CameraSet<PinholeCamera<Cal3_S2>> CameraSetCal3_S2;
|
||||
|
||||
|
|
|
@ -15,7 +15,9 @@ import numpy as np
|
|||
import gtsam as g
|
||||
from gtsam.utils.test_case import GtsamTestCase
|
||||
from gtsam import Cal3_S2, Cal3Bundler, Rot3, Pose3, \
|
||||
PinholeCameraCal3_S2, Point3, Point2Vector, Pose3Vector, triangulatePoint3, CameraSetCal3_S2, CameraSetCal3Bundler, PinholeCameraCal3Bundler
|
||||
PinholeCameraCal3_S2, PinholeCameraCal3Bundler, Point3, \
|
||||
Point2Vector, Pose3Vector, triangulatePoint3, \
|
||||
CameraSetCal3_S2, CameraSetCal3Bundler
|
||||
|
||||
class TestVisualISAMExample(GtsamTestCase):
|
||||
def setUp(self):
|
||||
|
@ -80,62 +82,62 @@ class TestVisualISAMExample(GtsamTestCase):
|
|||
# self.gtsamAssertEquals(landmark, triangulated_landmark,1e-9)
|
||||
|
||||
def test_distinct_Ks(self):
|
||||
# two cameras
|
||||
K1 = Cal3_S2(1500, 1200, 0, 640, 480)
|
||||
camera1 = PinholeCameraCal3_S2(self.pose1, K1)
|
||||
|
||||
K2 = Cal3_S2(1600, 1300, 0, 650, 440)
|
||||
camera2 = PinholeCameraCal3_S2(self.pose2, K2)
|
||||
|
||||
cameras = CameraSetCal3_S2()
|
||||
cameras.append(camera1)
|
||||
cameras.append(camera2)
|
||||
|
||||
# landmark ~5 meters infront of camera
|
||||
landmark = Point3(5, 0.5, 1.2)
|
||||
|
||||
# 1. Project two landmarks into two cameras and triangulate
|
||||
z1 = camera1.project(landmark)
|
||||
z2 = camera2.project(landmark)
|
||||
# two cameras
|
||||
|
||||
measurements = Point2Vector()
|
||||
cameras = CameraSetCal3_S2()
|
||||
|
||||
measurements.append(z1)
|
||||
measurements.append(z2)
|
||||
cameras.append(camera1)
|
||||
cameras.append(camera2)
|
||||
|
||||
optimize = True
|
||||
rank_tol = 1e-9
|
||||
|
||||
triangulated_landmark = triangulatePoint3(cameras, measurements, rank_tol, optimize)
|
||||
self.gtsamAssertEquals(landmark, triangulated_landmark, 1e-2)
|
||||
self.gtsamAssertEquals(landmark, triangulated_landmark, 1e-9)
|
||||
|
||||
def test_distinct_Ks_Bundler(self):
|
||||
# two cameras
|
||||
K1 = Cal3Bundler(1500, 0, 0, 640, 480)
|
||||
camera1 = PinholeCameraCal3Bundler(self.pose1, K1)
|
||||
|
||||
K2 = Cal3Bundler(1500, 0, 0, 640, 480)
|
||||
K2 = Cal3Bundler(1600, 0, 0, 650, 440)
|
||||
camera2 = PinholeCameraCal3Bundler(self.pose2, K2)
|
||||
|
||||
cameras = CameraSetCal3Bundler()
|
||||
cameras.append(camera1)
|
||||
cameras.append(camera2)
|
||||
|
||||
# landmark ~5 meters infront of camera
|
||||
landmark = Point3(5, 0.5, 1.2)
|
||||
|
||||
# 1. Project two landmarks into two cameras and triangulate
|
||||
z1 = camera1.project(landmark)
|
||||
z2 = camera2.project(landmark)
|
||||
# two cameras
|
||||
measurements = Point2Vector()
|
||||
cameras = CameraSetCal3Bundler()
|
||||
|
||||
measurements = Point2Vector()
|
||||
measurements.append(z1)
|
||||
measurements.append(z2)
|
||||
cameras.append(camera1)
|
||||
cameras.append(camera2)
|
||||
|
||||
optimize = True
|
||||
rank_tol = 1e-9
|
||||
|
||||
triangulated_landmark = triangulatePoint3(cameras, measurements, rank_tol, optimize)
|
||||
self.gtsamAssertEquals(landmark, triangulated_landmark, 1e-2)
|
||||
|
||||
|
||||
self.gtsamAssertEquals(landmark, triangulated_landmark, 1e-9)
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
Loading…
Reference in New Issue