Hello,
I am currently writing a litte program to fuse telemetry data from my ArduCopter with live video (early stage screenshot in attachment). However, I have noticed that many MAVLink messages contain evidently false values. Take, as an example, the attitude message. It contains Pitch/Roll/Yaw values and their respective speeds. Every few seconds, these values are zero or close to zero (e.g. 2.68604381370235e-36).
My question is: Are there checksums for the messages that I missed? Or does my arducopter indeed send these messages? If so, is there a failure in my IMU and does that explain the poor flying performance it recently shows? ;-)
Regards,
Nicolas
Replies
Hey Andrew,
thanks for your reply!
It was my understanding that the discarding of failed crc packets was handled by the mavlink builtin function mavlink_parse_char (inside protocol.h)? There is explicitly a section inside which drops packets that fail the crc check (under the MAVLINK_PARSE_STATE_GOT_CRC1 case). The return value of this function is only true if a complete message could be decoded successfully and thats the only case where I inspect the payload.
Thus, I modify my original question: Does the official mavlink implementation handle the crc check and I have a hardware failure or do I have to explicitly do more checksum testing?
~Nicolas
There is only the one checksum for a Mavlink message - there is no other inside the payload if that's what you mean?
I assume you are actually discarding failed crc packets?