Data Structure

On this page

The main data for the Invisible Map is stored in JSON (JavaScript Object Notation) files. There are two sets of JSON files; the raw data, which is collected by Invisible Map Creator and uploaded to Firebase, and the processed data, which is written by the back-end Invisible Map Generation code and uploaded to Firebase. The processed data is read by Invisible Map so that the user can interact with the finished map.

Raw Map Data

Note as of 6/17/2021: This structure is only implemented in the floor-detection branch of the InvisibleMap repository, and can only be read by the code in the floor-detection branch of invisible-map-generation. Older maps will not work with the floor-detection back-end code and newer maps will not work with the current master branch back-end code.

Note as of 8/3/2021: The code that collects plane data has been commented out due to memory issues during map creation. Maps located in the Firebase invisible-map-sandbox database have empty structures where planes are involved in the data. The commented out code that updates plane data is in ARView.swift in InvisibleMapCreator2 (lines 81-88).

The overall structure of the raw data is a dictionary with 5 keys: map_id, pose_data, tag_data, location_data (the waypoints or points of interest recorded during map creation), and plane_data. Each of these entries with the exception of map_id is another dictionary. The full structure of the file is detailed below in a nested bulleted list.

Processed Map Data

The processed data JSON stores the optimized positions of the odometry, tags and the waypoints. The full structure is detailed below.