code: def joint_positions_for_eef_command(self, right, left):
          
  
          dpos_right = right["dpos"]
          dpos_left = left["dpos"]
          self.target_pos_right = self.ik_robot_target_pos_right + np.array([0, 0, 0.913])
          self.target_pos_left = self.ik_robot_target_pos_left + np.array([0, 0, 0.913])
          self.ik_robot_target_pos_right += dpos_right
          self.ik_robot_target_pos_left += dpos_left
  
          rotation_right = right["rotation"]
          rotation_left = left["rotation"]
          self.ik_robot_target_orn_right = T.mat2quat(rotation_right)
          self.ik_robot_target_orn_left = T.mat2quat(rotation_left)
  
          # convert from target pose in base frame to target pose in bullet world frame
          world_targets_right = self.bullet_base_pose_to_world_pose(
              (self.ik_robot_target_pos_right, self.ik_robot_target_orn_right)
          )
          world_targets_left = self.bullet_base_pose_to_world_pose(
              (self.ik_robot_target_pos_left, self.ik_robot_target_orn_left)
          )
  
          # Empirically, more iterations aren't needed, and it's faster
          for _ in range(5):
              arm_joint_pos = self.inverse_kinematics(
                  world_targets_right[0],
                  world_targets_right[1],
                  world_targets_left[0],
                  world_targets_left[1],
                  rest_poses=self.robot_jpos_getter(),
              )
              self.sync_ik_robot(arm_joint_pos, sync_last=True)
  
          return arm_joint_pos
docs: This function runs inverse kinematics to back out target joint positions
          from the provided end effector command.
  
          Same arguments as @get_control.
  
          Returns:
              A list of size @num_joints corresponding to the target joint angles.