sampling_locations.svelte + SampleField.svelte — Sampling Locations

The main data collection interface for the Science task. Manages a list of Sample objects stored in the samples Svelte store.

Sample card

Each sample in the list is rendered as a card with an editable location name field and a set of SampleField sub-components. The location name field updates location_name_check automatically as the operator types.

SampleField.svelte

A reusable row sub-component used inside each sample card. Renders a checkbox (bound to a checked prop), a label, the current value, and a + button that opens the relevant modal. Used for: Coordinates, Size, Weight, Image Before, Image After.

Modals

Clicking a + button opens a modal specific to that field type:

Coordinates — a single button that calls invoke("request_coordinates"), receives a [lat, lon] tuple from the rover, formats it as a string, and saves it to the sample.

Measurement — shows two camera feeds (arm + front) in measure mode. The operator clicks two corresponding points on the two feeds to trigger a stereo measurement via invoke("request_measurement"). The returned value is saved to the sample.

Weight — a single button that calls invoke("request_weight") and saves the returned gram value to the sample.

Image Before / Image After — shows all three camera feeds. Clicking any feed calls invoke("save_snapshot") which captures a JPEG frame from that stream and saves it to the images/ directory. The filename is {sample.label}_{before|after}.

Pick up Rock

This section is work in progress

A separate overlay accessible from a button at the bottom of the component. Shows all three camera feeds in pick mode. The pick() function is currently a stub for the rover arm pick-up command.


Revision #2
Created 2026-04-15 08:33:22 UTC by Candela Cimadevilla Gonzalez
Updated 2026-04-15 15:34:28 UTC by Dmytro Khorsun