Author: Marcus

On Wednesday we assembled and tested all of the kits in the pre-series. We ran though the production tests, that will be used once the kits are produced, as verification. Since we can’t test that they really can fly the test isn’t covering everything but it checks most of the components. One of the units had a solder-bridge between two of the MPU-6050 pins and our tests showed that the unit was faulty. We are glad our tests caught the problem and removing the short fixed it.

The assembly doesn’t take too long and once you have done a few it’s fairly quick. We timed the last one we assembled and it was finished in just under 10 minutes (including fixing errors that were made :-) ). And that time was done by the worst solderer of us! As long as you are a bit steady on you hand it should be ok. It was a really great feeling unpacking, assembling, testing and then directly flying them! We numbered all the units and will track them if there’s any problems. So during the next weeks we will be flying a lot :-). We cross our fingers that they will hold up to what we expect.

The change we did where, connecting the motors directly to the battery and not through the power management chip, turned out great and we could feel the 8% increased power difference (it might have been some placebo effect but it just feels great).

To sum it all up it was a great night and we are really happy with the results! We remember in the beginning when we had to be in a pretty big room to be able to fly the Crazyflie at all and now it’s so stable you can (if you are brave enough) hover it 10 cm in front of your face and then push the throttle and it swishes away!

As for the project progress we are now discussing with Seeedstudio on how to carry on and we are trying to sort out the motor mount problem and some smaller issues.

We’ve also spent some time creating a new page on the wiki describing the hardware. It’s still a work in progress, but there’s a lot of information. We will continue updating the wiki whenever there is time.

Head over to our Picasa albums for more pictures.

 

The last week we have been busy preparing for the presentation we had at the Øredev conference where we talked about the Crazyflie history and design. We had a great time and got to meet some fellow nerds and talk about technology stuff!

All the presentations and keynotes where filmed and can be found on the  Øredev site. So if you have 50 minutes to spare check out our presentation. Or just skip ahead until ~41:00 to see Arnaud stick a Crazyflie in Marcus’ hair…

As for project there’s not much news. We are still waiting eagerly for the pre-series units that will arrive in a couple of weeks.

This week we decided to do our weekly meeting at the local pub. Why? We needed some beer to calm our nerves and to get some expert advice from Martin, one of our collegues, that has presented at a lot of conferances. The reason for this is that in about two weeks we are presenting the Crazyflie project at the annual Øredev developer conference in Malmo, Sweden.

The presentation will be a mix of the project history, some tech details and of course a demo (hopefully a successful one without any injuries ;-) ).

So if you are attending Oredev drop by our presentation on the 7th of November at 15:40 in the Nyan Cat room and we will do our best to give you an interesting 50 minutes.

One of the goals during this project has been to only use open-source tools for development. The main incentive for this is that we want everyone to be able to take part in the development and look at the all the parts of it once it has has been released. Also it was a great opportunity to see how far we could push open source free development software in a non-trivial embedded project.

Some of the tool has worked great and some has caused us some headaches since we have worked with the proprietary alternatives during the daytime. Our conclusion is that a project like this is definitely doable, but some parts does still require more work (and some frustration). The open-source tools for firmware development and PC client are state of the art and could be used instead of there proprietary counterpart (of course most of the time there is no GUI and some more setup or manual job might be required, but this comes with the benefits of a greater flexibility). However the hardware design tolls are still behind there (expensive!) proprietary counterparts and often requires a great deal of efforts to reach the wanted result.

Of course it’s great that these open-source alternative exists and that a lot of great developers puts time into making them. Without them this project would not have been possible!

The firmware – For firmware development we use a wide number of applications: gedit, Eclipse, Mercurial, gcc, make, openOCD and gdb. On Crazyflie we run  FreeRTOS. As we built the development environment with cross platform tools the development can be done seamlessly on Linux or Windows, on the console or with Eclipe. The radio dongle has been developed from scratch (ie, just from the datasheet) with the help of sdcc to compile for the 8051 contained in the nordic chip.

