As early as when the first Crazyflie prototype did it’s first flight back in 2009, we where dreaming about a local positioning system that would allow our future micro quadcopter to fly autonomously indoor. This dream is now becoming a reality with the development of the Ultra Wide Band radio that we have been using the last months to develop our own local positioning system for the Crazyflie 2.0. We are now reaching a very important milestone: the first early access production batch has been ordered!
We sat down to find a name for the system and since ‘Crazy’ is kind of a theme for our products here at Bitcraze we settled for “Loco Positioning”. So the two products we are about to launch are the Loco Positioning Node and the Loco Positioning Deck.
If you want to receive information as the system evolves, sign up to our mailing list. If you want to talk to us directly do not hesitate to comment or send us a mail at locopositioning@bitcraze.io.
The positioning system is based on the Decawave DW1000 Ultra Wide Band radio chip. These radios work by transmitting very short pulses instead of full sinus waves the way a standard radio would, and the advantage for positioning is that it is possible to measure the time at which these short pulses are received very precisely. By using clever algorithms it is possible to measure the time it took for the radio signal to “fly” from one radio to another and from that we can calculate the distance between the radios.
A basic system is composed from a number of Anchors (Loco Positioning Nodes) at fixed positions and a Tag on the Crazyflie 2.0 (the Loco Positioning Deck). The system continuously measures the distances from the Tag to the Anchors and calculates the position of the Tag from that information. The concept is similar to GPS where the Anchors represent the satellites and the Tag the GPS-receiver. 4 Anchors is the theoretical minimum required to calculate a 3D position, but 6 has turned out to be more realistic number.
We have designed the Loco Positioning Nodes as standalone boards containing a micro controller and the DWM1000 UWB radio module. The nodes are intended to act as Anchors: they are setup at fix positions in the room and will serve as references for the system.
The Loco Positioning Deck, also based on theDWM1000 module, acts as a Tag and plugs into the Crazyflie 2.0 expansion port. It allows the Crazyflie 2.0 to calculate its absolute position in space and this is all we need to start flying it autonomously in the room. In this case the Crazyflie 2.0 acts as a Tag, but since we are always striving for flexibility, the nodes can also act as Tags for example for other robotic application.
We consider the first batch to be an early access release. This means that the hardware is finished and tested but the software is still very much work in progress. Currently the Crazyflie ranges with the Anchors, while a PC running ROS interprets the ranges and calculates the estimated position. More in depth information will come if future blog-posts and e-mails on the list. For a video and some more information see our previous post “Update on Local Positioning System“.
So cool! I want to buy some Loco Positioning Board, how to do?
Hi Justin, we do not have precise enough date for the end of the manufacturing yet. When we have more information we will communicate about the release date. It will then be available on the shop.
Does the anchor /tag have a temperature sensor ?
To obtain sub decimeter precision , a lot of calibration need to be done ant temperature compensation seems needed .
Does sensor fusion with GPS / IMU is planned for the tag ?
Hi, the nodes (anchor/tag) have a pressure sensor that contains a temperature sensor, the Cortex-M0 also has a temperature sensor, but those are outside of the radio chip so of limited use. The DW1000 radio chip contains a 8bit temperature sensor, I guess this is the one to use for range temperature compensation since it is located in the radio chip itself.
There is no IMU in the node and it contains a 48MHz cortex-M0 so the design intention is to run sensor fusion outside (on the robot the node is connected for example). However if the 48MHz CM0 is enough to run sensor fusion nothing prevents to do it, there is two serial port ready to connect to external sensors (and it is open-source :).
We are thinking of making a tag with more CPU power and an IMU specifically for that but that will come later…
How fast is this?
If you have a flie hovering in spot using this system, how accurate/how much does it move around trying to maintain that position?
The current code can get the 6 ranges, and so calculate a position, at 30Hz. This can be greatly improved by software. With the current controller I see about 20cm movement in the position but again this should be greatly improved by moving controller and ranging in the Crazyflie firmware and implementing some kind of sensor fusion with the accelerometer data.