Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified content/usage/advanced/diy-widget-config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
96 changes: 77 additions & 19 deletions content/usage/advanced/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,20 +141,22 @@ Users are mostly helpful for the following situations:
For individuals with their own vehicles and control computers, it is generally fine to set a
username once and then ignore that the "user" level exists.

Switching users is done through [`Settings / General`](#general):
{{ easy_image(src="user-manager", width=500, center=true) }}
Switching users is done through [`Settings / General > Manage Users`](#general):
{{ easy_image(src="user-switcher", width=500, center=true) }}

Turning on admin mode, in the bottom left corner, it is possible to add new users or delete
existing ones:

Creating new users is possible by clicking the "Add New" button, and choosing a unique name.
The new user copies the Profiles of the currently selected user (if one exists - otherwise
it uses Cockpit's default profiles).
{{ easy_image(src="user-manager", width=500, center=true) }}

It is [not currently possible to delete users](https://github.com/bluerobotics/cockpit/issues/1384).
Users must have unique names, and creating a new user copies the Profiles of the currently selected
user (if one exists - otherwise it uses Cockpit's default profiles).

### Profiles

A "profile" is a collection of [views](#views) that are relevant to a particular use-case or vehicle,
together with any configured [custom widgets](#do-it-yourself-widget), [custom Actions](#custom-actions),
and persistent [data-lake](#data-lake) variables.
together with any configured [custom widgets](#do-it-yourself-diy-widget),
[custom Actions](#custom-actions), and persistent [data-lake](#data-lake) variables.

If one control station computer is used for multiple complex use-cases (which each require multiple
separate Views), then they can be separated into Profiles and the most relevant one can be switched
Expand Down Expand Up @@ -304,13 +306,16 @@ The vehicle connection mini-widget provides a continuous indication:
The joystick connection mini-widget indicates whether a joystick is disconnected, disabled, or connected:
{{ easy_image(src="joystick-mini-widget", width=120, center=true) }}

Clicking on the widget allows manually disabling the connection:
Clicking on the widget allows manually disabling the joystick pipeline:
{{ easy_image(src="joystick-config", width=300, center=true) }}

which can be useful if multiple users are switching control of the vehicle between separate devices with
Cockpit open, or to prevent a faulty joystick from sending errant commands without needing to physically
disconnect or unpair it.

The joystick pipeline is disabled by default if Cockpit detects another control station software sending
joystick commands to the vehicle when it starts up.

##### GPS Connection Indicator
For vehicles that use satellite positioning, the GPS connection mini-widget indicates the number of
connected satellites, and the status of the position lock:
Expand All @@ -327,6 +332,11 @@ presenting the current state.
##### Flight Mode
{{ easy_image(src="flight-mode-mini-widget", width=150, center=true) }}

##### EKF Status
For help with understanding and debugging the autopilot's state estimates, the EKF status can be checked
to see which estimates are undefined or uncertain:
{{ easy_image(src="ekf-status-mini-widget", width=600, center=true) }}

#### Interface Controls

While some interface controls (like changing Views) are available as [Cockpit Actions](#cockpit-actions)
Expand Down Expand Up @@ -574,6 +584,17 @@ convenient video playback:
If a recording is ongoing, Cockpit will try to prevent the tab/application from closing, with a warning:
{{ easy_image(src="video-recording-termination-warning", width=550, center=true) }}

##### Snapshot Recorder
The Snapshot mini-widget allows capturing the current frame from one or more WebRTC video streams, or the
entire visible View (in the self-contained application) and saving them as timestamped image files with EXIF
metadata specified for the vehicle's location and orientation:
{{ easy_image(src="snapshot-mini-widget", width=230, center=true) }}

Snapshots can be captured by clicking the button, or configured to trigger repeatedly with a timer:
{{ easy_image(src="snapshot-config", width=350, center=true) }}

The saved images can be accessed through the [Snapshot Library](#snapshot-library).

##### URL Video Player

The URL video player widget displays a video from a URL. This is useful for testing IP cameras that are not
Expand Down Expand Up @@ -671,11 +692,15 @@ modifying basic appearance characteristics:
It is possible to change the decimal resolution of the displayed statistics, and the limit the number
of plotted samples to improve visibility and performance.

#### Do It Yourself Widget
#### Do It Yourself (DIY) Widget

- Completely custom elements, code logic, and styling
{{ easy_image(src="diy-widget-config", width=550, center=true) }}
- Runs code automatically when Cockpit starts/refreshes
- Can save and apply updates automatically (while editing), or be configured to only apply changes manually
- Auto-save should generally be disabled while editing JavaScript functionality, but can be convenient
while modifying a widget's visual interface / styling
- Can inherit styles from the Cockpit interface, or use completely independent styles
- Can listen to, create, and modify [data-lake variables](#data-lake), and register and/or execute Actions
using the Cockpit API (`window.cockpit.*`)
- Can be exported to or imported from a JSON file with `"html"`, `"css"`, and `"js"` string fields
Expand Down Expand Up @@ -771,8 +796,8 @@ detailed debugging interface provided.
Cockpit's data lake is an accessible data management and storage system.

It is designed to expose Cockpit's internals to the interface (including [displaying](#very-generic-indicators)
and [plotting](#data-plotting)), and for use in user-defined functions (through [custom widgets](#do-it-yourself-widget)
and [custom Actions](#custom-actions)).
and [plotting](#data-plotting)), and for use in user-defined functions (through
[custom widgets](#do-it-yourself-diy-widget) and [custom Actions](#custom-actions)).

The data lake:
- Includes information about Cockpit, the vehicle, video streams, MAVLink telemetry, and widget and Action internals
Expand Down Expand Up @@ -832,17 +857,30 @@ Cockpit is intended to work with arbitrary joystick types, and allows mapping jo
various [protocol functions](#joystick-protocols), which can send inputs and commands to the vehicle, or
trigger interface events.

{% note() %}
Cockpit provides three independent sets of function mappings, which are automatically selected between
based on the connected vehicle type. Changes to a mapping are synchronised to/from the [User](#users),
including changes to which vehicle type(s) a mapping gets selected for. It is also possible
to manually export the function mappings as a file, and import them into another User or a different
Cockpit instance/device.
{% end %}
#### Function Mapping

Cockpit provides three independent sets of function mappings, which are automatically pre-selected
based on the connected vehicle type:

{{ easy_image(src="joystick-function-mapping", width=600, center=true) }}

Non-active mappings can be previewed by clicking on them, and switched to by clicking the switch
button that appears while previewing:

{{ easy_image(src="joystick-mapping-switch", width=250, center=true) }}

Changes to a mapping are synchronised to/from the [User](#users), including changes to
which vehicle type(s) a mapping gets selected for. It is also possible to manually export the function
mappings as a file, and import them into another User or a different Cockpit instance/device.

##### Buttons and Axes

Known joystick types have an interactive diagram for mapping button and axis functions visually:
{{ easy_image(src="joystick-button-mapping", width=600, center=true) }}

Joysticks can be individually enabled/disabled from the toggle-switch under their name, or the entire
joystick pipeline can be disabled via the [Joystick Connection Indicator](#joystick-connection-indicator).

Button presses and axis movements should be mirrored on the diagram, and clicking on a button
element in the diagram allows remapping its mapped function.

Expand All @@ -861,6 +899,21 @@ Support is built in for simultaneous input from multiple sources, including mult
default each joystick can provide up to 32 axis ranges and 32 buttons.
{% end %}

#### Axis Calibration

Axis calibration options are provided to improve control and compensate for joystick degradation:
{{ easy_image(src="joystick-calibration", width=600, center=true) }}

- Exponential scaling reduces the output change near the center of an axis, and increases it towards the edges
- Higher values can improve fine control at low thrust levels (e.g. slow speeds), at the expense of
less control fidelity at higher thrusts/speeds
- Dead-bands zero-out inputs at the center
- This helps to avoid undesired input values when there is slop in the axis spring (i.e. "stick drift")
- The auto-calibration option allows wiggling the axis sticks in the region where the spring is not
engaging, to detect the zone the axes will return to when released
- Large dead-zones make fine control difficult, so if your joystick is suffering from signficant stick drift
it is a good idea to repair or replace it

#### Joystick Protocols

When mapping the functionality of a joystick button or axis, there are multiple protocols to choose from, which can be mixed and matched across different buttons and axes:
Expand Down Expand Up @@ -1079,6 +1132,7 @@ There are some predefined Actions built into Cockpit for convenience, including:
- `hold_to_confirm`
- `start_recording_all_streams`
- `stop_recording_all_streams`
- `toggle_recording_all_streams`
- `mavlink_arm`
- `mavlink_disarm`

Expand Down Expand Up @@ -1128,6 +1182,10 @@ More detailed breakdowns and examples will be coming in future.
first file in the batch, or selecting a set of individual files using `CTRL+Click` or `CMD+Click` (for macOS).
{{ easy_image(src="video-recording-library", width=500, center=true) }}

### Snapshot Library
- Allows downloading and deleting [snapshots](#snapshot-recorder)
{{ easy_image(src="snapshot-library", width=500, center=true) }}

### Telemetry Logs / Subtitle Files

Cockpit can optionally record some of its received telemetry values, which can then be turned into subtitle
Expand Down
Binary file modified content/usage/advanced/joystick-button-mapping.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/usage/advanced/joystick-calibration.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/usage/advanced/snapshot-config.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/usage/advanced/snapshot-library.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/usage/advanced/snapshot-mini-widget.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified content/usage/advanced/user-manager.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added content/usage/advanced/user-switcher.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 8 additions & 8 deletions content/usage/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,19 +40,15 @@ Download the latest version for your operating system here:
| Operating System | x86_64 | arm64 |
| --- | --- | --- |
| Windows | <a id="win-x64">Cockpit.exe</a> | Not available |
| macOS[¹](#1) | <a id="mac-x86_64">Cockpit-Intel.dmg</a> | Not yet available, use x86_64 version |
| macOS | <a id="mac-x64">Cockpit-Intel.dmg</a> | <a id="mac-arm64">Cockpit-M-series.dmg</a> |
| iOS / iPadOS | N/A | use the BlueOS Extension in a browser |
| Linux[²](#2) | <a id="linux-x86_64-AppImage">Cockpit-x86_64.AppImage</a><br><a id="linux-x86_64-flatpak">Cockpit-x86_64.flatpak</a> | <a id="linux-arm64-AppImage">Cockpit-arm64.AppImage</a><br><a id="linux-arm64-flatpak">Cockpit-arm64.flatpak</a> |
| Linux[¹](#1) | <a id="linux-x86_64-AppImage">Cockpit-x86_64.AppImage</a><br><a id="linux-x86_64-flatpak">Cockpit-x86_64.flatpak</a> | <a id="linux-arm64-AppImage">Cockpit-arm64.AppImage</a><br><a id="linux-arm64-flatpak">Cockpit-arm64.flatpak</a> |
| Android | N/A | use the BlueOS Extension in a browser |
{% end %}

or check the [releases](https://github.com/bluerobotics/cockpit/releases), for a list of all available versions, and the main changes between them.

[^1]: Cockpit is not yet registered with Apple, so may get flagged as a potential security threat. For now, the first open on macOS may require
right-clicking Cockpit in your Applications folder, selecting "Open", then choosing to "Open anyway" if prompted, or opening the security
preferences and scrolling down to "Allow" opening if there is no prompt.

[^2]: Steam Deck users are recommended to use at least `v.16.0-beta.13`, as versions before this were [incapable of recording vidoes](https://github.com/bluerobotics/cockpit/pull/1974), and had performance issues.
[^1]: Steam Deck users are recommended to use at least `v.16.0`, as versions before this were [incapable of recording vidoes](https://github.com/bluerobotics/cockpit/pull/1974), and had performance issues.

### Application Updates

Expand Down Expand Up @@ -92,7 +88,11 @@ async function setDownloadURLs() {
setLinkURL("win-x64", artifact);
break;
case ".dmg": // macOS
setLinkURL("mac-x86_64", artifact);
if (name.includes("x64")) {
setLinkURL("mac-x64", artifact);
} else if (name.includes("arm64")) {
setLinkURL("mac-arm64", artifact);
}
break;
case ".AppImage": // Linux (AppImage)
if (name.includes("x86_64")) {
Expand Down