Category: Video



The Maker Faire Berlin is coming up and we are starting to get ready for showtime!

The last couple of weeks has been really busy getting ready for the Maker Faire Berlin. The plan is to show multiple Crazyflies flying autonomously enabled by the Loco positioning system. To spice up the experience of autonomous flight and to inspire the visitors to imagine future applications we have made a small light and sound show where the Crazyflie is dancing to a soundtrack Kristoffer made.

Here is a teaser where we are maybe stretching the limits a bit too far ;-):

Taking the opportunity to exhibit what we do at events like the Maker Faire Berlin is really exciting and we are looking forward to hanging out with cool people and getting feedback about what we do.

So come and visit us at Maker Faire Berlin is Sept 30 to Oct 2 at Station Berlin. You will find us in hall 3, stand 149.

See you there!

What’s better than a single Crazyflie? A swarm of them! Over a year ago our research group at the University of Southern California posted a blog post with the title “Towards CrazySwarms“, explaining how to fly six Crazyflies at the same time. Since then, we’ve expanded our fleet to 49 Crazyflies. It turns out that flying 49 requires a completely different approach. We will outline the additional challenges, and of course show a fun video!

Why is flying many Crazyflies hard? It comes down to two different categories:

  1. Communication Limitations: The standard Crazyflie software does not support controlling more than one crazyflie per radio. Putting 49 radios on a PC is possible, but would cause very high latencies because the Universal Serial Bus (USB) operates, as the name suggests, serially in 1 ms intervals. Earlier, we showed that we can share a radio for two Crazyflies by using different addresses, but 25 radios are still too much to be handled on one PC reasonably. We can overcome this issue by reducing the amount of data to be transferred. However, this forces us to increase the autonomy of the Crazyflie. Instead of sending attitude control input for each Crazyflie at a high rate, we move the controller on-board and send high-level trajectory descriptions and external position information at a low-rate. In particular, we need to:
    1. Move the position controller on-board, and
    2. Be able to handle packet losses more gracefully.

    i) is relatively easy, apart from the testing and tuning. For ii) we use an Extended Kalman Filter to estimate the state on-board. This state, consisting of the position, angle, and the translational velocities, is estimated by combining the on-board sensors (gyroscope, accelerometer) with external position information. Even if we are not able to send the external position for a while due to packet drops, the on-board sensors will keep the estimated state correct for a while.
    Finally, we implemented broadcasts (rather than 1-to-1 communication between PC and each Crazyflie) and used a number of compression tricks in order to limit the required bandwidth further. We are able to broadcast the pose (position and rotation) for all 49 Crazyflies using just three Crazyradios 100 times per second. Each Crazyflie can handle several packet drops in a row before the state estimate becomes too unreliable to fly.

  2. External Position Feedback: The on-board sensors of the Crazyflie are not sufficient to determine its position, so we need some external position feedback. In academia, optical motion capture systems are frequently used. They consist of a number of specialized, synchronized, high-speed infrared cameras. Each object to track is equipped with at least three retroreflective spheres (so-called markers), which reflect infrared light sent out by the IR light sources next to the cameras. If we know the pose of all cameras, we can use triangulation to determine the 3D positions of all retroreflective markers.Traditionally, motion capture systems require that each object has a unique arrangement of markers; this allows to determine each object’s position from a single frame of marker data by searching for its unique pattern. Unfortunately,  the Crazyflie is too small to have 49 unique marker arrangements that can be reliably distinguished. To solve that issue, we put the Crazyflies at known positions initially and use their marker arrangement to track their position and pose over time, at 100 Hz. This allows us to use the same marker arrangement for each Crazyflie.


Putting that together (combined with an improved controller), allows us to create nice formations:

So what is next? Eventually, we will integrate our changes into the various projects (including the firmwares and the ROS driver), allowing everyone to work on and with CrazySwarms.

Have fun flieing!

Wolfgang Hönig
PhD Student
Automatic Coordination of Teams Laboratory
University of Southern California
James Preiss
PhD Student
Robotics Embedded Systems Laboratory
University of Southern California

We are right now eagerly awaiting the first batch of the Loco positioning system to be done and ready for shipping. The interest for the early access release has been very encouraging and we are super happy about the attention we have received from all around the world.

We have made a new video about how to get started with the Loco positioning system that we hope you will enjoy. The video is showing the process from receiving the Loco Positioning system up to having an autonomous flying Crazyflie. The written information can be found on the wiki.

