Today’s blogpost comes from Joseph La Delfa, who is currently doing his Industrial Post-Doc with Bitcraze.
The Qi deck and the Brushless charging dock allow you to start charging a Crazyflie quickly, without having to fiddle with a plug or a battery change. But when you need to charge 10 or more Crazyflies 2.x and don’t want the weight penalty of the Qi deck then some some other solutions are needed.
This blog post is about a couple of chargers I made for the Crazyflie 2.x for my research prototypes. I research interaction design, which often means building something new and then putting in the hands of a user and getting them to try it out. What is important in these scenarios is that when there is unexpected behavior, they don’t think that the prototype is bugging out or broken. One way to prevent this is to make things that have a higher quality to raise the expectations of the user. This can help them stay immersed in the interaction and not look over to me when there is unexpected behavior and say… “is this working properly?”
Wiring Harness for Drone Chi
This charger is essentially a pair of JST 2-pin extensions for a 1S battery charger that I soldered together. Then weaved them through some fake hanging plants. With the drones already looking like flowers for the Drone Chi project, they blended well into the fake plants and all the wires were well hidden. When you wanted to fly, you would disconnect the battery from the wiring harness. Plus it brings the nice experience of picking a flower from a bush before you start flying!
Magnetic Mantle Piece Charger for How To Train Your Drone
This charger allows 10 Crazyflies to charge from their USB ports, but on a bit of a statement piece charger that lived in the lounge room of a group of friends who were participating in a month-long user study during the How to Train Your Drone Project. This charger contained a powered USB hub with cables running through each of the medusa like tubes rising from the base. What made this charger special was the magnetic USB charging adapters (available widely on e-bay, amazon, temu etc) that were plugged into the the USB ports on the drone. These allowed you to securely place the drone on the charger in one action as the magnetic cables integrated into the charger were always close enough to the drone when you set it down, giving you a satisfying * click * every time! They also gave off a eerie blue glow which I think matched the Crazyflie well.
At Bitcraze we like making decks! When we released the Crazyflie 2.0 we were really excited about the new deck connector we put on the platform. Using this, it was suddenly possible to expand the platform, adding new, more complex functionalities years after the initial release. It’s something that we really like about the Crazyflie. Over the years we’ve released a bunch of decks and also updated a few of them as new, improved sensors became available.
Deck limitations
As the number of decks has increased, along with their complexity, we’ve started noticing some limitations. We’ve touched on this a while back in this blog post where you can find more details, but here’s a short summary:
Resource sharing in the STM32F4: Mainly DMA conflicts between different peripherals, like conflict for DMA using DSHOT on the Crazyflie 2.1 Brushless and the WS2812b driver for the LED-ring.
Bus arbitration and performance: Some decks make excessive use of some buses, which can cause issues with certain combinations like the LPS deck and micro-SD card deck.
Deck combinations and pins: As more interesting decks are released and we’re able to carry more weight, users want to combine more decks. Although we try to be smart with pin allocation there’s a limit on how you can combine the decks.
MCUs on decks: As the complexity increases, separate MCUs are also included on the decks. Although working well for offloading the main MCUs on the Crazyflie, the complexity quickly increases both for usage and for development. This is something we’ve seen with the AI deck for instance, which contains 2 MCUs.
Like suggested in the original blog post, the solution will be to move more intelligence onto the decks by putting MCUs on them. These MCUs can then use the hardware on the decks without sharing resources with the main Crazyflie MCU and can also help process the data to make the communication with the Crazyflie more high level. But doing this will of course then make the issue raised in the last point even worse. To mitigate this we need to have better control over the decks. Our proposed solution for this is adding a new MCU to the decks which acts as a controller. Being able to switch on/off power, bootstrap and control various aspects of the deck. Some of the features include:
Uniquely identify the deck and also identify the model of deck – This will replace the current 1-wire memory subsystem we have today
Uses minimal amount of pins, basically only using the I2C pins
Use the MCU pins as GPIOs or as various peripherals:
GPIO expander enables switching on/off onboard power supply, simplifying bootloading and saving power. It also enables bootstrapping of onboard MCUs, which can be used for selecting what output pins to use for various functionality
Bridge I2C to SPI/UART for bootloading of onboard MCU. This would of course be much slower than using the SPI/UART but would simplify bootloading and not need pins allocated on the expansion connector
Bootstrapping the board makes it possible to to implement support for duplicate decks, for instance selecting what UART (1 or 2) on startup makes it possible for the driver on the Crazyflie to start up each deck and select what UART is used.
Our implementation
For our implementation of this system we have selected the STM32C011 MCU, as it comes in various packages from very small to slightly larger, so it’s possible to solder by hand. It also has the features we needed. To maximize the the flexibility of the system we don’t want to program in the I2C addresses in production. Even if you disregard the fact that the address might conflict with other I2C devices in the future, it will definitely conflict if you add two of the same type of deck.
To fix this we will automatically detect all the deck-ctrl MCUs on the bus and then move them to individual addresses. This will enable us to change the addresses in the future if there are collisions and also allows multiple instances of the same deck attached at the same time. Below is a video demonstrating this in action, implemented on custom development decks we’ve made for simplifying firmware development. Each deck runs the same deck-ctrl firmware and all 3 are auto-detected at startup.
The future
The current solution will be used on our next two upcoming decks: the new LED deck and the new Lighthouse deck. As we get closer to their release we will publish the firmware for the deck-ctrl MCU on GitHub. If the design turns out well we will keep rolling it out to future decks, increasing the flexibility of the deck expansion system even more.
You might already be familiar with the Crazyflie’s presence in numerous publications across various research fields. However, in this blog post, we’ll return to the basics and showcase some robotics concepts that can be taught using our platform. The Crazyflie has already found its way into several classrooms such as the “Introduction to Robotics” in the Mechanical & Aerospace Engineering Department at Princeton University, the “Introduction to Control of Unmanned Aerial Vehicles” at UC Berkeley and the “Embedded control systems” at Chalmers University of Technology. Whether you’re designing a robotics course for undergraduates or developing advanced labs for graduate students, here’s some fields where the Crazyflie can help your students grasp the fundamentals of modern robotics.
Basic Drone Principles
How does the quadcopter generate enough thrust? In which direction should the motors spin? How does the shape of a propeller affect performance? As an introduction to drones and specifically quadcopters, students can explore these basic principles behind how they work. Then, by flying them, they can better understand the three axes of motion, roll, pitch and yaw and even find out their limitations, such as the ground effect.
Control Systems
What is the difference between controllers? How does a different controller tuning affect performance? How does an estimator work? What types of commands can be sent to a drone? The Crazyflie platform offers a rich “playground” for exploring the stabilization process from sensor acquisition to motor control, that we often call “stabilizer module“. This includes a variety of controllers, estimators and commanders that can be modified to visualize results in the real world. Also, with the firmware being open-source and modular, it is relatively easy to build your own controller or estimator and integrate it to the platform.
Localization
How can a drone know its position and orientation in 3D space? What is the difference between a local and a global positioning system? With a wide variety of deck sensors and positioning systems, students can find ways to control the Crazyflie through relative or absolute position/attitude commands. The different sensing methods used in these systems are also interesting to explore – for example, IR signals from the Lighthouse Positioning System, UWB radio from the Loco Positioning System, or optical flow data from the Flow deck v2.
Autonomous Navigation
How could the Crazyflie perform a collision-free trajectory? What is the most efficient way of flying from point A to point B? In the field of autonomous navigation, the Crazyflie can be treated like any other moving robot by applying existing path planning algorithms or testing newly developed ones. Environment-aware problems are always exciting to work on and the Multi-ranger deck makes them feasible.
Swarm Robotics
What happens when you add another Crazyflie to your setup? How could multiple Crazyflies operate in a swarm? How could you make sure that they won’t collide? What is the difference between a centralized and a decentralized swarm? Scaling a system up is always challenging but also fascinating. The examples provided in our Python library help you get a swarm in the air, but it’s up to you and your students to explore how the Crazyflies should coordinate and cooperate.
Small Drone, Big Educational Impact
The Crazyflie ecosystem is a fully capable robotics lab in the palm of your hand. Its flexibility, safety, and robust API support make it ideal for hands-on learning in a wide variety of robotics fields. Integrating the Crazyflie into a university robotics curriculum, gives students the chance to explore, test, fail, and fly their way to mastery.
Lately, at home and at work during my Fun Fridays, I have been trying to learn more about 3D CAD and more precisely about FreeCAD, mostly in the context of (ab)using our 3D printers :). Inspired by a couple of Crazyradio cases that have already been published, I started working on a Crazyradio 2.0 case since this has not yet been done, I am quite happy about the result:
The design is mostly press-fit: the top and bottom parts are pressed together and hold thanks to the 3D printed layers interlocking in each-other. The LED lens is pressed in the top and the button actually slides and is guided by the top. The button is flush with the case since it is mainly a bootloader button and is not required to be pressed during normal use.
ECAD/CAD design
One of my goal when starting with this project was to experiment working both with Electronic CAD (KiCAD in my case) and Mechanical CAD (FreeCAD). There is an extension for FreeCAD that allows to go back-and-forth between the two tools, but in this case it was much simpler since my board was already finished, so I only needed to get a model of it in FreeCAD.
To do so, I made sure all the important components had 3D models in the Crazyradio electronic design. I had to import a couple of models from Mouser, and had to re-create the RGB LED in FreeCAD. I then exported it as a STEP file. This file can be imported in FreeCAD and retain all the interesting shape and surfaces useful to work with the model:
Shape binder: Keeping it DRY
Coming from the software/electronic world, we have this notion of DRY: Do not Repeat Yourself. Ideally I would like to apply the same to mechanical design and avoid as much as possible to write any measurement by hand. one way to do that with FreeCAD is with Shape binder. A good example of its use is with the LED lens.
I wanted to put a translucent lens just on top of the Crazyradio LED. One way to achieve that is to create a Shape binder of the LED top surface onto the TOP and Lens. The LED top is the yellow square in the next picture and its presence allows to align perfectly the hole in the top cover to the middle of the LED on the PCB. This prevent all hazardous manual measurement when placing the hole.
For the lens design I can go one step further, I can create a shape binder both for the LED and for the hole in the top layer, this way the shape of the lens is derived from existing geometry and, to a large extent, does not have to be specified manually:
This allows to quite easily align the lens perfectly on top of the LED. The same principle is used for the button to get it to slide and press on the PCB switch with minimal play.
Final product
I pushed the current state of the case on GitHub. It is also available on Maker World. I plan on improving the design before deciding to name it 1.0 and to eventually upload it on Printables and Thingiverse.
If you want to learn more about FreeCAD, I can recommend this great video series on YouTube, it goes through a lot of very useful functionalities like the shape binders.
With the Swedish summer upon us, things are more calm at Bitcraze. The summer is usually a time for us to look a bit more at fixing infrastructure and other things that we do not have time to work on the rest of the year. One of the things I have been looking at improving lately is the state of our Python projects.
We currently use Python as the default language for everything we do on PC. This includes the Crazyflie lib, Client and other tools for our ecosystem. Over the years the state of the Python projects have greatly evolved. It started in ~2011 with almost no project management at all; just Python files. Then we switched to setup.py/pip support. Recently the Crazyflie client got the pyproject.toml treatment. Now that most Linux distributions prevent pip install-ing packages we need to juggle with venvs in order to use or develop in Python.
In essence, Python started with an easy to use language but has now become quite complex and hard to handle. Things become even more complicated when we take into account CI in Github actions that have to test that our projects actually work with all supported version of Python on Linux/Mac/Windows.
A bit of Rust (tooling) in our Python
As you might have gathered from our previous blog posts over the years, we like Rust quite a bit at Bitcraze and hope to use it more in our products moving forward. One of the great parts of Rust is the quality of the tooling and of the compiler feedback. Cargo as a project management tool helps a lot working with projects in a comfortable and repeatable way.
This is why we are now quite interested in using uv going forward as an official tool to work with the Bitcraze Python projects. uv can replace both venv and pip and makes working with a Python project as easy as working on a Rust one with cargo. It is also very fast and efficient since it is written in … Rust of course :-).
We are also looking at switching from Flake8 to Ruff and Ty for linting and type checking respectively. These two tools, from the same developer as uv are very fast and give very high quality error messages and warnings – this should make it much easier to maintain good code quality.
These changes would mostly be on our documentation and development side. The resulting projects are still compatible with pip and can still be used as they where used before. However we would make sure the projects can be efficiently used with uv.
Example
The Crazyflie client is currently already fully able to run with uv since it already uses the ‘new’ pyproject.toml project config file. So working with the project, from within the project folder, would look like that:
crazyflie-clients-python $ uv run cfclient # Run the Crazyflie client GUI
(...)
crazyflie-clients-python $ uv run ruff check # Check the code, runs in ~100ms!
All checks passed!
crazyflie-clients-python $ uv run pre-commit
Built cfclient @ file:///(...)/crazyflie-clients-python
Uninstalled 1 package in 0.97ms
░░░░░░░░░░░░░░░░░░░░ [0/1] Installing wheels...
Installed 1 package in 4ms
[WARNING] Unstaged files detected.
[INFO] Stashing unstaged files to /home/arnaud/.cache/pre-commit/patch1750684440-121836.
flake8...............................................(no files to check)Skipped
[INFO] Restored changes from /home/arnaud/.cache/pre-commit/patch1750684440-121836.Code language:Bash(bash)
This last command is a great example of the usefulness of uv: currently one need to install pre-commit on a virtual environment, enter it, and run pre-commit in the project. With uv is just works out of the box. In the back of course, pre-commit is installed in a virtual environment in the project folder. But this is all done automatically.
Finally we will also easily be able to test multiple versions of Python:
crazyflie-clients-python $ uv run --python 3.10 pre-commit
Using CPython 3.10.18 interpreter at: /home/linuxbrew/.linuxbrew/opt/python@3.10/bin/python3.10
Removed virtual environment at: .venv
Creating virtual environment at: .venv
Built cfclient @ file:///(...)/crazyflie-clients-python
Updated https://github.com/bitcraze/crazyflie-lib-python.git (3a35d22026c2ed8251b821e4f5b10e67091f811f)
Built cflib @ git+https://github.com/bitcraze/crazyflie-lib-python.git@3a35d22026c2ed8251b821e4f5b10e67091f811f
░░░░░░░░░░░░░░░░░░░░ [0/32] Installing wheels... warning: Failed to hardlink files; falling back to full copy. This may lead to degraded performance.
Installed 32 packages in699ms
[WARNING] Unstaged files detected.
[INFO] Stashing unstaged files to /home/arnaud/.cache/pre-commit/patch1750684632-123219.
[INFO] Installing environment for https://github.com/PyCQA/flake8.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
flake8...............................................(no files to check)Skipped
[INFO] Restored changes from /home/arnaud/.cache/pre-commit/patch1750684632-123219.Code language:JavaScript(javascript)
And, for the end user, uvx also simplify running the client:
$ uvx cfclient # Pulls and run cfclient from Pypi
(...)
$ uvx --from cfclient cfloader
Built cfclient
Installed 22 packages in 164ms
==============================
CrazyLoader Flash Utility
==============================
Usage: /(...)/.cache/uv/archive-v0/_OZwn5_zGeTE-qFoK_kEG/bin/cfloader [CRTP options] <action> [parameters]
The CRTP options are described above
Crazyload option:
info : Print the info of the bootloader and quit.
Will let the target in bootloader mode
reset : Reset the device in firmware mode
flash <file> [targets] : flash the <img> binary file from the first
possible page in flash and reset to firmware
mode.Code language:HTML, XML(xml)
This last command would likely be added to all our firmware Makefiles to be used when calling make cload to flash the Crazyflie.
Feedback?
This currently does seem like a good idea to us. If you have any feedback or ideas on how to handle Python projects in a better way we are very interested to hear them. Like I mentioned, the summer is kind of a ‘clean up’ time for us so this is when we have time to look at this kind of things.
Swarm robotics has undergone rapid evolution and is now used in real-world applications. At the center of this exciting journey is the Crazyflie. Although small, its capabilities make it ideal for swarming applications in research, education, and prototyping.
Small and Safe for Indoor Use
The Crazyflie 2.1+ is a nano-quadcopter that weights only 29g. Crazyflie swarms are safe to interact with and can fly in confined spaces like labs or classrooms. If the maximum recommended payload of 15g is not enough for your application, the Crazyflie 2.1 Brushless is a suitable alternative, as it has a recommended payload of 40g. These two platforms are compatible, allowing them to cooperate within a mixed swarm of your preference.
Setting Up a Crazyflie Swarm
Transitioning from a single Crazyflie to a swarm setup requires certain adjustments. Depending on the amount of data that you want to transfer to and from your Crazyflies, you might need to use more Crazyradio 2.0 dongles. We recommend 3-4 Crazyflies per radio but under ideal conditions each one can handle up to 15 drones. To get the most out of your swarm, you will also need an external positioning system. This could be a Lighthouse positioning system, a Loco positioning system or a Motion Capture system. This allows each Crazyflie to know its absolute position in space. A very interesting swarming project is Crazyswarm where they managed to fly a swarm of 49 Crazyflies using 3 Crazyradios and different positioning systems.
The Crazyswarm project. You can find the full video here.
Available Swarming Frameworks and Examples
To make your introduction to a Crazyflie swarm smoother, our python library contains a swarm class. It allows the user to control each drone in the swarm simultaneously, sending commands either in parallel or sequentially. The library also includes examples that demonstrate the capabilities of a Crazyflie swarm. For users interested in exploring advanced decentralized swarm schemes, we support firmware that enables peer-to-peer communication. This is at an experimental level and has been used for the decentralized brushless swarm demo and for the ICRA 2025 demo.
Getting Started
Interested in building your first swarm? Explore our swarm bundles featuring multiple platforms and positioning systems that suit your research or development needs. If you are new to the Crazyflie ecosystem, make sure to follow the step-by-step swarm tutorial to better understand the setup process, communication flow, and control mechanisms involved in operating a drone swarm.
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.
Many thanks to all the participants of the workshop '25 Years Of Aerial Robotics: Challenges And Opportunities' that we had the pleasure to co-organise for #ICRA2025. The speakers, young researchers, chairpersons and, of course, the attendees all made it a unique experience🦾 pic.twitter.com/WNfUUYLtop
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.
As we mentioned in a previous blog post, the last couple of weeks have been full of exciting events in the US. We first began our adventure in Charlotte, North Carolina, where we attended the International Conference on Unmanned Aircraft Systems (ICUAS), as platinum sponsors.
We were especially thrilled to be involved because the final stage of the conference’s competition featured Crazyflies, which played a central role in the challenge.
The ICUAS UAV Competition
This year’s competition simulated a search mission in an urban environment. The goal was for teams to identify ArUco markers placed on multiple obstacles, while maintaining line-of-sight and communication among a swarm of three Crazyflies.
Each team’s UAVs launched from a designated base, navigated a known environment, and attempted to locate several targets. The drones relied on an OptiTrack system for positioning and used the AI deck as a camera for image recognition. Constant communication between the base and all UAVs was required throughout the mission.
The event, organized by the LARICS team, combined both simulation and real-world implementation. Their hard work ensured that competitors could smoothly transition their systems from digital models to actual flying drones. What followed was an intense and fun two-day hackathon.
Although the ICUAS UAV Competition drew interest from 26 teams globally, only five finalist teams made it to Charlotte to run their scenarios with real drones. In the end, it was Team Aerial Robotics from the Indian Institute of Technology Kanpur (IITK) who took home first place—congratulations to them!
While the event went smoothly overall, some communication challenges cropped up—solved creatively by placing a radio in the center of the arena. Battery management was also key, with fully charged packs being a hot commodity to maximize flight time.
Research and Presentations
Alongside the competition, the conference featured a wide range of research presentations. We were proud to see Rik present on the AI deck during a workshop focused on embodied AI.
One of the highlights was the Best Paper Award, which—although we missed the talk, was awarded to a team from Queen’s university using the Crazyflie to simulate drone landings on ocean waves. You can read their fascinating paper here: https://arxiv.org/abs/2410.21674
Final Thoughts
Overall, ICUAS 2025 was a great experience—full of innovation, collaboration, and of course, plenty of flight time. We’re grateful to the organizers, competitors, and everyone who stopped by our booth. Until next time!
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.