12 using namespace std::chrono;
21 xlinkOut->setStreamName(
"imu");
29 imu->setBatchReportThreshold(1);
33 imu->setMaxBatchReports(10);
36 imu->out.link(xlinkOut->input);
44 auto baseTs = std::chrono::time_point<std::chrono::steady_clock, std::chrono::steady_clock::duration>();
49 auto imuPackets = imuData->
packets;
50 for(
auto& imuPacket : imuPackets) {
51 auto& acceleroValues = imuPacket.acceleroMeter;
52 auto& gyroValues = imuPacket.gyroscope;
54 auto acceleroTs1 = acceleroValues.getTimestampDevice();
55 auto gyroTs1 = gyroValues.getTimestampDevice();
57 baseTs = std::min(acceleroTs1, gyroTs1);
61 auto acceleroTs = acceleroTs1 - baseTs;
62 auto gyroTs = gyroTs1 - baseTs;
64 printf(
"Accelerometer timestamp: %ld ms\n",
static_cast<long>(duration_cast<milliseconds>(acceleroTs).count()));
65 printf(
"Accelerometer [m/s^2]: x: %.3f y: %.3f z: %.3f \n", acceleroValues.x, acceleroValues.y, acceleroValues.z);
66 printf(
"Gyroscope timestamp: %ld ms\n",
static_cast<long>(duration_cast<milliseconds>(gyroTs).count()));
67 printf(
"Gyroscope [rad/s]: x: %.3f y: %.3f z: %.3f \n", gyroValues.x, gyroValues.y, gyroValues.z);
70 int key = cv::waitKey(1);