@@ -5407,14 +5407,20 @@ def test_umeyama(self):
5407
5407
5408
5408
self .assertTrue (np .allclose (R , R_gnd , atol = 1e-4 ))
5409
5409
self .assertTrue (np .allclose (t , t_gnd , atol = 1e-4 ))
5410
+ self .assertTrue (np .allclose (est , dst , atol = 1e-4 ))
5410
5411
5411
5412
# Visualize
5412
5413
if self .debug :
5413
5414
plt .figure (figsize = (12 , 10 ))
5414
5415
ax : Axes3D = plt .axes (projection = '3d' )
5415
5416
ax .scatter (src [:, 0 ], src [:, 1 ], src [:, 2 ], "r" , label = "src" , alpha = 0.2 )
5416
5417
ax .scatter (dst [:, 0 ], dst [:, 1 ], dst [:, 2 ], "g" , label = "dest" , alpha = 0.2 )
5417
- ax .scatter (est [:, 0 ], est [:, 1 ], est [:, 2 ], "k" , label = "aligned" , alpha = 0.2 )
5418
+ ax .scatter (est [:, 0 ],
5419
+ est [:, 1 ],
5420
+ est [:, 2 ],
5421
+ "k" ,
5422
+ label = "aligned" ,
5423
+ alpha = 0.2 )
5418
5424
ax .legend (loc = 0 )
5419
5425
plot_set_axes_equal (ax )
5420
5426
plt .show ()
@@ -5923,33 +5929,48 @@ def plot_frames(self):
5923
5929
5924
5930
class TestKitti (unittest .TestCase ):
5925
5931
""" Test KITTI dataset loader """
5926
- @unittest .skip ("" )
5932
+
5933
+ # @unittest.skip("")
5927
5934
def test_load (self ):
5928
5935
""" Test load """
5929
- data_dir = ' /data/kitti'
5936
+ data_dir = Path ( " /data/kitti_raw" )
5930
5937
date = "2011_09_26"
5931
5938
seq = "93"
5932
5939
dataset = KittiRawDataset (data_dir , date , seq , True )
5933
- # dataset.plot_frames()
5934
5940
5935
- for i in range (dataset .num_camera_images ()):
5936
- cam0_img = dataset .get_camera_image (0 , index = i )
5937
- cam1_img = dataset .get_camera_image (1 , index = i )
5938
- cam2_img = dataset .get_camera_image (2 , index = i )
5939
- cam3_img = dataset .get_camera_image (3 , index = i )
5941
+ lidar_timestamps = dataset .velodyne_data .timestamps
5942
+ xyzi = dataset .velodyne_data .load_scan (lidar_timestamps [0 ])
5940
5943
5941
- img_size = cam0_img .shape
5942
- img_new_size = (int (img_size [1 ] / 2.0 ), int (img_size [0 ] / 2.0 ))
5944
+ # fig = plt.figure(figsize=(12, 10))
5945
+ # ax: Axes3D = plt.axes(projection='3d')
5946
+ # ax.scatter(xyzi[::100, 0], xyzi[::100, 1], xyzi[::100, 2])
5947
+ # ax.set_xlabel("x [m]")
5948
+ # ax.set_ylabel("y [m]")
5949
+ # ax.set_zlabel("z [m]")
5950
+ # plot_set_axes_equal(ax)
5951
+ # plt.show()
5943
5952
5944
- cam0_img = cv2 .resize (cam0_img , img_new_size )
5945
- cam1_img = cv2 .resize (cam1_img , img_new_size )
5946
- cam2_img = cv2 .resize (cam2_img , img_new_size )
5947
- cam3_img = cv2 .resize (cam3_img , img_new_size )
5953
+ # for ts in lidar_timestamps[:10]:
5954
+ # xyzi = dataset.velodyne_data.load_scan(ts)
5948
5955
5949
- cv2 .imshow ("viz" , cv2 .vconcat ([cam0_img , cam1_img , cam2_img , cam3_img ]))
5950
- cv2 .waitKey (0 )
5951
-
5952
- self .assertTrue (dataset is not None )
5956
+ # for i in range(dataset.num_camera_images()):
5957
+ # cam0_img = dataset.get_camera_image(0, index=i)
5958
+ # cam1_img = dataset.get_camera_image(1, index=i)
5959
+ # cam2_img = dataset.get_camera_image(2, index=i)
5960
+ # cam3_img = dataset.get_camera_image(3, index=i)
5961
+ #
5962
+ # img_size = cam0_img.shape
5963
+ # img_new_size = (int(img_size[1] / 2.0), int(img_size[0] / 2.0))
5964
+ #
5965
+ # cam0_img = cv2.resize(cam0_img, img_new_size)
5966
+ # cam1_img = cv2.resize(cam1_img, img_new_size)
5967
+ # cam2_img = cv2.resize(cam2_img, img_new_size)
5968
+ # cam3_img = cv2.resize(cam3_img, img_new_size)
5969
+ #
5970
+ # cv2.imshow("viz", cv2.vconcat([cam0_img, cam1_img, cam2_img, cam3_img]))
5971
+ # cv2.waitKey(0)
5972
+ #
5973
+ # self.assertTrue(dataset is not None)
5953
5974
5954
5975
5955
5976
###############################################################################
@@ -6963,6 +6984,7 @@ def get_reproj_error(self, cam_pose, feature, cam_params):
6963
6984
6964
6985
def eval (self , params , ** kwargs ):
6965
6986
""" Evaluate """
6987
+ assert self .sqrt_info
6966
6988
assert len (params ) == 3
6967
6989
assert len (params [0 ]) == 7 # Camera pose T_WC
6968
6990
assert len (params [1 ]) == 3 # Feature position (x, y, z)
@@ -7047,6 +7069,7 @@ def get_reproj_error(self, pose, cam_exts, feature, cam_params):
7047
7069
7048
7070
def eval (self , params , ** kwargs ):
7049
7071
""" Evaluate """
7072
+ assert self .sqrt_info
7050
7073
assert len (params ) == 4
7051
7074
assert len (params [0 ]) == 7
7052
7075
assert len (params [1 ]) == 7
@@ -8820,6 +8843,7 @@ def test_imu_factor_propagate(self):
8820
8843
circle_v = 0.1
8821
8844
sim_data = SimData (circle_r , circle_v , sim_cams = False )
8822
8845
imu_data = sim_data .imu0_data
8846
+ assert imu_data
8823
8847
8824
8848
# Setup imu parameters
8825
8849
noise_acc = 0.08 # accelerometer measurement noise stddev.
@@ -8873,6 +8897,7 @@ def test_imu_factor(self):
8873
8897
circle_v = 0.1
8874
8898
sim_data = SimData (circle_r , circle_v , sim_cams = False )
8875
8899
imu_data = sim_data .imu0_data
8900
+ assert imu_data
8876
8901
8877
8902
# Setup imu parameters
8878
8903
noise_acc = 0.08 # accelerometer measurement noise stddev.
@@ -9006,6 +9031,7 @@ def test_imu_factor2_propagate(self):
9006
9031
circle_v = 0.1
9007
9032
sim_data = SimData (circle_r , circle_v , sim_cams = False )
9008
9033
imu_data = sim_data .imu0_data
9034
+ assert imu_data
9009
9035
9010
9036
# Setup imu parameters
9011
9037
noise_acc = 0.08 # accelerometer measurement noise stddev.
@@ -9061,6 +9087,7 @@ def test_imu_factor2(self):
9061
9087
circle_v = 1.0
9062
9088
sim_data = SimData (circle_r , circle_v , sim_cams = False )
9063
9089
imu_data = sim_data .imu0_data
9090
+ assert imu_data
9064
9091
9065
9092
# Setup imu parameters
9066
9093
noise_acc = 0.08 # accelerometer measurement noise stddev.
@@ -10055,6 +10082,7 @@ def test_factor_graph_solve_vio(self):
10055
10082
T_CB_gnd = inv (T_BC_gnd )
10056
10083
10057
10084
# -- Build bundle adjustment problem
10085
+ assert self .sim_data .imu0_data
10058
10086
imu_data = ImuBuffer ()
10059
10087
poses = []
10060
10088
sbs = []
@@ -11173,6 +11201,10 @@ def test_estimate_pose(self):
11173
11201
# cv2.waitKey(0)
11174
11202
11175
11203
# Triangulate
11204
+ assert self .cam0_params .data
11205
+ assert self .cam1_params .data
11206
+ assert self .cam0_params .data .project_params
11207
+ assert self .cam1_params .data .project_params
11176
11208
features = []
11177
11209
T_WB = eye (4 )
11178
11210
T_BC0 = pose2tf (self .cam0_ext .param )
@@ -11262,7 +11294,7 @@ def test_euroc_mono(self):
11262
11294
if frame0_km1 is not None :
11263
11295
viz_km1 = draw_keypoints (frame0_km1 , kps0_km1 )
11264
11296
viz_k = draw_keypoints (frame0_k , kps0_k )
11265
- viz = cv2 . hconcat ([viz_km1 , viz_k ])
11297
+ viz = np . hstack ([viz_km1 , viz_k ])
11266
11298
cv2 .imshow ("Viz" , viz )
11267
11299
11268
11300
key_pressed = cv2 .waitKey (imshow_wait )
@@ -11304,7 +11336,7 @@ def test_euroc(self):
11304
11336
feature_ids , kps0 , kps1 = ft .get_keypoints ()
11305
11337
viz_i = draw_keypoints (frame0 , kps0 )
11306
11338
viz_j = draw_keypoints (frame1 , kps1 )
11307
- viz = cv2 . hconcat ([viz_i , viz_j ])
11339
+ viz = np . hstack ([viz_i , viz_j ])
11308
11340
11309
11341
cv2 .imshow ("Viz" , viz )
11310
11342
key_pressed = cv2 .waitKey (imshow_wait )
0 commit comments