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)