Use the SDK interface to obtain the camera's internal imu data and output it
AccelFrame measures the acceleration of x, y, and z in m/s^2 GyroFrame measures the angular velocity of x, y, and z in rad/s
Frameset is a combination of different types of Frames.imu data stream can be obtained through frameset
-
Configure output imu related information and open stream.You must configure this before calling pipe.start().
// Configure which streams to enable or disable for the Pipeline by creating a Config. std::shared_ptr<ob::Config> config = std::make_shared<ob::Config>(); // Enable Accel stream. config->enableAccelStream(); // Enable Gyro stream. config->enableGyroStream(); // Only FrameSet that contains all types of data frames will be output. config->setFrameAggregateOutputMode(OB_FRAME_AGGREGATE_OUTPUT_ALL_TYPE_FRAME_REQUIRE);
-
Instantiate pipeline, configure output imu related information and open stream
auto accelFrameRaw = frameSet->getFrame(OB_FRAME_ACCEL); auto accelFrame = accelFrameRaw->as<ob::AccelFrame>(); auto accelIndex = accelFrame->getIndex(); auto accelTimeStampUs = accelFrame->getTimeStampUs(); auto accelTemperature = accelFrame->getTemperature(); auto accelType = accelFrame->getType(); if(accelIndex % 50 == 0) { // print information every 50 frames. auto accelValue = accelFrame->getValue(); printImuValue(accelValue, accelIndex, accelTimeStampUs, accelTemperature, accelType, "m/s^2"); } auto gyroFrameRaw = frameSet->getFrame(OB_FRAME_GYRO); auto gyroFrame = gyroFrameRaw->as<ob::GyroFrame>(); auto gyroIndex = gyroFrame->getIndex(); auto gyroTimeStampUs = gyroFrame->getTimeStampUs(); auto gyroTemperature = gyroFrame->getTemperature(); auto gyroType = gyroFrame->getType(); if(gyroIndex % 50 == 0) { // print information every 50 frames. auto gyroValue = gyroFrame->getValue(); printImuValue(gyroValue, gyroIndex, gyroTimeStampUs, gyroTemperature, gyroType, "rad/s"); }
Press the Esc key in the window to exit the program.