Skip to content

StarCommand

Ezri Brimhall edited this page Feb 6, 2023 · 1 revision

A STARDOS payload needs control software in order to be configured and run. StarCommand is AggieAir's first-party control software. It is made with web technologies in an attempt to make it as portable as possible, and it consists of two main components: the web interface, and the datalink server. Both are necessary for the system to work, but there's no reason a separate non-web-based interface couldn't be created that utilizes the same datalink server.

Datalink Server

The datalink server is a multithreaded Python program that takes status updates from the local ROS domain and rebroadcasts them via a WebSocket server. The server binds to 0.0.0.0:8080 by default, so it's accessible to any other computer on its network. It can also easily be forwarded over other protocols capable of forwarding TCP, such as SSH, allowing for remote monitoring and control.

Rather than attempting to subscribe to each individual heartbeat and status topic that gets created on the ground, the datalink server makes use of a special topic that collects all heartbeat and status messages from the payload in JSON format. These messages are constructed after the MAVLink interface unpacks the message, but before it is routed to its normal topic. The datalink server will, however, send uplinked commands on the target topic, creating publishers as appropriate.

The format used in WebSocket communication with the server is as follows:

interface message {
	// A JSON object containing all the fields of the ROS message.
	payload: message_payload
	// System part of the topic name
	system: string
	// Computer part of the topic name
	computer: string
	// Capture-group part of the topic name, or undefined if not present.
	capture_group: string | undefined
	// Sensor part of the topic name, or undefined if not present.
	sensor: string | undefined
	// Processing node part of the topic name, or undefined if not present.
	node: string | undefined
	// The topic name, with no namespace components (namespace is stored above)
	topic: string
	// The message type: "control" for Control messages, "status" for others.
	// The exact type for "status" will be determined by the present namespace
	// components. Generally, a WebSocket client will only receive "status"
	// messages, and will only send "control" messages.
	type: "control" | "status"
}

Web Interface

The StarCommand web interface is the official first-party payload monitoring and control software. On first launch, the interface will show an inactive payload monitoring screen, along with two notifications informing the user of the following:

  • That there isn't a config it can load automatically
  • That it doesn't have an address for a datalink server and therefore can't connect. The first one can't be solved without loading a configuration, but the second can be solved by clicking on it and entering the address and port for the datalink server. In most cases, this is going to be localhost for the address and 8080 for the port. If the datalink server is running at the specified location, the status bar on the bottom of the screen should light up green with connection details.

A notification can be dismissed without performing any actions by right-clicking it.

Mission Monitoring

There are two display modes that a

Clone this wiki locally