Hola,<div><br></div><div>Somos varios los que estamos montando las primeras aplicaciones para jderobot 5.0, que no es ni mas ni menos que un recubrimiento de lo que hemos venido usando en el middleware ICE. Por el momento sólo contamos con un puñado de componentes que se comunican mediante un API definido con slice (lenguaje de definición de interfaces de ICE).</div>
<div><br></div><div>Bajo mi punto de vista, creo que tenemos que hacer un esfuerzo por desacoplar lo máximo posible los algoritmos/drivers que desarrollemos, de modo que lo que implementemos sea fácilmente reutilizable en otras plataformas.</div>
<div><br></div><div>Yo he llegado a este diseño en lo que a algoritmos se refiere, y que me parece puede ser aplicado a otros algoritmos como ElderCare. Podemos discutirlo, de modo que lleguemos a algo que guste a todos y podamos crear una serie de clases base.</div>
<div><br></div><div>Esto es lo que propongo:</div><div><br></div><div><b>class AlgorithmConfig</b> : Todos los parámetros necesarios para configurar el algoritmo. Se la puede dotar de metodos, para leer/escribir de fichero y para validar la configuración.</div>
<div><br></div><div><b>class AlgorithmState</b> : Todo el estado interno del algoritmo, buffers, variables, etc...</div><div><br></div><div><b>class AlgorithmInput</b> : Entradas para el algoritmo</div><div><br></div><div>
<b>class AlgorithmOutput </b>: Salidas para el algoritmo</div><div><br></div><div><b>class Algorithm : </b>Implementa el algoritmo. Al constructor se le pasa una instancia de la clase AlgorithmConfig, mas los datos de inicialización en caso de ser necesarios. Tiene métodos para obtener referencias tanto a la instancia de AlgorithmConfig como a la de AlgorithmState. La chicha del algoritmo se implementa en un método iteration() que acepta las entradas y devuelve los resultados obtenidos en cada ejecución.</div>
<div><br></div><div>Adjunto diagrama de clases.</div><div><br></div><div>En carspeed 5.0 he usado este diseño y resulta bastante cómodo. El método iteration recibe la nueva imagen disponible, y a cambio me devuelve las soluciones que va obteniendo. Para pintar el estado del algoritmo, paso a mi gui el AlgorithmState.</div>
<div><br></div><div>Creo que este diseño se puede aplicar tanto al ElderCare como al clasificador, y en general a algoritmos iterativos, de modo que al final tendríamos una colección de algoritmos que podemos integrar donde nos parezca, independientemente de la plataforma.</div>
<div><br></div><div>¿Cómo lo veis?</div><div><br></div><div>David.</div><div><b><br></b></div><div><br></div>