Data generated by the IMU can be received using the receive_imu_data method. It returns a UTC timestamp in seconds, the head pose as a quaternion, gyro data, and accelerometer data as follows.
importasyncioimportcontextlibfrompupil_labs.realtime_apiimportDevice,Network,receive_imu_dataasyncdefmain():asyncwithNetwork()asnetwork:dev_info=awaitnetwork.wait_for_new_device(timeout_seconds=5)ifdev_infoisNone:print("No device could be found! Abort")returnasyncwithDevice.from_discovered_device(dev_info)asdevice:status=awaitdevice.get_status()sensor_imu=status.direct_imu_sensor()ifnotsensor_imu.connected:print(f"Imu sensor is not connected to {device}")returnrestart_on_disconnect=Trueasyncforimu_packinreceive_imu_data(sensor_imu.url,run_loop=restart_on_disconnect):print(imu_pack)if__name__=="__main__":withcontextlib.suppress(KeyboardInterrupt):asyncio.run(main())