The client software – For the client side software we use Python, libusb, pyusb, QT/PyQt. Even though there was a lot of discussion within the group (Ruby vs Python, qt vs gtk) we landed on Python due to all the bindings that works out of the box on Linux and Windows. This enables you to quickly create applications. Combining this with QT/QTDesigner and you get a nice GUI application.

The hardware – Since the very first prototype we switched from Eagle CAD to Kicad to use a fully open source e-cad program. It does the job perfectly fine but the routing part requires a lot more time as many of the time reducing functions are still lacking compared to proprietary programs.  For complex boards, if time is an issue, Kicad is not the e-cad to use, but for simple board and typical DIY boards it does the job fine (ie. our experience of kicad is a lot smoother for the radio dongle than for the copter).

The mechanics – For the mechanics we have used freeCAD which is one of the few open-source 3D CADs tools that we have found. When we started out we had a lot of problems with this software because it keep crashing during the design. After the stable release of the 0.12 branch it’s gotten better but we’ve still had some problems with crashes. Over all we managed to design and 3D print many revision of the motors holder with freeCAD.

The website – On our server we are running WordPress, Mercurial and Redmine, all these on a Linux and Apache. We will probably also run phpBB later on.

 

Sensor poll

Waiting another week did not make things clearer whether to mount all sensors or not, but the quotation to buy and mount them did. The $20 we estimated was too low, depending on the amount of boards we make of course, but we would probably have to add another $10 to that which made the decision simple. It is mainly the barometer that is very expensive so we might still decide to mount the magnetometer. First we will do some tests though to find out how much “value” it really adds. For people that wants the barometer it will still be possible to manually mount it afterwards making it a win-win decision.

Last summer we were sitting in a meeting room after office hours discussing how we should react to the fact that a lot of people seemed to want to buy a Crazyflie. After having a bit of down time in the project we finally posted a video, that was already about 6 months old, on Youtube.  It was during the spring 2011 showing us flying the first prototype Crazyflie. After getting picked up by Hackaday it got a lot more attention that we originally thought and a lot of people wanted to buy one which was great! The only problem was that we only had three of them and at this time there where already obsolete components. Another problem was that the motors/propellers were scavenged from toy airplanes (they had a sale and we got them cheep) which was not a scalable sourcing solution.

So sitting in this meeting room we decided to give this project a shot by trying to release a kit that could be sold. Back then the development was funded by Epsilon, the consulting company that we are working for, which was not optimal if we wanted to commercialize the Crazyflie. So we decided (after a lot of discussions) to form a company which became Bitcraze AB (the name came after even more discussions). We needed a company to make manufactures and distributors take us seriously and for import and tax reasons. It is also pretty satisfactory to be on the board of director of our own company :-).

At this time the Crazyflie was already flying but it had to be redesigned, parts sourced and we needed to find someone to manufacture it for us. Since we didn’t (and still don’t) have that much capital this wasn’t something that we could leave our day-jobs for so the development continued on weeknights and weekends. As anyone working with product development (specially if it includes any type of hardware), going from a prototype that is working to a final product requires a lot of work.

A big obstacle for us was sourcing the mechanical parts: Motors, propellers, motor mounts and battery. Some of these can be found and some are harder. And even if you find something that looks good on paper there’s no guarantee that it’s very good or working at all. We got some motors that seemed like they were scavenged from the junkyard (and probably were), we got batteries that didn’t meet the specification and propellers that were unbalanced. All this takes a lot of time. Finally we had to design a motor mount ourselves since we couldn’t find anything that suited our purpose. After a lot of searching/testing we finally found good batteries and motors. The propellers are still a bit hard to find a reliable source for but we think that we have it sorted out.

Even though it’s been very frustrating at times, like when the Invensense gyros we were using went out of production, we have a lot of fun when we work (which you can hear in the videos). Also we have been challenged to learn new stuff and got to try things that we normally would’t do at work. One of the reasons we started the project at all back in the fall of 2009 was that we wanted to do something more challenging and we think that we achieved that :-)

