Record that tower 111 comes back by itself after a reboot
This commit is contained in:
parent
91cc8af915
commit
e8293f736d
|
|
@ -215,7 +215,7 @@ choice, and the installer asks for the arguments.
|
|||
|
||||
| Tower | Service | Starts with |
|
||||
|---|---|---|
|
||||
| 111 | enabled 2026-09-24 | `--init --start`: homes and captures at boot. Not yet exercised by a reboot |
|
||||
| 111 | enabled 2026-09-24 | `--init --start`: homes and captures at boot - `[verified]` by a reboot 2026-09-24 |
|
||||
| 121 | enabled 2026-09-23 | no arguments: starts idle, neither homes nor captures (the development tower) |
|
||||
|
||||
`[verified]` on tower 121, 2026-09-23: the service came up by itself after a
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ doctest unit-test suite (`ctest`).
|
|||
| 14 | Capture sweep on hardware | **Mechanically verified on the rig (2026-08-07).** A full `--init --start` run homed both axes and completed `MOVE → settle → trigger` for 15/15 waypoints with 0 dropped frames, 0 stalls and 0 acquisition failures. `kSettleTolCounts` (600) and the per-interval timing in [CaptureScheduler.cpp](../src/core/CaptureScheduler.cpp) have **not** been tuned against observed `ST` behaviour yet, and the settle tolerance has not been checked against a sharp image (see #16). |
|
||||
| 15 | **Camera profiles unverified on a lit scene** | The `standard`/`night` profiles must be exported from the VimbaX Viewer (see `config/camera_profiles/rgb/README.md`) and have not been measured against real light. Confirm on the rig that `LoadSettings` succeeds, that `standard` sustains 10 fps with `frames_dropped` at 0, and that the auto-exposure lands on a sensible `ExposureTime` outdoors. The only previous rig test ran with the lens covered. |
|
||||
| 16 | **`settle_wait_ms` untuned** | `standard` waits 1 s and `night` 2.5 s after standstill before keeping a frame. Both are reasoned (≫ one frame period; long enough for the auto-exposure to see the new scene) but not measured. Check on a lit scene that the kept frame shows no slew blur and that its exposure has actually converged for that heading, and shorten the wait if it has. |
|
||||
| 19 | **USB preconditions do not survive a reboot** | `usbcore.usbfs_memory_mb` reverts to 16 (needs 1000) and USB3 LPM re-enables on the camera's port. **Both were wrong on the LattePanda when tested on 2026-08-07**, and frame delivery stalls without them regardless of application code. **Solved on tower 121 by the setup kit** (`hardware/lattepanda-iota/preconditions/`): a systemd-tmpfiles drop-in for usbfs and two udev rules, all installed by `install.sh --preconditions`. Verified 2026-09-23 — `usbfs_memory_mb` reads 1000 after **6 days of uptime**, so it survived the boot, and both rules are in `/etc/udev/rules.d/`; and again across a deliberate reboot the same day, when `install-tower --verify` read `usbfs_memory_mb` 1000 and the camera port's `usb3_lpm_permit` 0 (a check `test hardware camera` now makes too, once `[Test] usb3_lpm_path` is set - the installer sets it). Note it is **tmpfiles, not the kernel cmdline** the original entry proposed. **On the Delta fleet**: tower 111 read 16 and `u1_u2` on 2026-09-23, and the Delta kit (`hardware/lattepanda-3-delta/`, the same two files) was applied the same day - 1000 and `0` afterwards, confirmed by `test hardware camera`. **Not yet confirmed across a reboot on a Delta.** |
|
||||
| 19 | **USB preconditions do not survive a reboot** | `usbcore.usbfs_memory_mb` reverts to 16 (needs 1000) and USB3 LPM re-enables on the camera's port. **Both were wrong on the LattePanda when tested on 2026-08-07**, and frame delivery stalls without them regardless of application code. **Solved on tower 121 by the setup kit** (`hardware/lattepanda-iota/preconditions/`): a systemd-tmpfiles drop-in for usbfs and two udev rules, all installed by `install.sh --preconditions`. Verified 2026-09-23 — `usbfs_memory_mb` reads 1000 after **6 days of uptime**, so it survived the boot, and both rules are in `/etc/udev/rules.d/`; and again across a deliberate reboot the same day, when `install-tower --verify` read `usbfs_memory_mb` 1000 and the camera port's `usb3_lpm_permit` 0 (a check `test hardware camera` now makes too, once `[Test] usb3_lpm_path` is set - the installer sets it). Note it is **tmpfiles, not the kernel cmdline** the original entry proposed. **On the Delta fleet**: tower 111 read 16 and `u1_u2` on 2026-09-23, and the Delta kit (`hardware/lattepanda-3-delta/`, the same two files) was applied the same day - 1000 and `0` afterwards, confirmed by `test hardware camera`. Confirmed across a reboot on 2026-09-24 (`install-tower --verify`). **Solved on both boards**; open only for Delta towers the kit has not reached. |
|
||||
|
||||
## Camera acquisition (USB3) — root cause + approach
|
||||
|
||||
|
|
|
|||
|
|
@ -193,8 +193,8 @@ first reboot, since surviving one is the entire point.
|
|||
> **The Delta kit carries the same two files** (`hardware/lattepanda-3-delta/`,
|
||||
> as symlinks to these). Tower 111 had neither - `usbfs_memory_mb` 16, camera
|
||||
> LPM `u1_u2`, checked 2026-09-15 and again 2026-09-23 - and got both on
|
||||
> 2026-09-23, reading 1000 and `0` afterwards. Not yet confirmed across a reboot
|
||||
> on a Delta.
|
||||
> 2026-09-23, reading 1000 and `0` afterwards - and still after a reboot on
|
||||
> 2026-09-24.
|
||||
|
||||
## 4. Vimba X SDK `[verified]`
|
||||
|
||||
|
|
@ -1065,7 +1065,7 @@ freshly flashed board is not failed for values the host had not sent yet.
|
|||
|---|---|---|---|
|
||||
| Key-only ssh | `ssh ggs@<tower> hostname`, no prompt | ✅ | ✅ |
|
||||
| Preconditions applied | `--verify`: `usbfs_memory_mb 1000`, camera LPM `0` | ✅ | ✅ 2026-09-23 (were 16 and `u1_u2`) |
|
||||
| Preconditions survive a reboot | reboot, then `--verify` | ✅ confirmed across a real reboot | ❓ not rebooted yet |
|
||||
| Preconditions survive a reboot | reboot, then `--verify` | ✅ confirmed across a real reboot | ✅ 2026-09-24 |
|
||||
| `hardware.ini` found unaided | startup names `/etc/fire_gimbal_control/hardware.ini` | ✅ | ✅ |
|
||||
| Declared hardware matches | startup logs `declared assembly confirmed`; `test hardware axes` | ✅ yaw | ✅ yaw, pitch |
|
||||
| IMU / ambient sensor | `test hardware imu` / `env` | none declared | ✅ MTi streaming, SHT41 CRC-valid on a real I2C bus |
|
||||
|
|
@ -1079,5 +1079,5 @@ freshly flashed board is not failed for values the host had not sent yet.
|
|||
| Endstop survives homing | the axis must stall against the stop, not push through | ✅ at 189 mA, after failing at full torque | not inspected; full current, as for its whole service life |
|
||||
| Degree scale derived | startup logs `counts_per_deg` agreeing with the homed travel | ✅ 3552.87 | ✅ agrees, calibration left alone |
|
||||
| Images land | `.jxl` files appear under the configured output dir | ❌ needs a capture run | ✅ |
|
||||
| Starts at boot | reboot with nobody logged in; `scripts/fgc status` from a later ssh | ✅ lock under `/run/user/1000` | ❓ service enabled (`--init --start`), not rebooted yet |
|
||||
| Reports to a broker | topics arrive at the configured broker | ❌ no broker on this tower yet | ❓ not checked |
|
||||
| Starts at boot | reboot with nobody logged in; `scripts/fgc status` from a later ssh | ✅ lock under `/run/user/1000` | ✅ 2026-09-24: homed and captured by itself within ~35 s. The Delta logs a desktop session in at boot, so lingering was not what put the lock in `/run/user` here |
|
||||
| Reports to a broker | topics arrive at the configured broker | ❌ no broker on this tower yet | ✅ connects to its own RabbitMQ (retrying until Docker has it up at boot); forwarding to the ground station not checked |
|
||||
|
|
|
|||
|
|
@ -35,6 +35,12 @@ both boards. `tools/flash.sh` flashed it through the Leonardo's 1200-baud touch
|
|||
unchanged. The new firmware asked, the host answered, `test hardware` passed
|
||||
every leaf, and it homed to within 0.03 % of the old firmware's travel.
|
||||
|
||||
Rebooted 2026-09-24 over ssh: the boot service started it with `--init --start`,
|
||||
it homed and resumed capturing within ~35 s, and `install-tower --verify` passed
|
||||
every check, the USB preconditions included. The Leonardo was **not** reset by
|
||||
that warm reboot - USB power stayed up, its uptime carried on - so the boot-time
|
||||
config request was not exercised there; the host's re-send on connect covered it.
|
||||
|
||||
## What this kit has NOT done yet
|
||||
|
||||
In particular:
|
||||
|
|
|
|||
Loading…
Reference in New Issue