Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Motivation

The ground infrastructure currently requires that all telemetry data come in as a UDP packet over the network, so all data sources from the vehicle need a way to be sent over a standard network. For SRAD boards on the rocket (e.g. SPICA, NIGEL), we get data over 900MHz RF through the XBees and have a special piece of hardware that converts XBee packets to Ethernet/UDP packets and sends them over the network to the ground station. Some COTS tracking solutions, like the BigRedBee, don't use 900MHz and currently we don't have a way to get that data to the ground station. The BigRedBee uses AFSK modulation to send AX.25 frames containing APRS packets. We have a tool that runs on a standard PC that will demodulate the AFSK output from our radios and unpack AX.25 frames, displaying only APRS information. We need a program that can read in APRS packets and convert them to UDP packets to send to the ground station.

Specifications

Write a program that:

  • reads APRS packets in ASCII format over standard input
  • sends parsed APRS data over UDP as soon as it's available, data of interest includes
    • latitude
    • longitude
    • altitude
    • GPS time
    • any other provided information (GPS fix, satellite number, etc.), the more the better
  • must send to a variable IPv4 address and UDP port
    • destination address and port will be provided over command line
  • must run on Ubuntu 18.04 ground computers, some things to note:
    • Using Python or C/C++ is preferable, Java runtime is currently NOT installed and I'd prefer to not have to install it on all the ground machines. Let me know if there's a language you would prefer to use and I'll see if it's something we can reasonably install.
  • executed in the following format:
    • ./aprs_fwd ip:port callsign
    • 'ip' is the IPv4 address of the ground station (this will likely be a multicast address, which doesn't make a different to the sender but that's why it needs to be configurable)
    • 'port' is the destination port for the UDP packets (e.g. the port the ground station will listen to)
    • 'callsign' is the callsign the APRS packets should be coming from, any APRS packets not from this callsign should be ignored
  • accounts for non-APRS data being sent to it
    • the program that will pass this application input will have some startup messages that need to be ignored, look for a newline followed by the callsign to signify the start of an APRS packet

Helpful Materials

Here is a sample output that will be passed to this program (note that it doesn't include some information like altitude, a better output will be generated soon). It does include the startup messages that should be ignored.

Here is the APRS reference protocol, it may also be easier to use Wikipedia for some info.

  • No labels