Improved network sync
This commit is contained in:
parent
28bf3b4682
commit
b0d0258ad6
@ -12,11 +12,11 @@
|
||||
#include "LinearAlgebra/AngleUsing.h"
|
||||
#include "LinearAlgebra/Spherical.h"
|
||||
|
||||
void NetworkSync::SendVector3(unsigned char *data, unsigned int &startIndex,
|
||||
void NetworkSync::SendVector3(unsigned char *data, unsigned int startIndex,
|
||||
const Vector3 v) {
|
||||
SendSingle100(data, startIndex, v.x);
|
||||
SendSingle100(data, startIndex, v.y);
|
||||
SendSingle100(data, startIndex, v.z);
|
||||
SendSingle100(data, startIndex += 4, v.y);
|
||||
SendSingle100(data, startIndex += 4, v.z);
|
||||
}
|
||||
|
||||
void NetworkSync::SendQuaternion(unsigned char *data, const int startIndex,
|
||||
@ -61,6 +61,7 @@ void NetworkSync::SendQuat32(unsigned char *data, int startIndex,
|
||||
qz = -qz;
|
||||
qw = -qw;
|
||||
}
|
||||
// Serial.printf(" (%d) %d:%d:%d:%d ", startIndex, qx, qy, qz, qw);
|
||||
data[startIndex++] = qx;
|
||||
data[startIndex++] = qy;
|
||||
data[startIndex++] = qz;
|
||||
|
@ -61,7 +61,7 @@ protected:
|
||||
const float value);
|
||||
void SendAngle32(unsigned char *data, unsigned int startIndex,
|
||||
const float value);
|
||||
void SendVector3(unsigned char *data, unsigned int &startIndex,
|
||||
void SendVector3(unsigned char *data, unsigned int startIndex,
|
||||
const Vector3 v);
|
||||
void SendQuaternion(unsigned char *data, const int startIndex,
|
||||
const Quaternion q);
|
||||
|
@ -201,11 +201,11 @@ InterestingThing *Perception::AddTrackedObject(Sensor *sensor,
|
||||
else {
|
||||
if (obj->IsTheSameAs(this->trackedObjects[objIx])) {
|
||||
#ifdef RC_DEBUG2
|
||||
Serial.print((int)this->trackedObjects[objIx]->id);
|
||||
Serial.println(": update tracked object");
|
||||
// Serial.print((int)this->trackedObjects[objIx]->id);
|
||||
// Serial.println(": update tracked object");
|
||||
#endif
|
||||
|
||||
this->trackedObjects[objIx]->Refresh(obj->position);
|
||||
this->trackedObjects[objIx]->Refresh(obj->position, obj->orientation);
|
||||
delete obj;
|
||||
return this->trackedObjects[objIx];
|
||||
}
|
||||
@ -333,12 +333,12 @@ void Perception::Update(float currentTimeMs) {
|
||||
|
||||
if (obj->DegradeConfidence(deltaTime) == false) {
|
||||
// delete obj
|
||||
// if (roboid != nullptr && roboid->networkSync != nullptr) {
|
||||
// printf("Cleanup obj %d\n", obj->id);
|
||||
// roboid->networkSync->DestroyObject(obj);
|
||||
// }
|
||||
// this->trackedObjects[objIx] = nullptr;
|
||||
// delete obj;
|
||||
if (roboid != nullptr && roboid->networkSync != nullptr) {
|
||||
printf("Cleanup obj %d\n", obj->id);
|
||||
roboid->networkSync->DestroyObject(obj);
|
||||
}
|
||||
this->trackedObjects[objIx] = nullptr;
|
||||
delete obj;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ public:
|
||||
/// = 1.2F and position->distance = 1.6 will be considered different, but
|
||||
/// objects with coordinates position->distance = 1.2 and position->distance
|
||||
/// = 1.0 can be the same.
|
||||
static constexpr float equalityDistance = 0.01F; // 0.3F;
|
||||
static constexpr float equalityDistance = 0.3F;
|
||||
/// @brief The maximum difference in angle from the roboids orientation in
|
||||
/// which two objects may be considered the same
|
||||
/// @details When the difference in angle is exactly this value, the objects
|
||||
@ -56,7 +56,7 @@ public:
|
||||
/// With a value of 5.0, object with coordinates position->angle = 30
|
||||
/// and position->angle = 36 will be considered different, but object with
|
||||
/// coordinated position->angle = 30 and position->angle = 27 can be the same.
|
||||
static constexpr float equalityAngle = 0.01F; // 5.0F;
|
||||
static constexpr float equalityAngle = 5.0F;
|
||||
|
||||
/// @brief The id of the tracked object
|
||||
char id;
|
||||
|
Loading…
x
Reference in New Issue
Block a user