Author: Aris

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 RP2040 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.

Many of you may be familiar with the “Decentralized Swarm Demo” we have been showcasing at fairs. Today, we’re excited to introduce its upgraded version, the “Decentralized Brushless Swarm Demo”, that utilizes our latest products! Get ready for an even more impressive experience that takes swarm autonomy to the next level!

This demo utilizes the Lighthouse Positioning System for onboard positioning and peer-to-peer communication between the drones for collision avoidance. The fully autonomous takeoff/landing is achieved with the new Crazyflie 2.1 Brushless charging dock, while the bright LEDs under each Crazyflie are prototypes for a new high-power LED deck that is cooking in the Bitcraze pots at the moment.

You can appreciate the stability in this short video:

The Crazyflie 2.1 Brushless Swarm is much more robust and stable than the normal Crazyflie Swarm, as the new powerful motors allow each drone to perform quick maneuvers to avoid its neighbors. We also observed a much longer flight time than we had with Crazyflie 2.1+ – a full swarm of 9 copters could stay up for around 9 minutes before running out of batteries.

Using our own products—especially those in early access—is a crucial part of development. It allows us to encounter real-world issues that our users might face. In this case, we discovered that Lighthouse decks could be damaged during charging if pins protrude from the bottom of the Brushless. This can cause wiring issues with the dock.

If you’re using these components, please ensure that no pins are sticking out beneath the Brushless, or cover the pins at the bottom. We used the battery holder deck to avoid further issues.

The release of the Crazyflie 2.1 Brushless charging dock makes it possible for everyone to recreate demos like this so make sure to check it out at our store. The source code of the demo can be found on github at the crazyflie-firmware-experimental repository under the arena-demo branch.

Hello there! I am Aris, a recent graduate from the Mechanical Engineering and Aeronautics Department at the University of Patras, Greece.

For the last couple of years, as a member of the Robotics Group at the University of Patras, I have been working with Bitcraze products, including the Crazyflie 2.1 and the Lighthouse Positioning System, exploring swarming scenarios. In my diploma thesis I investigated the autonomous transportation of an object by a swarm of two rope-tethered quadcopters, where the introduced path planning algorithm enables the swarm to approach, grasp, lift and transport the load.

The swarm grasping the load.
Trajectories Simulation

I’m excited to join Bitcraze as part of the team, where I can further develop my skills and gain valuable work experience. My principal objective is to improve the Lighthouse Positioning System and contribute to the development of a new solution for tracking in larger volumes. During this time, I look forward to deepen my knowledge on Bitcraze’s products and learn how they apply in real-world applications.