Category: Loco Positioning

We have spent most of our time working on the two way ranging in the Loco Positioning system lately, mainly on features that are not directly related to the actual ranging but such as making it easier to configure and upgrade the anchors. As a result we have not exercised the TDoA mode in a while, so on our Fun Friday we wanted to play a bit with that and try to fly a small swarm with some sort of coordinated autonomous flight.

Setup

We have a Loco Positioning system set up in the basement, we call it the flight lab to make it sound more fancy! The setup has been 6 anchors with three anchors in the ceiling and three on the floor, configured as triangles pointing in opposite directions. When using two way ranging that is fine as the positioning works pretty well outside the volume defined by the anchors. For TDoA on the other hand, the accuracy of the estimated position degrades rapidly when you go outside the convex hull. We decided to add two more anchors (to a total of eight) and arrange them as the corners of a box. A few hours and mounting/cabling later we were ready to try it out.

We modified the swarmSequence script to suite my (limited) space and set it up to fly four Crazyflies in a square, moving them to the next corner of the square every 5 seconds. Next problem was to find 4 working Crazyflies and Loco Positioning decks. We have a few Crazyflies lying around but a fair number of them have been modified in one way or another but finally we had the hardware we needed and could run the script. After a couple of failed tries (out of battery and such) we shot this video

Lessons learned

So what did we learn from this exercise? Adding two more anchors and changing anchor positions improved the positioning significantly. We have seen earlier that TDoA is less accurate than two way ranging, but better anchor positions reduces the problem. We could also fly the swarm using our example python script (not using ROS) without too much work and trouble, even though the TDoA mode still is very experimental.

In this flight we used the stock controller and just moved the set point to the next desired position for each copter. We are really looking forward to try out the improved controller and trajectory planning that we showed at Fosdem in combination with the TDoA mode, we think it will improve the performance a lot!

For the third year some of us from Bitcraze visited Fosdem, the biggest open-source European conference. Like the other years we enjoyed being there a lot and we had a great time hanging-out with community members like Fred.

Fred presented a great lightning talk about the news in the Crazyflie galaxy, the video and slide are already available. 

Arnaud talked about the Loco positioning system. The talk and the demo, went well. Unfortunately the video from the talk is not available yet, we will tweet it and add it to this post as soon as it is online.

The Loco Positioning talk was a great opportunity for us to test the most recent bleeding edge additions to the Crazyflie autonomous algorithms. We flew the new non-linear controller from Mike Hammer using trajectory generation from Marcus Greiff. The non linear controller uses setpoints not only of position but also of velocity and acceleration to control the Crazyflie. This is where trajectory generation is useful: if you can generate a trajectory and calculate position, velocity and acceleration over time, you can feed all this information to the controller and the controller will be able to do a much better job following your trajectory. This enabled us to fly the Crazyflie fairly aggressively the week before the FOSDEM talk:

In this video the Crazyflie is accelerating to about 2g continuously to keep the trajectory. We were a bit concerned to fly such aggressive maneuvers in public without more testing so we designed a slightly safer demo the night before the talk in our hotel room:

This trajectory was successfully flown in the demo and shows the performance of this new controller. There has been a lot happening with the Crazyflie control algorithms lately: Marcus, Mike and Wolfgang have all made new controllers and Marcus has developed an on-board trajectory generator. There is still some work required in the firmware architecture to merge these into Master, but we hope this can be done in the coming weeks. Follow the Crazyflie firmware commits and github tickets if you are interested in the progress.

During the fall of 2016 fashion designer Maartje Dijkstra have in collaboration with music producer Beorn Lebenstedt (Newk) and engineer Erik Overmeire been working with the creation “TranSwarm Entities”, a dress made out of 3D prints accompanied by autonomously flying Crazyflies. The project was made during the Fashion Fusion Lab, a three-month workshop in which selected teams got to work on their fashion concepts. Maartje and her team used our Loco positioning system to enable 4 Crazyflies to do a “dance” around the dress during the show.

 

Copyright Fashion Fusion

Here is how Maartje describes the creation:

“The sculptural high fashion dress is totally build up out of small fragments (bird skulls), like cells building an organism.The parts are manual 3D printed and after printing all connected together by hand with polyester wires and green leather. The technology part is integrated in a special way. 4 small drones, that have given the same black 3D printed appearance as the dress, fly up from places inside so it looks like parts of the dress are flying away.The drones fly on the beats and melodies of music producer Newk around the model creating a little swarm. The shoes are digital 3D printed but finished manually.”

