Category: Crazyflie

A couple of weeks ago, we were at ICRA 2025 in Atlanta. This year’s ICRA drew over 7,000 attendees, making it the biggest edition yet. We had a booth at the exhibition where we showed our decentralized swarm demo. The setup included a mix of Crazyflie 2.1+ units with Qi charging decks and Crazyflie 2.1 Brushless platforms with our new charging dock. The entire swarm operated onboard, with two Lighthouse base stations for positioning. More details about the setup can be found in the recent swarm demo blog post.

8 Crazyflies flying simultaneously in our decentralized swarm at ICRA 2025

Some of the brushless drones carried our high-powered LED deck prototype to make the swarm more visible and engaging. One of the drones also had a prototype camera streaming deck, which held up well despite the busy wireless environment.

A Different Perspective

This year we were also invited to participate in a workshop: 25 Years of Aerial Robotics: Challenges and Opportunities, where I (Rik) gave a short presentation about the evolution of positioning in the Crazyflie, from webcam-based AruCo marker tracking to the systems we use today.

Usually, we spend most of our time on the exhibition floor, so being part of a workshop like this was a different experience. It was interesting to hear researchers mention the Crazyflie in their work without needing to explain what it is. That kind of familiarity isn’t something we take for granted, and it was nice to see.

The workshop also gave us a chance to talk with both established researchers and newer faces in the field. What stood out most was hearing how people are using the Crazyflie in their work today. It’s very rewarding to see how what we do at the office connects with and supports real research.

Catching Up and Looking Around

One of the most rewarding parts of the conference was the chance to connect directly with people using the platform. We talked to many users, both current and past, and saw new research based on the platform. It was also great to reconnect with Flapper Drones, who build flapping-wing vehicles powered by the Crazyflie Bolt. And it was nice to see HopTo on the exhibition floor for the first time. The company is a spin-off from the Robotics and Intelligent Systems Lab at CityU Hong Kong, which published a Science Robotics paper on the hopcopter concept that used a Crazyflie. We also had the chance to catch up with a maintainer of CrazySim, an open-source simulator in the Crazyflie ecosystem. It’s always valuable to connect with people building on top of the platform, whether through research, hardware, or open-source tools.

Wrapping Up

ICRA 2025 was packed with activity. From demoing the swarm, to the workshop, to hallway conversations, it gave us a lot of valuable feedback and insight. Thanks to everyone who stopped by, joined a talk, or came to say hello.

As the demand for open, modular, and research-grade robotics continues to grow, Bitcraze is entering a strategic distribution partnership in China, one of the world’s most advanced and fast-evolving markets for robotics and education.

Researchers, educators, and industrial developers in China will benefit from easy access to Bitcraze’s entire product ecosystem. This includes high-performance indoor drones, positioning systems, and modular development tools widely used in academia and R&D across the globe.

Our new exclusive agreement with NOKOV Motion Capture, marks a step forward in expanding access to our autonomous drone systems and robotics development kits across China.

Expanding Access for China’s Robotics Community

Through NOKOV Motion Capture, customers in China gain professional support in Mandarin, short delivery times, and access to official training, demos, and bundled solutions. Together, we’re making it easier than ever for Chinese institutions to explore autonomous flight, precision tracking, and open-source robotics innovation.

A Powerful Integration of Motion Capture and Flight

One of the most exciting aspects of this partnership is the technical synergy between NOKOV Motion Capture’s industry-leading motion capture systems and Bitcraze’s versatile flight platforms. NOKOV Motion Capture’s optical tracking technology is already a staple in academic and industrial research labs throughout China.

By integrating this with Bitcraze’s drones and positioning systems, users can achieve highly accurate, low-latency indoor positioning, conduct repeatable flight experiments with synchronized motion data, and enjoy a seamless workflow from trajectory capture to analysis.

This combination opens up new possibilities for research in fields like robotics control, swarm behavior, artificial intelligence, and simulation.

Supporting Research, Education, and Development

Bitcraze’s systems have earned the trust of top universities and laboratories around the globe. With this partnership, we continue to support Chinese institutions working on:

  • Swarm robotics and AI research
  • STEM and engineering education
  • Indoor navigation and environment interaction
  • Lightweight aerial prototyping and simulation

