En este artículo vamos a profundizar un poquitos más y ver algo más de la estructuración de las funcionalidades de un robot.
Subsistemas
Damos ese paso que nos acerca más a lo técnico, hablando de subsistemas, es decir, grandes módulos o divisiones de un sistema, en este caso un robot, y donde vamos a ubicar los diferentes componentes o librerías que formen parte de su implementación.
De alguna forma, los subsistemas forman parte de la arquitectura operativa (pues la subdivisión es funcional), pero nos acerca ya a una arquitectura técnica, con la división de módulos hadrware y software.
Y seguimos también en este caso con la argumentación que hace Robin R. Murphy en su libro 'Introduction to AI robotics' y que, en este caso se apoya, a su vez, en una arquitectura que se propuso en 2003 para el caso de vehículos móviles no tripulados usados por el ejército norteamericano: 'Technology Development for Army Unmanned Ground Vehicles', una estructuración en subsistemas que, a pesar de su origen, se puede extender casi a cualquier tipo de robot aunque se observará que hay varios elementos que tienen relación precisamente con la navegación y el movimiento.
Cinco subsistemas para robots
Los cinco subsistemas que se proponen en ese documento y que Murphy acoge como propios, son:
- Planificación: Genera y monitoriza objetivos, acciones y asigna recursos. En el caso de robots móviles, como es el caso donde surgió esta arquitectura, además aporta la visión geoespacial asociada a los objetivos y acciones. Muchos de los algoritmos tradicionales de planificación y de asignación de recursos, se ubican en este subsistema que concentra de alguna forma la parte nuclear de la función deliberativa.
- Navegación: Tiene sentido realmente en el caso de robots móviles, y se encarga de generar los caminos a seguir en el movimiento y asigna recursos para conseguir los movimientos necesarios. Suele incluir algoritmos de planificación de caminos del tipo A*, D* o SLAM ('Simultaneous Localization And Mapping').
- Cartografía: Actúa como un modelo del mundo que se representa como un mapa y que no deja de ser, como sugeríamos en un post anterior, una forma especializada de representación del conocimiento. Un subsistema que, de nuevo, tiene sentido en robots móviles autónomos y no tanto (o no en absoluto) en robots fijos como los brazos robóticos industriales.
- Esquema motor: Subsistema que incluye los módulos que gestionan motores y actuadores. Se suele considerar que incluye las funciones de carácter reactivo en que el robot, sin responder a ningún plan de alto nivel, reacciona a eventos o percepciones recibidas de sus sensores. Cuando hay función deliberativa, ésta se implementaría en el subsistema de planificación.
- Percepción: Incluye los algoritmos para el procesamiento de la información procedentes de los sensores (cámaras, sensores de distancia, de contacto, etc). También incluye cierta capacidad de elegir los sensores más adecuados de acuerdo con la acción en que estamos.
Como se puede apreciar, los subsistemas de navegación y cartografía tiene sentido en robots móviles autónomos. Se trata ésta de los robots móviles autónomos, de todas formas, de una categoría muy amplia, donde podemos encontrar robots industriales o de servicio para el transporte de materiales, los propios vehículos autónomos y, en cierto sentido, los drones autónomos así como también robots humanoides o zoomórficos con capacidad de movimiento autónomo e incluso en otros robots del tipo de robots aspiradora.
Es decir, aunque algunos robots muy comunes como los de tipo de manipulador industrial que permanecen fijos no necesitarían de esos dos subsistemas, si son una capacidad suficientemente generalista como para considerar la presencia de la Navegación y Cartografía dentro de una especie de arquitectura de referencia.
Conclusión
Esta división en subsistemas supone un paso más en la estructuración de la funcionalidad de robots y su 'mapeo' a módulos software y sirve, por una parte, para poner orden en la implementación pero también, desde un punto de vista casi pedagógico, para conocer un poco más a los robots.