The finalists from the Fashion Fusion Lab got to compete during the Berlin Fashion Week at the “Fashion Fusion Challenge” and we are happy to announce that Maartje together with her team got the third place

We at Bitcraze are very happy for Maartje and her team and think it’s very exciting to see the Crazyflie 2.0 and the Loco positioning system being used in such a different context. It shows again the potential for future applications and how versatile the Crazyflie and the Loco positioning system is. 

Here is a video showing the dress:

In this beginning of 2017 we are proud to announce that there are two new decks for the Crazyflie 2.0.

The first one has been in the works for quite some time, it is the Micro SD card deck. It enables read and write access to a SD-Card from the Crazyflie firmware (where we have also implemented FAT filesystem support). Our first use case for this deck has been to implement high speed logging of the IMU sensors: the SD-Card has much higher bandwidth than the radio so it allowed us to log all the sensor values for later analysis. Another use-case could be to read an autonomous sequence from a file on the SD-Card and implement fully autonomous sequencing in the Crazyflie when used in the Loco Positioning System for example. The SD-Card deck is already available on Bitcraze web-shop.

The Second deck is the Z-Ranger deck, it is a laser time-of-flight ranging deck that measures the distance to the ground. We talked about this deck in a previous post. The manufacturing of the deck should be finished soon and so it will be available in our shop shortly. When using this new deck, the altitude hold stability between 0 and 1.5 to 2m height is greatly improved.

On a final note, FOSDEM 2017 is this coming up this weekend and we are looking forward to meet you there. There will be two presentations related to the Crazyflie, if you want to meet us come at these presentations or get in touch in the comment or by mail. The two presentations are:

We hope to see you there!

Quite a lot has happened in the community in the latest month so we though we would dedicate this Monday post to you :-).

On the firmware side, the loco positioning system has sparked a lot of contribution. Most prominently is the Extended Kalman Filter by Mike Hammer and later improvement by multiple contributors. The Crazyflie is getting more stable and capable week after week which is awesome. Wolfgang from USC has also pushed enhancement coming from its CrazySwarm which will one day gives to everyone the capability to fly big Crazyflie swarm more easily.

On the clients side, we just pushed a new version of the iOS app to the app-store. The main improvement is the new tilt control mode implemented by EMart002 and beta-tested by a community member.

There has also been a new release of the Android client by Fred. This new version adds support for log and param using the Crazyradio. This way it is possible to get telemetry from the Crazyflie like the battery voltage and there is an experimental implementation of altitude-hold when using gamepad.

Running a beta (test-flight) version for the iOS client has been a good experience as it allowed to get direct feedback on functionalities. If there is interest we could release and announce beta versions for both Android and iOS in the future.

Finally last but not the least, there will be a new Crazyflie client in town: The Crazyserver created by Mike Hamer and written in go. It is a cross-platform, install-less, dependency-less server for a fleet of Crazyflies. It exposes a language-independent API, an HTTP rest API, to be able to connect and control any number of Crazyflie from any programming language. It will also include sockets (UDP, TCP and Websockets) to carry real-time data like setpoint and telemetry. It is still very much work in progress and not ready for real-world usage but if you are curious and/or would like to help check the code is on github.

 

For the third year we will be at FOSDEM on Saturday 4 and Sunday 5 February 2017 in Brussels. The last two years we have been present and Fred, the Android client maintainer, has had a lightning talk about the Crazyflie.

This year Fred will present a lightning talk about “News from the Crazyflie universe” and Arnaud will have a talk about the Loco Positioning System in the embedded dev-room. The LPS talk will contain a demo of one or more autonomous Crazyflies.

If you are planing at being at FOSDEM and want to meet with us just tell us in the comment, we would be really happy to meet Crazyflie users. There will be almost all of the Bitcraze team and we will have Crazyflie and a Loco Positioning System so it might even be possible to do some flight or demo on the side.

This year we decided to do a short Merry Christmas video. The video was done during one chaotic evening last week were both time and technology seemed to be against us. We are anyway happy with the result which we hope will spread some Christmas joy!
 

 
PS. All flights, except the first take-off, where autonomous using the loco positioning system. Code and documentation to come later ;-). DS

Merry Christmas from all of Bitcraze!

Last week we reached a milestone for our Loco Positioning System: we got 5 Crazyflie 2.0 to fly in a swarm with Time Difference of Arrival measurements. This is a great step closer to making the LPS leave the early-access state.

