sl-firmware created pull request seb/saltylab-firmware#99

sl-firmware
Sun, 01 Mar 2026 23:25:46 -0500

99#feat(uwb): MaUWB ESP32-S3 DW3000 dual-anchor bearing driver (Issue #90)#

Summary

Closes #90 — UWB integration: MaUWB ESP32-S3 DW3000 serial/USB driver on Orin.

Changes

saltybot_uwb_msgs

New UwbBearing.msg — 10 Hz Kalman-fused bearing estimate

UwbRange.msg — add tag_id field for enrolled-person attribution

CMakeLists.txt — register UwbBearing.msg

saltybot_uwb

ranging_math.py — add bearing_from_pos(x, y) helper (atan2, -π..+π)

uwb_driver_node.py — dual-rate: 100 Hz /uwb/ranges + 10 Hz /uwb/bearing; tag pairing via enrolled_tag_ids; AT+RANGE_ADDR on connect

uwb_config.yaml — range_rate / bearing_rate / enrolled_tag_ids params

uwb.launch.py — expose new params as launch args

test_ranging_math.py — 7 new bearing_from_pos unit tests

Test plan

pytest jetson/ros2_ws/src/saltybot_uwb/test/test_ranging_math.py passes

/uwb/ranges publishes at 100 Hz with both anchors connected

/uwb/bearing publishes at 10 Hz; confidence drops to 0.5 on single anchor

enrolled_tag_ids filter drops non-enrolled tags

🤖 Generated with Claude Code