Hello everyone,
I am working on a research project that requires IMU, Attitude, RCIN and RCOUT data to be logged at the autopilot’s 400 Hz main loop rate. My goal is to ensure perfect time-alignment between these data sources for post-processing. Having all these parameters synchronized at the loop rate is critical for time-alignment and capturing high-frequency dynamics.
I am facing a challenge with the logging frequency. Even though I have enabled Fast Attitude, Medium Attitude, Raw IMU, and Fast IMU bits in the LOG_BITMASK, I noticed that the data is still being logged at lower rates (around 10-25 Hz) in SITL. I’m currently running tests in a SITL environment to see the details that need logging in the actual flight test and to prepare for the actual flight test.
I have looked into SYSID mode, but it doesn’t fit my requirements. SYSID requires exciting a specific axis, whereas my research requires flying specific, pre-designed 3D flight patterns rather than automated internal excitations.
My questions are:
-
Forcing 400 Hz: Is it possible to force ArduPilot to log these specific messages (
IMU,ATT,RCIN,RCOUT) at the full 400 Hz rate during a normal flight mode (e.g., Stabilize or AltHold)? -
SITL vs. Real Hardware: Is the 10-25 Hz limit I’m seeing a restriction of SITL, or will the Pixhawk Cube Black also throttle the logging rate despite the
LOG_BITMASKsettings? -
Buffer and CPU Overhead: If I modify the code to log at 400Hz, what are the primary concerns regarding SD card write speeds and CPU load? (I am using a high-speed industrial SD card).
-
If there is a buffer and CPU overhead Is there a more efficient way to stream this data off-board without hitting the log throughput bottleneck?
I want to avoid the pre-defined excitation of SYSID and focus on logging my own flight patterns at the highest resolution possible. Any advice on parameters or best practices to achieve a consistent 400 Hz log would be greatly appreciated.
Thanks in advance!