<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def interpolate(T0, T1, t):
 """Return an interpolation of two RigidTransforms. Parameters T0 : :obj:`RigidTransform` The first RigidTransform to interpolate. T1 : :obj:`RigidTransform` The second RigidTransform to interpolate. t : float The interpolation step in [0,1]. 0 favors T0, 1 favors T1. Returns ------- :obj:`RigidTransform` The interpolated RigidTransform. Raises ------ ValueError If the to_frame of the two RigidTransforms are not identical. """

        if T0.to_frame != T1.to_frame:
            raise ValueError('Cannot interpolate between 2 transforms with different to frames! Got T1 {0} and T2 {1}'.format(T0.to_frame, T1.to_frame))
        dq0 = T0.dual_quaternion
        dq1 = T1.dual_quaternion

        dqt = DualQuaternion.interpolate(dq0, dq1, t)
        from_frame = "{0}_{1}_{2}".format(T0.from_frame, T1.from_frame, t)
        return RigidTransform.transform_from_dual_quaternion(dqt, from_frame, T0.to_frame)