This short guide shows how to run a very simple Crazyflie® simulation using Webots. It’s not realistic, feature-rich, or actively maintained, but it might be fun to play around with or help spark ideas.
If you’re looking for more serious simulators, check out our overview of simulation options.
All you need is the Webots simulator.
Let’s get something running. Here’s how to open Webots, load the Crazyflie model, and test the keyboard controls.
webots in terminal or search for it on your system).robots > bitcraze > crazyflie > crazyflie.wbt.You should now see a simulation window with a Crazyflie model.

Here’s what’s what:
More detail is available in Webots’ user interface guide.
You can view the controller code in the editor. If it’s not visible, go to the object tree, find Crazyflie "Crazyflie", click controller, then edit.
At this stage, editing the code directly isn’t supported in-place. We’ll show how to do that next.
There’s a second example that does some crude wall following.

crazyflie_apartment.wbt.A to start wall following. Press D to stop it.If things break after restarting, try the simulation reload button ().
If you want to tinker with the code, you’ll need to save the project to a writable location.
crazyflie_apartment.wbt world if needed.Try changing:
# OLD
direction = WallFollowing.WallFollowingDirection.LEFT
range_side_value = range_right_value
# NEW
direction = WallFollowing.WallFollowingDirection.RIGHT
range_side_value = range_left_value
A, the Crazyflie should follow the wall in the opposite direction.This setup is limited, but it may be a good starting point. If you want to dig into the code:
git clone https://github.com/bitcraze/crazyflie-simulation
You can find the example scenes and controller code in there. It’s also worth looking at more mature projects — see our simulation overview for recommendations.