parameters: (
          self,
          params: MobileManipulatorParams,
          urdf_path: str,
          sim: Simulator,
          limit_robo_joints: bool = True,
          fixed_base: bool = True,
      )
docstring: r"""Constructor
  
          :param limit_robo_joints: If true, joint limits of robot are always
              enforced.
docstring_summary: r"""Constructor
docstring_tokens: r Constructor
function: def __init__(
          self,
          params: MobileManipulatorParams,
          urdf_path: str,
          sim: Simulator,
          limit_robo_joints: bool = True,
          fixed_base: bool = True,
      ):
          r"""Constructor
  
          :param limit_robo_joints: If true, joint limits of robot are always
              enforced.
          """
          super().__init__()
          self.urdf_path = urdf_path
          self.params = params
          self._fix_joint_values: Optional[np.ndarray] = None
  
          self._sim = sim
          self._limit_robo_joints = limit_robo_joints
          self._fixed_base = fixed_base
          self.sim_obj = None
  
          self._cameras = defaultdict(list)
          for camera_prefix in self.params.cameras:
              for sensor_name in self._sim._sensors:
                  if sensor_name.startswith(camera_prefix):
                      self._cameras[camera_prefix].append(sensor_name)
  
          # NOTE: the follow members cache static info for improved efficiency over querying the API
          # maps joint ids to motor settings for convenience
          self.joint_motors: Dict[int, Tuple[int, JointMotorSettings]] = {}
          # maps joint ids to position index
          self.joint_pos_indices: Dict[int, int] = {}
          # maps joint ids to velocity index
          self.joint_dof_indices: Dict[int, int] = {}
          self.joint_limits: Tuple[np.ndarray, np.ndarray] = None
  
          # defaults for optional params
          if self.params.gripper_init_params is None:
              self.params.gripper_init_params = np.zeros(
                  len(self.params.gripper_joints), dtype=np.float32
              )
          if self.params.arm_init_params is None:
              self.params.arm_init_params = np.zeros(
                  len(self.params.arm_joints), dtype=np.float32
              )
function_tokens: def __init__ ( self , params : MobileManipulatorParams , urdf_path : str , sim : Simulator , limit_robo_joints : bool = True , fixed_base : bool = True , ) : super ( ) . __init__ ( ) self . urdf_path = urdf_path self . params = params self . _fix_joint_values : Optional [ np . ndarray ] = None self . _sim = sim self . _limit_robo_joints = limit_robo_joints self . _fixed_base = fixed_base self . sim_obj = None self . _cameras = defaultdict ( list ) for camera_prefix in self . params . cameras : for sensor_name in self . _sim . _sensors : if sensor_name . startswith ( camera_prefix ) : self . _cameras [ camera_prefix ] . append ( sensor_name ) # NOTE: the follow members cache static info for improved efficiency over querying the API # maps joint ids to motor settings for convenience self . joint_motors : Dict [ int , Tuple [ int , JointMotorSettings ] ] = { } # maps joint ids to position index self . joint_pos_indices : Dict [ int , int ] = { } # maps joint ids to velocity index self . joint_dof_indices : Dict [ int , int ] = { } self . joint_limits : Tuple [ np . ndarray , np . ndarray ] = None # defaults for optional params if self . params . gripper_init_params is None : self . params . gripper_init_params = np . zeros ( len ( self . params . gripper_joints ) , dtype = np . float32 ) if self . params . arm_init_params is None : self . params . arm_init_params = np . zeros ( len ( self . params . arm_joints ) , dtype = np . float32 )