使用EnableMotionDatas()
来启用缓存,才能通过GetMotionDatas()
函数来获取到IMU数据。否则,只能通过回调接口得到IMU数据,请参阅(从回调接口获取数据)[]。
参考代码片段:
1 auto motion_datas = cam.GetMotionDatas();
2 if (motion_datas.size() > 0) {
3 std::cout << "Imu count: " << motion_datas.size() << std::endl;
4 for (auto data : motion_datas) {
6 if (data.imu->flag == MYNTEYE_IMU_ACCEL) {
7 counter.IncrAccelCount();
8 std::cout << "[accel] stamp: " << data.imu->timestamp
9 << ", x: " << data.imu->accel[0]
10 << ", y: " << data.imu->accel[1]
11 << ", z: " << data.imu->accel[2]
12 << ", temp: " << data.imu->temperature
14 } else if (data.imu->flag == MYNTEYE_IMU_GYRO) {
15 counter.IncrGyroCount();
16 std::cout << "[gyro] stamp: " << data.imu->timestamp
17 << ", x: " << data.imu->gyro[0]
18 << ", y: " << data.imu->gyro[1]
19 << ", z: " << data.imu->gyro[2]
20 << ", temp: " << data.imu->temperature
23 std::cerr << "Imu type is unknown" << std::endl;
26 std::cerr << "Motion data is empty" << std::endl;
29 std::cout << std::endl;
上述代码,用了 OpenCV 来显示图像和数据。选中显示窗口时,按 ESC/Q 就会结束程序。
完整代码样例,请见get_imu.cc 。