2025-04-19 - 2026-04-19
Overview
333 Pull requests merged by 7 users
Merged
#732 feat: systemd auto-start for ROS2 + dashboard on Orin boot (bd-1hyn)
Merged
#731 feat: ESP32-S3 OTA stack — partitions, Gitea checker, self-update, UART IO, display, Orin serial trigger (6 beads)
Merged
#730 ci: OTA release pipeline — build + attach firmware binaries (bd-9kod)
Merged
#729 feat: ESP32 Balance UART/USB protocol for Orin + VESC proxy (bd-66hx)
Merged
#728 feat: Here4 GPS DroneCAN on Orin via CANable2 (bd-p47c)
Merged
#727 feat: Orin UART/USB serial comms with ESP32 Balance (bd-wim1)
Merged
#724 fix: Rename sultee-tracker → saul-tee-tracker
Merged
#723 feat: MQTT bridge for iOS GPS on /saltybot/ios/gps (Issue #681)
Merged
#722 feat: iOS phone GPS via rosbridge topic /saltybot/ios/gps (Issue #681)
Merged
#721 fix: add phone bridge and GPS topics to rosbridge whitelist (Issue #681)
Merged
#720 fix: GPS tracker subscribes to correct phone bridge topic (Issue #681)
Merged
#715 feat: remove all STM32/Mamba/BlackPill references — ESP32-S3 only
Merged
#714 feat(arch): CAN/UART bridge update for SAUL-TEE ESP32 architecture
Merged
#712 docs: SAUL-TEE full ESP32-S3 system reference (arch migration)
Merged
#711 feat: Robot GPS live map panel (Issue #709 companion)
Merged
#710 feat: Sul-Tee GPS live tracking dashboard (Issue #709)
Merged
#708 feat: CAN bus watchdog and error recovery (Issue #694)
Merged
#707 feat: PID tuning interface via CAN/ROS2 (Issue #693)
Merged
#706 feat: UWB anchor auto-discovery (Issue #698)
Merged
#705 feat: SLAM map persistence for AMCL (Issue #696)
Merged
#704 feat: VESC dual ESC mount bracket for T-slot (Issue #699)
Merged
#703 feat: End-to-end CAN integration tests (Issue #695)
Merged
#702 feat: WebSocket bridge for CAN monitor dashboard (Issue #697)
Merged
#701 feat: Android BLE pairing UI for UWB tag (Issue #700)
Merged
#692 feat: UWB tag BLE configuration interface (Issue #690)
Merged
#691 feat: UWB tag power management — sleep mode (Issue #689)
Merged
#673 feat: BME280 baro pressure & ambient temp (Issue #672)
Merged
#688 feat: Hardware button park/disarm/re-arm (Issue #682)
Merged
#687 feat: CAN sensor remote monitor panel (Issue #681)
Merged
#666 feat: VESC CAN health monitor (Issue #651)
Merged
#664 feat: Nav2 AMCL integration (Issue #655)
Merged
#663 feat: UWB geofence speed limiting (Issue #657)
Merged
#662 feat: VESC motor dashboard panel (Issue #653)
Merged
#661 feat: Smooth velocity controller (Issue #652)
Merged
#660 feat: VESC MQTT telemetry relay (Issue #656)
Merged
#659 feat: CANable 2.0 mount (Issue #654)
Merged
#649 feat: VESC CAN odometry (Issue #646)
Merged
#668 fix: Configurable VESC CAN IDs, default 56/68 (Issue #667)
Merged
#671 fix: Standardize VESC topic naming (Issue #669)
Merged
#686 feat: IMU mount cal, CAN telemetry, LED CAN override (Issues #680, #672, #685)
Merged
#684 fix: Move lines=[] above lock in _read_cb() (Issue #683)
Merged
#679 fix: Bump arm pitch threshold to 20° (Issue #678)
Merged
#675 feat: Orin CAN bus bridge — CANable 2.0 (Issue #674)
Merged
#677 fix: remap CAN from CAN2/PB12-13 to CAN1/PB8-9 (Issue #676)
Merged
#642 feat: Encoder odometry and wheel speed feedback (Issue #632)
Merged
#640 feat: Jetson Orin system monitor ROS2 node (Issue #631)
Merged
#641 feat: UWB accuracy analyzer (Issue #634)
Merged
#639 feat: UART command protocol for Jetson-STM32 (Issue #629)
Merged
#638 feat: ArUco docking detection (Issue #627)
Merged
#637 feat: WebUI main dashboard (Issue #630)
Merged
#636 feat: Termux voice command interface (Issue #633)
Merged
#635 feat: Cable management tray (Issue #628)
Merged
#626 feat: Battery voltage telemetry + LVC (Issue #613)
Merged
#622 feat: WebUI settings panel (Issue #614)
Merged
#620 feat: GPS waypoint logger (Issue #617)
Merged
#625 feat: ROS2 bag recording manager (Issue #615)
Merged
#624 feat: Steering PID controller (Issue #616)
Merged
#623 feat: RealSense obstacle detection (Issue #611)
Merged
#621 feat: ESP-NOW to ROS2 serial relay node (Issue #618)
Merged
#619 feat: Jetson Orin Nano mount bracket (Issue #612)
Merged
#610 feat: CAN bus driver for BLDC motor controllers (Issue #597)
Merged
#605 feat: MQTT-to-ROS2 phone sensor bridge (Issue #601)
Merged
#609 feat: Slope tilt compensation (Issue #600)
Merged
#608 feat: UWB anchor auto-calibration via inter-anchor ranging + MDS (Issue #602)
Merged
#607 feat: Nav2 with UWB localization (Issue #599)
Merged
#606 feat: Multi-sensor pose fusion (Issue #595)
Merged
#604 feat: RPLIDAR A1 mount bracket (Issue #596)
Merged
#603 feat: WebUI gamepad teleop panel (Issue #598)
Merged
#583 feat: STM32 watchdog and fault recovery handler (Issue #565)
Merged
#593 feat: Visual odometry from RealSense stereo ORB (Issue #586)
Merged
#591 feat: WebUI map view (Issue #587)
Merged
#594 feat: Motor current monitoring (Issue #584)
Merged
#592 feat: Phone video bridge (Issue #585)
Merged
#590 feat: Integrate UWB tag display + ESP-NOW + e-stop (salty/uwb-tag-display-wireless)
Merged
#589 feat: Battery holder bracket (Issue #588)
Merged
#582 feat: ROS2 launch orchestrator for full SaltyBot bringup (Issue #577)
Merged
#569 feat: UWB anchor mount bracket (Issue #564)
Merged
#581 feat: UWB-IMU EKF fusion for robust indoor localization (Issue #573)
Merged
#580 feat: RPLIDAR safety zone detector (Issue #575)
Merged
#579 feat: WebUI event log panel (Issue #576)
Merged
#578 feat: Termux sensor dashboard (Issue #574)
Merged
#560 feat: PID gain scheduling for speed-dependent balance (Issue #550)
Merged
#572 feat: ROS2 sensor health monitor (Issue #566)
Merged
#570 feat: ESP32 UWB Pro anchor firmware — DS-TWR responder (Issue #544)
Merged
#568 feat: UWB tag firmware (Issue #545)
Merged
#567 feat: WebUI diagnostics dashboard (Issue #562)
Merged
#563 feat: RPLIDAR A1 mount bracket (Issue #561)
Merged
#559 feat: Pan/tilt gimbal servo driver for ST3215 bus servos (Issue #547)
Merged
#558 feat: ROS2 gimbal control node (Issue #548)
Merged
#557 feat: WebUI gimbal control panel (Issue #551)
Merged
#556 feat: Camera gimbal mount for RealSense D435i (Issue #552)
Merged
#555 feat: Person-following head tracking (Issue #549)
Merged
#554 feat: Phone voice command interface (Issue #553)
Merged
#543 feat: Audio pipeline — wake word + STT + TTS on Jabra SPEAK 810 (Issue #503)
Merged
#525 fix: USB CDC TX investigation (Issue #524)
Merged
#530 fix: IMU calibration (Issue #520)
Merged
#517 feat: Headscale VPN auto-connect (Issue #502)
Merged
#516 feat: Charging dock hardware design (Issue #505)
Merged
#514 feat: Remove ELRS arm requirement (Issue #512)
Merged
#508 feat: Face display animations on STM32 LCD (Issue #507)
Merged
#499 feat: Voice command router (Issue #491)
Merged
#500 feat: OTA firmware update (Issue #492)
Merged
#498 feat: Multi-sensor fusion (Issue #490)
Merged
#497 feat: Docking station behavior (Issue #489)
Merged
#496 feat: ROS2 bag recording for mission logging (Issue #488)
Merged
#466 feat: emergency stop cascade (Issue #459)
Merged
#462 feat: WiFi mesh handoff (Issue #458)
Merged
#461 feat: Add gesture recognition system (Issue #454)
Merged
#460 feat: sound effects (Issue #457)
Merged
#451 feat: night mode (Issue #444)
Merged
#450 feat: social memory DB (Issue #443)
Merged
#448 feat: weather awareness (Issue #442)
Merged
#440 feat: trick routines (Issue #431)
Merged
#439 feat: system health monitor (Issue #408)
Merged
#438 feat: gamepad teleop (Issue #433)
Merged
#437 feat: Android/Termux OpenClaw node (Issue #420)
Merged
#436 feat: LED strip controller (Issue #432)
Merged
#435 feat: emotion engine (Issue #429)
Merged
#434 feat: audio direction estimator (Issue #430)
Merged
#428 feat: Nav2 SLAM integration (Issue #422)
Merged
#427 feat: remote monitoring relay (Issue #424)
Merged
#426 feat: multi-person tracker (Issue #423)
Merged
#425 feat: Piper TTS service (Issue #421)
Merged
#419 feat: sensor feeds in HUD (Issue #413)
Merged
#417 feat: auto-dock (Issue #410)
Merged
#416 feat: voice commands (Issue #409)
Merged
#415 feat: VESC balance PID controller with tilt safety (Issue #407)
Merged
#414 feat: ROS2 bag recording service (Issue #411)
Merged
#406 feat: encounter offline queue sync service (Issue #400)
Merged
#402 feat: first encounter orchestrator (Issue #400)
Merged
#401 feat: hey salty wake word model (Issue #393)
Merged
#399 feat: face display bridge (Issue #394)
Merged
#398 fix: MeshPeer namespace reserved keyword (Issue #392)
Merged
#396 feat: 360 obstacle avoidance with RPLIDAR (Issue #364)
Merged
#391 feat: accessibility communication UI (Issue #371)
Merged
#390 feat: pan/tilt camera head (Issue #384)
Merged
#386 feat: STM32 watchdog timer driver (Issue #300)
Merged
#389 refactor: ESC abstraction layer with pluggable backends (Issue #388)
Merged
#387 fix: add missing bno055.h include in main.c
Merged
#385 feat: VESC UART driver node with pyvesc (Issue #383)
Merged
#382 fix: resolve all compile errors across 6 files (Issue #337)
Merged
#381 feat: deaf/accessibility mode (Issue #371)
Merged
#380 feat: 360° LIDAR obstacle avoidance (Issue #364)
Merged
#379 feat: Salty Face animated expression UI (Issue #370)
Merged
#377 feat: Replace GNOME with Cage+Chromium kiosk (Issue #374)
Merged
#378 feat: battery coulomb counter (Issue #325)
Merged
#373 feat: MageDok 7in display setup for Orin (Issue #369)
Merged
#376 feat: adaptive camera power modes (Issue #375)
Merged
#372 feat: smooth velocity ramp controller (Issue #350)
Merged
#368 feat: Issue #365 — UWB DW3000 anchor/tag tracking (bearing + distance)
Merged
#360 feat(webui): ROS parameter editor in Settings panel (Issue #354)
Merged
#367 feat: Issue #363 — P0 person tracking for follow-me mode
Merged
#361 feat(perception): geometric face emotion classifier (Issue #359)
Merged
#357 feat(social): system resource monitor for Jetson Orin (Issue #355)
Merged
#358 feat(perception): MFCC nearest-centroid audio scene classifier (Issue #353)
Merged
#352 feat(webui): dedicated CAMERAS tab group with live MJPEG viewer (Issue #349)
Merged
#351 feat(perception): depth-based obstacle size estimator (Issue #348)
Merged
#335 feat(social): trigger-based ROS2 bag recorder (Issue #332)
Merged
#346 feat(webui): hand tracking skeleton visualization (Issue #344)
Merged
#334 feat: Add pure pursuit path follower for Nav2 (Issue #333)
Merged
#345 feat(perception): MediaPipe hand tracking — Leap Motion pivot (Issue #342)
Merged
#343 feat(webui): diagnostics panel — system health overview with alerts (Issue #340)
Merged
#341 feat(perception): lane/path edge detector (Issue #339)
Merged
#331 feat(webui): gamepad teleoperation panel with WASD + e-stop (Issue #319)
Merged
#338 fix(webui): add 3 missing imports to App.jsx (Issue #329) P0
Merged
#336 feat(perception): dynamic obstacle velocity estimator (Issue #326)
Merged
#330 feat(perception): appearance-based person re-identification (Issue #322)
Merged
#328 feat(social): USB camera hot-plug monitor (Issue #320)
Merged
#327 feat: Add battery-aware speed limiter ROS2 node (Issue #321)
Merged
#318 feat(perception): wheel encoder differential drive odometry (Issue #184)
Merged
#317 feat(social): audio wake-word detector 'hey salty' (Issue #320)
Merged
#316 feat: Add velocity smoothing filter ROS2 node
Merged
#315 feat(webui): ROS node list viewer
Merged
#314 feat(social): personal space respector node (Issue #310)
Merged
#313 feat(perception): sky detector for outdoor navigation (Issue #307)
Merged
#312 feat(webui): thermal status gauge with CPU/GPU temperature display (Issue #308)
Merged
#311 Adaptive PID gain scheduler (Issue #309)
Merged
#306 feat(webui): motor current live graph (#297)
Merged
#305 feat(perception): terrain roughness estimator via Gabor + LBP (Issue #296)
Merged
#304 feat(social): conversation topic memory (Issue #299)
Merged
#302 Geofence boundary enforcer (Issue #298)
Merged
#295 feat(webui): topic bandwidth monitor (#287)
Merged
#294 feat: Add RGB status LED state machine (Issue #290)
Merged
#293 feat(social): speech volume auto-adjuster (Issue #289)
Merged
#292 feat(perception): motion blur detector via Laplacian variance (Issue #286)
Merged
#291 Cliff and drop-off detection safety node (Issue #288)
Merged
#283 feat(mechanical): Cable management clips (Issue #264)
Merged
#285 feat(webui): battery history chart (#280)
Merged
#284 feat(social): face-tracking head servo controller (Issue #279)
Merged
#282 IMU calibration routine (Issue #278)
Merged
#281 feat(perception): HSV color object segmenter (Issue #274)
Merged
#276 feat: Add cooling fan PWM speed controller (Issue #263)
Merged
#277 feat(webui): system log tail viewer (#275)
Merged
#272 feat(social): proximity-based greeting trigger (Issue #270)
Merged
#266 feat(controls): Wheel slip detector (Issue #262)
Merged
#273 feat(webui): robot status dashboard header (#269)
Merged
#271 feat(bringup): D435i depth hole filler via bilateral interpolation (Issue #268)
Merged
#267 feat(webui): waypoint editor with click-to-navigate (#261)
Merged
#265 feat(bringup): visual odometry drift detector (Issue #260)
Merged
#258 feat(social): ambient sound classifier via mel-spectrogram (Issue #252)
Merged
#259 feat(webui): SLAM map viewer with occupancy grid (#250)
Merged
#257 feat: Piezo buzzer melody driver (Issue #253)
Merged
#256 feat(bringup): floor surface type classifier on D435i RGB (Issue #249)
Merged
#255 feat(controls): Battery-aware speed scaling (Issue #251)
Merged
#248 feat(webui): conversation history panel (#240)
Merged
#247 feat(social): energy+ZCR voice activity detection node (Issue #242)
Merged
#246 feat(controls): Smooth acceleration rate limiter (Issue #241)
Merged
#245 feat: HC-SR04 ultrasonic distance sensor driver (Issue #243)
Merged
#244 feat(bringup): LIDAR Euclidean object clustering + RViz visualisation (Issue #239)
Merged
#238 feat(webui): audio level meter (Issue #234)
Merged
#237 feat(perception): QR code reader on CSI surround frames (Issue #233)
Merged
#236 feat(controls): Tilt-compensated compass heading node (Issue #235)
Merged
#232 feat(webui): 3D robot pose viewer (Issue #229)
Merged
#231 feat(social): 68-point Kalman landmark smoother (Issue #227)
Merged
#230 feat(controls): Priority-based cmd_vel multiplexer (Issue #228)
Merged
#224 feat(controls): motor current protection (Issue #223)
Merged
#226 feat(social): hand gesture pointing direction node (Issue #221)
Merged
#225 feat(webui): network diagnostics panel (Issue #222)
Merged
#218 feat: INA219 dual motor current monitor driver (Issue #214)
Merged
#219 feat(bringup): obstacle height filter with IMU pitch compensation (Issue #211)
Merged
#220 feat(webui): joystick teleop widget (Issue #212)
Merged
#217 feat(controls): odometry fusion (Issue #216)
Merged
#215 feat(controls): PID auto-tuner (Issue #213)
Merged
#210 feat(firmware): pan-tilt servo driver (Issue #206)
Merged
#208 feat(perception): person re-identification node (Issue #201)
Merged
#209 feat(jetson): CPU/GPU thermal monitor — sysfs + /saltybot/thermal JSON (Issue #205)
Merged
#207 feat(controls): node watchdog monitor (Issue #203)
Merged
#204 feat(firmware): WS2812B LED status indicator (Issue #193)
Merged
#202 feat(social): robot mesh comms — peer announce + person handoff (Issue #171)
Merged
#200 feat(controls): speed limiter node (Issue #194)
Merged
#199 feat(jetson): camera health watchdog — 6 streams, WARNING/ERROR, v4l2 reset (issue #198)
Merged
#197 feat(jetson): AprilTag landmark detector — DICT_APRILTAG_36h11 10Hz 6-DOF (issue #191)
Merged
#196 feat(jetson): depth confidence filter node (issue #190)
Merged
#187 feat(social): multi-language support - Whisper LID + per-lang Piper TTS (Issue #167)
Merged
#186 feat(power): STOP-mode sleep/wake power manager — Issue #178
Merged
#182 feat(webui): live camera viewer — multi-stream + detection overlays (Issue #177)
Merged
#180 feat(social): facial expression recognition — TRT FP16 emotion CNN (Issue #161)
Merged
#181 feat(jetson): dynamic obstacle tracking — LIDAR motion detection, Kalman tracking, trajectory prediction, Nav2 costmap (#176)
Merged
#179 feat(#169): emergency behavior system — obstacle stop, fall prevention, stuck detection, recovery FSM
Merged
#174 feat(mechanical): modular payload bay system (Issue #170)
Merged
#175 feat(jetson): night vision mode — IR emitter, headlight, ambient-light FSM, IR SLAM bridge (#168)
Merged
#173 feat(audio): I2S3 audio amplifier driver — Issue #143
Merged
#172 fix: IWDG reset during gyro recal — refresh at i=0 not i=39 (P0 #42)
Merged
#166 feat(webui): settings & configuration panel (Issue #160)
Merged
#165 feat(#158): docking station auto-return — ArUco/IR detection, visual servo, charge monitoring
Merged
#164 feat(vo): visual odometry fallback — CUDA optical flow + EKF fusion + slip failover (Issue #157)
Merged
#163 feat(mechanical): universal charging dock station (Issue #159)
Merged
#162 feat(social): multi-camera gesture recognition — MediaPipe Hands + Pose (Issue #140)
Merged
#156 feat(firmware): OTA firmware update — USB DFU + dual-bank + CRC32 (Issue #124)
Merged
#155 feat(webui): mission planner — waypoint editor, routes, geofences, schedule (Issue #145)
Merged
#154 feat(#142): terrain adaptation — surface detection + dynamic speed/PID/bias
Merged
#153 feat(scene): semantic scene understanding — YOLOv8n TRT + room classification + hazards (Issue #141)
Merged
#152 feat(mechanical): IP54 weatherproofing kit (Issue #144)
Merged
#151 feat(mechanical): universal sensor mount rail system (Issue #138)
Merged
#150 feat(firmware): BNO055 NDOF IMU driver on I2C1 (Issue #135)
Merged
#149 feat(controls): adaptive PID balance controller with gain scheduling (Issue #136)
Merged
#148 feat(social): voice command NLU — 30+ intents with confirmation flow (Issue #137)
Merged
#147 feat(webui): fleet management dashboard (Issue #139)
Merged
#146 feat(fleet): multi-robot SLAM — map sharing + cooperative exploration (Issue #134)
Merged
#133 feat(bridge): battery management node — SoC, alerts, speed limits (Issue #125)
Merged
#132 feat(firmware): Jetson binary serial protocol on USART1 (Issue #120)
Merged
#131 feat: SaltyTank tracked chassis — drive sprockets, tensioners, skid plate (#121)
Merged
#130 feat(ui): telemetry dashboard panels (issue #126)
Merged
#129 feat(mapping): RTAB-Map persistence + multi-session mapping (Issue #123)
Merged
#128 feat(bridge): binary STM32 command protocol (Issue #119)
Merged
#127 feat(tank): SaltyTank tracked-vehicle ESC driver (Issue #122)
Merged
#117 feat(rover): SaltyRover 4-wheel ESC motor driver (Issue #110)
Merged
#118 feat(tests): social-bot integration test suite (Issue #108)
Merged
#116 feat: SaltyRover chassis Rev 2 — 4-wheel rover with spring suspension (#109)
Merged
#115 feat(panoramic): 360° equirectangular stitching + RTSP #105
Merged
#114 feat(controls): Autonomous/RC mode switch with 500ms blend ramp (Issue #104)
Merged
#113 feat(calibration): IMX219 intrinsic + extrinsic calibration workflow #106
Merged
#112 feat(ui): social-bot web dashboard (issue #107)
Merged
#111 feat(rc): CRSF/ELRS RC integration — telemetry uplink + channel fix (Issue #103)
Merged
#102 feat(social): speech + LLM + TTS + orchestrator (#81 #83 #85 #89)
Merged
#101 feat(social): Orin dev environment — JetPack 6 + TRT conversion + systemd (#88)
Merged
#100 feat(social): multi-modal tracking fusion — UWB+camera Kalman filter (Issue #92)
Merged
#98 feat(social): personality system — SOUL.md persona, mood engine, relationship DB (Issue #84)
Merged
#96 feat(social): face detection + recognition #80
Merged
#95 feat(social): person enrollment system #87
Merged
#94 feat(social): Issue #86 — physical expression + motor attention
Merged
#97 feat(social): navigation & path planning #91
Merged
#99 feat(uwb): MaUWB ESP32-S3 DW3000 dual-anchor bearing driver (Issue #90)
Merged
#93 feat(social): multi-modal person state tracker #82
Merged
#69 feat(safety): remote e-stop over 4G MQTT (Issue #63)
Merged
#79 feat: SaltyRover 4-wheel chassis (#73)
Merged
#77 feat: SaltyRover 4-wheel diff-drive control loop (#74)
Merged
#78 feat: semantic sidewalk segmentation — TensorRT FP16 (#72)
Merged
#76 feat: outdoor adaptive speed controller — walk/jog/ride profiles up to 8 m/s
Merged
#75 feat: route recording + autonomous replay (#71)
Merged
#70 feat: SIM7600X mount + LTE/GNSS antenna brackets
Merged
#67 feat: outdoor nav — OSM routing + geofence (#59)
Merged
#68 feat: full_stack.launch.py — one-command autonomous stack bringup
Merged
#66 feat: UWB follow-me system (#57)
Merged
#65 feat: SIM7600X 4G cellular + GPS (#58)
Merged
#64 feat: UWB tag enclosure + anchor mounts (#57, #61, #62)
Merged
#53 feat: rosbridge WebSocket for web UI (port 9090)
Merged
#56 feat: bumper + frame crash protection (roll cage, base bumper, stem sleeves)
Merged
#55 feat: person-following control loop
Merged
#54 feat: person detection + tracking (YOLOv8n TensorRT)
Merged
#52 feat: 4x IMX219 surround vision + Nav2 costmap layer (Phase 2c)
Merged
#51 feat: Orin Nano Super platform update + 4x IMX219 CSI cameras
Merged
#50 feat: Phase 2a URDF robot description + static TF for SLAM/Nav2
Merged
#49 feat: Nav2 path planning + obstacle avoidance (Phase 2b)
Merged
#48 feat: sensor head mounts — RPLIDAR, RealSense D435i, 4× IMX219
Merged
#46 feat: Nav2 cmd_vel to STM32 autonomous drive bridge
Merged
#45 feat: Web UI overhaul — modern HUD dashboard (#43)
Merged
#36 feat: SLAM stack update for Jetson Orin Nano Super (67 TOPS, JetPack 6)
Merged
#35 feat: CRSF/ELRS RC integration (Phase 2)
Merged
#39 feat: Gyro recalibration button in web UI (#32)
Merged
#41 feat: SaltyBot 3D robot model in web UI (#37)
Merged
#40 fix: Yaw inversion in web UI (P0 #38)
Merged
#34 feat: Jetson command protocol — /cmd_vel to STM32 (Phase 2)
Merged
#33 feat: RC/Autonomous mode switch (Phase 2)
Merged
#31 feat: BME280 temp/humidity/pressure telemetry (#30)
Merged
#29 docs: Multi-variant branch strategy (#28)
Merged
#27 feat: Auto-detect magnetometer + barometer (#24)
Merged
#26 fix: Status LEDs solid=OK blink=error (#22)
Merged
#25 feat: Boot gyro calibration — eliminates yaw drift (#21, #23)
Merged
#20 fix: IMU axis mapping for CW270 orientation (#15)
Merged
#19 feat: motor driver layer — differential drive, steer ramp, estop
Merged
#17 feat(bd-a2j): Sensor driver integration — RealSense D435i + RPLIDAR A1M8
Merged
#16 feat: STM32 serial bridge — USB CDC to ROS2 topics
Merged
#14 fix: Roll axis + yaw telemetry (issues #12, #13)
Merged
#11 feat: Prototype base plate — real hub motor axle measurements
Merged
#10 fix(usb): MPU non-cacheable region + IWDG ordering fix (bd-3ulu)
Merged
#4 feat(safety): IWDG watchdog, arm hold interlock, tilt alert (bd-3qh)
Merged
#3 feat(pid): runtime PID tuning via USB + telemetry (bd-18i)
Merged
#2 feat(imu): MPU6000 sensor fusion — complementary filter (bd-2dv)
Merged
#8 feat: Jetson Nano platform setup (bd-1hcg)
Merged
#7 feat: Parametric chassis frame design (bd-1iy5)
Merged
#1 bd-wax: SLAM setup technical plan — Jetson Nano + RealSense D435i + RPLIDAR
Merged
#6 fix(usb): resolve USB CDC TX failure — DCache coherency + buffer + IMU API (bd-1lo)
3 Pull requests proposed by 1 user
Proposed
#725 feat: WSS rosbridge proxy + auto-detect wss:// in tracker (Issue #681)
Proposed
#726 feat: Here4 DroneCAN GPS driver + NTRIP client (RTK ready)
Proposed
#733 feat: ESP32 OTA firmware update system (dual partition, UART relay, Orin commands)
346 Issues closed from 4 users
Closed
#709 iOS Companion App (Sul-Tee) — New Agent Needed
Closed
#694 CAN bus watchdog and error recovery — handle bus-off, auto-restart
Closed
#693 PID tuning interface — expose balance gains via CAN/ROS2 params
Closed
#700 Android BLE pairing UI for UWB tag configuration
Closed
#696 SLAM map persistence — save/load maps for AMCL localization
Closed
#699 VESC dual ESC mount bracket for 2020 T-slot rail
Closed
#698 UWB anchor auto-discovery — tag scans and registers anchors dynamically
Closed
#695 End-to-end CAN integration test — Orin↔Mamba↔VESC full loop
Closed
#697 WebSocket bridge — connect CAN monitor dashboard to live ROS2 topics
Closed
#690 UWB Tag BLE Configuration - Phone app settings via Bluetooth
Closed
#689 UWB Tag Power Management - Sleep mode for battery life
Closed
#682 Hardware button: park/disarm on single press, re-arm on 2 short + 1 long press
Closed
#681 Remote monitor: all CAN sensors visible (VESC telemetry + IMU + balance state)
Closed
#672 feat(firmware): Add GY-BMI160 barometric pressure & ambient temperature to FC
Closed
#685 LED status indicators for balance states
Closed
#653 Web UI: VESC motor dashboard panel with live CAN telemetry
Closed
#656 Phone MQTT: CAN telemetry relay to Android sensor dashboard
Closed
#655 Nav2 integration: AMCL + costmap with VESC odometry and LiDAR
Closed
#658 Diagnostics aggregator: unified health dashboard ROS2 node
Closed
#674 CAN bus integration: Mamba F722S ↔ VESC ↔ Orin
Closed
#669 Fix VESC topic naming mismatch between telemetry and nav2_slam odometry bridge
Closed
#676 Remap CAN driver from CAN2/PB12-13 to CAN1/PB8-9 for Mamba F722S MK2
Closed
#670 Fix sl-perception PR #649 hardcoded CAN ID 61/79 topic subscriptions
Closed
#678 Bump arm pitch threshold from 10° to 20° (Mamba mount angle offset)
Closed
#651 VESC CAN health monitor: watchdog + auto-recovery for dual motors
Closed
#657 UWB-VESC integration: position-based speed limiting near obstacles
Closed
#652 Smooth velocity controller: acceleration/deceleration ramp for cmd_vel
Closed
#654 Chassis: CANable 2.0 USB adapter mount for T-slot rail
Closed
#667 PRIORITY: Make VESC CAN motor IDs fully configurable — default 56/68
Closed
#680 IMU mount angle calibration — save offset to flash, expose recal via USB + remote monitor
Closed
#683 Fix UART bridge UnboundLocalError: lines variable scope in saltybot_cmd_node
Closed
#645 VESC CAN telemetry: read voltage, current, RPM, temp from both motors
Closed
#646 VESC odometry: wheel encoder feedback from dual CAN motors for nav2
Closed
#644 VESC CAN driver: SocketCAN dual-motor control for VESC IDs 61 and 79
Closed
#643 CANable 2.0 bringup: udev rule + can0 SocketCAN interface setup on Jetson Orin
Closed
#632 Encoder odometry and wheel speed feedback
Closed
#631 Jetson system monitor ROS2 node
Closed
#634 UWB position logger and accuracy analyzer
Closed
#630 WebUI main dashboard with panel launcher
Closed
#629 UART command protocol for Jetson-STM32 communication
Closed
#627 ArUco marker detection for docking alignment
Closed
#633 Termux voice command interface for SaltyBot
Closed
#628 Cable management tray for 2020 T-slot chassis
Closed
#613 Battery voltage telemetry and low-voltage cutoff
Closed
#615 ROS2 bag recording manager node
Closed
#617 Phone GPS waypoint logger and route planner
Closed
#618 ESP-NOW to ROS2 relay node via serial
Closed
#614 WebUI settings and configuration panel
Closed
#616 Steering PID controller for differential drive
Closed
#611 RealSense depth-based obstacle detection node
Closed
#612 Jetson Orin Nano carrier board mount for T-slot chassis
Closed
#597 CAN bus driver for BLDC motor controllers
Closed
#601 Termux MQTT-to-ROS2 bridge for phone sensors
Closed
#598 WebUI gamepad teleoperation panel
Closed
#602 UWB anchor position auto-calibration
Closed
#599 Nav2 integration with UWB-based localization
Closed
#600 Tilt compensation for self-balancing on slopes
Closed
#595 Multi-sensor pose fusion node (UWB + visual odom + IMU)
Closed
#596 RPLIDAR A1 mount bracket for 2020 T-slot chassis
Closed
#565 STM32 watchdog and fault recovery handler
Closed
#588 Battery holder bracket for 6S LiPo on 2020 T-slot chassis
Closed
#585 Phone-to-Jetson video streaming bridge via WebSocket
Closed
#584 Motor current monitoring and overload protection on STM32
Closed
#577 ROS2 launch orchestrator for full SaltyBot bringup
Closed
#587 WebUI map view with UWB position and RPLIDAR scan overlay
Closed
#586 Visual odometry from RealSense stereo for drift correction
Closed
#576 WebUI event log panel with filterable real-time feed
Closed
#550 PID gain scheduling for speed-dependent balance tuning
Closed
#564 UWB anchor mount bracket for wall/ceiling installation
Closed
#574 Termux sensor dashboard — phone IMU + GPS + battery on MQTT
Closed
#573 UWB-IMU fusion for robust indoor localization
Closed
#575 RPLIDAR obstacle ring detector for 360-degree safety zone
Closed
#546 ROS2 UWB position node (serial bridge from tag to Jetson)
Closed
#562 WebUI system diagnostics dashboard (battery, temps, network)
Closed
#545 ESP32 UWB Pro tag firmware (TWR initiator for SaltyBot)
Closed
#566 ROS2 sensor health monitor node
Closed
#544 ESP32 UWB Pro anchor firmware (TWR responder)
Closed
#561 Sensor bracket: RPLIDAR A1 mount for 2020 T-slot rail
Closed
#547 Pan/tilt gimbal servo driver for ST3215 bus servos
Closed
#548 ROS2 gimbal control node for pan/tilt camera head
Closed
#552 Camera gimbal mount bracket for RealSense D435i
Closed
#553 Phone-based voice command interface via Termux microphone
Closed
#551 WebUI gimbal control panel with live camera preview
Closed
#549 Person-following head tracking with RealSense
Closed
#534 [P1] Teleop web interface — browser-based remote control with video
Closed
#536 [P1] Firmware flash script — one-command STM32 programming from Orin
Closed
#532 [P1] RealSense D435i depth-to-costmap — obstacle avoidance from stereo depth
Closed
#533 [P2] Battery voltage ADC driver — real-time battery monitoring on STM32
Closed
#535 [P2] OpenSCAD phone mount bracket — spring-loaded holder for T-slot rail
Closed
#531 [P1] PID auto-tune — automated loop tuning for balance mode
Closed
#503 [P2] Audio pipeline — wake word + STT + TTS end-to-end on Jabra
Closed
#523 P1: Create Orin-side motor control daemon (Python/ROS2)
Closed
#522 P1: USART6 TX output truncated — strings arrive with leading nulls
Closed
#521 P2: Clean up ESC debug output and diagnostic commands
Closed
#513 [P2] Phone-based motor test app — Termux BLE/WiFi joystick for bench testing
Closed
#506 [P1] ROS2 launch parameter profiles — indoor vs outdoor vs demo
Closed
#504 [P1] Integration test suite — verify all ROS2 nodes launch together
Closed
#469 [P1] Terrain classification — surface type detection for speed adaptation
Closed
#524 P2: USB CDC TX data never flows with full peripheral init
Closed
#520 P0: MPU6000 IMU calibration never completes — blocks arming/balance mode
Closed
#505 [P2] Charging dock hardware design — ArUco marker + contact pads
Closed
#502 [P1] Headscale VPN client auto-connect — Orin joins tailnet on boot
Closed
#512 [P0] Remove ELRS arm requirement — robot must operate autonomously
Closed
#507 [P2] Face display animations — LCD emotion rendering on STM32
Closed
#491 [P1] Voice command router — parse and dispatch spoken commands
Closed
#494 [P2] TTS personality engine — expressive speech with context
Closed
#481 [P2] ROS2 bag recording — mission logging for replay and debug
Closed
#492 [P2] OTA firmware update mechanism — remote deploy to Orin
Closed
#490 [P2] Multi-sensor fusion for obstacle avoidance — merge LIDAR + depth
Closed
#493 [P1] Person following mode — track and follow a specific person
Closed
#488 [P1] ROS2 bag recording — mission logging for replay and debug
Closed
#489 [P1] Docking station behavior — auto-charge when low battery
Closed
#475 Configure Nav2 stack on Orin (nav2_params.yaml + launch integration)
Closed
#480 [P1] Map save/load service — persist SLAM maps between sessions
Closed
#482 [P1] Behavior tree coordinator — autonomous mode state machine
Closed
#483 [P2] Remote monitoring dashboard — web status page for SaltyBot
Closed
#478 [P1] Costmap configuration — local + global costmaps for Nav2
Closed
#479 [P2] Recovery behaviors — Nav2 backup/spin/wait on stuck
Closed
#477 [P1] URDF robot description — TF tree + footprint for Nav2
Closed
#473 [P1] Event logger — structured logging of all SaltyBot activities
Closed
#470 [P2] Curiosity behavior — autonomous exploration when idle
Closed
#472 [P2] Dance to music — beat detection + synchronized movement
Closed
#471 [P1] ROS2 parameter server — centralized dynamic reconfiguration
Closed
#468 [P1] Object detection + labeling — identify and name common objects
Closed
#467 [P1] Power management supervisor — battery protection + graceful shutdown
Closed
#459 [P1] Emergency stop cascade — unified e-stop with hardware + software layers
Closed
#458 [P2] WiFi mesh handoff — seamless connectivity between APs
Closed
#457 [P1] Sound effects library — event-driven audio feedback
Closed
#456 [P2] Photo capture service — snapshot + timelapse + event-triggered photos
Closed
#455 [P1] Smooth velocity controller — acceleration limiter + jerk reduction
Closed
#454 [P1] Gesture recognition — hand/body gesture commands via RealSense
Closed
#453 [P1] Obstacle memory map — persistent hazard zones from LIDAR history
Closed
#447 [P1] ROS2 full stack launch — master launch file for all SaltyBot nodes
Closed
#446 [P2] Patrol mode — autonomous waypoint circuit with idle behaviors
Closed
#445 [P1] Diagnostic self-test — startup hardware check + continuous monitoring
Closed
#444 [P2] Night mode — IR camera + reduced noise + stealth LED patterns
Closed
#443 [P1] Social memory database — persistent person knowledge across encounters
Closed
#442 [P1] Weather awareness — rain/wind/temp sensor fusion for outdoor behavior
Closed
#441 [P1] Geofence safety — configurable boundary with auto-return
Closed
#433 [P1] Teleoperation gamepad node — PS5 DualSense controller via Bluetooth
Closed
#432 [P1] LED strip controller — NeoPixel status indicators on chassis
Closed
#431 [P2] Trick routines — fun behaviors (spin, dance, nod, wave)
Closed
#430 [P1] Audio direction estimator — sound source localization for speaker tracking
Closed
#429 [P1] Emotion engine — context-aware face expression selection
Closed
#420 [P1] Android/Termux OpenClaw node — phone as SaltyBot sensor + AI compute node
Closed
#424 [P2] Remote monitoring WebSocket relay — stream telemetry to phone over WiFi/LTE
Closed
#423 [P1] Multi-person tracker — group handling + follow target priority
Closed
#422 [P1] Nav2 SLAM integration — RPLIDAR + RealSense depth for autonomous navigation
Closed
#421 [P1] Piper TTS service node — shared text-to-speech for all nodes
Closed
#413 Add sensor feeds to SaltyLab HUD (GPS, LIDAR, RealSense)
Closed
#408 [P1] ROS2 system health monitor — node heartbeats + auto-restart
Closed
#362 [P0] Complete FC↔Orin UART link — fix TX6 wire + verify jlink protocol end-to-end
Closed
#356 [P0] Orin-FC UART wiring disconnected - USART6 (PC6/PC7) not reaching Orin GPIO 8/10
Closed
#412 [P1] WebUI live operations dashboard — all telemetry in one view
Closed
#411 [P2] ROS2 bag recording service — automated sensor data capture
Closed
#410 [P2] Auto-dock charging — ArUco marker detection + approach sequence
Closed
#409 [P1] Voice command interpreter — natural language to robot actions
Closed
#407 [P1] VESC balance mode PID tuning + tilt safety limits
Closed
#400 feat(social): First Encounter routine — autonomous introduction + person enrollment
Closed
#394 feat(social): Bridge orchestrator pipeline state to face display WebSocket API
Closed
#393 feat(social): Train custom OpenWakeWord model for "hey salty"
Closed
#392 bug(social_msgs): MeshPeer.msg uses C++ reserved keyword namespace — build fails
Closed
#388 [P1] ESC abstraction layer — pluggable motor controller backends
Closed
#384 [P2] Pan/tilt camera head — Waveshare ST3215 servo control + bracket
Closed
#383 [P1] FSESC 4.20 Plus VESC integration — balance mode + UART motor control
Closed
#374 [P1] Replace GNOME with Cage + Chromium kiosk — save 650MB RAM
Closed
#371 [P1] Deaf/accessibility communication — speech-to-text + touch keyboard
Closed
#370 [P1] Salty Face — animated expression UI on touchscreen
Closed
#369 [P1] MageDok 7" touchscreen setup — DP video + USB touch on Orin
Closed
#366 [P0] Follow-me controller — sensor fusion + path planning + motor commands
Closed
#364 [P0] 360 obstacle avoidance — RPLIDAR A1M8 integration
Closed
#354 feat(webui): settings panel — configurable ROS parameters with live editing
Closed
#337 [P0] Firmware build broken on main — 7 compile errors across 6 files
Closed
#325 feat(firmware): battery coulomb counter — track charge/discharge cycles and estimate remaining capacity
Closed
#300 feat(firmware): watchdog timer driver
Closed
#375 [P0] Camera power modes — adaptive sensor management across scenarios
Closed
#350 feat(controls): smooth velocity ramp — acceleration/deceleration limiter for cmd_vel
Closed
#365 [P0] UWB target tracking — DW3000 anchor/tag integration
Closed
#363 [P0] Person tracking — RealSense D435i detection + following at 20km/h
Closed
#359 feat(perception): face emotion classifier — detect basic emotions from facial landmarks
Closed
#353 feat(perception): audio scene classifier — detect indoor/outdoor/traffic/park from ambient sound
Closed
#355 feat(jetson): system resource monitor — CPU/GPU/RAM/disk usage publisher
Closed
#349 feat(webui): camera stream viewer — live MJPEG display from RealSense cameras
Closed
#348 feat(perception): depth-based obstacle size estimator — measure real-world dimensions from D435i
Closed
#332 feat(jetson): ROS2 bag recorder — trigger-based rosbag recording with topic filtering
Closed
#344 feat(webui): hand tracking visualization — show MediaPipe hand skeleton and gesture label
Closed
#333 feat(controls): smooth path follower — pure pursuit controller for Nav2 waypoint following
Closed
#342 [P1] Leap Motion SDK has no ARM64 support — pivot hand tracking to MediaPipe
Closed
#340 feat(webui): diagnostics panel — system health overview with error counts and alerts
Closed
#339 feat(perception): lane/path edge detector — find driveable path boundaries from camera
Closed
#319 feat(webui): gamepad teleoperation panel — virtual joystick + keyboard WASD for manual driving
Closed
#329 bug(webui): App.jsx missing imports — StatusHeader, LogViewer, MotorCurrentGraph
Closed
#326 feat(perception): dynamic obstacle velocity estimator — track moving objects and predict trajectories
Closed
#321 feat(controls): battery-aware speed limiter — reduce max velocity as battery drops below thresholds
Closed
#322 feat(perception): person re-identification — track individuals across camera views using appearance features
Closed
#320 feat(jetson): USB camera hot-plug monitor — detect connect/disconnect events and restart camera nodes
Closed
#254 feat(mechanical): camera rain shield
Closed
#301 feat(mechanical): sensor dust cover
Closed
#195 feat(mechanical): GoPro mount adapter — universal action camera bracket for sensor rail
Closed
#185 feat(mechanical): Phone mount bracket — adjustable clamp for dashboard phone holder
Closed
#184 feat(controls): Wheel encoder odometry — Hall sensor tick counting + velocity estimation
Closed
#189 feat(firmware): Buzzer driver — piezo beep patterns for alerts and notifications
Closed
#183 feat(webui): Battery history chart — 24h voltage + SoC sparkline with charge cycle markers
Closed
#308 feat(webui): CPU/GPU temperature gauge
Closed
#307 feat(perception): sky detection for outdoor nav
Closed
#309 feat(controls): adaptive PID gain scheduler
Closed
#310 feat(social): personal space respector
Closed
#298 feat(controls): geofence boundary enforcer
Closed
#296 feat(perception): texture-based terrain roughness estimator
Closed
#297 feat(webui): motor current live graph
Closed
#299 feat(social): conversation topic memory
Closed
#290 feat(firmware): RGB status LED state machine
Closed
#287 feat(webui): topic bandwidth monitor
Closed
#288 feat(controls): cliff sensor safety stop
Closed
#286 feat(perception): motion blur detector
Closed
#264 feat(mechanical): cable management clips
Closed
#289 feat(social): speech volume auto-adjust
Closed
#280 feat(webui): battery history chart
Closed
#278 feat(controls): IMU calibration routine
Closed
#274 feat(perception): color-based object segmentation
Closed
#263 feat(firmware): fan speed controller PWM
Closed
#279 feat(social): face tracking head servo controller
Closed
#275 feat(webui): system log tail viewer
Closed
#262 feat(controls): wheel slip detector
Closed
#270 feat(social): proximity-based greeting trigger
Closed
#269 feat(webui): robot status dashboard header bar
Closed
#268 feat(perception): stereo depth hole filling
Closed
#260 feat(perception): visual odometry drift detector
Closed
#261 feat(webui): waypoint editor with click-to-navigate
Closed
#252 feat(social): ambient sound classifier
Closed
#253 feat(firmware): buzzer melody driver
Closed
#251 feat(controls): battery-aware speed scaling
Closed
#250 feat(webui): map viewer with SLAM occupancy grid
Closed
#249 feat(perception): floor type classifier
Closed
#243 feat(firmware): ultrasonic ranger driver HC-SR04
Closed
#241 feat(controls): Smooth acceleration limiter — jerk-limited velocity ramp
Closed
#240 feat(webui): Conversation history panel — scrollable chat log with person names
Closed
#239 feat(perception): LIDAR object clustering — segment scan into distinct objects
Closed
#242 feat(social): voice activity detection node
Closed
#235 feat(controls): Compass heading node — magnetometer fusion for absolute yaw
Closed
#233 feat(perception): QR code reader — detect and decode QR codes for robot commands
Closed
#234 feat(webui): Audio level meter — live microphone VU meter with speech activity indicator
Closed
#229 feat(webui): Robot 3D pose viewer — Three.js IMU orientation display with trail
Closed
#228 feat(controls): cmd_vel multiplexer — priority-based velocity command routing
Closed
#227 feat(perception): Face landmark smoothing — temporal Kalman filter on 68-point landmarks
Closed
#223 feat(controls): Motor current protection — overcurrent detection and thermal derating
Closed
#222 feat(webui): Network diagnostics panel — WiFi signal, latency, and bandwidth display
Closed
#221 feat(perception): Hand gesture pointing direction — estimate 3D point target from hand pose
Closed
#214 feat(firmware): Current sense ADC — INA219 I2C driver for motor current monitoring
Closed
#212 feat(webui): Joystick teleop widget — virtual thumbstick for manual robot control
Closed
#211 feat(perception): Obstacle height filter — reject ground-plane LIDAR points for Nav2 costmap
Closed
#216 feat(controls): Odometry fusion node — fuse wheel + visual + IMU into single /odom
Closed
#213 feat(controls): PID auto-tune — relay feedback method for balance controller gains
Closed
#206 feat(firmware): Servo driver — PWM output for pan-tilt camera head
Closed
#201 feat(perception): Person re-identification — appearance embedding for cross-camera tracking
Closed
#192 feat(webui): Robot event log viewer — scrollable timeline of alerts, mode changes, and errors
Closed
#203 feat(controls): Watchdog timer node — heartbeat monitor for critical ROS2 nodes
Closed
#205 feat(jetson): CPU/GPU temperature monitor — thermal throttle warning node
Closed
#193 feat(firmware): LED status indicator — NeoPixel WS2812B driver for system state visualization
Closed
#171 feat(jetson): Robot-to-robot communication — direct mesh messaging between SaltyBots
Closed
#194 feat(controls): Speed limiter node — enforce max velocity based on terrain, battery, and proximity
Closed
#198 feat(perception): Camera health monitor — watchdog node for CSI/D435i stream liveness
Closed
#191 feat(perception): AprilTag landmark detector — detect and publish AprilTag poses for localization
Closed
#190 feat(perception): Depth confidence filter — reject D435i depth pixels below confidence threshold
Closed
#167 feat(jetson): Multi-language support — STT/TTS language switching + translation
Closed
#178 feat(firmware): Power management — sleep modes + wake sources + power consumption profiling
Closed
#177 feat(webui): Live camera viewer — multi-camera stream + detection overlay + recording
Closed
#176 feat(perception): Dynamic obstacle tracking — moving object prediction for path planning
Closed
#161 feat(jetson): Emotion detection — facial expression recognition for adaptive social responses
Closed
#169 feat(controls): Emergency behavior system — collision avoidance + fall prevention + stuck detection
Closed
#168 feat(perception): Night vision mode — IR + low-light camera adaptation for dark environments
Closed
#170 feat(mechanical): Modular payload bay — tool-free swappable modules (arm, tray, camera boom)
Closed
#160 feat(webui): Settings & configuration panel — robot config editor + firmware version + diagnostics export
Closed
#157 feat(perception): Visual odometry fallback — monocular VO when wheel encoders fail
Closed
#158 feat(controls): Docking station auto-return — low-battery homing + charging alignment
Closed
#159 feat(mechanical): Charging dock station — pogo pin contacts + ArUco alignment target
Closed
#140 feat(jetson): Gesture recognition — hand/body pose detection for non-verbal robot interaction
Closed
#124 feat(firmware): OTA firmware update — USB DFU + optional WiFi flash from Jetson
Closed
#143 feat(firmware): Audio amplifier driver — I2S DAC + class-D amp control for TTS speaker output
Closed
#141 feat(perception): Semantic scene understanding — room/environment classification + object detection
Closed
#142 feat(controls): Terrain adaptation — surface detection + dynamic speed/balance adjustment
Closed
#145 feat(webui): Mission planner — waypoint editor + patrol route builder on map
Closed
#144 feat(mechanical): Weatherproofing kit — IP54 enclosures for outdoor operation
Closed
#134 feat(perception): Multi-robot SLAM — map sharing + cooperative exploration
Closed
#138 feat(mechanical): Universal sensor mount rail — quick-swap brackets for all variants
Closed
#135 feat(firmware): BNO055 IMU driver — alternative sensor fusion with 9-DOF absolute orientation
Closed
#136 feat(controls): Adaptive PID — auto-tuning balance controller based on payload weight
Closed
#137 feat(jetson): Voice command expansion — 30+ social-bot commands with NLU intent parsing
Closed
#139 feat(webui): Fleet management dashboard — multi-robot monitoring + mission dispatch
Closed
#125 feat(jetson): Battery management system — monitoring, alerts, low-battery behavior
Closed
#126 feat(webui): Robot telemetry dashboard — real-time IMU, battery, motor, map visualization
Closed
#121 feat(mechanical): SaltyTank chassis — tracked drive base plate + track tensioner mounts
Closed
#123 feat(perception): RTAB-Map persistence + multi-session mapping
Closed
#120 feat(firmware): STM32 serial command receiver — binary protocol handler for Jetson commands
Closed
#119 feat(jetson): STM32 command protocol — Nav2 cmd_vel → serial → STM32 motor control
Closed
#122 feat(controls): SaltyTank track driver — skid steering + track speed control
Closed
#109 feat(mechanical): SaltyRover chassis — 4-wheel differential drive base plate + motor mounts
Closed
#110 feat(controls): SaltyRover motor driver — 4-wheel independent speed control + skid steering
Closed
#108 feat(jetson): Integration test suite — automated launch + topic verification for social-bot
Closed
#106 feat(perception): IMX219 camera calibration workflow — checkerboard intrinsics + extrinsics
Closed
#104 feat(controls): Autonomous/RC mode switch — smooth handoff with safety interlocks
Closed
#105 feat(perception): 360 equirectangular video stitching + RTSP streaming
Closed
#107 feat(webui): Social-bot web dashboard — live status, face gallery, conversation logs
Closed
#103 feat(firmware): CRSF/ELRS RC integration — BetaFPV 2.4GHz manual control
Closed
#92 feat(social-bot): Multi-modal tracking fusion — vision+UWB handoff + Kalman + predictive tracking
Closed
#91 feat(social-bot): Navigation & path planning — follow modes + waypoint teaching + obstacle avoidance
Closed
#87 feat(social-bot): Person enrollment system — face capture + voice sample + persistent storage
Closed
#82 feat(social-bot): Person state tracker — multi-modal identity fusion
Closed
#80 feat(social-bot): Face detection + recognition pipeline — SCRFD + ArcFace TensorRT
Closed
#89 feat(social-bot): End-to-end pipeline orchestrator — main loop + GPU memory + latency profiling
Closed
#81 feat(social-bot): Speech pipeline — wake word + VAD + Whisper STT + diarization
Closed
#85 feat(social-bot): Streaming TTS — Piper/XTTS integration with first-chunk streaming
Closed
#83 feat(social-bot): Conversation engine — local LLM with per-person context
Closed
#88 feat(social-bot): Orin dev environment — JetPack 6 + TensorRT model conversion + systemd
Closed
#84 feat(social-bot): Personality system — SOUL.md persona + relationship memory
Closed
#86 feat(social-bot): Physical expression — LED mood display + motor attention tracking
Closed
#90 feat(social-bot): UWB integration — MaUWB ESP32-S3 driver + TWR + dual-anchor bearing
Closed
#74 feat: SaltyRover 4-wheel differential drive control loop (Phase 3)
Closed
#73 feat: SaltyRover 4-wheel chassis design (Phase 3)
Closed
#60 feat: Remote e-stop over 4G — MQTT kill command → STM32 motor cutoff
Closed
#72 feat: Semantic sidewalk segmentation — TensorRT on Orin (Phase 3)
Closed
#71 feat: Route recording + autonomous replay (Phase 3)
Closed
#59 feat: Outdoor navigation — OSM sidewalk routing + RTK GPS (Phase 2d)
Closed
#62 mech: UWB anchor mounts for 25 mm stem — 2 anchors, 250 mm spacing
Closed
#61 mech: UWB tag enclosure — 18650 + TP4056 USB-C + MaUWB ESP32-S3, belt clip
Closed
#58 feat: Waveshare SIM7600X 4G HAT — cellular connectivity + GPS
Closed
#57 feat: UWB follow-me system (3× MaUWB ESP32-S3 DW3000)
Closed
#63 feat: remote e-stop over 4G MQTT — safety-critical motor kill for outdoor autonomous
Closed
#43 Web UI overhaul — modern dashboard with gauges, telemetry, RC overlay
Closed
#38 P0: Yaw rotation is inverted in web UI
Closed
#42 P0: Gyro Cal button causes USB disconnect — "The device has been lost"
Closed
#18 Base plate dimensions: 270mm wide × 240mm deep
Closed
#44 New agent: sl-webui — need Gitea credentials
Closed
#32 Add gyro recalibration button to web UI
Closed
#37 Web UI: Replace generic 3D board with SaltyLab robot model
Closed
#30 Enable BME280 sensor — pressure, temperature, humidity
Closed
#28 Branch strategy: SaltyLab / SaltyRover / SaltyTank variants + dev branches
Closed
#23 Gyro bias calibration on every boot
Closed
#24 Support magnetometer and barometer if available
Closed
#22 Status LEDs: solid when OK, blink only on error
Closed
#21 Yaw drifts counter-clockwise when stationary
Closed
#9 USB CDC TX works alone, breaks when icm42688_init() is added — needs bisect
Closed
#13 No yaw rotation in firmware telemetry or web UI
Closed
#15 Web UI: 3D model orientation axes are wrong
Closed
#12 Web UI: left/right tilt (roll) displays as front/back (pitch)
Closed
#5 Need 2 more team members: 3D Design + Jetson Nano specialist
346 Issues created by 0 users
Opened
#5 Need 2 more team members: 3D Design + Jetson Nano specialist
Opened
#9 USB CDC TX works alone, breaks when icm42688_init() is added — needs bisect
Opened
#12 Web UI: left/right tilt (roll) displays as front/back (pitch)
Opened
#13 No yaw rotation in firmware telemetry or web UI
Opened
#15 Web UI: 3D model orientation axes are wrong
Opened
#18 Base plate dimensions: 270mm wide × 240mm deep
Opened
#21 Yaw drifts counter-clockwise when stationary
Opened
#22 Status LEDs: solid when OK, blink only on error
Opened
#23 Gyro bias calibration on every boot
Opened
#24 Support magnetometer and barometer if available
Opened
#28 Branch strategy: SaltyLab / SaltyRover / SaltyTank variants + dev branches
Opened
#30 Enable BME280 sensor — pressure, temperature, humidity
Opened
#32 Add gyro recalibration button to web UI
Opened
#37 Web UI: Replace generic 3D board with SaltyLab robot model
Opened
#38 P0: Yaw rotation is inverted in web UI
Opened
#42 P0: Gyro Cal button causes USB disconnect — "The device has been lost"
Opened
#43 Web UI overhaul — modern dashboard with gauges, telemetry, RC overlay
Opened
#44 New agent: sl-webui — need Gitea credentials
Opened
#57 feat: UWB follow-me system (3× MaUWB ESP32-S3 DW3000)
Opened
#58 feat: Waveshare SIM7600X 4G HAT — cellular connectivity + GPS
Opened
#59 feat: Outdoor navigation — OSM sidewalk routing + RTK GPS (Phase 2d)
Opened
#60 feat: Remote e-stop over 4G — MQTT kill command → STM32 motor cutoff
Opened
#61 mech: UWB tag enclosure — 18650 + TP4056 USB-C + MaUWB ESP32-S3, belt clip
Opened
#62 mech: UWB anchor mounts for 25 mm stem — 2 anchors, 250 mm spacing
Opened
#63 feat: remote e-stop over 4G MQTT — safety-critical motor kill for outdoor autonomous
Opened
#71 feat: Route recording + autonomous replay (Phase 3)
Opened
#72 feat: Semantic sidewalk segmentation — TensorRT on Orin (Phase 3)
Opened
#74 feat: SaltyRover 4-wheel differential drive control loop (Phase 3)
Opened
#73 feat: SaltyRover 4-wheel chassis design (Phase 3)
Opened
#80 feat(social-bot): Face detection + recognition pipeline — SCRFD + ArcFace TensorRT
Opened
#81 feat(social-bot): Speech pipeline — wake word + VAD + Whisper STT + diarization
Opened
#82 feat(social-bot): Person state tracker — multi-modal identity fusion
Opened
#83 feat(social-bot): Conversation engine — local LLM with per-person context
Opened
#84 feat(social-bot): Personality system — SOUL.md persona + relationship memory
Opened
#85 feat(social-bot): Streaming TTS — Piper/XTTS integration with first-chunk streaming
Opened
#86 feat(social-bot): Physical expression — LED mood display + motor attention tracking
Opened
#87 feat(social-bot): Person enrollment system — face capture + voice sample + persistent storage
Opened
#88 feat(social-bot): Orin dev environment — JetPack 6 + TensorRT model conversion + systemd
Opened
#89 feat(social-bot): End-to-end pipeline orchestrator — main loop + GPU memory + latency profiling
Opened
#90 feat(social-bot): UWB integration — MaUWB ESP32-S3 driver + TWR + dual-anchor bearing
Opened
#91 feat(social-bot): Navigation & path planning — follow modes + waypoint teaching + obstacle avoidance
Opened
#92 feat(social-bot): Multi-modal tracking fusion — vision+UWB handoff + Kalman + predictive tracking
Opened
#103 feat(firmware): CRSF/ELRS RC integration — BetaFPV 2.4GHz manual control
Opened
#104 feat(controls): Autonomous/RC mode switch — smooth handoff with safety interlocks
Opened
#105 feat(perception): 360 equirectangular video stitching + RTSP streaming
Opened
#106 feat(perception): IMX219 camera calibration workflow — checkerboard intrinsics + extrinsics
Opened
#107 feat(webui): Social-bot web dashboard — live status, face gallery, conversation logs
Opened
#108 feat(jetson): Integration test suite — automated launch + topic verification for social-bot
Opened
#109 feat(mechanical): SaltyRover chassis — 4-wheel differential drive base plate + motor mounts
Opened
#110 feat(controls): SaltyRover motor driver — 4-wheel independent speed control + skid steering
Opened
#119 feat(jetson): STM32 command protocol — Nav2 cmd_vel → serial → STM32 motor control
Opened
#120 feat(firmware): STM32 serial command receiver — binary protocol handler for Jetson commands
Opened
#121 feat(mechanical): SaltyTank chassis — tracked drive base plate + track tensioner mounts
Opened
#122 feat(controls): SaltyTank track driver — skid steering + track speed control
Opened
#123 feat(perception): RTAB-Map persistence + multi-session mapping
Opened
#124 feat(firmware): OTA firmware update — USB DFU + optional WiFi flash from Jetson
Opened
#125 feat(jetson): Battery management system — monitoring, alerts, low-battery behavior
Opened
#126 feat(webui): Robot telemetry dashboard — real-time IMU, battery, motor, map visualization
Opened
#134 feat(perception): Multi-robot SLAM — map sharing + cooperative exploration
Opened
#135 feat(firmware): BNO055 IMU driver — alternative sensor fusion with 9-DOF absolute orientation
Opened
#136 feat(controls): Adaptive PID — auto-tuning balance controller based on payload weight
Opened
#137 feat(jetson): Voice command expansion — 30+ social-bot commands with NLU intent parsing
Opened
#138 feat(mechanical): Universal sensor mount rail — quick-swap brackets for all variants
Opened
#139 feat(webui): Fleet management dashboard — multi-robot monitoring + mission dispatch
Opened
#140 feat(jetson): Gesture recognition — hand/body pose detection for non-verbal robot interaction
Opened
#141 feat(perception): Semantic scene understanding — room/environment classification + object detection
Opened
#142 feat(controls): Terrain adaptation — surface detection + dynamic speed/balance adjustment
Opened
#143 feat(firmware): Audio amplifier driver — I2S DAC + class-D amp control for TTS speaker output
Opened
#144 feat(mechanical): Weatherproofing kit — IP54 enclosures for outdoor operation
Opened
#145 feat(webui): Mission planner — waypoint editor + patrol route builder on map
Opened
#157 feat(perception): Visual odometry fallback — monocular VO when wheel encoders fail
Opened
#158 feat(controls): Docking station auto-return — low-battery homing + charging alignment
Opened
#159 feat(mechanical): Charging dock station — pogo pin contacts + ArUco alignment target
Opened
#160 feat(webui): Settings & configuration panel — robot config editor + firmware version + diagnostics export
Opened
#161 feat(jetson): Emotion detection — facial expression recognition for adaptive social responses
Opened
#167 feat(jetson): Multi-language support — STT/TTS language switching + translation
Opened
#168 feat(perception): Night vision mode — IR + low-light camera adaptation for dark environments
Opened
#169 feat(controls): Emergency behavior system — collision avoidance + fall prevention + stuck detection
Opened
#170 feat(mechanical): Modular payload bay — tool-free swappable modules (arm, tray, camera boom)
Opened
#171 feat(jetson): Robot-to-robot communication — direct mesh messaging between SaltyBots
Opened
#176 feat(perception): Dynamic obstacle tracking — moving object prediction for path planning
Opened
#177 feat(webui): Live camera viewer — multi-camera stream + detection overlay + recording
Opened
#178 feat(firmware): Power management — sleep modes + wake sources + power consumption profiling
Opened
#183 feat(webui): Battery history chart — 24h voltage + SoC sparkline with charge cycle markers
Opened
#184 feat(controls): Wheel encoder odometry — Hall sensor tick counting + velocity estimation
Opened
#185 feat(mechanical): Phone mount bracket — adjustable clamp for dashboard phone holder
Opened
#189 feat(firmware): Buzzer driver — piezo beep patterns for alerts and notifications
Opened
#190 feat(perception): Depth confidence filter — reject D435i depth pixels below confidence threshold
Opened
#191 feat(perception): AprilTag landmark detector — detect and publish AprilTag poses for localization
Opened
#192 feat(webui): Robot event log viewer — scrollable timeline of alerts, mode changes, and errors
Opened
#193 feat(firmware): LED status indicator — NeoPixel WS2812B driver for system state visualization
Opened
#194 feat(controls): Speed limiter node — enforce max velocity based on terrain, battery, and proximity
Opened
#195 feat(mechanical): GoPro mount adapter — universal action camera bracket for sensor rail
Opened
#198 feat(perception): Camera health monitor — watchdog node for CSI/D435i stream liveness
Opened
#201 feat(perception): Person re-identification — appearance embedding for cross-camera tracking
Opened
#203 feat(controls): Watchdog timer node — heartbeat monitor for critical ROS2 nodes
Opened
#205 feat(jetson): CPU/GPU temperature monitor — thermal throttle warning node
Opened
#206 feat(firmware): Servo driver — PWM output for pan-tilt camera head
Opened
#211 feat(perception): Obstacle height filter — reject ground-plane LIDAR points for Nav2 costmap
Opened
#212 feat(webui): Joystick teleop widget — virtual thumbstick for manual robot control
Opened
#213 feat(controls): PID auto-tune — relay feedback method for balance controller gains
Opened
#214 feat(firmware): Current sense ADC — INA219 I2C driver for motor current monitoring
Opened
#216 feat(controls): Odometry fusion node — fuse wheel + visual + IMU into single /odom
Opened
#221 feat(perception): Hand gesture pointing direction — estimate 3D point target from hand pose
Opened
#222 feat(webui): Network diagnostics panel — WiFi signal, latency, and bandwidth display
Opened
#223 feat(controls): Motor current protection — overcurrent detection and thermal derating
Opened
#227 feat(perception): Face landmark smoothing — temporal Kalman filter on 68-point landmarks
Opened
#228 feat(controls): cmd_vel multiplexer — priority-based velocity command routing
Opened
#229 feat(webui): Robot 3D pose viewer — Three.js IMU orientation display with trail
Opened
#233 feat(perception): QR code reader — detect and decode QR codes for robot commands
Opened
#234 feat(webui): Audio level meter — live microphone VU meter with speech activity indicator
Opened
#235 feat(controls): Compass heading node — magnetometer fusion for absolute yaw
Opened
#239 feat(perception): LIDAR object clustering — segment scan into distinct objects
Opened
#240 feat(webui): Conversation history panel — scrollable chat log with person names
Opened
#241 feat(controls): Smooth acceleration limiter — jerk-limited velocity ramp
Opened
#242 feat(social): voice activity detection node
Opened
#243 feat(firmware): ultrasonic ranger driver HC-SR04
Opened
#249 feat(perception): floor type classifier
Opened
#253 feat(firmware): buzzer melody driver
Opened
#252 feat(social): ambient sound classifier
Opened
#250 feat(webui): map viewer with SLAM occupancy grid
Opened
#251 feat(controls): battery-aware speed scaling
Opened
#254 feat(mechanical): camera rain shield
Opened
#260 feat(perception): visual odometry drift detector
Opened
#261 feat(webui): waypoint editor with click-to-navigate
Opened
#262 feat(controls): wheel slip detector
Opened
#263 feat(firmware): fan speed controller PWM
Opened
#264 feat(mechanical): cable management clips
Opened
#269 feat(webui): robot status dashboard header bar
Opened
#268 feat(perception): stereo depth hole filling
Opened
#270 feat(social): proximity-based greeting trigger
Opened
#274 feat(perception): color-based object segmentation
Opened
#275 feat(webui): system log tail viewer
Opened
#280 feat(webui): battery history chart
Opened
#279 feat(social): face tracking head servo controller
Opened
#278 feat(controls): IMU calibration routine
Opened
#286 feat(perception): motion blur detector
Opened
#288 feat(controls): cliff sensor safety stop
Opened
#287 feat(webui): topic bandwidth monitor
Opened
#290 feat(firmware): RGB status LED state machine
Opened
#289 feat(social): speech volume auto-adjust
Opened
#296 feat(perception): texture-based terrain roughness estimator
Opened
#299 feat(social): conversation topic memory
Opened
#297 feat(webui): motor current live graph
Opened
#298 feat(controls): geofence boundary enforcer
Opened
#300 feat(firmware): watchdog timer driver
Opened
#301 feat(mechanical): sensor dust cover
Opened
#307 feat(perception): sky detection for outdoor nav
Opened
#309 feat(controls): adaptive PID gain scheduler
Opened
#310 feat(social): personal space respector
Opened
#308 feat(webui): CPU/GPU temperature gauge
Opened
#319 feat(webui): gamepad teleoperation panel — virtual joystick + keyboard WASD for manual driving
Opened
#320 feat(jetson): USB camera hot-plug monitor — detect connect/disconnect events and restart camera nodes
Opened
#321 feat(controls): battery-aware speed limiter — reduce max velocity as battery drops below thresholds
Opened
#322 feat(perception): person re-identification — track individuals across camera views using appearance features
Opened
#325 feat(firmware): battery coulomb counter — track charge/discharge cycles and estimate remaining capacity
Opened
#326 feat(perception): dynamic obstacle velocity estimator — track moving objects and predict trajectories
Opened
#329 bug(webui): App.jsx missing imports — StatusHeader, LogViewer, MotorCurrentGraph
Opened
#332 feat(jetson): ROS2 bag recorder — trigger-based rosbag recording with topic filtering
Opened
#333 feat(controls): smooth path follower — pure pursuit controller for Nav2 waypoint following
Opened
#337 [P0] Firmware build broken on main — 7 compile errors across 6 files
Opened
#339 feat(perception): lane/path edge detector — find driveable path boundaries from camera
Opened
#340 feat(webui): diagnostics panel — system health overview with error counts and alerts
Opened
#342 [P1] Leap Motion SDK has no ARM64 support — pivot hand tracking to MediaPipe
Opened
#344 feat(webui): hand tracking visualization — show MediaPipe hand skeleton and gesture label
Opened
#348 feat(perception): depth-based obstacle size estimator — measure real-world dimensions from D435i
Opened
#349 feat(webui): camera stream viewer — live MJPEG display from RealSense cameras
Opened
#350 feat(controls): smooth velocity ramp — acceleration/deceleration limiter for cmd_vel
Opened
#353 feat(perception): audio scene classifier — detect indoor/outdoor/traffic/park from ambient sound
Opened
#354 feat(webui): settings panel — configurable ROS parameters with live editing
Opened
#355 feat(jetson): system resource monitor — CPU/GPU/RAM/disk usage publisher
Opened
#356 [P0] Orin-FC UART wiring disconnected - USART6 (PC6/PC7) not reaching Orin GPIO 8/10
Opened
#359 feat(perception): face emotion classifier — detect basic emotions from facial landmarks
Opened
#362 [P0] Complete FC↔Orin UART link — fix TX6 wire + verify jlink protocol end-to-end
Opened
#363 [P0] Person tracking — RealSense D435i detection + following at 20km/h
Opened
#364 [P0] 360 obstacle avoidance — RPLIDAR A1M8 integration
Opened
#365 [P0] UWB target tracking — DW3000 anchor/tag integration
Opened
#366 [P0] Follow-me controller — sensor fusion + path planning + motor commands
Opened
#369 [P1] MageDok 7" touchscreen setup — DP video + USB touch on Orin
Opened
#370 [P1] Salty Face — animated expression UI on touchscreen
Opened
#371 [P1] Deaf/accessibility communication — speech-to-text + touch keyboard
Opened
#374 [P1] Replace GNOME with Cage + Chromium kiosk — save 650MB RAM
Opened
#375 [P0] Camera power modes — adaptive sensor management across scenarios
Opened
#383 [P1] FSESC 4.20 Plus VESC integration — balance mode + UART motor control
Opened
#384 [P2] Pan/tilt camera head — Waveshare ST3215 servo control + bracket
Opened
#388 [P1] ESC abstraction layer — pluggable motor controller backends
Opened
#392 bug(social_msgs): MeshPeer.msg uses C++ reserved keyword namespace — build fails
Opened
#393 feat(social): Train custom OpenWakeWord model for "hey salty"
Opened
#394 feat(social): Bridge orchestrator pipeline state to face display WebSocket API
Opened
#400 feat(social): First Encounter routine — autonomous introduction + person enrollment
Opened
#407 [P1] VESC balance mode PID tuning + tilt safety limits
Opened
#408 [P1] ROS2 system health monitor — node heartbeats + auto-restart
Opened
#409 [P1] Voice command interpreter — natural language to robot actions
Opened
#410 [P2] Auto-dock charging — ArUco marker detection + approach sequence
Opened
#411 [P2] ROS2 bag recording service — automated sensor data capture
Opened
#412 [P1] WebUI live operations dashboard — all telemetry in one view
Opened
#413 Add sensor feeds to SaltyLab HUD (GPS, LIDAR, RealSense)
Opened
#420 [P1] Android/Termux OpenClaw node — phone as SaltyBot sensor + AI compute node
Opened
#421 [P1] Piper TTS service node — shared text-to-speech for all nodes
Opened
#422 [P1] Nav2 SLAM integration — RPLIDAR + RealSense depth for autonomous navigation
Opened
#423 [P1] Multi-person tracker — group handling + follow target priority
Opened
#424 [P2] Remote monitoring WebSocket relay — stream telemetry to phone over WiFi/LTE
Opened
#429 [P1] Emotion engine — context-aware face expression selection
Opened
#430 [P1] Audio direction estimator — sound source localization for speaker tracking
Opened
#431 [P2] Trick routines — fun behaviors (spin, dance, nod, wave)
Opened
#432 [P1] LED strip controller — NeoPixel status indicators on chassis
Opened
#433 [P1] Teleoperation gamepad node — PS5 DualSense controller via Bluetooth
Opened
#441 [P1] Geofence safety — configurable boundary with auto-return
Opened
#442 [P1] Weather awareness — rain/wind/temp sensor fusion for outdoor behavior
Opened
#443 [P1] Social memory database — persistent person knowledge across encounters
Opened
#444 [P2] Night mode — IR camera + reduced noise + stealth LED patterns
Opened
#445 [P1] Diagnostic self-test — startup hardware check + continuous monitoring
Opened
#446 [P2] Patrol mode — autonomous waypoint circuit with idle behaviors
Opened
#447 [P1] ROS2 full stack launch — master launch file for all SaltyBot nodes
Opened
#453 [P1] Obstacle memory map — persistent hazard zones from LIDAR history
Opened
#454 [P1] Gesture recognition — hand/body gesture commands via RealSense
Opened
#455 [P1] Smooth velocity controller — acceleration limiter + jerk reduction
Opened
#456 [P2] Photo capture service — snapshot + timelapse + event-triggered photos
Opened
#457 [P1] Sound effects library — event-driven audio feedback
Opened
#458 [P2] WiFi mesh handoff — seamless connectivity between APs
Opened
#459 [P1] Emergency stop cascade — unified e-stop with hardware + software layers
Opened
#467 [P1] Power management supervisor — battery protection + graceful shutdown
Opened
#468 [P1] Object detection + labeling — identify and name common objects
Opened
#469 [P1] Terrain classification — surface type detection for speed adaptation
Opened
#470 [P2] Curiosity behavior — autonomous exploration when idle
Opened
#471 [P1] ROS2 parameter server — centralized dynamic reconfiguration
Opened
#472 [P2] Dance to music — beat detection + synchronized movement
Opened
#473 [P1] Event logger — structured logging of all SaltyBot activities
Opened
#475 Configure Nav2 stack on Orin (nav2_params.yaml + launch integration)
Opened
#481 [P2] ROS2 bag recording — mission logging for replay and debug
Opened
#477 [P1] URDF robot description — TF tree + footprint for Nav2
Opened
#482 [P1] Behavior tree coordinator — autonomous mode state machine
Opened
#480 [P1] Map save/load service — persist SLAM maps between sessions
Opened
#479 [P2] Recovery behaviors — Nav2 backup/spin/wait on stuck
Opened
#478 [P1] Costmap configuration — local + global costmaps for Nav2
Opened
#483 [P2] Remote monitoring dashboard — web status page for SaltyBot
Opened
#489 [P1] Docking station behavior — auto-charge when low battery
Opened
#488 [P1] ROS2 bag recording — mission logging for replay and debug
Opened
#490 [P2] Multi-sensor fusion for obstacle avoidance — merge LIDAR + depth
Opened
#491 [P1] Voice command router — parse and dispatch spoken commands
Opened
#492 [P2] OTA firmware update mechanism — remote deploy to Orin
Opened
#493 [P1] Person following mode — track and follow a specific person
Opened
#494 [P2] TTS personality engine — expressive speech with context
Opened
#502 [P1] Headscale VPN client auto-connect — Orin joins tailnet on boot
Opened
#504 [P1] Integration test suite — verify all ROS2 nodes launch together
Opened
#505 [P2] Charging dock hardware design — ArUco marker + contact pads
Opened
#503 [P2] Audio pipeline — wake word + STT + TTS end-to-end on Jabra
Opened
#507 [P2] Face display animations — LCD emotion rendering on STM32
Opened
#506 [P1] ROS2 launch parameter profiles — indoor vs outdoor vs demo
Opened
#512 [P0] Remove ELRS arm requirement — robot must operate autonomously
Opened
#513 [P2] Phone-based motor test app — Termux BLE/WiFi joystick for bench testing
Opened
#520 P0: MPU6000 IMU calibration never completes — blocks arming/balance mode
Opened
#521 P2: Clean up ESC debug output and diagnostic commands
Opened
#522 P1: USART6 TX output truncated — strings arrive with leading nulls
Opened
#523 P1: Create Orin-side motor control daemon (Python/ROS2)
Opened
#524 P2: USB CDC TX data never flows with full peripheral init
Opened
#536 [P1] Firmware flash script — one-command STM32 programming from Orin
Opened
#531 [P1] PID auto-tune — automated loop tuning for balance mode
Opened
#533 [P2] Battery voltage ADC driver — real-time battery monitoring on STM32
Opened
#535 [P2] OpenSCAD phone mount bracket — spring-loaded holder for T-slot rail
Opened
#534 [P1] Teleop web interface — browser-based remote control with video
Opened
#532 [P1] RealSense D435i depth-to-costmap — obstacle avoidance from stereo depth
Opened
#544 ESP32 UWB Pro anchor firmware (TWR responder)
Opened
#545 ESP32 UWB Pro tag firmware (TWR initiator for SaltyBot)
Opened
#546 ROS2 UWB position node (serial bridge from tag to Jetson)
Opened
#547 Pan/tilt gimbal servo driver for ST3215 bus servos
Opened
#548 ROS2 gimbal control node for pan/tilt camera head
Opened
#549 Person-following head tracking with RealSense
Opened
#550 PID gain scheduling for speed-dependent balance tuning
Opened
#551 WebUI gimbal control panel with live camera preview
Opened
#552 Camera gimbal mount bracket for RealSense D435i
Opened
#553 Phone-based voice command interface via Termux microphone
Opened
#561 Sensor bracket: RPLIDAR A1 mount for 2020 T-slot rail
Opened
#562 WebUI system diagnostics dashboard (battery, temps, network)
Opened
#564 UWB anchor mount bracket for wall/ceiling installation
Opened
#565 STM32 watchdog and fault recovery handler
Opened
#566 ROS2 sensor health monitor node
Opened
#573 UWB-IMU fusion for robust indoor localization
Opened
#574 Termux sensor dashboard — phone IMU + GPS + battery on MQTT
Opened
#575 RPLIDAR obstacle ring detector for 360-degree safety zone
Opened
#577 ROS2 launch orchestrator for full SaltyBot bringup
Opened
#576 WebUI event log panel with filterable real-time feed
Opened
#585 Phone-to-Jetson video streaming bridge via WebSocket
Opened
#584 Motor current monitoring and overload protection on STM32
Opened
#586 Visual odometry from RealSense stereo for drift correction
Opened
#587 WebUI map view with UWB position and RPLIDAR scan overlay
Opened
#588 Battery holder bracket for 6S LiPo on 2020 T-slot chassis
Opened
#595 Multi-sensor pose fusion node (UWB + visual odom + IMU)
Opened
#597 CAN bus driver for BLDC motor controllers
Opened
#598 WebUI gamepad teleoperation panel
Opened
#596 RPLIDAR A1 mount bracket for 2020 T-slot chassis
Opened
#601 Termux MQTT-to-ROS2 bridge for phone sensors
Opened
#599 Nav2 integration with UWB-based localization
Opened
#600 Tilt compensation for self-balancing on slopes
Opened
#602 UWB anchor position auto-calibration
Opened
#611 RealSense depth-based obstacle detection node
Opened
#614 WebUI settings and configuration panel
Opened
#615 ROS2 bag recording manager node
Opened
#613 Battery voltage telemetry and low-voltage cutoff
Opened
#612 Jetson Orin Nano carrier board mount for T-slot chassis
Opened
#616 Steering PID controller for differential drive
Opened
#618 ESP-NOW to ROS2 relay node via serial
Opened
#617 Phone GPS waypoint logger and route planner
Opened
#627 ArUco marker detection for docking alignment
Opened
#628 Cable management tray for 2020 T-slot chassis
Opened
#629 UART command protocol for Jetson-STM32 communication
Opened
#630 WebUI main dashboard with panel launcher
Opened
#631 Jetson system monitor ROS2 node
Opened
#632 Encoder odometry and wheel speed feedback
Opened
#633 Termux voice command interface for SaltyBot
Opened
#634 UWB position logger and accuracy analyzer
Opened
#643 CANable 2.0 bringup: udev rule + can0 SocketCAN interface setup on Jetson Orin
Opened
#644 VESC CAN driver: SocketCAN dual-motor control for VESC IDs 61 and 79
Opened
#645 VESC CAN telemetry: read voltage, current, RPM, temp from both motors
Opened
#646 VESC odometry: wheel encoder feedback from dual CAN motors for nav2
Opened
#651 VESC CAN health monitor: watchdog + auto-recovery for dual motors
Opened
#652 Smooth velocity controller: acceleration/deceleration ramp for cmd_vel
Opened
#653 Web UI: VESC motor dashboard panel with live CAN telemetry
Opened
#654 Chassis: CANable 2.0 USB adapter mount for T-slot rail
Opened
#655 Nav2 integration: AMCL + costmap with VESC odometry and LiDAR
Opened
#656 Phone MQTT: CAN telemetry relay to Android sensor dashboard
Opened
#657 UWB-VESC integration: position-based speed limiting near obstacles
Opened
#658 Diagnostics aggregator: unified health dashboard ROS2 node
Opened
#667 PRIORITY: Make VESC CAN motor IDs fully configurable — default 56/68
Opened
#669 Fix VESC topic naming mismatch between telemetry and nav2_slam odometry bridge
Opened
#670 Fix sl-perception PR #649 hardcoded CAN ID 61/79 topic subscriptions
Opened
#672 feat(firmware): Add GY-BMI160 barometric pressure & ambient temperature to FC
Opened
#674 CAN bus integration: Mamba F722S ↔ VESC ↔ Orin
Opened
#676 Remap CAN driver from CAN2/PB12-13 to CAN1/PB8-9 for Mamba F722S MK2
Opened
#678 Bump arm pitch threshold from 10° to 20° (Mamba mount angle offset)
Opened
#680 IMU mount angle calibration — save offset to flash, expose recal via USB + remote monitor
Opened
#681 Remote monitor: all CAN sensors visible (VESC telemetry + IMU + balance state)
Opened
#682 Hardware button: park/disarm on single press, re-arm on 2 short + 1 long press
Opened
#683 Fix UART bridge UnboundLocalError: lines variable scope in saltybot_cmd_node
Opened
#685 LED status indicators for balance states
Opened
#689 UWB Tag Power Management - Sleep mode for battery life
Opened
#690 UWB Tag BLE Configuration - Phone app settings via Bluetooth
Opened
#693 PID tuning interface — expose balance gains via CAN/ROS2 params
Opened
#694 CAN bus watchdog and error recovery — handle bus-off, auto-restart
Opened
#695 End-to-end CAN integration test — Orin↔Mamba↔VESC full loop
Opened
#696 SLAM map persistence — save/load maps for AMCL localization
Opened
#697 WebSocket bridge — connect CAN monitor dashboard to live ROS2 topics
Opened
#698 UWB anchor auto-discovery — tag scans and registers anchors dynamically
Opened
#699 VESC dual ESC mount bracket for 2020 T-slot rail
Opened
#700 Android BLE pairing UI for UWB tag configuration
Opened
#709 iOS Companion App (Sul-Tee) — New Agent Needed