While it is a central part of a quadcopter the core of the Crazyflie 2.0 had not moved since we released it. We deemed it to be good enough, it was flying and going fast after all.

Recently TheSeanKelly from the community did not hear it that way and started investigating the flight performance starting by the attitude control PID. The results so far are impressive!

Sean tuned the rate loop a lot, this is the loop responsible to control the angular rate of the Crazyflie in roll and pitch. Doing that and the attitude loop could be tweaked which we did a bit, the one responsible to control the absolute orientation of the copter. And the results is that two major issues with the flight performance seems to be greatly improved:

  • The take-off behavior: Crazyflie is currently not taking-off straight by itself. With the new settings this is fixed and at any thrust Crazyflie just goes straight up.
  • Attitude control: We had a lot of overshot in the attitude control. Basically it means that if you go forward 10 degrees and request 0 degree (level) the Crazyflie will overshoot with a negative angle causing it to stop. With the new tighter control if you ask +10degrees pitch the crazyflie accelerates and if you ask 0 it just stop accelerating. It will then continue at nearly constant speed. This is the “correct” behavior. This also means that the Crazyflie now reacts much more precisely and quickly to joystick controls.

We have tried to make a short video to show the new performance. Though the attitude control is really hard to show. We installed a test pilot on our Crazyflie that shows how much the new parameters helps in overall stability (I have tried to steer with old parameters as hard as I was steering with the new one). We also show more stability in pretty windy condition.

These new parameter have been pushed protected by an experimental flag. After more testing the official firmware will have much better flight performance out of the box :-).

As we already talked before in a couple of post, we are currently developping a local positioning system for the Crazyflie based on ultra-wide-band radio DWM1000. This is one of our main focus currently so we wanted to post a short update on our progress.

We have assembled and shipped a couple of LPS system already and so far the performance and progress are great. We now think that we have the copter flying as good as we can have it without running sensor fusion and the control loop in the Crazyflie microcontroller. Next step is to integrate algorithms in the Crazyflie.

We are currently working hard at finishing the design to make it ready for production. We will write more updates about that so stay tuned :).

We have shot a short video demonstrating the current state, see after the video for more information about the setup:

To make this video we have installed 6 anchors. 3 are above the room and 3 at about 50cm from the ground. The Crazyflie has a LPS deck and ranges in a round-robing fashion with all 6 anchors. The ROS driver pulls the ranging, estimate the Crazyflie position, and calculate a corrected roll/pitch/thrust in order to keep it at the pre-defined setpoint. The Yaw is not controlled externally, it is kept by the Crazyflie internal gyroscope only.

The ROS computer was setup according to the instruction on our wiki, and by launching the pf_hover launch file:

roslaunch bitcraze_lps_estimator dwm_loc_pf_hover.launch uri:=radio://0/110/2M x:=1.5 y:=5 z:=1.2

Last week we where happy to learn that engineers at Stanford’s Biomimetics and Dexterous Manipulation Lab have been using the Crazyflie 2.0 as a prototyping tool when creating the robot SCAMP Stanford Climbing and Aerial Maneuvering Platform.

This very impressing work centers around the ability for a drone to actually land on vertical surfaces. In addition to this  the robot climb along that surface. Read more here and here. Really cool!

One of the future usages the researchers mention is to help out in the rescue work after earthquakes and other catastrophes. We are so proud that our drone is used in this research field!


If you haven’t watched it already, make sure to watch the TED talk “Raffaello D’Andrea: Meet the dazzling flying machines of the future”!

We are super excited to see that they use the Crazyflie 2.0 drones for the firefly swarm demo in the end of the talk. After all, our goal is to enable people to test their ideas, so this awesome demo makes us thrilled!

While digging around in our office looking for a board we found a piezo buzzer we bought a while back. The reason for buying it was to test some buzzer functionality to the Crazyflie 2.0, but we forgot about it. But now that we found it again we got to work 🙂 We documented the build in our hacks section on the wiki, but here’s a quick run down.

  • Get a piezo buzzer and a Crazyflie 2.0 prototype deck
  • Solder it to the RX2/TX2 pins (pinout)
  • Clone and build custom firmware (dev-buzzer branch)
  • Play around with the parameters in the buzzer group
    • Set buzzer.effect for different effects
    • Set buzzer.melody for different melodies (with buzzer.effect = 2)

