Skip to content

GCS Intro

The ground control station (GCS) is the interface between the operator and the plane when the plane is flying. Our primary use for the GCS is to send commands, monitor telemetry, and provide manual verification of computer vision results.

This project will introduce you to commands and manual verification. You will be writing a typescript frontend that interacts with a go server. Specifically, the operator will

  1. Request an image from the camera
  2. Manually verify the image (i.e. classification)

while the OBC is running. This will change the state of the OBC, and progress the OBC through its ticks.

Before Starting to Code

Like the OBC, make sure you follow the README.md to setup the project. Run make protos to compile/build the project. Run make run-dev to run the project. You should be able to now see the front-end running on localhost:5173 on your browser.

Try clicking the status button on the GCS. Does it return the state of the OBC?

If you can't get the button working The two project are communicating over HTTP. This also means that both projects need to be running in order for the button to successfully send out a request, and the OBC to send back a response. Make sure the OBC is running. You might notice that the OBC times out quickly. Which tick can you modify so that the OBC runs for a longer time? > Make sure you run `make clean` if you are having build/compiler issues.

File Structure:

GCS
├── backend-go (Go)
│   ├── internal
│   │   ├── obc
│   │   │   └── client.go
│   │   └── server
│   │       └── server.go
│   └── main.go
├── frontend-react (Typescript + React)
│   ├── src
│   │   ├── App.css
│   │   ├── App.tsx
│   │   ├── pages
│   │   │   ├── HomePage.tsx
│   │   │   ├── PlaygroundPage.tsx
│   │   │   └── StatusPage.tsx
│   │   └── tabs.css
├── Makefile
├── protos
│   └── onboarding.proto
└── README.md
(There are some files excluded but these are the ones you will interact with).