Until now, positioning has been done using a method called Two Way Ranging (TWR). The advantage of TWR ranging is that it allows us to easily get ranges to the anchors by actively pinging them in sequence. Based on these ranges we can then calculate the current Crazyflie position and control the Crazyflie to move to a wanted position. The big drawback though is that since each Crazyflie has to actively transmit packets to ping anchors, flying many Crazyflie means sharing the air and so the more we want to fly the less ranging each Crazyflie can do. In other words: it does not scale.

TDoA measurement consist of measuring the difference of flight time between packets coming from different anchors and this is harder to achieve since the anchor clocks must be synchronized to each other. The killer feature of TDoA is that it can be implemented using unidirectional packet sent from the anchor system and received by the tag/Crazyflie. It means that as soon as you get one Crazyflie flying with TDoA, you can get as many as you want since the Crazyflies do not have to transmit anything.

This is what happened last week: on Thursday evening we got 1 Crazyflie to fly with TDoA measurements. On Friday we tried 3 and then 5 without much effort. It was just matter of modifying the ROS launchfile to connect more crazyflies, a copy-paste operation.

Then

There still seems to be a margin for progression to get even more stable flight with TDoA and we are also working on making the LPS and Swarm work with our Python client which will make it easier to use outside a robotic lab.

If you want to try the (very experimental!) TDoA mode with your loco positioning system we have documented how to get it to work on the wiki.

Thanks a lot to the growing community that is supporting us and allow us to move faster towards a Crazyflie swarm.

Last week was interrupted, disrupted and generally chopped up as a few of us had to stay home fighting germs and viruses. Today all of us were present again and hopefully we will all be well this week to participate in the fun. Even though last week will not make it to the hall of fame when it comes to productivity we still made some progress.

TDoA mode of the Loco Positioning system

We are happy to announce that we have calculated the first TDoA (Time Difference of Arrival) based position in the Crazyflie. This might not sound very spectacular but it is one step closer to being able to position an infinite (in theory) number of Crazyflies simultaneously. We used test driven development (TDD) to implement the functionality and we think it helped us to manage the complexity and write better code. We have written a few unit tests earlier, but this is our first serious attempt at test driven pair programming. We have based the unit tests on Unity and mocking on CMock from Throw The Switch.  The result of our efforts can be seen in lpsTdoaTag.c and TestLpsTdoaTag.c.

New Logo

We have used a few different variations of logos up to now, the historical logo was good for electronic boards (PCBs) but hard to make look good in other contexts like the webpage and so we ended up in a situation where we do not have a consistent logo for everything. We have decided that we probably should try to find one that we all like and want to use everywhere. Björn has made a bunch of different designs that we all have discussed together and after a few iterations we are converging towards something really good. We will not show any previews, just stay tuned to see the final result.

bitcraze_logo_white_back_sq_spaced_1400x1400

The logo currently used on Bitcraze PCBs

Marcus Greiff

We want to welcome Marcus to the team, he will work with algorithms one day a week. Marcus is currently studying at LTH where he has been using the Crazyflie 2.0 platform in his studies.

SD-card expansion deck in production

Production materials for the SD-card expansion deck has been sent to the factory. Hopefully it will be available in the shop in a few weeks time.

We attended Øredev last week and showed off our demo with an autonomous Crazyflie with a light and sound show. It was the same demo as we had in Maker Faire Berlin earlier this autumn that we wrote about last week. It is noticeable how much better the system has become since Maker Faire Berlin when it comes to performance, the Crazyflie is almost completely static when hovering in one spot now and the motions are much more snappy and exact. Hats off to the community that contributed the improvements!

 

At Øredev we met Ray Arkaei, the DJ that played at the party in the evening. When he realized that we used MIDI to control the position of the Crazyflie and the color of the LED-ring, he immediately offered to create his own sequence to a bit more contemporary music. This is what we love with events like Øredev, we meet people and exciting (and unexpected) events take place! He plugged in his machines and we set the goal of making a short sequence, film it and upload it to facebook. After just 10-20 minutes of experimenting (and recap from our side of how we had implemented the demo) Ray got going and soon he had had a pretty cool sequence going!

 

We shot this video with a phone

 

Ray Arkaei
Arkaei shot the sequence with his 4K camera (yes, we would love to have one too!) but unfortunately did not have time finish the editing. We are eagerly awaiting the final results and will publish a link here on the blog when it is live!

Thanks to Ray and Øredev for a memorable day!