We just released a new version of the Bitcraze VM, version 2018.01. Nothing very new in this version, the VM has been rebuilt so that all the projects included in it are now up-to-date. This solves an issue where the Crazyflie client was blocked in the previous revision.
The current VM is running a quite old version of Ubuntu, the 14.04 LTS version. We are planning at refreshing the VM by making a new one when Ubuntu 18.04 LTS is released.
Since the Crazyflie 1 time we have been documenting the VM as a standard development environment. This has a couple of advantages:
- We can distribute a fully setup development environment that has minimal dependencies with the host system
- If someone has a problem with the VM, there is a bit chance we can reproduce and fix it, everyone is running the same system
- Everything is pre-setup so it should be fairly quick to get started with the actual firmware or software development
However the VM solution also has drawbacks:
- It requires to install and somewhat configure VirtualBox or other virtual machine software
- It has some cost in performance, mostly for USB as it slows down the communication with the Crazyflie
- The USB implementation seems to have bugs on Windows, which makes the communication with the Crazyflie buggy. This is currently the biggest problem!
So, the situation is not ideal, and we would love to get some feedback from the community.
There are two very different parts in the system: the lib and client in Python, and the firmwares in C.
- Starting development of the python parts, on Windows/Mac/Linux, is fairly straightforward. Basically one has to install python and git, clone the projects, install dependencies and it runs. Different python IDEs can be used and work pretty much out of the box.
- Starting development for the embedded C part can be a bit more challenging. On Linux and Mac it is pretty easy since it only requires to download the arm-embedded-gcc compiler and adding it to the path. On windows things are a bit more complex because you also need Make and I haven’t yet figured-out the best way to install that. Having an IDE requires to configure Eclipse CDT.
What do you think about the VM as a development environment and would you prefer other solutions like documentation for each operating system on how to install a development environment?
One comment on “Bitcraze VM and Crazyflie development environment”
I’ve been developing ARM firmware natively on Windows for some time (and I wrote a wiki on some setup options: https://wiki.bitcraze.io/doc:crazyflie:dev:env:windows?s%5B%5D=windows) and it’s pretty streamlined these days. There’s a feature to enable bash-on-windows by installing an Ubuntu-based Linux subsystem. It doesn’t plumb through USB support (yet at least) but it’s great for building. You can invoke it directly from cmd.exe, so I usually sit in a miniconda python shell and run “bash -c make” to build (with the arm-gcc.