[docs]classIMUData(T.NamedTuple):gyro_data:Data3Daccel_data:Data3Dquaternion:Quaterniontimestamp_unix_seconds:float@propertydefdatetime(self):returndatetime.datetime.fromtimestamp(self.timestamp_unix_seconds)@propertydeftimestamp_unix_ns(self):returnint(self.timestamp_unix_seconds*1e9)# For backward compatibility@propertydeftimestamp_unix_nanoseconds(self):returnself.timestamp_unix_ns
[docs]asyncdefreceive(self,)->T.AsyncIterator[IMUData]:asyncfordatainsuper().receive():try:imu_packet=ImuPacket()imu_packet.ParseFromString(data.raw)imu_data=IMUPacket_to_IMUData(imu_packet)yieldimu_dataexceptException:logger.exception(f"Unable to parse imu data {data}")raise