Skip to content

Commit af69859

Browse files
committed
Show lost tracking and no output warnings in 'sai-cli process'
1 parent 7febb54 commit af69859

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

python/cli/process/process.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,8 @@ def convert_json_taichi_to_colmap(pose_data, points_df, sparse_observations, ner
198198
frameHeight = -1
199199
intrinsics = None
200200
visualizer = None
201+
isTracking = False
202+
finalMapWritten = False
201203

202204
def blurScore(path):
203205
image = cv2.imread(path)
@@ -237,9 +239,14 @@ def post_process_point_clouds(globalPointCloud, sparse_point_cloud_df):
237239
return merged_df
238240

239241
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+
241248
if visualizer is not None:
242-
visualizer.onVioOutput(vioOutput.getCameraPose(0))
249+
visualizer.onVioOutput(vioOutput.getCameraPose(0), status=vioOutput.status)
243250

244251
def onMappingOutput(output):
245252
nonlocal savedKeyFrames
@@ -250,6 +257,7 @@ def onMappingOutput(output):
250257
nonlocal intrinsics
251258
nonlocal visualizer
252259
nonlocal useMono
260+
nonlocal finalMapWritten
253261

254262
if visualizer is not None:
255263
visualizer.onMappingOutput(output)
@@ -435,6 +443,8 @@ def write_colmap_csv(data, fn):
435443
write_colmap_csv(c_images, f"{fake_colmap}/images.txt")
436444
write_colmap_csv(c_cameras, f"{fake_colmap}/cameras.txt")
437445

446+
finalMapWritten = True
447+
438448
def copy_input_to_tmp_safe(input_dir, tmp_input):
439449
# also works if tmp dir is inside the input directory
440450
os.makedirs(tmp_input, exist_ok=True)
@@ -538,6 +548,7 @@ def detect_device_preset(input_dir):
538548
from spectacularAI.cli.visualization.visualizer import Visualizer, VisualizerArgs
539549
visArgs = VisualizerArgs()
540550
visArgs.targetFps = 30
551+
visArgs.showCameraModel = False
541552
visualizer = Visualizer(visArgs)
542553

543554
with open(tmp_input + "/vio_config.yaml", 'wt') as f:
@@ -565,6 +576,10 @@ def detect_device_preset(input_dir):
565576
except:
566577
print(f"Failed to clean temporary directory, you can delete these files manually, they are no longer required: {tmp_dir}", flush=True)
567578

579+
if not finalMapWritten:
580+
print('Mapping failed: no output generated')
581+
exit(1)
582+
568583
print("Done!\n", flush=True)
569584

570585
if args.format == 'taichi':

0 commit comments

Comments
 (0)