User Tools

Site Tools


projects:crazyflie:firmware:log

Crazyflie LOG subsystem

The purpose of the logging is to be able to log variables that are available in the copter during runtime. The Crazyflie log system is design in such a way that the copter firmware is mostly independent from the client and all information required to get the log system to work are communicated at connection time. The copter contains a table of content of all the variable possible to log. The client retrieve the list at connection time. The client then program in the copter log packets (ie. list of variable to log at the same time) to be sent back at regular interval.

This mechanism is used both for regular log operation (ie. user requested log to inspect and debug flight data) but also to update indication in the GUI application.

Each variable to log is contained in a group group and has a name. The system is designed to make it easy to add a log variable in the Firmware and have it available in the ground station GUI:

Firmware usage

A couple of macros are declared in log.h to define new log variables. All log variables should be in a log group. Example:

LOG_GROUP_START(stabilizer)
LOG_ADD(LOG_FLOAT, roll, &eulerRollActual)
LOG_ADD(LOG_FLOAT, pitch, &eulerPitchActual)
LOG_ADD(LOG_FLOAT, yaw, &eulerYawActual)
LOG_GROUP_STOP(stabilizer)
Macro Usage
LOG_GROUP_START(grp_name) Start a log group named grp_name
LOG_GROUP_STOP(grp_name) Stop log group declaration for group grp_name
LOG_ADD(type, name, address) Add a log variable. type is the variable type (see bellow), name is the name as it will be sent to the ground and address is the memory address of the variable
Type defines Corresponding C99 type Note
LOG_UINT8 uint8_t
LOG_UINT16 uint16_t
LOG_UINT32 uint32_t
LOG_INT8 int8_t
LOG_INT16 int16_t
LOG_INT32 int32_t
LOG_FLOAT float IEEE 754 binary32 (single precision float)
LOG_FP16 N/A? IEEE 754 binary16, intended for log report only (not in memory)
projects/crazyflie/firmware/log.txt · Last modified: 2015-07-15 16:31 (external edit)