UD04 · EX3 — Navegar con cámara difusa¶
Esta vez, haremos un seguidor de línea usando la cámara del robot. Para hacer esto, usaremos la cámara para capturar imágenes del suelo y procesarlas para detectar la línea. Luego usaremos la información obtenida para controlar el robot y hacer que siga la línea.
Para hacer esto, usaremos la librería opencv para procesar las imágenes, Aitk.Robots para el simulador, y la librería de lógica difusa scikit-fuzzy para decidir cómo controlar el robot.
Comencemos por instalar e importar las librerías necesarias:
!!! tip "Sobre la version de scikit-fuzzy" Ya no hay que rebajar la version de Python del entorno de Colab. Ese aviso venia de cuando se fijaba scikit-fuzzy==0.4.2, que hoy ni se instala (usa imp y distutils, eliminados en Python 3.12). Instalamos la ultima version y funciona.
Lo unico que la 0.5 rompio es `ControlSystem.view()`, el dibujo del grafo del sistema, por un
error de la propia libreria. Este notebook no lo usa; si lo necesitas, el parche esta en los
talleres de la UD05. %pip install aitk numpy opencv-python-headless matplotlib requests Pillow scikit-fuzzy
import aitk.robots as bots
import numpy as np
import matplotlib.pyplot as plt
import cv2
import skfuzzy as fuzz
import skfuzzy.control as ctrl
Seguidor de línea simple¶
Crearemos el mundo de Robot y el Robot. Necesitaremos la imagen EX2_pista_5.png para este ejemplo, contiene una pista con una línea negra.
El robot tendrá una cámara que capturará imágenes del suelo y las procesará para detectar la línea. Será de tipo GroundCamera i la añadiremos al robot.
nom_imatge = "EX2_pista_5.png"
# Cargamos la imagen
img = cv2.imread(nom_imatge)
# Mostramos la imagen
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
<matplotlib.image.AxesImage at 0x7464e4dab850>
world = bots.World(220, 180, boundary_wall_color="yellow", ground_image_filename=nom_imatge)
amplada_camera = 120
alcada_camera = 50
robot = bots.Scribbler(x=24, y=80, a=90)
robot.add_device(bots.GroundCamera(width=amplada_camera, height=alcada_camera))
world.add_robot(robot)
robot['ground-camera'].watch()
world.watch()
Random seed set to: 9137897
HTML(value='<style>img.pixelated {image-rendering: pixelated;}</style>') HTML(value='<style>img.pixelated {image-rendering: pixelated;}</style>') HTML(value='<style>img.pixelated {image-rendering: pixelated;}</style>') Image(value=b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00x\x00\x00\x002\x08\x06\x00\x00\x00\x97\xa7\x1f\xd…
Image(value=b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x08\x06\x0…
Implementa la función controlador_cam que será el que tendrá que controlar el robot. Puedes basarte en el ejemplo hecho en UD04_N01_introduccion_opencv.ipynb para detectar la línea (ten en cuenta que la cámara aquí está debajo del robot, por lo que si usamos la parte inferior de la imagen seguramente el robot sea demasiado inestable, sería mejor usar la parte superior de la imagen) y en el ejemplo hecho en UD04_N03_ejemplos_robots.ipynb para controlar el robot.
Para simplificar, utilizaremos la lógica difusa para decidir cómo controlar el robot. Como variable de entrada, utilizaremos el error de la posición de línea con respecto al centro de la imagen (que irá de -ANCHO_CAMARA//2 a +ANCHO_CAMARA//2) y como variables de salida, la velocidad y dirección del robot (que variará de -1 a 1).
Recuerda, el operador // calcula la división entera.
# Definimos la variable de entrada
# ...
# Definimos las funciones de pertenencia
# ...
# Definimos variables de salida
# ...
# Definimos las reglas
# ...
# Definimos el sistema de control
# ...
# Simulamos el sistema de control
# ...
velocitat_ctrl.view()
def controlador_cam(robot):
cam = robot['ground-camera']
image = cam.get_image()
# Convirtemos la imagen en una matriz numpy para trabajar en OpenCV
# Nos quedamos con la parte superior de la imagen
# convertir a escala de grises
# Aplicamos un filtro de desenfoque gaussiano
# Binarizamos la imagen (treshold)
# Buscamos los contornos
# Dibujamos los contornos
# Calculamos el centro del borde más grande
# En m tenemos los momentos de la imagen
# area
# sum(y)
# sum(x)
# Si el área es diferente de 0, calculamos el centro de masa
# Dibujamos el centro de la masa
# Mostramos la imagen (opcional)
# Calculamos el error
# Calculamos la velocidad y la rotación
# Movemos el robot
world.reset()
world.seconds(60, [controlador_cam], real_time=False)
Using random seed: 9137897
0%| | 0/600 [00:00<?, ?it/s]
Simulation stopped at: 00:01:00.00; speed 10.7 x real time
Seguidor de doble línea (mantenerse en el camino)¶
Adapte el seguidor de la línea para que el robot pueda seguir dos líneas paralelas y permanecer en el camino. Para hacer esto, usaremos la imagen EX2_pista__6.png que contiene dos líneas paralelas.
nom_imatge = "EX2_pista_6.png"
# Cargamos la imagen en una variable
img = cv2.imread(nom_imatge)
# Mostramos la imagen
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
<matplotlib.image.AxesImage at 0x74652cb2d900>
world = bots.World(220, 180, boundary_wall_color="yellow", ground_image_filename=nom_imatge)
robot = bots.Scribbler(x=36, y=90, a=90)
robot.add_device(bots.GroundCamera(width=120, height=50))
world.add_robot(robot)
robot['ground-camera'].watch()
world.watch()
Random seed set to: 4427191
HTML(value='<style>img.pixelated {image-rendering: pixelated;}</style>') HTML(value='<style>img.pixelated {image-rendering: pixelated;}</style>') HTML(value='<style>img.pixelated {image-rendering: pixelated;}</style>') Image(value=b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00x\x00\x00\x002\x08\x06\x00\x00\x00\x97\xa7\x1f\xd…
Image(value=b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00\xff\xdb\x00C\x00\x08\x06\x0…
def controlador_cam(robot):
cam = robot['ground-camera']
image = cam.get_image()
# Convirtemos la imagen en una matriz numpy para trabajar en OpenCV
# Nos quedamos con la parte superior de la imagen
# convertir a escala de grises
# Aplicamos un filtro de desenfoque gaussiano
# Binarizamos la imagen (treshold)
# Buscamos los contornos
# Dibujamos los contornos
# Calculamos el centro del borde más grande
# En m tenemos los momentos de la imagen
# area
# sum(y)
# sum(x)
# Si el área es diferente de 0, calculamos el centro de masa
# Dibujamos el centro de la masa
# Mostramos la imagen
# Movemos el robot
# ...
world.reset()
world.seconds(60, [controlador_cam], real_time=False)
Using random seed: 4427191
0%| | 0/600 [00:00<?, ?it/s]
0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.710774338521121 -0.27179779053759123 0.710774338521121 -0.27179779053759123 0.7262706270627082 -0.25167630057803453 0.7262706270627082 -0.25167630057803453 0.7262706270627082 -0.25167630057803453 0.7262706270627082 -0.25167630057803453 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7262706270627082 -0.25167630057803453 0.710774338521121 -0.27179779053759123 0.7262706270627082 -0.25167630057803453 0.710774338521121 -0.27179779053759123 0.7262706270627082 -0.25167630057803453 0.7262706270627082 -0.25167630057803453 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.7897611710323594 -0.1654068716094031 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7440638990639009 -0.22795781363237583 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7648785269201168 -0.19967975185390574 0.7897611710323594 -0.1654068716094031 0.8202849002849023 -0.12309115866362721 0.8202849002849023 -0.12309115866362721 0.8589360803850393 -0.06961653848251789 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 0.06920823578846308 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.9100000000000013 1.1384122811097803e-17 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.8589360803850393 -0.06961653848251789 0.7897611710323594 -0.1654068716094031 0.8589360803850393 -0.06961653848251789 Simulation stopped at: 00:01:00.00; speed 4.41 x real time