Hello,
Background:
I am attempting to read the raw telemetry data from my Ardupilot chipset by decoupling Mission Planner's transmission/receiving of the data from the GUI so I can build a custom interface.
[Ardupilot] --- transmits telemetry --- is received by ---> [Mission Planner] --- parses and displays data on ---> [GUI]
I would like to separate this before Mission Planner, and just get a package of raw data that I can parse for my own use. Values I am seeking: altitude, pitch, yaw, x/y/z G or directions, GPS location... Essentially everything that is used to put together the main MP screen.
I am using Ardupilot as a tracking device for an off-road vehicle, because the chipset was available to me, and Mission Planner is open source.
Problem:
I am having difficulty finding where the mission planner software receives the telemetry data, so what I'm wondering is:
- does anyone have experience with intercepting the telemetry data
- if not, could you suggest some techniques I could use to find the transfer point from antenna to MP
- I do not have experience with desktop application development so I am unaware of what to investigate first... this is a huge project!
Tried so far:
I have stepped through the MP software and found on MainV2.cs :: SerialThread() possibly does the data reading with comPort.readPacket() but there is a lot of code in readPacket parent class I do not understand (parent class is MAVLinkInterface.cs).
I was also investigating the MainV2 :: PluginThread() for what the Plugins are, but I'm unable to figure out how it relates to the Ardupilot as of yet.
There was a piece of code that I discovered late the other night, but I failed to write down it's location (double dang...), but it was a hashtable of the values I was seeking: altitude, pitch, yaw, x/y/z G or directions, that sort of data
Any help or tips is greatly appreciated!!
Sean