So what’s the plan for the upcoming year? Well, the main plan is to release the kit soon of course! After that there’s a lot of ideas of what we want to do so we will have to see how things go. Also we would like to thank everyone that’s been following our progress and supporting the project!

No, the candle isn’t burning when we are flying…although we did try to…

The coming week we are reviewing the new revision of the hardware before we press the order button. With the previous prototype we had a few violent incidents where one of the arms broke off. Fixing it wasn’t to hard. We used an aluminium tube we cut to the right size and glued over the arm and it holds up well. For this next revision we have changed the board outline around the arm joint to be smoother as this seams to be the weakest point. If everything goes according to plan the next prototype should be the last before we can order a larger batch.

During the last week we also did a little test making an small Android app and plugging the radio dongle in one of our Galaxy Nexus. It’s detected and can be used via the USB API.  It’s nothing that we are planning on spending any time on right now but in the future…

 

 

 

We’re all back from vacations and now it’s time to focus and ramp up the work again. After syncing what we have been doing during the summer (and doing some catching up) we think that we are in good shape. There’s still lots to do but now we have re-charged our batteries!

Since the weather is nice we decided to do some flying outside and at the same time do some range testing. Unfortunently we waited a bit too long so it was pretty dark outside. The Crazyflie is normally hard to see when you get too far away and when it’s dark it’s even harder… So the range test was done by flying slowly forward until the radio connection watchdog kicks in and the motors are cut. We then used MyTracks on Android to measure the distance to where we found it in the grass :-D We only did two tests but the best one was 55m.

Here’s some images of the test and the flying:

Crazyflies at night

Crazyflie at night (far away)

Crazyflie range test

One of the things that we’ve been working on for the last week is the parameter and logging systems.

Since the start of this project we’ve had a protocol in place for logging data from the Crazyflie but it’s been a bit hackish. It has relied on that the client/Crazyflie has been in sync regarding what to log and how to log it. The problem that we had was that as we start development on a new feature our logging needs change and we start tweaking what we log. Sometimes we change the size of variables to fit more data in or we switch them out completely. This has resulted in the logging breaking frequently which has been a pain…the three of us was hardly ever in sync :-D The solution that we have been working on now is more dynamic.

At start-up the client will download a TOC (table of contents) of loggable variables. By using macros when defining a variable in the Crazyflie code the variable will automatically be included in the TOC and will be loggable. It is then possible to setup a log configuration where a number of variables are pushed over the radio at a specific interval. Multiple configurations can be added so one usage is to log the battery voltage every second but to log the roll/pitch/yaw 100 times per second.

We have also been developing a similar system for getting/setting parameters. Like the logging there’s been a hackish system in place until now that’s been used to set regulation parameters during tuning. With the new system it’s possible to declare a variable using macros so it will be automatically included in the param TOC and will be gettable/settable from the client. One typical use is for tuning the regulation but it could also be used to switch between flying configurations (normal/X).

The biggest reason for implementing these systems is to make it easier for other people to tune and modify the program of the Crazyflie (also it’s a lot of fun :-D).

We have noticed that there’s a lot more work to be done in this project than only designing hardware and developing software :-) It’s now about 14 months ago that we decided to make a Crazyflie kit that we would try to sell. At that point we had already had the first version of the Crazyflie flying for about 1 year. The list of things that we have done since then is pretty long…a lot longer that we first thought it would be. But let’s save that list for another post…

One of the things that we’ve had to spend some time on is setting up our IT environment and now we are trying to make the final push. Up until now we have been using Mercurial/Redmine hosted on our own VPS. Here’s a list of what we are thinking about using in the future:

  • CM for code and schematics: Bitbucket
  • Issue handling: Bitbucket
  • Wiki: Dokuwiki
  • Forum: phpBB
  • Blog: WordPress :-D

Any thoughts or ideas about these? Any services that’s missing? Anyone that has good/bad experience with Bitbucket?