Firmware
Not much work has been done in the Firmware yet. (as of 7/20/16) The few things we have been able to successfully modify are:
- Creating New Log Blocks
- Modifying the Default Yaw Mode
- Adding and Modifying Parameter Values
Log Blocks
In the Crazyflie Firmware there is a generalized logging framework that allows us to make any group of variables into a log block. It makes things very easy to log. Here are a few examples:
- 1. Magnometer Log Block (code found in Firmware > modules > src > stabilizer.c)
LOG_GROUP_START(mag) LOG_ADD(LOG_FLOAT, x, &mag.x) LOG_ADD(LOG_FLOAT, y, &mag.y) LOG_ADD(LOG_FLOAT, z, &mag.z) LOG_GROUP_STOP(mag)
- So with this code we have created a log block called 'mag' and it contains the X, Y, and Z measurements from the magnetometer sensor.
- 2. Accelerometer Log Block (code found in Firmware > modules > src > stabilizer.c)
LOG_GROUP_START(acc) LOG_ADD(LOG_FLOAT, x, &acc.x) LOG_ADD(LOG_FLOAT, y, &acc.y) LOG_ADD(LOG_FLOAT, z, &acc.z) LOG_ADD(LOG_FLOAT, zw, &accWZ) LOG_ADD(LOG_FLOAT, mag2, &accMAG) LOG_GROUP_STOP(acc)
- So just like in the magnetometer block, here we have created a log group called 'acc' and inside this group we are logging the variables for the accelerometer's X, Y, and Z values as well as 2 other gravity based variables used for thrust compensation.