Software that runs on the Raspberry Pi in the field. Acts as a LoRa tranceiver and MAVLink protocol handler. Must accept and relay MAVLink commands from APM Planner / QGcontrol.
Commands and other (MAVlink) messages that originate from an operator's laptop running APM planner, connected via ethernet to the RaspberryPi, have to be buffered and relayed to the LoRa base station. The LoRa base station can only relay messages to the rover just after it received something from the rover. At that instant of time, every logged command, status update and other message in a buffer must be released and forwarded to the rover.
Messages coming from the rover must be forwarded via ethernet to the APM planner. If the rover is silent, the APM planner must be supplied with an "empty" heartbeat message if required.
"Static Hold Mode allows the navigation algorithms to decrease the noise in the position output when the velocity is below a pre-defined 'Static Hold Threshold'. This reduces the position wander caused by environmental factors such as multi-path and improves position accuracy especially in stationary applications. By default, static hold mode is disabled.
If the speed drops below the defined 'Static Hold Threshold, the Static Hold Mode will be activated. Once Static Hold Mode has been entered, the position output is kept static and the velocity is set to zero until there is evidence of movement again. Such evidence can be velocity, acceleration, changes of the valid flag (e.g. position accuracy estimate exceeding the Position Accuracy Mask, see also section Navigation Output Filters), position displacement, etc.
The UBX-CFG-NAV5 message additionally allows for configuration of distance threshold (field staticHoldMaxDist). If the estimated position is farther away from the static hold position than this threshold, static mode will be quit."
currently the UDP data is directly forwarded to MQTT. to save air time, it is required to introspect the UDP buffer, detect a MAVLink frame and forward it to MQTT.
Must be able to receive and send LoRa packets. Integrate this with the previously implemented message buffer that is able to communicate with APM planner.
This bridge receives UDP packets from APM Planner containing MAVLink payloads and sends them out to the MQTT server. It must also listen to incoming MQTT packets and relay these to the same UDP endpoint.