If you want to add new melodies or effects, have a look in the modules/src/buzzer.c file 🙂

Here’s a Vine with the result (enabling sound is a good idea 🙂 )

On a side note Seeedstudio will start shipping out the CCW propeller replacements this week. If you still haven’t filled in the replacement form it’s not too late, here’s the form.

We are really happy to announce that we are starting the pre-order for the Crazyflie 2.0 today! After spending nearly 10 months doing development, we have reached a point where we are very happy with the design and the performance. Now all we have to do is to kick off the production and that’s where the pre-order comes in.

During the next three weeks we will be taking pre-orders for the Crazyflie 2.0 and related products. After the three weeks has passed we will start the production and the current estimate for shipping the products is the second week of December. As a reward to users that want to help us out by pre-ordering our products, we are lowering the prices with about 15% until the 16th of October when the pre-order ends.

So, just to clarify:

  • Pre-order end: 16th of October
  • Estimated shipping: Second week of December

If you want to know more about the Crazyflie 2.0 and what it’s about, then have a look at the Crazyflie 2.0 product page. It explains a bit about the communication (Bluetooth LE and Crazyradio), the expansion boards and gives you an idea what you could use the platform for. The Crazyflie 2.0 developed with developers in mind, so it features thins like wireless firmware upgrade, real-time parameter setting/getting and data logging using graphs. To make it easier for developers to get going we provide a pre-installed virtual machine that contains most of our tool-chains for building firmware and software, as well as KiCad for the hardware design.

For the Crazyflie 2.0 pre-order we aren’t just making the Crazyflie 2.0 available, we are launching a full set of products to support it. Here’s the list of the main products and the expansion boards that are included in the pre-order:

  • Crazyflie 2.0: The next generation of our flying open development platform with lots of new features
  • Crazyradio PA: The same mechanical footprint and price as the current Crazyradio, but now with a power amplifier that we have tested to above 1km range (line-of-sight) with the Crazyflie 2.0
  • Debug adapter kit: An easy way to debug the nRF51 and STM32F4 on the Crazyflie 2.0 by using an adapter board for connecting a standard 20-pin/100mil JTAG or 10-pin/50mil Cortex-debug cable
  • LED-ring expansion board: Fly into the night in style with this expansion board featuring 12 bright RGB LEDs that can be individually controlled and two strong white front-facing LEDs
  • Qi expansion board: Charge your Crazyflie 2.0 without any wires with this inductive charging expansion board using Qi
  • Breakout expansion board: Easy solderless prototyping with a board designed to fit a breadboard to try out your designs on the ground
  • Prototype expansion board: With space for prototyping and access to all the pins in the Crazyflie 2.0 expansion port there’s lots of possibilities with this board

We are also including all the spare parts in the pre-order to make sure that everyone gets a chance to get what they need together with their Crazyflie 2.0. Here’s the list of parts:

For the release we wanted to make a video explaining a bit the new platform, but since we have been really short on time we’re not done yet. Instead we are publishing a short video showing the Crazyflie 2.0 in action together with the LED-ring expansion board. The video also features the traffic light hack we did a few weeks ago.

Have a look at the Getting Started page for the Crazyflie 2.0 for assembly instructions or the wiki documentation for the project to see how to assemble the new solderless Crazyflie. There’s also some Expansion port documentation available as well as User Guide. We are still working on filling out more of the documentation, so bare with us. With the hardware completed we are now refocusing on the firmware and software. We have built in lots of neat features into the new Crazyflie 2.0 hardware that we now need to add software support for. So over the coming months we will be working on the iOS/Android apps and the Crazyflie PC client as well as the firmware. We will of course keep everyone updated of the progress here on our blog. Once the Crazyflie 2.0 products start shipping we will publish all the code and hardware design on our GitHub.

Starting with the pre-order of the Crazyflie 2.0 we are also lowering the price for the current version of the Crazyflie. The Crazyflie Nano Quadcopter 10-kit is lowered from $149 to $116 and the bundle with the Crazyradio is lowered from $179 to $146. So if you can’t wait until December then have a look at the current version over at Seeedstudio.

Finally it’s getting really close and we are very excited to say that the pre-order of the Crazyflie 2.0 will start this week! We will post more details about it during the week, until then here’s a short teaser from our release video 🙂