Add range command [Feature Request] #198

Open
opened 2026-04-05 17:52:11 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @BlackthornYugen on 4/14/2024

I'm curious about the potential of using Ultrawideband (UWB) technology to auto-correct positional drift in tracking systems. The idea is for the Slime server to periodically initiate distance checks between sensors. Would implementing additional range commands to facilitate this process be effective?

// get the distance to another sensor
void requestRangeOnce(const std::string& targetSensorUUID);

// get the distance to another sensor every n ms, if already ranging that sensor the interval is updated
void startPeriodicRangeRequest(const std::string& targetSensorUUID, std::chrono::milliseconds interval);
   
// stop ranging one sensor
void stopPeriodicRangeRequest(const std::string& targetSensorUUID);

void stopAllPeriodicRangeRequests();

image

@startuml
participant SlimeServer
participant "Sensor A" as A
participant "Sensor B" as B

SlimeServer -> A : Request range to Sensor B
A -> B : Send UWB ping
B --> A : UWB ping response
A -> SlimeServer : 6cm
@enduml

Has anyone looked into UWB to assist with tracking previously? Is this worth experimenting with?

My plan is to order something like a SR040HN and to connect it with serial to a ESP8266 or a ESP32.

*Originally created by @BlackthornYugen on 4/14/2024* I'm curious about the potential of using Ultrawideband (UWB) technology to auto-correct positional drift in tracking systems. The idea is for the Slime server to periodically initiate distance checks between sensors. Would implementing additional range commands to facilitate this process be effective? ```c++ // get the distance to another sensor void requestRangeOnce(const std::string& targetSensorUUID); // get the distance to another sensor every n ms, if already ranging that sensor the interval is updated void startPeriodicRangeRequest(const std::string& targetSensorUUID, std::chrono::milliseconds interval); // stop ranging one sensor void stopPeriodicRangeRequest(const std::string& targetSensorUUID); void stopAllPeriodicRangeRequests(); ``` ![image](https://github.com/SlimeVR/SlimeVR-Tracker-ESP/assets/3138467/851712dc-94b7-45c9-8a16-8850a74ced70) ```plantuml @startuml participant SlimeServer participant "Sensor A" as A participant "Sensor B" as B SlimeServer -> A : Request range to Sensor B A -> B : Send UWB ping B --> A : UWB ping response A -> SlimeServer : 6cm @enduml ``` Has anyone looked into UWB to assist with tracking previously? Is this worth experimenting with? My plan is to order something like a [SR040HN](https://www.nxp.com/part/SR040HN#/) and to connect it with serial to a ESP8266 or a ESP32.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/SlimeVR-Tracker-ESP#198