At Lund University PhD student Kenneth Bastone and professor Kalle Åström are currently using the Crazyflie and the Bitcraze ultra-wide band based Loco Positioning system as part of their research involving local positioning systems at Centre for Mathematical Sciences. We visited them a couple of week ago and though we would write a blog post to explains a bit how they use Crazyflie and the Loco positioning system.
A local positioning system creates a number of interesting mathematical problems that PhD student Kenneth Bastone and professor Kalle Åström have decided to focus their current research on.
By experimenting with different technologies to create position estimations in 3D space they have come across a variety of different ways to explore indoor localization using a local positioning system. The origin of this work area was with optical tracking and localisation, it has since grown to include any technologies and configuration capable to be used for local positioning like radio and sound.
One focus area for instance is how to estimate transceiver node positions from measured transceiver distances, this is a key issue concerning for example radio antenna array calibration or mapping and positioning using ultra-wide band. Another problem is how to determine how many nodes the system needs to generate sufficient information and to understand how often the system needs to make estimations to work sufficiently well.
According to Kalle Åström solving this kind of problems regarding local positioning systems is one step closer to a whole new area of future applications. In particular it is a technology enabler that opens up the possibilities for new ways to study motion and/or behavior, for instance in healthcare or for analyzing performance in sports.
Recently Kalle and his team has had access to an Alpha Loco Positioning System, this has allowed them to apply their algorithm more specifically to ultra-wide-band based localisation. The algorithm is able to estimate the position of the anchors and of the Crazyflie from a set of distance measurements only. Using the local positioning system the Crazyflie can estimate its position by using the distances to the anchors and the position of the anchors in space. Here we have visualized the idea in 2D:
In this diagram the red point is the Crazyflie and the green and blue points are the anchors. We will look more at the anchor A3. If we see things the other way around, from the Crazyflie point of view, all we know about anchor A3 is how far away it is. So it could be anywhere on a circle:
Now if we decide to go forward a little bit, the possible positions of A3 is reduced to 2 locations:
As you can see in the figure, it is not enough to only go forward, we still have two intersection for the possible positions of A3. We need to make a turn:
Now we have reduced the possible positions down to 1. We are not done yet because in reality the Crazyflie position is not known but by applying the same idea to anchor 1 and 2 the system is constrained so that the positions of all 3 anchors and of the Crazyflie can be found over time.
The algorithm is already working with the Crazyflie and the Loco Positioning system and allows the system to find the position of the anchors and the Crazyflie using a couple of seconds of data while the Crazyflie is moving around.
According to Kalle using the Crazyflie and the Loco Positioning system has proved to have some benefits. It is open-source which means that it can be modified easily to fit the research purpose. It is also safe and very practical to work with: a test system can easily and quickly be set-up as the Crazyflie does not require specific protection for people or equipment around it.
Good article!
I do not get first why this system takes you so long to release. From my understanding it simply needs sychronzing timers between nodes and the UAV, triangulation is then trivial.
Second I do not grasp why such a piece of hardware is so expansive, around 150€ for a node? A timer, a wideband emitter, this is not the same technology as masterpieces such as phased array lidars…
Do not get me wrong, I love your open-source approach and am eager to get Crazy-Loco-Fou soon!
Best regards
I wish you could tell us about ur mid-term future aswell! Crazyflie 3? You guys moving to start another company in another business? Support for Betaflight/Raceflight that could match the BigQuadDeck scope? Perching mechanisms for Crazyflie partering with Stanford? Solar panel kits? I just feel you do not communicate much about your vision of things, except your various on-going projects like the Loco – which I enjoy a lot.
Like you say we communicate a lot on what’s going on, but not so much on our plan. It’s definitely something we should try to do more, but there’s a couple of reasons for this.
First of all (honestly) there is no grand plan. We try to find products in the intersection between what we find interesting and what our users find interesting, and this changes over time. I think the Loco Positioning is a good example of this. One year ago we didn’t know we were going to design it. But the technology popped up and we started working on it. We didn’t know if it would be good enough or if anyone was interested in buying it, so it was mostly a pet project. But as we started getting feedback and results we could see there was an interest. Since it was also something we really wanted to work on we decided to go all the way on manufacture it.
Secondly having a plan that’s too fixed could lock you out of other opportunities. Like the Loco Positioning. If there would have been a plan that didn’t include this (since we hadn’t found a good technology for it) then we might not have done it.
That being said our main direction is currently education, research and hackers/makers. The current vision is to create a platform that can be used to explore different aspects of flying robotics in developer friendly way.
Best regards,
Marcus
Hi Maxime,
Glad to hear that you are eager to get your hands on a Logo Positioning system!
I’m with you, really wish we were able to release it sooner! I think one reason it seems as if it’s taking a very long time to release is that we communicate really early about what we’re doing. The first post about making the local positioning was made almost a year ago. The post shows a rendering of the board (we had just ordered the first prototype). This is not something companies normally do. Normally you don’t hear about and see the product for the first time until the release is very close (or maybe even when they start selling it). But we feel that it’s important to be open about what we’re working on and give our users a chance to give us feedback before we finalize the design. Another thing that contributes to a long development time is that there’s a lot of other things going on in the background, like maintaining the firmware/software for our existing products, prototyping new things, taking part in the community, support, production etc. We’re only 4.5 persons so we’re spread pretty thin…
Even though the first prototypes worked for ranging we’re currently on the fourth revision of the hardware. We’ve changed everything from the board size, connectors (and their positions) and various components to testing different power solutions. We also got some feedback from the Alpha round that triggered a few changes. Since it’s a big cost and risk starting up the manufacturing of a product we want to make sure we’re happy with it. If something goes wrong with the hardware it’s a big pain for everyone, especially for our users.
We actually haven’t decided the price of the hardware yet, but we think it will be around $150 for a node. Making hardware isn’t just about the BOM price of the design, there’s a lot of other things around it that is costly. Software and hardware development is a very big cost, but there’s also added costs for manufacturing (assembly and testing), warehousing, orderhandling, transaction fees, etc. The profit from each unit should cover all this. Additional profits over time is put into further developing the firmware/software and releasing upgrades so that all the users can keep getting more functionality over time. After lots of discussions we feel that this is the price range we’re happy with and we hope our users will also agree on this.
Best regards,
Marcus
the method so cool, if not have code? I want to know the Precision
This is pretty clever.
does this mean you could get away with using less nodes once the nodes positions were defined?
No, this should not have much to do with the amount of anchors. This algorithm will help a lot setting up LPS quickly on the go. Right now we get the anchor position manually. One thing this could enhance though is that there is an offset in the measurement and this algorithm might allow to estimate it which has the potential to improve the positioning.
For the amont of anchor as for now 4 are required and we usually use 6 for redundancy. One thing I could think will make is work better without the redundancy is when we have sensor fusion between the positioning and the internal Crazyflie sensors.
Having a copter location, is there any autopilot module to fly them from point A to point B?
If not are there any plans for that? Or you can suggest an existing one to combine with CrazyFlie?
I would also like to know how many drones can support a single positioning system?
Hi!
Currently we’re running the system from ROS where you could implement this. Out plan is to move this functionality into our Python client.
Currently we support up to 2 tags in the system, but we’re working on code for 4 tags using TDMA. Our plan is to switch to TDOA down the road which will give support for an infinite amount tags (since they will only be listening).
Dear Bitcraze.io
Please consider using the new model (1001), as it seems to be both batter and more affordable.
see: https://www.decawave.com/products/dwm1001-dev
As always, we would love to share our results regarding this product.