We believe in giving innovators the tools they need to experiment freely, iterate faster, and go further.

Start Your Journey with Us

Whether you’re designing new robotic systems or preparing your classroom for hands-on drone-based learning, Bitcraze and NOKOV are here to support your ambitions.

If you’d like to learn more or get started with our products in China, please reach out to NOKOV for local support and information.

https://www.nokov.com/products/robotics/crazyflie-crazyswarm-platform.html

https://en.nokov.com/products/robotics-motion-capture/crazyflie-crazyswarm.html

Together, we’re making robotics innovation more accessible, collaborative, and inspiring for everyone.

The ability to attach expansion decks to the Crazyflie platforms without modifying their electronics allows experimenting with different hardware components. Most existing decks contain different types of sensors that are used for positioning and collecting data. On this Fun Friday project that has been running for the past couple of months, I explored adding mechanical principles to the Crazyflie with the long-term goal to create a working claw to grab and transfer objects.

The claw

The claw mechanism is built on a DC motor. The motor shaft is connected to a worm gear, which drives the claw to open or close depending on the direction of rotation. All the parts are 3D printed and designed from scratch.

The deck

Making the DC motor rotate in both directions requires reversing its polarity, which can be done using an H-bridge. So, the deck controlling the claw, is essentially an H-bridge that uses VCC 3V, GND and 4 GPIO pins on the Crazyflie. This way it can be compatible with the Lighthouse positioning deck. The circuit consists of 4 Mosfets (2 P-type and 2 N-type) and 2 pull-down resistors.

How it works

When designing a custom deck for the Crazyflie, you need to initialize it with its own drivers. The drivers for the H-bridge deck contain 2 basic functions; the one that opens the claw and the one that closes it. They are triggered using 2 float parameters (clawOpen and clawClose), and remain active for the number of milliseconds specified by the value of each parameter.

Experiments

Since the entire claw setup weighs 29g, I used 2 Crazyflie 2.1 Brushless drones, to equally share the weight, while one of them controls the claw. Together, they can lift up to 74g. A fishing line is attached underneath each drone and the claw can slide along it, keeping it always centered between them. For the load, I used a Crazyflie 2.1+ with a lighthouse deck attached and its motors removed, to reduce its weight. When the script starts, the initial positions are collected and a flight sequence for the swarm is created based on them. Then, the swarm takes off and approaches, grabs, lifts and transfers the load.

Next steps

The initial goal of grasping and transferring objects with a flying claw has been achieved. However, in the future I plan to make the system more robust and easy to use. Some points that I might focus on:

  • Making the whole setup lighter – replace the current motor with a lighter one, print with lighter materials.
  • Improve the controller tuning to damp the oscillations and make the flight more stable.
  • Implement a control system to keep track of the claw’s state – add limit switches.

Imagine a drone that can fly indefinitely, autonomously recharging and navigating its environment with minimal human intervention. For corporate innovators designing proof of concept solutions or researchers seeking to push the boundaries of autonomous systems, Bitcraze’s Infinite Flight project represents a novel opportunity.

Since Bitcraze first introduced the “Infinite Flight” concept in 2023, the idea of a Crazyflie drone that can operate for days, autonomously recharging and executing missions, has steadily moved from experiment to practical tool. For those working in robotics, automation, or research, this is a quick update on what’s changed and why it matters.

What’s Changed Since the last Infinite Flight?

Hardware and Firmware Improvements

  • Crazyflie 2.1 Brushless now features improved power efficiency and longer flight times, which is essential for multi-day operation.
  • Charging Dock Upgrades: The move from Qi wireless to contact-based charging has made energy transfer more reliable and reduced cycle downtime.
  • Firmware Stability: The latest firmware (2025.02) brings fixes for brushless ESC flashing, improved default parameters, and more robust long-duration performance.
  • Host Software: The cfclient now uses PyQt6 for better graphical performance, and cflib’s new full-state setpoints offer more precise control.

