PyBulletFleet Documentation
| Mixed Fleet Grid 100robots_grid_demo.py |
Cube Patrol 100robots_cube_patrol_demo.py |
| Mobile Pick & Drop pick_drop_mobile_100robots_demo.py |
Arm Pick & Drop pick_drop_arm_100robots_demo.py |
A kinematics-first simulation framework for large-scale multi-robot fleets, built on PyBullet and designed for fast N× real-time evaluation.
What is PyBulletFleet?
Different simulation goals call for different tools. Physics-focused simulators (Gazebo, Isaac Sim, MuJoCo, etc.) excel at accurate contact dynamics, sensor modelling, and single-robot control — but stepping a full physics engine for every robot becomes the bottleneck when you need to evaluate fleet-level systems at scale.
PyBulletFleet sits in a different part of the design space: it is a kinematics-first, fleet-scale simulation engine whose primary goal is to enable fast development and testing of the software that orchestrates robot fleets rather than the software that controls individual robots.
Design priorities
Speed over fidelity — Fleet algorithms (task allocation, traffic control, path planning) must be tested with hundreds to thousands of robots running much faster than real time. Kinematics-based stepping — teleporting each robot to its next pose without calling
stepSimulation()— removes the physics bottleneck and enables N× real-time execution.System integration over low-level control — The primary consumers are high-level systems: WMS (Warehouse Management Systems), task orchestrators, fleet managers, and monitoring dashboards. These systems issue goals, observe progress via state snapshots, and react to events — they do not need joint-level torque feedback.
Scale over detail — Validating behaviour at 100+ robot scale matters more than modelling individual link dynamics or sensor noise.
Interoperability — The simulation is designed around a callback-driven step loop and snapshot-friendly state model, so that it can be plugged into larger orchestration frameworks, replay pipelines, or external control systems (e.g., gRPC / ROS 2) as those interfaces are built out.
Physics as an option — When physical interaction is needed (grasping, conveyor dynamics, contact verification), full PyBullet physics can be switched on per-scenario without changing the rest of the stack.
How to read this documentation
📘 Simulation Users — building simulations with PyBulletFleet:
Section |
What you’ll find |
When to read |
|---|---|---|
Installation and first simulation |
First visit |
|
Step-by-step tutorials: spawn objects, action queue, 100-robot fleet |
Writing your first simulation |
|
Detection method, per-object modes, spatial hash tuning |
Configuring collision for your scene |
|
Adding your own profiling metrics |
Measuring your custom logic |
|
YAML parameter reference |
Looking up a specific setting |
|
Design goals, mode summary, two-phase pipeline |
Understanding the collision system |
|
Performance tuning workflow |
Improving simulation speed |
|
Auto-generated module docs |
Looking up a specific class or method |
🔧 PyBulletFleet Developers — extending or debugging the framework:
Section |
What you’ll find |
When to read |
|---|---|---|
Design decisions, collision internals, spatial hash grid |
Understanding why things work the way they do |
|
Internal component profiling |
Diagnosing bottlenecks |
|
LazyLogger, performance-safe logging |
Adding or reviewing log output |
|
Benchmark suite, profiling scripts, experiments |
Deep performance analysis |
|
Test strategy, running tests, coverage |
Contributing or debugging |
Key Features
N× real-time simulation — Kinematics-based (teleport) stepping as the default motion mode
Scalability — Tested with 100+ robots; spatial-hash collision keeps per-step cost low as fleet size grows
Physics as an option — Full PyBullet physics can be enabled per-scenario when needed
High-level abstractions — Action system (MoveTo, Pick, Drop, Wait), agent managers, YAML-driven configuration
Performance at a Glance
Single test environment (Intel i7-1185G7, 32 GB RAM, Ubuntu 20.04). Results will vary by hardware.
Agents |
Real-Time Factor |
Step Time |
|---|---|---|
100 |
46× |
2.2 ms |
500 |
7.6× |
13.2 ms |
1000 |
3.3× |
30.0 ms |
2000 |
1.1× |
94.8 ms |
Kinematics mode (physics OFF), headless. See PyBullet Fleet - Performance Benchmark Suite for full data, component breakdown, and methodology.
See the Roadmap for upcoming features and integrations.