A few weeks ago we wrote about a new prototype that we call “the obstacle avoidance deck”. Basically it’s a deck fitted with multiple VL53L0x ToF distance sensors that measures the distance front/back, right/left and up of the Crazyflie 2.0. Combined with the Flow deck this gives you an X/Y/Z robot that you can program fly around avoiding obstacles which doesn’t need any external positioning system.
After implementing firmware support for the deck (see #253 and #254) we’ve finally had a chance to do some initial testing, see the video below. In the current implementation we’re doing the measurements in the firmware but using the logging framework to get all the distances into a Python script which does the movement control. Since we have the Flow deck attached we can control the Crazyflie 2.0 in velocity mode, which means we can say things like “Go forward with 0.5 m/s until the forward sensor shows a distance lower than 50cm” or “Go forward 1 m/s for 1s and rotate to measure the distance to all objects”. Since there’s no real-time requirements we can move the complexity of the algorithm from the firmware into external scripting which makes it a lot easier to develop. Now we’re really eager to start setting up obstacle courses and time how fast we can move though them :-)
The results from the testing shows that our two main concerns aren’t an issue: The sensors doesn’t seem to interfere with each other and we can sample them all at high-enough frequency without occupying the bus too heavily (currently we’re doing 20Hz). The next step is figuring out the requirements (i.e how many VL53L0x sensors are needed, do we really need the back one?) and a mechanical solution for attaching the sensors in production. If there’s any feedback let us know now and we’ll try to get it into the design. Also, we really need a new name for the board. Any suggestions?
27 comments on “Obstacle avoidance/SLAM deck initial testing”
If possible you guys should try and add a terminal enabling an external GPS to be attached (like in the Big Quad deck).
Unfortunately not on this deck. But you could add it using a prototyping deck that you attach at the same time as the OA deck.
Hello, long time no see,
Chiming in to say how wonderful this deck is!
You got 5 LIDARs on the prototype right?
Name suggestions : “VCSELcraze”, “CrazyLidar”, “CrazyDar” ?
Hi Maxzor! Glad that you like it :-) Thanks for the suggestions, we’ll add them to the list!
I like VCSEL-Craze a lot actually :)
Indeed this deck might not be used for obstacle avoidance only. Even if the VL53L0x has low ranging capabilities, the deck could theoretically be used for “SLAMming” a little house with proper remote calculations? And if one day you fuse this deck with a Loco one …!
Yes, using it for SLAM is a really appealing idea. The current prototype is compatible with the LPS deck (if you place the OA deck on-top of the LPS deck) :-)
Just wanted to ask. Is it possible to obtain this deck like early access?
I am working on Bachelor thesis and I would like to combine this deck with flow how u did and get some results.
Thanks for answering.
Drop us an email and tell us a bit more about the project and we’ll see if we might be able to build a prototype for you.
I sent an email :)
I’m working on my bachelor thesis which is avoidance obstacle system for Crazyflie 2.0. My original plan was too using sort of IR sensors like ultrasonic but turned out the sensor is too big compare to the drone itself. and i need at least 4 of the sensors. I was wondering if you guys can help me come up with another alternitive with some decks or something. Any idea would help. I’d really appreciate it.
I’m looking forward to hearing from you guys
It sounds like the OA deck (which is now named the multi-ranger) that’s described above would work well for your purpose. If you’re interested in getting a prototype drop us an email and we’ll see if we have a spare one.
Really would like to see SLAM output ability with this deck. Any ideas how you might implement this…perhaps with the logging framework sending data back to a client? What about the ability to generate 3D SLAM visualizations in real time? I would like to get a prototype or the multi-ranger if possible for testing on my CF 2 with Flowdeck.
Currently we’re reading the values from the logging framework, have a look at the push.py example (https://github.com/bitcraze/crazyflie-lib-python/blob/master/examples/push.py). We’ve just done some initial testing plotting values in 3D but it looks promising. Currently we don’t have any more prototypes to share, but drop us an email and we’ll try to get you one from the next round.
Fantastic, thanks for the update Marcus! Very exciting and loads of potential for SLAM mapping confined spaces. Email on the way!
Please also keep in mind the design for use on a brushless quad when the CF-RZR becomes available, e.g. clearance to prevent interference from props in a 120mm frame config.
Thanks for the tip, noted.
Just a thought, 6 LiDAR might be enough for obstacle avoidance, but probably not enough to generate a good point cloud for SLAM given the 25 degree FOV of the VL53L0X , a relatively small scanning environment and limited duration of flight. There is a discussion at https://www.chiefdelphi.com/forums/showthread.php?p=1620527 which mentions having as many as 8 of these VL53L0X for the horizontal plane. You could do the same in a vertical plane, then you might not need Flowdeck given you have SLAM data. This would be useful in completely dark environments.
Thanks for the link. We still haven’t done enough testing, but we’ll post a new blog post about it once we’ve made some progress.
Would it be possible to have the LiDARs separate from the deck and variable in number, connecting to a breakout deck?? This way configurations can be quite flexible, attaching the sensors anywhere on the frame.
This is a good idea. We’ve been discussing this a bit back and forth, but since the daughter boards (with the ToF sensor on them) are so trick to solder we’ve more or less landed on populating the board with 5 sensors (one in each direction). If it turns out the board doesn’t work for your application drop us an email and maybe we could build something custom.
That’s OK, at lease we will have a configuration to test and refine as required, especially for SLAMing and environment! Just please keep in mind it needs to work on the brushless CF-RZR when it becomes available!
Yes! I’m so on board with this. That deck is what I need. I can make it around the house with dead reckoning, but I need those other sensors in order to self correct. Please keep me up to date.
Glad to hear! Sign up to our newsletter were we send our blogposts and you’ll be kept up to date.
It’s pity for me that watched the excellent item at now rather than earlier time. I just want to know do you have any great progress about the SLAM deck after half a year? And if you come out this product, just say, I will buy.
Yes, it’s taken longer than expected. But some of the delay is due to the new ST sensor coming out. Have a look at the latest blog-post about the deck here: https://www.bitcraze.io/2018/04/multi-ranger-deck-update-2/
First we love you projects! in particular the multi ranger – we build a complete simulation of a drone with a single flowdeck and 3 rangers (based on VL51L0 ) based on the simulation results we can conclude:
1. Optical flow + 3 rangers are sufficient for autonomous flight.
2. The lidars should be facing forward – say -60, 0, +60 and not as you made front, left, back, right and up.
3. We would like to share our simulation (basic GUI + PCL support) and if possible be an alpha site for testing your product – we would love to buy few such boards asap – even if they are not perfect yet.
Thanks for the feedback! Our first prototype had this but in the end we’ve decided to go with the current solution. We would have liked more sensors, but the board unfortunately becomes too expensive.
We would love to see the simulation, drop us an email at email@example.com and we’ll se if we can get you a prototype.