From a22f06026813e8af9f62c0c59ca3ff649d2059fd Mon Sep 17 00:00:00 2001
From: Poulpe
Date: Mon, 27 Apr 2026 22:13:38 +0000
Subject: [PATCH] docs: link to Kogger hardware companion repo
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Add a 'Implémentation Cosma — antenne Kogger' section to the page that ties the
abstract protocol (DS-TWR / SS-TWR / addressed) shown in the animations to the
concrete hardware driver used in the Cosma project (cosma-tech/kogger_acoustic
Antenna), and to the new wrapper poulpe/kogger-transpondeur-continu that turns
a Kogger antenna into a permanent slave transponder in a single start() call.
Add a 'Sources' section listing all four related repos (this page, wrapper,
upstream driver location, log decoder).
Update README similarly with a 'Hardware companion repo' section so the
ping-pong-ping repo no longer reads as standalone — it's the protocol
explainer, kogger-transpondeur-continu is the hardware glue.
Reported by Flag 2026-04-27 ('as-tu mis un lien...').
---
README.md | 8 ++++++++
index.html | 31 ++++++++++++++++++++++++++++++-
2 files changed, 38 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index b8ddcfc..f7b0b50 100644
--- a/README.md
+++ b/README.md
@@ -91,6 +91,14 @@ To re-deploy after an edit :
./deploy.sh
```
+## Hardware companion repo
+
+For the Kogger USBL hardware described in the page :
+
+- **Wrapper Python "transpondeur continu"** : `poulpe/kogger-transpondeur-continu` on Gitea — high-level wrapper around the upstream `cosma-tech/kogger_acousticAntenna` driver that puts a Kogger antenna in permanent slave-transponder mode in a single `start()` call. Composes address filter + echo filter + TDMA sync slot + permanent response window + Python callbacks for received pings. No modification of the upstream driver.
+- **Driver upstream** : `cosma-tech/kogger_acousticAntenna` on GitHub (private). Active checkout on Pi 184 `cosma-auv2` at `/home/pi/dev/swarm-vehicle/src/drivers/kogger_acousticAntenna/`. Snapshot included read-only in the wrapper repo for reference.
+- **Log decoder** (post-acquisition USBL frame parsing for analysis) : `floppyrj45/cosma-nav/extract/decode_kogger.py` on Gitea.
+
## TODO / future work
- [ ] Add a 3rd animation showing **2D positioning** — currently distance only is animated. AUVs equipped with USBL micro-arrays could also compute their bearing-to-USV; the page mentions this in passing but doesn't visualize it.
diff --git a/index.html b/index.html
index f51a49e..7f3e78f 100644
--- a/index.html
+++ b/index.html
@@ -252,7 +252,36 @@ B reçoit ping2 à T_B = 6.130 s
Ce schéma est exactement celui qu'utilisent les puces UWB DecaWave DW1000 / DW3000 (Apple AirTag, Qorvo, etc.) sous le nom DS-TWR. La transposition acoustique change uniquement l'échelle : célérité 1500 m/s vs 3·10⁸ m/s, et turnaround mesuré en ms plutôt qu'en ns. La logique de calcul est identique.
-
+
Implémentation Cosma — antenne Kogger
+
+Côté hardware, le contexte Cosma utilise des antennes acoustiques Kogger pilotées en SBP (sync 0xBB 0x55, Fletcher16). Le driver Python upstream (snapshot ici, source cosma-tech/kogger_acousticAntenna sur GitHub) expose toutes les primitives bas niveau du protocole décrit ci-dessus : set_usbl_request_address_filter (filtre par ID, identique à la sélection adressée animée plus haut), set_usbl_transponder(enable) (ouvre la fenêtre de réponse permanente), set_usbl_monitor_config (filtre d'écho), set_sync_mode (slot TDMA), set_usbl_ping_request_direct (côté master, envoi d'un ping ciblé).
+
+
+Pour un AUV slave qui doit fonctionner en transpondeur permanent, un wrapper Python poulpe/kogger-transpondeur-continu compose ces appels en une seule init :
+
+L'antenne devient un slave permanent sur l'adresse 2 : elle ignore les pings adressés ailleurs, répond automatiquement aux siens (turnaround géré par le hardware Kogger, donc déterministe), et émet une frame USBL_SOLUTION (0x65) à chaque réception. Côté master USV, le pendant est set_usbl_ping_request_direct(address=2, cmd_id=0).
+