Skip to content
Snippets Groups Projects
Commit 4f2a85b0 authored by Matteo Pignataro's avatar Matteo Pignataro
Browse files

[QUAT] Added quaternion data structure to SensorData

parent a67a97fe
No related branches found
No related tags found
No related merge requests found
......@@ -145,6 +145,50 @@ struct AccelerometerData
}
};
/**
* @brief Structure to handle quaternion data.
*/
struct QuaternionData
{
uint64_t quaternionTimestamp = 0;
float quaternionX = 0;
float quaternionY = 0;
float quaternionZ = 0;
float quaternionW = 0;
QuaternionData() {}
QuaternionData(uint64_t timestamp, float x, float y, float z, float w)
: quaternionTimestamp(timestamp), quaternionX(x), quaternionY(y),
quaternionZ(z), quaternionW(w)
{
}
QuaternionData(const QuaternionData& data) = default;
explicit QuaternionData(const Eigen::Vector4f& quat)
: quaternionX(quat(0)), quaternionY(quat(1)), quaternionZ(quat(2)),
quaternionW(quat(3))
{
}
static std::string header()
{
return "timestamp,quaternionX,quaternionY,quaternionZ,quaterionW\n";
}
void print(std::ostream& os) const
{
os << quaternionTimestamp << "," << quaternionX << "," << quaternionY
<< "," << quaternionZ << "," << quaternionW << "\n";
}
operator Eigen::Vector4f() const
{
return {quaternionX, quaternionY, quaternionZ, quaternionW};
}
};
/**
* @brief Structure to handle gyroscope data.
*/
......
......@@ -484,11 +484,11 @@ QuaternionData VN100::sampleQuaternion()
}
// Parse the data
data.quatTimestamp = TimestampTimer::getTimestamp();
data.quatX = strtod(recvString + indexStart + 1, &nextNumber);
data.quatY = strtod(nextNumber + 1, &nextNumber);
data.quatZ = strtod(nextNumber + 1, &nextNumber);
data.quatW = strtod(nextNumber + 1, NULL);
data.quaternionTimestamp = TimestampTimer::getTimestamp();
data.quaternionX = strtod(recvString + indexStart + 1, &nextNumber);
data.quaternionY = strtod(nextNumber + 1, &nextNumber);
data.quaternionZ = strtod(nextNumber + 1, &nextNumber);
data.quaternionW = strtod(nextNumber + 1, NULL);
return data;
}
......
......@@ -27,18 +27,6 @@
namespace Boardcore
{
/**
* @brief Structure to handle quaternion data
*/
struct QuaternionData
{
uint64_t quatTimestamp;
float quatX;
float quatY;
float quatZ;
float quatW;
};
/**
* @brief data type class
*/
......@@ -90,10 +78,11 @@ struct VN100Data : public QuaternionData,
void print(std::ostream& os) const
{
os << quatTimestamp << "," << quatX << "," << quatY << "," << quatZ
<< "," << quatW << "," << magneticFieldTimestamp << ","
<< magneticFieldX << "," << magneticFieldY << "," << magneticFieldZ
<< "," << accelerationTimestamp << "," << accelerationX << ","
os << quaternionTimestamp << "," << quaternionX << "," << quaternionY
<< "," << quaternionZ << "," << quaternionW << ","
<< magneticFieldTimestamp << "," << magneticFieldX << ","
<< magneticFieldY << "," << magneticFieldZ << ","
<< accelerationTimestamp << "," << accelerationX << ","
<< accelerationY << "," << accelerationZ << ","
<< angularSpeedTimestamp << "," << angularSpeedX << ","
<< angularSpeedY << "," << angularSpeedZ << ","
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment