SynthWorld

A city built to train robots that never see it.

An unbounded procedural world with physics, sensor models, and behaviour-tree NPCs, exporting labelled frames in COCO, KITTI, and YOLO.

4robots, one world
4sensors each
3label formats

Built with

  • Python
  • PyBullet
  • Panda3D
  • py-trees
  • Synthetic Data

2026 · Simulation

§ 01

What it does

01

Unbounded procedural city generation with Perlin-noise terrain

02

Four robot embodiments: wheeled, quadruped, arm, and drone

03

Simulated RGB, depth, LiDAR, and IMU sensors

04

Ground-truth label export to COCO, KITTI, and YOLO

05

py-trees behaviour trees driving pedestrian and vehicle NPCs

Stack
  • Python
  • PyBullet
  • Panda3D
  • py-trees
  • Synthetic Data
The long version

Real robotics datasets are expensive to collect and biased toward whatever environment you happened to have access to. SynthWorld generates the environment instead: procedural buildings, roads, and props across an unbounded city, populated with pedestrians and vehicles driven by behaviour trees.

Four embodiments are simulated — wheeled, quadruped, arm, and drone — each with RGB, depth, LiDAR, and IMU sensor models, so one scene can produce training data for platforms that share nothing but the world around them.

Physics runs on PyBullet and rendering on Panda3D, and every frame exports with ground-truth labels in COCO, KITTI, or YOLO format. That export path is what makes it a domain-adaptation tool rather than just a good-looking simulator.