Navigation and Autonomy

  • Recent work on visual route following enables Crazyflie to retrace long paths using snapshot-based visual homing, reducing drift even on resource-constrained hardware.
  • The autopilot’s app layer now makes it easier to implement custom, persistent behaviors without deep firmware changes.

Real-World Applications of Infinite Flight

Research and Industry Applications

  • Environmental Monitoring: Continuous data collection for air quality or wildlife studies, where drones need to operate for days at a time.
  • Industrial Inspections: Persistent monitoring of infrastructure like wind farms or power grids, reducing the need for human intervention.
  • Swarm and Formation Flight Research: Some labs are using Crazyflie to simulate spacecraft formation flying or to test swarm coordination algorithms over long durations.
  • Route Following: The new visual homing approach allows for reliable, repeatable long-range missions, which is especially valuable for mapping or inspection tasks.

Why Infinite Flight Matters

Long-duration, autonomous operation is a key enabler for real-world robotics. The recent hardware and software updates make Crazyflie a more practical platform for those kinds of experiments-whether you’re working on persistent autonomy, adaptive navigation, or multi-agent systems.

If you’re experimenting with similar ideas or have a use case that could benefit from multi-day drone operation, it might be worth a look at the latest Infinite Flight developments. As always, feedback and collaboration from the community are welcome.

Start your Infinite Flight Now

Ready to experience the power of uninterrupted autonomous flight? The Infinite Flight Bundle equips you with all the essential tools to keep your Crazyflie 2.1 Brushless airborne around the clock.

The package leverages the Lighthouse positioning system, providing precise on-board tracking across a 5x5x2 meter area. With accuracy reaching below 10 cm and minimal jitter, your drone can safely navigate its flight path while autonomously docking on a charging pad. Once recharged, it’s ready to lift off again—enabling continuous flight operations without manual intervention.

For quite some time now we have had mobile apps that can be used to control the Crazyflie 2.x quadcopter. There is one iOS and one Android app available. There used to be a prototype of a Windows phone app but it has not survived the demise of Windows on phone (fun fact, the windows phone app can be compiled to run on XBox, however there is no USB access in there so it is quite useless). In this blog post I want to talk about the state of the apps and a possible future for them. As usual with me, the future should include a bit ot Rust :-).

Android app

The Android app is the oldest of the mobile apps, it has been created originally to be used with a Crazyradio conncted to an Android phone over USB. Then, when we released Crazyflie 2.0 with Bluetooth Low Energy, BLE was added to the app to be able to Connect to a Crazyflie without radio attached.

Over the years, the Android app has mainly been maintained by FredG, one of the very first Crazyflie contributors. The app supports controlling Crazyflie using touch-control as well as using an Android-supported Gamepad. It also has support for showing the Crazyflie console, controlling some decks and assisted flight using the flow deck.

It also supports updating the Crazyflie firmware using a Crazyradio connected on USB. This functionality is unfortunately broken since we altered the update process when changing the Crazyflie bluetooth stack last year.

The Android app is also working on Chromebook. This means that it can be used to fly the Crazyflie form a chromebook using Crazyradio of BLE. This is one of the only way to control the Crazyflie from Bluetooth on a laptop.

iOS app

The iOS app is newer and much simpler. It has had a couple of really good contribution over the years but overall it has seen much less development than the Android app. I have tried to keep it up and working but nothing more so far.

The iOS app was released when we made the Crazyflie 2.0. Since iOS does not let us communicate with USB devices, it can only work using Bluetooth Low Energy. It can control the Crazyflie using touch control as well as motion control using the IPhone gyroscope.

The iOS app also had support for updating the Crazyflie over Bluetooth, however, like for the Android app this is now broken and it has been removed in a recent release. I hope to be able to add it back soon.

With the advent of the Apple Silicon Mac, the iOS app is now also a Mac app. Like for the Android app on Chromebook, this gives the unique ability to communicate with the Crazyflie over Bluetooth from a computer. However it still has no USB support for Crazyradio and until we implement Gamepad support there is no way to control the Crazyflie from a Mac using the app.

The future

