Anchor firmware (esp32/uwb_anchor/src/main.cpp): - Add peer_range_once(peer_id) — DS-TWR initiator role toward a peer anchor - Add AT+PEER_RANGE=<id> command: triggers inter-anchor ranging and returns +PEER_RANGE:<my_id>,<peer_id>,<range_mm>,<rssi_dbm> (or ERR,TIMEOUT) ROS2 package saltybot_uwb_calibration_msgs: - CalibrateAnchors.srv: request (anchor_ids[], n_samples) → response (positions_x/y/z[], residual_rms_m, anchor_positions_json) ROS2 package saltybot_uwb_calibration: - mds_math.py: classical MDS (double-centred D², eigendecomposition), anchor_frame_align() to fix anchor-0 at origin / anchor-1 on +X - calibration_node.py: /saltybot/uwb/calibrate_anchors service — opens anchor serial ports, rounds-robin AT+PEER_RANGE= for all pairs, builds N×N distance matrix, runs MDS, returns JSON anchor positions - 12/12 unit tests passing (test/test_mds_math.py) - Supports ≥ 4 anchors; 5× averaged ranging per pair by default Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 lines
117 B
INI
5 lines
117 B
INI
[develop]
|
|
script_dir=$base/lib/saltybot_uwb_calibration
|
|
[install]
|
|
install_scripts=$base/lib/saltybot_uwb_calibration
|