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 ...@@ -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. * @brief Structure to handle gyroscope data.
*/ */
......
...@@ -484,11 +484,11 @@ QuaternionData VN100::sampleQuaternion() ...@@ -484,11 +484,11 @@ QuaternionData VN100::sampleQuaternion()
} }
// Parse the data // Parse the data
data.quatTimestamp = TimestampTimer::getTimestamp(); data.quaternionTimestamp = TimestampTimer::getTimestamp();
data.quatX = strtod(recvString + indexStart + 1, &nextNumber); data.quaternionX = strtod(recvString + indexStart + 1, &nextNumber);
data.quatY = strtod(nextNumber + 1, &nextNumber); data.quaternionY = strtod(nextNumber + 1, &nextNumber);
data.quatZ = strtod(nextNumber + 1, &nextNumber); data.quaternionZ = strtod(nextNumber + 1, &nextNumber);
data.quatW = strtod(nextNumber + 1, NULL); data.quaternionW = strtod(nextNumber + 1, NULL);
return data; return data;
} }
......
...@@ -27,18 +27,6 @@ ...@@ -27,18 +27,6 @@
namespace Boardcore 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 * @brief data type class
*/ */
...@@ -90,10 +78,11 @@ struct VN100Data : public QuaternionData, ...@@ -90,10 +78,11 @@ struct VN100Data : public QuaternionData,
void print(std::ostream& os) const void print(std::ostream& os) const
{ {
os << quatTimestamp << "," << quatX << "," << quatY << "," << quatZ os << quaternionTimestamp << "," << quaternionX << "," << quaternionY
<< "," << quatW << "," << magneticFieldTimestamp << "," << "," << quaternionZ << "," << quaternionW << ","
<< magneticFieldX << "," << magneticFieldY << "," << magneticFieldZ << magneticFieldTimestamp << "," << magneticFieldX << ","
<< "," << accelerationTimestamp << "," << accelerationX << "," << magneticFieldY << "," << magneticFieldZ << ","
<< accelerationTimestamp << "," << accelerationX << ","
<< accelerationY << "," << accelerationZ << "," << accelerationY << "," << accelerationZ << ","
<< angularSpeedTimestamp << "," << angularSpeedX << "," << angularSpeedTimestamp << "," << angularSpeedX << ","
<< angularSpeedY << "," << angularSpeedZ << "," << angularSpeedY << "," << angularSpeedZ << ","
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment