def callback_scan()

in robot_ws/src/turtlebot_controller/robomaker/inference_worker.py [0:0]


    def callback_scan(self, data):
    
        if not data:
            return
        
        self.ranges = data.ranges

        size = len(self.ranges)
        x = np.linspace(0, size-1, IMAGE_SIZE)
        xp = np.arange(size)
        state = np.clip(np.interp(x, xp, self.ranges), 0, LIDAR_SCAN_MAX_DISTANCE)
        state[np.isnan(state)] = LIDAR_SCAN_MAX_DISTANCE

        state = np.expand_dims(state, axis=0)
        x = self.graph.get_tensor_by_name('turtlebot/main_level/agent/main/online/network_0/observation/observation:0')
        y = self.graph.get_tensor_by_name('turtlebot/main_level/agent/main/online/network_1/ppo_head_0/policy:0')
        inferenceOutput = np.argmax(self.session.run(y, feed_dict={
            x: state
        }))

        self.takeAction(inferenceOutput)