-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Continues Ranging and update rate #3
Comments
Any reason that you skipped |
STATE_SCAN is working on startup one time |
Did you check side effect that you skip
Currently, I don't have RPi, Arduino nor dwm1000. Hence, I can't guarantee there is no side effect. So please debug it. |
the code is working as a continuously but to complete ranging with 4 anchors Arduino needs 140ms. I changed also to reduce delay 100 > 30 Also, some times there is noisy ranging. I need accurate and fast ranging. Do you any advice for filter or fast ranging? |
Hi Metehan, I am also working with DWM1000 modules for a week. There is a method called TDOA(Time Difference of Arrival) But clock sync is needed for anchors in this method. It is not easy. I am working to find a way to achieve this. In TDOA tag is almost passive, just sends a blink message then everything is up to anchors. Anchors positions are known positions. So system calculates TDOAs. With this method you can have more faster ranging. I haven't used this library yet but I think tag blinks and then waits anchors to calcualte and send back some information so it cause delays. |
I want to make continues ranging to make this:
ı changed
PRINTLN(F(" Ranging all anchors. Return to IDLE"));
updateState(STATE_IDLE);
to
PRINTLN(F(" Ranging all anchors. Return to IDLE"));
updateState(STATE_PONG);
and ı add some code to calculateRange function amd then received Continues Ranging like this:
123 , 158 , 182 , 93 , 96
31 , 158 , 185 , 93 , 96
31 , 158 , 185 , 85 , 96
30 , 158 , 185 , 85 , 100
123 , 153 , 185 , 85 , 100
31 , 153 , 194 , 85 , 100
31 , 153 , 194 , 88 , 100
30 , 153 , 194 , 88 , 99
121 , 150 , 194 , 88 , 99
31 , 150 , 172 , 88 , 99
31 , 150 , 172 , 93 , 99
30 , 150 , 172 , 93 , 99
123 , 151 , 172 , 93 , 99
31 , 151 , 170 , 93 , 99
the first row is delay time for every calculateRange(); others are anchors distance(cm)
as you can see sometimes there is a big delay like 120ms,
we can eliminate this delay?
whole code:
void calculateRange() {
DW1000Time round1 = (timePollAckReceived - timePollSent).wrap();
DW1000Time reply1 = (timePollAckSent - timePollReceived).wrap();
DW1000Time round2 = (timeRangeReceived - timePollAckSent).wrap();
DW1000Time reply2 = (timeRangeSent - timePollAckReceived).wrap();
DW1000Time tof = (round1 * round2 - reply1 * reply2)
/ (round1 + round2 + reply1 + reply2);
distance[idx_anchor] = tof.getAsMeters();
if(calHz == 0){
currentMillis = millis();
calHz = 1;
Serial.print( millis() - currentMillis2);
Serial.print(" , ");
}else{
calHz = 0;
currentMillis2 = millis();
Serial.print( millis() - currentMillis);
Serial.print(" , ");
}
Serial.print(round(distance[0]*100));
Serial.print(" , ");
Serial.print(round(distance[1]*100));
Serial.print(" , ");
Serial.print(round(distance[2]*100));
Serial.print(" , ");
Serial.println(round(distance[3]*100));
}
The text was updated successfully, but these errors were encountered: