I'm putting this here since I'm unclear where this question would belong.

I want to build a ground station around a Raspberry Pi that can display basic telemetry.

Initially at least, I want to read only a minimal set of attributes, essentially what comes in the VFR_HUD, ATTITUDE and GLOBAL_POSITION_INT messages.

I understand that the MAVLINK data looks similar to what I find in a .tlog file. I think I understand MAVLINK message structure. I can parse these files enough to understand the basic structure of the protocol. I have a generator to construct packet types from the XML specifications.

What I'm missing is an understanding on the higher-level (session-level) protocol. Is there a message the ground station needs to send to APM to initiate a session? What does it need to tell APM? I'm entirely unclear on where I can find documentation that describes all this. I appreciate your pointers.


Views: 1181

Reply to This

Replies to This Discussion

Look at mavproxy and mavelous

Simply connect, listen for heartbeat messages which APM always sends and request your needed info with msg_request_data_stream packet - MAV_DATA_STREAM_ALL 0x00 will give you all.

Thank you! What I'm trying to do appears quite similar to mavelous, though I'm writing it in Node.js rather than Python. Using the same language on the client and server makes it easier for me to pass data back and forth.


Thanks. I was looking at *.tlogs and there are all these PARAMETER requests, but I guess I don't need them for what I'm doing.


So now I'm reading MALINK from APM, and I'm parsing out the telemetry, and the CRCs I calculate match what's coming though the serial (wow the extra CRC nonsense). Thank you for your pointers guys!

Now I want to drive my UAV from the ground station. I send RC_CHANNELS_OVERRIDE, but see no visible effect from that. I wonder if I need to say a special please (like, "I'm going to start sending you rc override commands now") or if I'm expecting some type of ACK or NACK from APM.


Uh, I see two message IDs in the XML: REQUEST_DATA_STREAM and DATA_STREAM. I'm unclear on the difference between them. One takes target system and target component ids, the other omits them.


Reply to Discussion


© 2019   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service