@@ -198,6 +198,8 @@ def convert_json_taichi_to_colmap(pose_data, points_df, sparse_observations, ner
198
198
frameHeight = - 1
199
199
intrinsics = None
200
200
visualizer = None
201
+ isTracking = False
202
+ finalMapWritten = False
201
203
202
204
def blurScore (path ):
203
205
image = cv2 .imread (path )
@@ -237,9 +239,14 @@ def post_process_point_clouds(globalPointCloud, sparse_point_cloud_df):
237
239
return merged_df
238
240
239
241
def onVioOutput (vioOutput ):
240
- nonlocal visualizer
242
+ nonlocal visualizer , isTracking
243
+ wasTracking = isTracking
244
+ isTracking = vioOutput .status == spectacularAI .TrackingStatus .TRACKING
245
+ if wasTracking and not isTracking :
246
+ print ('warning: Lost tracking!' )
247
+
241
248
if visualizer is not None :
242
- visualizer .onVioOutput (vioOutput .getCameraPose (0 ))
249
+ visualizer .onVioOutput (vioOutput .getCameraPose (0 ), status = vioOutput . status )
243
250
244
251
def onMappingOutput (output ):
245
252
nonlocal savedKeyFrames
@@ -250,6 +257,7 @@ def onMappingOutput(output):
250
257
nonlocal intrinsics
251
258
nonlocal visualizer
252
259
nonlocal useMono
260
+ nonlocal finalMapWritten
253
261
254
262
if visualizer is not None :
255
263
visualizer .onMappingOutput (output )
@@ -435,6 +443,8 @@ def write_colmap_csv(data, fn):
435
443
write_colmap_csv (c_images , f"{ fake_colmap } /images.txt" )
436
444
write_colmap_csv (c_cameras , f"{ fake_colmap } /cameras.txt" )
437
445
446
+ finalMapWritten = True
447
+
438
448
def copy_input_to_tmp_safe (input_dir , tmp_input ):
439
449
# also works if tmp dir is inside the input directory
440
450
os .makedirs (tmp_input , exist_ok = True )
@@ -538,6 +548,7 @@ def detect_device_preset(input_dir):
538
548
from spectacularAI .cli .visualization .visualizer import Visualizer , VisualizerArgs
539
549
visArgs = VisualizerArgs ()
540
550
visArgs .targetFps = 30
551
+ visArgs .showCameraModel = False
541
552
visualizer = Visualizer (visArgs )
542
553
543
554
with open (tmp_input + "/vio_config.yaml" , 'wt' ) as f :
@@ -565,6 +576,10 @@ def detect_device_preset(input_dir):
565
576
except :
566
577
print (f"Failed to clean temporary directory, you can delete these files manually, they are no longer required: { tmp_dir } " , flush = True )
567
578
579
+ if not finalMapWritten :
580
+ print ('Mapping failed: no output generated' )
581
+ exit (1 )
582
+
568
583
print ("Done!\n " , flush = True )
569
584
570
585
if args .format == 'taichi' :
0 commit comments