I’m testing a new algorithm to replace the pid control laws and for that I need angular accelerations. I have implemented a filter to obtain those accelerations and I whish to plot them during runtime or log them for post flight analysis. Since I haven’t found documentation on how to add variables to the logs, I pursued the first option.
The problem: after following the DEV page tutorial to create a new mavlink message and after adding
@alias add gwdot g ANGULAR_ACCEL_FILTER.rollaccel ANGULAR_ACCEL_FILTER.pitchaccel ANGULAR_ACCEL_FILTER.yawaccel
to the mavinit.scr file, the graph doesn’t update and I really don’t know why.
If you could tell me what I’m missing or where I forgot to look, it’d be greatly appreciated.
For clarity, the mavlink message I created is:
And yes, I’ve added the message to the enum in GCS.h file in the GCS_MAVlink library, added the message also to the case in the try_send_message function in GCS_Mavlink.cpp in the Arduplane folder and finally created a function called send_wdot, similar to send_attitude, in order to send the new message.
Finally, I added the call to the sending function to the “data_stream_send” function in GCS_Mavlink.cpp.
It’s not easy, so I recommend sticking with MavLink, as it seems you have good progress. Just in case the MavLink doesn’t work out for you, open another topic or PM me and I can help with the DataFlash option.
The reason for this post is really the fact that MAVLink isn’t working for me. As I said, I’ve followed the steps in the DEV documentation to create a mavlink message but still the graph won’t update during SITL simulation
You mentioned you may help me with DataFlash. Could you guide me through the process of adding the variables I need to the DataFlash memory so I can analyse them post-flight? If so, then I don’t need to solve the mavlink issure anymore.
Adding a message to DataFlash isn’t easy, but if you’re willing to go figure it out in the code, here are the big-picture steps:
0) Figure out what you want to log, and where in the codebase it’s available. If it doesn’t already exist, make a method for accessing it.
In the DataFlash class, create a packet struct and a method to write data to that packet.
Also in DataFlash, define the format of your loggging and its field-names, also add it to the LogMessages enum.
In Plane, create (or modify) a method to log the data you want by calling the appropriate DataFlash method.
I hope this helps! Post specific questions as you find them?