-
Notifications
You must be signed in to change notification settings - Fork 54
SimpleGCS: added simple web GCS #267
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
and add cli_test.js
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds a "SimpleGCS" web-based ground control station designed for autonomous buoys and small boats. It builds on the existing WebTools framework and adds MAVLink FTP capabilities for fetching fence data.
- Adds a complete SimpleGCS implementation with touch-friendly interface for mobile use
- Implements MAVLink FTP protocol for file transfers (specifically for fence data)
- Updates TelemetryDashboard to use a centralized MAVLink module structure
Reviewed Changes
Copilot reviewed 13 out of 20 changed files in this pull request and generated 6 comments.
Show a summary per file
File | Description |
---|---|
modules/MAVLink/mavftp.js | New MAVLink FTP implementation and fence data parser |
modules/MAVLink/local_modules/ | Added jspack dependencies for binary data handling |
SimpleGCS/ | Complete new GCS application with map interface and vehicle control |
TelemetryDashboard/ | Updated to use centralized MAVLink modules and improved connection handling |
Dev/index.html | Added SimpleGCS to the development index page |
Comments suppressed due to low confidence (1)
modules/MAVLink/mavftp.js:116
- Variable name 'setup_passphase' contains a spelling error. It should be 'setup_passphrase' (missing 'r').
payload: null
This is great to see! I think the world will be flooded with custom GCS from now on and I think it's going to make AP's usability much better. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is quite a bit of inlining of html/css which could be done in the index either directly or with a template.
The formating is also quite bad in places. It would benefit from a tidyup to make it easyer to read.
DOCK : 8, | ||
CIRCLE : 9, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Odd indentation.
params[0] || 0, params[1] || 0, params[2] || 0, params[3] || 0, | ||
params[4] || 0, params[5] || 0, params[6] || 0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Strictly this should be || NaN
const el = document.createElement("div"); | ||
el.className = "toast"; | ||
el.textContent = msg; | ||
document.body.appendChild(el); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
html templates can make this stuff a bit nicer. You can import the template and inject it.
<div style="display:flex; justify-content:space-between; font-size:13px; margin-bottom:4px;"> | ||
<span></span> | ||
<span id="armed-pill" style=" | ||
padding:1px 4px; border-radius:999px; font-weight:500; | ||
background:#9e9e9e; color:#111;">DISARM</span> | ||
</div> | ||
<div style="opacity:0.8">MODE: <span id="mode-value" style="font-weight:700">—</span></div> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe a template again.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Or it looks like this is always added? Maybe it can just be in the html.
<div style="opacity: 0.7; margin-bottom: 2px;">BATTERY</div> | ||
<div id="battery-value" style="font-size: 14px; font-weight: bold;">---%</div> | ||
<div id="current-value" style="font-size: 12px; opacity: 0.85;">--- A</div> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Template?
}; | ||
|
||
const svg = ` | ||
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 24 24" style="transform: rotate(${rotateDeg}deg); transform-origin: center;"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You can do the rotation in leaflet I think. You could have a look at the map widget in telemetry dashboard.
url_input.value = localStorage.getItem(LS_KEYS.url) || "ws://127.0.0.1:56781"; | ||
passphrase_input.value = localStorage.getItem(LS_KEYS.pass) || ""; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have been reading up about GDPR, this is probably not allowed without getting consent first. But I guess we have the same problem on the wiki too.
} | ||
} | ||
} No newline at end of file | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Its there a real change in this file somewhere?
One disadvantage of the json widget format is that it is hard to read in its native format like this.
@@ -0,0 +1,113 @@ | |||
//!/usr/bin/env node |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would this be better in the new SimpleGSC directory?
simple web UI for a boat, designed for my autonomous buoy

builds on #265