{"posts":[{"id":20343,"title":"Introducing OverMaps360-50: real-world 360\u00b0 scenes, ready to simulate","excerpt":"What we released Today we are releasing OverMaps360-50, a free research dataset of 50 real-world 360\u00b0 walk-throughs, each delivered as a physics-certified simulation scene for MuJoCo and Isaac Sim. It weighs 1.13 TB, lives on Hugging Face under CC BY-NC 4.0, and is our second open dataset after OverMaps-1K. Every scene starts as a person [&hellip;]","content":"<h2><b>What we released<\/b><\/h2>\n<p>Today we are releasing OverMaps360-50, a free research dataset of 50 real-world 360\u00b0 walk-throughs, each delivered as a physics-certified simulation scene for MuJoCo and Isaac Sim. It weighs 1.13 TB, lives on Hugging Face under CC BY-NC 4.0, and is our second open dataset after OverMaps-1K.<\/p>\n<p>Every scene starts as a person walking a street, a park, a temple or a mall with an Insta360 X5 on a pole. It ends as a metric COLMAP reconstruction, a 3D Gaussian Splatting model, a textured mesh with a closed floor, and a simulation bundle that has passed eight physics checks. Download it from <a href=\"https:\/\/huggingface.co\/datasets\/OverTheReality\/OverMaps360_50\">Hugging Face<\/a> and explore the samples on the <a href=\"https:\/\/ovr-platform.github.io\/OVR-MAPS\/360.html\">project page<\/a>.<\/p>\n<h2><b>What&#8217;s inside<\/b><\/h2>\n<p>Fifty scenes, 1.13 TB, and every modality from the raw 360\u00b0 recording to the simulation bundle.<\/p>\n<div style=\"overflow-x:auto; margin:1.5em 0;\">\n<table style=\"width:100%; border-collapse:collapse; font-size:0.95em; line-height:1.5;\">\n<thead>\n<tr>\n<th style=\"text-align:left; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); background:rgba(128,128,128,0.15); width:28%;\">Measure<\/th>\n<th style=\"text-align:left; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); background:rgba(128,128,128,0.15);\">Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">Scenes<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">50 walk-throughs in 6 countries (Thailand, Latvia, United States, Indonesia, Spain, Mexico)<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">Fisheye frames<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">118,816 at 3840\u00d73840 per lens, median 2,404 per scene<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">Perspective views<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">594,080 pinhole views at 1600\u00d71600, 90\u00b0 FOV, 5 per fisheye frame<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">Smartphone photos<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">5,591 ARKit-tracked photos with metric poses, median 72 per scene<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">IMU<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">29.8 M gyroscope and accelerometer samples at 1 kHz, synchronised to the video<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">Walked distance<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">16.3 km, median 316 m per scene<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">Certified walkable area<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">180,000 m\u00b2, median 3,548 m\u00b2 per scene<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">3D Gaussian Splatting<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">250 M Gaussians, 5 M per scene<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">Dense points<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">381 M, median 7.4 M per scene<\/td>\n<\/tr>\n<tr>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">Volume<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">1.13 TB, median 22 GB per scene<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Each scene is a self-contained folder, so you can download one and have everything for it:<\/p>\n<ul>\n<li>the original Insta360 X5 recording with people and license plates blacked out, plus its 1 kHz IMU and a 1 Hz GPS track<\/li>\n<li>fisheye frames for both lenses, with per-frame privacy masks<\/li>\n<li>a metric COLMAP reconstruction with five perspective views per fisheye frame, and the smartphone photos registered in the same model<\/li>\n<li>a dense point cloud and a textured mesh (glTF and USDZ) whose floor is closed<\/li>\n<li>a 3DGS model in .ply and .splat, and three collision-mesh LODs at 1, 3 and 10 cm error<\/li>\n<li>a MuJoCo scene, a USD scene for Isaac Sim, a walkable navmesh, and the certification reports<\/li>\n<li>a caption plus scene type, weather, lighting, time of day and crowd density<\/li>\n<\/ul>\n<p>Every asset in a scene shares one metric frame, scaled from the ARKit trajectory of the phone.<\/p>\n<h2><b>From a walk to a simulation scene<\/b><\/h2>\n<p>Each scene is recorded by one person walking through the environment with two devices. An Insta360 X5 sits on a pole about 2.2 m above the ground, recording dual-fisheye 360\u00b0 video at 3840\u00d73840 per lens with its 1 kHz IMU embedded in the file. A smartphone running the OverTheReality app tracks the same walk with ARKit visual-inertial odometry, takes tracked photos along the way, and provides the metric scale, GPS at 1 Hz and a compass heading.<\/p>\n<p>Contributors are paid through map2earn only after the capture passes our validation pipeline. That single rule keeps the protocol tight and steers people toward geometrically interesting scenes rather than low-effort captures.<\/p>\n<p>From there, every scene goes through the same automated pipeline:<\/p>\n<ol>\n<li>Frame extraction at about 2 fps, one JPG per lens.<\/li>\n<li>Privacy masking: people and license plates are segmented on both lenses and on the smartphone photos. The masks are applied to everything we publish, including the 360\u00b0 video, and masked pixels are blacked out rather than inpainted.<\/li>\n<li>Matching and structure from motion: learned image matching over sequential, cross-lens and loop-closure pairs, then a rig-aware SfM with a fisheye model per lens and a fixed two-lens rig. The smartphone photos are registered in the same reconstruction.<\/li>\n<li>Metric alignment: the reconstruction is scaled and gravity-aligned to the ARKit trajectory, which we validated against ground-truth markers.<\/li>\n<li>Perspective views: each fisheye frame is re-projected into five pinhole views (front, left, right, up, down) with the masks carried over. This is what the dense reconstruction and the 3DGS training consume.<\/li>\n<li>Dense reconstruction and mesh: multi-view stereo on the perspective views, then a textured mesh whose floor is closed with a monocular geometry prior, so agents never fall through the gaps between the walked corridor and the walls.<\/li>\n<li>3D Gaussian Splatting: 5 M Gaussians per scene, trained on the perspective views and initialised from the dense cloud.<\/li>\n<li>Simulation bundle: the mesh becomes a MuJoCo scene with a height-field ground and convex collision parts, a USD scene for Isaac Sim, a navmesh on 0.25 m cells and three mesh LODs. Then the scene is gated, as described next.<\/li>\n<li>Annotation: a vision-language model writes the caption and assigns scene type, weather, lighting, time of day and crowd density.<\/li>\n<\/ol>\n<h2><b>Certified, not just &#8220;simulation-ready&#8221;<\/b><\/h2>\n<p>&#8220;Simulation-ready&#8221; usually means a mesh that loads. Here it means every scene passed eight physics checks in MuJoCo and a drop test in Isaac Sim before publication, and all 50 scenes reached tier T1a.<\/p>\n<p>The MuJoCo gate runs on the actual simulation bundle, not on the source mesh:<\/p>\n<div style=\"overflow-x:auto; margin:1.5em 0;\">\n<table style=\"width:100%; border-collapse:collapse; font-size:0.95em; line-height:1.5;\">\n<thead>\n<tr>\n<th style=\"text-align:center; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); background:rgba(128,128,128,0.15); width:48px;\">#<\/th>\n<th style=\"text-align:left; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); background:rgba(128,128,128,0.15);\">Check<\/th>\n<th style=\"text-align:left; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); background:rgba(128,128,128,0.15);\">Threshold<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align:center; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">1<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">Up direction, verified against the splat and the camera heights<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">\u2265 90% of cameras have ground below them<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:center; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">2<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">Scene is plumb (walls vertical)<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">tilt &lt; 2\u00b0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:center; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">3<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">Floor registration: navmesh vs walked floor, coverage of the walk<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">median &lt; 5 cm, \u2265 20% of cameras on walkable cells<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:center; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">4<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">Alignment residual between splat and collision geometry<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">&lt; 25 cm<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:center; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">5<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">Walkable area<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">\u2265 5 m\u00b2<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:center; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">6<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">Probes falling through the collision geometry<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">0%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:center; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">7<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">Probes settled within 3 s<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">\u2265 90%<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:center; padding:10px 14px; border:1px solid rgba(128,128,128,0.4); font-weight:600; vertical-align:top;\">8<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">Contact penetration, p95<\/td>\n<td style=\"padding:10px 14px; border:1px solid rgba(128,128,128,0.4); vertical-align:top;\">&lt; 20 mm<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>The Isaac Sim report is a supporting drop test: a rigid sphere released on a certified floor point, run headless with PhysX. Across the 50 scenes the measured values sit well inside the thresholds: floor registration median 0.1 cm, plumb tilt median under 0.5\u00b0, walkable area median 3,548 m\u00b2, and zero leaked probes. The per-scene numbers are in the JSON reports and in each scene&#8217;s datasheet.<\/p>\n<p>All of this runs on <a href=\"https:\/\/github.com\/OVR-Platform\/ovr-maps-360-simkit\">ovr-maps-360-simkit<\/a>, our open-source toolkit that builds the simulation bundle, the LODs and the datasheet from a scene, then gates it. Every report we ship can be reproduced with <code>simkit regate simulation\/&lt;id8&gt;.sre<\/code>, so you do not have to take our word for the certification.<\/p>\n<h2><b>Why we are releasing it<\/b><\/h2>\n<p>Spatial AI is short of real-world data that is metric, multi-modal and captured on purpose, and most of what exists sits inside a handful of large labs. We built OverMaps360-50 so that anyone working on 3D reconstruction, neural rendering, embodied AI or robot navigation can train and benchmark on real places without a capture team of their own.<\/p>\n<p>The dataset is released under Creative Commons Attribution-NonCommercial 4.0: research use is allowed and encouraged, commercial use is not. Please attribute OverTheReality and link back to the repository when you share derivatives. The certification toolkit, ovr-maps-360-simkit, is open source.<\/p>\n<p>If you publish with it, train on it or break it in an interesting way, tell us. We want to feature what the community builds on top of it.<\/p>\n<h2><b>Our second open dataset<\/b><\/h2>\n<p>OverMaps360-50 is the 360\u00b0 companion of <a href=\"https:\/\/huggingface.co\/datasets\/OverTheReality\/OverMaps_1k\">OverMaps-1K<\/a>, which we released in 2025: 1,000 real-world scenes captured with smartphones through the same map2earn protocol, over 580,000 images, with COLMAP reconstructions, metric poses, LiDAR depth where the device had it, multi-view depth maps and 3DGS models. OverMaps-1K is itself a sample of a 155,000-scene collection, and it has passed 4,000 downloads on Hugging Face.<\/p>\n<p>Where OverMaps-1K is built from photos taken around an anchor, every OverMaps360-50 scene is a continuous walk, and every scene ends in a physics-certified simulation bundle. The two share the same acquisition network, the same privacy pipeline and the same annotation fields (caption, scene type, weather, lighting, crowd density), so they can be used together as two views of how real places look and behave.<\/p>\n<h2><b>A collection that keeps growing<\/b><\/h2>\n<p>The 50 scenes are a snapshot. The full OverMaps-360Cam collection stands at 2,712 scenes across 29 countries and 125 cities, more than 500 hours of capture and 2,200 km of walked paths, about 60 TB in total. It grows continuously: every walk that passes validation is added to it, and its contributor is paid through map2earn. The dataset is growing with thousand of new scenes monthly.<\/p>\n<p>That is the DePIN part of the story. The network of mappers is the capture team, the incentive is tied to validated output rather than to raw uploads, and the collection expands wherever people are willing to walk with a camera on a pole.<\/p>\n<p>The full collection is available under a commercial license. Write to data@ovr.ai or request access from the <a href=\"https:\/\/ovr-platform.github.io\/OVR-MAPS\/360.html\">project page<\/a>.<\/p>\n<h2><b>Get started<\/b><\/h2>\n<p>One scene is about 22 GB. Download it with the Hugging Face CLI, or skip the image archives to get only the light assets (mesh, splat, IMU, poses, simulation bundle) for every scene:<\/p>\n<pre style=\"background:rgba(128,128,128,0.12); border:1px solid rgba(128,128,128,0.3); border-radius:6px; padding:14px 16px; overflow-x:auto; font-size:0.9em; line-height:1.55; white-space:pre;\"><code>pip install -U \"huggingface_hub[cli]\"\r\n\r\n# One scene (about 22 GB)\r\nhf download OverTheReality\/OverMaps360_50 \\\r\n    --include \"0313afa5-8b3c-4fb1-8245-c6b5abf738d2\/*\" \\\r\n    --repo-type dataset --local-dir .\/OverMaps360-50\r\n\r\n# Light assets of every scene, no image archives\r\nhf download OverTheReality\/OverMaps360_50 \\\r\n    --exclude \"*.tar\" \\\r\n    --repo-type dataset --local-dir .\/OverMaps360-50<\/code><\/pre>\n<p>Then step a real street in MuJoCo:<\/p>\n<pre style=\"background:rgba(128,128,128,0.12); border:1px solid rgba(128,128,128,0.3); border-radius:6px; padding:14px 16px; overflow-x:auto; font-size:0.9em; line-height:1.55; white-space:pre;\"><code>import mujoco\r\n\r\nscene = \"OverMaps360-50\/0313afa5-8b3c-4fb1-8245-c6b5abf738d2\"\r\nmodel = mujoco.MjModel.from_xml_path(f\"{scene}\/simulation\/0313afa5.sre\/scene.xml\")\r\ndata = mujoco.MjData(model)\r\nmujoco.mj_step(model, data)<\/code><\/pre>\n<p>Links:<\/p>\n<ul>\n<li>Dataset: <a href=\"https:\/\/huggingface.co\/datasets\/OverTheReality\/OverMaps360_50\">huggingface.co\/datasets\/OverTheReality\/OverMaps360_50<\/a><\/li>\n<li>Project page: <a href=\"https:\/\/ovr-platform.github.io\/OVR-MAPS\/360.html\">ovr-platform.github.io\/OVR-MAPS\/360.html<\/a><\/li>\n<li>Certification toolkit: <a href=\"https:\/\/github.com\/OVR-Platform\/ovr-maps-360-simkit\">github.com\/OVR-Platform\/ovr-maps-360-simkit<\/a><\/li>\n<li>OverMaps-1K: <a href=\"https:\/\/huggingface.co\/datasets\/OverTheReality\/OverMaps_1k\">huggingface.co\/datasets\/OverTheReality\/OverMaps_1k<\/a><\/li>\n<\/ul>\n<p>If you use OverMaps360-50 in your research, please cite it:<\/p>\n<pre style=\"background:rgba(128,128,128,0.12); border:1px solid rgba(128,128,128,0.3); border-radius:6px; padding:14px 16px; overflow-x:auto; font-size:0.9em; line-height:1.55; white-space:pre;\"><code>@misc{OverMaps360_50,\r\n  author = {OverTheReality},\r\n  title = {{OverMaps360-50 Dataset}},\r\n  howpublished = {Hugging Face Datasets},\r\n  url = {https:\/\/huggingface.co\/datasets\/OverTheReality\/OverMaps360_50},\r\n  year = {2026},\r\n}<\/code><\/pre>\n","permalink":"introducing-overmaps360-50","date":"2026-09-30 15:39:46","image_small":"https:\/\/blog.ovr.ai\/wp-content\/uploads\/2026\/09\/over-sim-robot-150x150.png","image_medium":"https:\/\/blog.ovr.ai\/wp-content\/uploads\/2026\/09\/over-sim-robot-300x168.png","image_large":"https:\/\/blog.ovr.ai\/wp-content\/uploads\/2026\/09\/over-sim-robot-1024x574.png","image_full":"https:\/\/blog.ovr.ai\/wp-content\/uploads\/2026\/09\/over-sim-robot.png","single_url":"https:\/\/blog.ovr.ai\/introducing-overmaps360-50\/","translations":{"en":{"single_url":"https:\/\/blog.ovr.ai\/introducing-overmaps360-50\/","permalink":"introducing-overmaps360-50"},"fr":{"single_url":"https:\/\/blog.ovr.ai\/introducing-overmaps360-50\/","permalink":"introducing-overmaps360-50"},"es":{"single_url":"https:\/\/blog.ovr.ai\/introducing-overmaps360-50\/","permalink":"introducing-overmaps360-50"},"tr":{"single_url":"https:\/\/blog.ovr.ai\/introducing-overmaps360-50\/","permalink":"introducing-overmaps360-50"},"zh":{"single_url":"https:\/\/blog.ovr.ai\/introducing-overmaps360-50\/","permalink":"introducing-overmaps360-50"}}}]}