def METHOD_NAME(self, received_imu):
    # print("RECEIVED IMU: ", received_imu)
    received_imu = np.array(received_imu).reshape((6, 1))
    received_imu = received_imu[[2, 0, 1, 5, 3, 4]] * ([-1, -1, 1] * 2)
    # self.publish_sensor_data(self._last_angles, self._last_imu)
    # IMU FEEDBACK
    imu = Imu()
    imu.header.stamp = rp.rostime.get_rostime()
    imu.header.frame_id = os.environ["ROS_NAMESPACE"][1:] + "/imu_link"
    # TODO autocalibrate
    imu.angular_velocity = Vector3(
        (-received_imu[2][0] - self._imu_calibration["gyro_offset"][0]) * self._imu_calibration["gryo_scale"][0],
        (received_imu[1][0] - self._imu_calibration["gyro_offset"][1]) * self._imu_calibration["gryo_scale"][1],
        (received_imu[0][0] - self._imu_calibration["gyro_offset"][2]) * self._imu_calibration["gryo_scale"][2],
    )
    imu.linear_acceleration = Vector3(
        (received_imu[5][0] - self._imu_calibration["acc_offset"][0]) * self._imu_calibration["acc_scale"][0],
        (received_imu[4][0] - self._imu_calibration["acc_offset"][1]) * self._imu_calibration["acc_scale"][1],
        (received_imu[3][0] - self._imu_calibration["acc_offset"][2]) * self._imu_calibration["acc_scale"][2],
    )
    imu.orientation_covariance[0] = -1
    # print(imu)
    self._pub_imu.publish(imu)