https://github.com/CLeARoboticsLab/ssrl/blob/main/ssrl/brax/envs/go1_go_fast.py#L688
Why you use different operator for linear velocity and angular velocity?
In my view, it should use the inv_rotate operator to transform the velocity of world frame to body frame and use the rotate operator to transform the velocity of body frame to world frame.
By the way,
Does pipeline_state.qd.at[self._xml_base_vel_idxs] represent the linear velocity in the world frame?
Does pipeline_state.qd.at[self._xml_rpy_rate_idxs] represent the angular velocity in the body frame?