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>
30 lines
1.0 KiB
XML
30 lines
1.0 KiB
XML
<?xml version="1.0"?>
|
|
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
|
|
<package format="3">
|
|
<name>saltybot_uwb_calibration</name>
|
|
<version>0.1.0</version>
|
|
<description>
|
|
UWB anchor auto-calibration for SaltyBot (Issue #602).
|
|
Commands anchors to range against each other via AT+PEER_RANGE=,
|
|
builds a pairwise distance matrix, and uses classical MDS to recover
|
|
2-D anchor positions. Exposes /saltybot/uwb/calibrate_anchors service.
|
|
</description>
|
|
<maintainer email="sl-uwb@saltylab.local">sl-uwb</maintainer>
|
|
<license>Apache-2.0</license>
|
|
|
|
<depend>rclpy</depend>
|
|
<depend>saltybot_uwb_calibration_msgs</depend>
|
|
|
|
<exec_depend>python3-numpy</exec_depend>
|
|
<exec_depend>python3-serial</exec_depend>
|
|
|
|
<test_depend>ament_copyright</test_depend>
|
|
<test_depend>ament_flake8</test_depend>
|
|
<test_depend>ament_pep257</test_depend>
|
|
<test_depend>python3-pytest</test_depend>
|
|
|
|
<export>
|
|
<build_type>ament_python</build_type>
|
|
</export>
|
|
</package>
|