Some of the biggest issues for the development of the mobile app so far has been a lack of specification and the difficulty of re-implementing Crazyflie protocol for each app.

For the former, the apps have been created at a time where flying the Crazyflie manually was one of the major use-case. Nowadays, it is much more common to fly autonomously. This means that the apps should be able to do more to be really useful. Manual flight might still be needed to test the Crazyflie or just to play around. But the app could also have a much greater use for things like assisting in setting up positioning system or swarms. We are still not sure what would be needed or useful yet so if you have any ideas please tell us here as a comment or on Github discussions.

For the later, the difficulty of re-implementing the Crazyflie lib, this is something we have had problem with on multiple front. For example this is also a problem for ROS support and for Crazyswarm. The main problem is that the official Crazyflie lib is implemented in Python, and Python happens to not be a good choice for most cases due to limited portability and performance. One solution we have been imagining and working towards is to implement the Cazyflie lib in Rust and then implement binding for Python, C/C++, Java and Swift. This will cover our current python client, ROS, Crazyswarm as well as all the mobile app. It should allow to get much more done much more easily on mobile, since we will not have to start by re-implementing the wheel each time and will be able to focus on actual functionalities.

One idea, would be to start now with implementing the Crazyflie update algorithm in Rust and to use is from python and the mobile apps. This is a good first target, since this is a non-trivial really annoying piece of code in all languages, and it is also one that must be as bug-free as possible. So having a single implementation that is well tested and can be used everywhere would be very beneficial to the Crazyflie ecosystem.

I hope I managed to convey where we are and where we want to go with the mobile app. If you have any feedback please tell us about it.

As some of you may have noticed, the current LED-ring deck doesn’t play nice with the Crazyflie 2.1 Brushless. The culprit? A resource clash between the DSHOT motor signals and the WS2812 LED driver used for the LED-ring.

But good news! We’re prototyping a new LED deck that solves the conflict by switching to I2C communication. Not only does this fix the compatibility issue, it also gives us a chance to improve its features. Here’s what we’ve improved so far:

  • Using a highly efficient high powered LED
  • DC/DC driving circuitry to improve LED driving efficiency
  • 1W on each channel (red, green, blue, white)
  • LEDs on both sides so it can be mounted both on top or on bottom of the Crazyflie
LED-deck mounted underneath a Crazyflie 2.1 brushless
LED-deck with a 3D-printed diffuser mounted underneath the Crazyflie 2.1 brushless

The LED we’re using is very powerful and the light is emitted from a small area, so a light diffuser is needed to get a more pleasant light. Designing something that can be manufactured is the next step of the project. Make sure to follow our blog to get more updates on this project.

There has been some extended work lately related to the Lighthouse positioning system. The goal of this work is to expand the maximum base station number to 16 enabling the system to cover larger areas and support more complex use cases.

First Lighthouse 16 RP2350 prototype mounted on a development board.

Previous work

One previous attempt to enable multiple base stations using the current lighthouse deck left us with a highly untested “hacky” solution. After flashing the Crazyflie with the proper firmware, this solution requires to strategically position the base stations so that no more than 4 are visible at any given time. Then, the geometry estimation that is normally carried out by the cfclient has to be done through the multi_bs_geometry_estimation.py script in the cflib.

Last year we developed a prototype deck, used in last year’s holiday video, that had a bigger FPGA to receive the lighthouse signals and an esp32 to be able to decode and filter most of the lighthouse pulses onboard the deck. This approach ended up not working for us since it still included the moderately-hard-to-develop FPGA and the algorithm we implemented in the esp32 to identify lighthouse V2 pulses happened to be not fast enough to handle enough base stations.

Current limitations

A key factor that currently limits the maximum number of usable base stations is the Lighthouse deck which can’t handle more than 4 visible base stations at a time. Additionally, the Crazyflie’s STM32 is doing all the filtering and 16 base stations generate so much data that it would exceed the compute and memory budget we have in the Crazyflie. This was one of the main reasons to add a MCU in the deck of our last-year prototype.

Ongoing progress

