def observe(self, new_parent_node=None, position=None, hpr=None):
        """
        Get the image Observation. By setting new_parent_node and the reset parameters, it can capture a new image from
        a different position and pose
        """
        new_obs = self.engine.get_sensor(self.image_source).perceive(self.norm_pixel, new_parent_node, position, hpr)
        self.state = cp.roll(self.state, -1, axis=-1) if self.enable_cuda else np.roll(self.state, -1, axis=-1)
        self.state[..., -1] = new_obs
        return self.state

        Get the image Observation. By setting new_parent_node and the reset parameters, it can capture a new image from
        a different position and pose
        
metadrive/obs/image_obs.py