The last couple of months we have redesigned a new LH-16 deck containing a RP2350 microcontroller so that part of the computation and filtering can take place on the deck, rather than on the Crazyflie. With a deck like this, it should be possible to receive large amounts of data from the base stations and filter some of it out to finally estimate the Crazyflie’s position in the Crazyflie’s STM32.

This deck has been designed to run a firmware developed by Said Alvarado-Marin from the AIO team at Inria in Paris. This firmware is able to acquire, decode and identify the FM1-encoded LFSR data stream we get from the base stations without the help of an FPGA or a big look-up table. This allows to greatly simplify the hardware and software by using only one microcontroller on the deck.

We are currently bringing-up the prototype and hope to be able to soon fly in our lab with 16 base stations. We will also be looking at making a standalone lighthouse receiver for other robots and applications. For the curious: the board under the deck in the picture in a debug board that contains everything we might need for making a standalone receiver plus everything needed to bring-up and debug the deck until we have it ready to fly.

We’re happy to announce that release 2025.02 is now available. This update includes fixes and improvements for the Crazyflie 2.1 Brushless, along with stability enhancements for the AI-deck.

Release overview

crazyflie-firmware release 2025.02 GitHub

crazyflie2-nrf-firmware release 2025.02 GitHub

aideck-esp-firmware release 2025.02 GitHub

aideck-gap8-examples release 2025.02 GitHub

cfclient (crazyflie-clients-python) release 2025.2 GitHub, PyPi

cflib (crazyflie-lib-python) release 0.1.28 GitHub, PyPi

Major changes

  • Automatically disarm Crazyflie 30 seconds after landing if manual arming is required
  • Calculate latency, receive uplink RSSI, calculate bandwidth congestion and packet rate in Python library
  • Improved AI-deck GAP8 initialization stability by delaying boot by 5 seconds if the deck is attached
  • Improved AI-deck WiFi streamer stability
  • Improved Crazyflie 2.1 Brushless platform default settings and parameters
  • Crazyflie 2.1 Brushless ESC flashing fixes
  • Modernize Python packaging

While planning for the Crazyflie 2.1 Brushless release we also decided to make our charging dock available to our users. We wanted our users to be able to make the same kind of demos we were making in our lab and showing off at fairs. To make this happen our 3D printer has been working around the clock the last couple of weeks, churning out as many charging docks as possible. And now we’re finally ready to put some in stock 🎉 So make sure to check out the Charging dock in the E-store if you want to keep your Crazyflie 2.1 Bushless ready to fly at all times!

The charging dock is the same version we use in our flight lab, you might have spotted it in previous videos (like this one from last week). It’s also the dock we will be using our for swarming demos at fairs (like this one) in the future. Compared to the Qi deck, using this solution we save a lot of weight as well as maintain the possibility of having downwards-facing decks (like the Flow) mounted.

Although the main usage is for swarming (with autonomous takeoff/landing) you can also use it as just a charging dock, placing it here each time you’ve done some flying in the lab. This ensures that your Crazyflie is prepared for the next round of experiments.

If you’re interested in seeing a bit of history, have a look at some of our older blog posts about the charger. From the first prototypes, passed a fancy version with LEDs and WiFi and finally ended in the currently more sleek version we have today.

It’s hard to believe it’s already been almost a month since the Crazyflie 2.1 Brushless was released. We know some of you have already had the chance to take it for a spin, and we’re really excited to hear what you think.

Here at the office, we have started using them a lot – to discover gaps in the documentation, to test our new features, or simply to make nice trajectories during a Fun Friday as shown here:

We’re constantly amazed by it and the new capacity it brings… But, interestingly, we haven’t received many support questions so far… which has us wondering—did we accidentally make it too good? Jokes aside, we’d love to get your thoughts! Whether you have feedback, questions, or just want to share your experience, we’re all ears.

We have a quick form for you here to fill out – it takes a couple of minutes and would help us a lot:

https://docs.google.com/forms/d/e/1FAIpQLSfjnTdUQtCEv9isk4UbASLbe1AxESGtT8Z2q9OfSba-fxYg7g/viewform?usp=sharing

Of course, we’re always available by email if there is more you wish to say: contact@bitcraze.io.