¿Por qué la forma tradicional de modelado y control aún se utiliza en robótica, a pesar de que tenemos algoritmos sofisticados como el aprendizaje por refuerzo?

Creo que esta es una muy buena pregunta. La palabra “más sexy” es un poco divertida para ser honesta. Dicho esto, participé en una conferencia de control óptimo ofrecida por un profesor que pensaba que ciertos problemas de control óptimo eran más atractivos que otros. Pero de todos modos, ¿quién soy yo para juzgar? 🙂

Además, mi trabajo se centra en el diseño y control basados ​​en modelos. Así que estoy sesgado hacia esos temas.

Vamos a empezar con la respuesta.

Creo que hay dos partes en esta pregunta. Empezaré por la primera parte. Según el hermoso libro ‘Fabric of Reality’ escrito por David Deutsch, una teoría científica debería tener el poder de explicar las cosas. Debería tener un enfoque realista de los fenómenos naturales en lugar de uno inductivo. Sus ideas sobre el conocimiento científico están influenciadas por otro erudito muy importante, Karl Popper.

Quizás te preguntes a dónde voy con esto. La forma tradicional de modelado y control en robótica son explicativas. Puedes usarlos para explicar por qué un bípedo camina sin perder estabilidad. Puedes usarlos para explicar por qué las bicicletas no se caen, y si crees que este es un problema trivial, te sugiero que eches un vistazo a la siguiente charla de TED.

También puedes usar las mismas teorías que explican cómo funcionan los sistemas dinámicos para controlar máquinas increíbles, como cuadrúpedos, robots humanoides, cuadrotors … Lo que quieras. Además, puede probar la estabilidad de su controlador bajo ciertas restricciones / condiciones utilizando herramientas de la teoría de sistemas no lineales, como la estabilidad de Lyapunov. No conozco ningún algoritmo de refuerzo que pruebe o discuta la estabilidad de un controlador con usted. El aprendizaje por refuerzo tampoco le explicará por qué el conjunto de acciones que realiza a lo largo del tiempo realmente funciona.

La segunda parte de la pregunta es más práctica. Supongamos que usted es un ingeniero de controles, a quien se le asigna un ajuste de las ganancias PID de los motores de CC de un robot humanoide 36 DoF. Puedes hacerlo manualmente. No es tan difícil si tienes alguna experiencia de control básico. Si necesita afinar cientos de robots humanoides que salen de una fábrica, probablemente necesite una forma de afinación más repetible. ¿Quieres utilizar el aprendizaje por refuerzo? Si sugieres usar un algoritmo de refuerzo para ajustar cada robot, mi primera pregunta sería: ¿Qué tan factible es eso? ¿Es más rápido que un algoritmo de ajuste basado en el control adaptativo? ¿O son las redes neuronales más rápidas? Realmente necesitas responder por qué querrías hacer eso. Además, si usted es una empresa que diseñó robots, es probable que tenga muchos conocimientos sobre los parámetros de su sistema (masa, coeficientes de amortiguación, diseño de la caja de cambios, etc.). En ese caso, desearía que un algoritmo que utiliza ese conocimiento sea más eficiente y dudo que el aprendizaje por refuerzo sea la mejor manera de hacerlo.

Habiendo dicho todo esto, hay maneras significativas de usar el aprendizaje por refuerzo en el control de robots. Especialmente en ambientes inciertos. Lo que la gente hace es hacer que el robot aprenda el entorno y luego intenten encontrar trayectorias en aquellos entornos que sean óptimos con respecto a la función de costo. Hay investigaciones en curso que utilizan estas tácticas en la planificación del movimiento y en el control del aterrizaje altamente diestro en el vuelo alado.

Además: si todo lo que tienes es un martillo, todo parece un clavo.

Imagina que tu trabajo es diseñar el piloto automático para un avión. ¿Qué algoritmo utilizarías?

Podría usar el aprendizaje de refuerzo, pero eso requeriría que permita que el avión pase a través de todo su espacio de estado, cada velocidad que pueda tomar, cada actitud y velocidad de ascenso, muchas masas de carga y cargas de combustible diferentes, y cuándo en cada uno de ellos. En esos estados, se pueden probar diferentes configuraciones de aceleración del motor, configuraciones de alerones y timones, etc., y registrar el cambio en la recompensa que se produce. El aprendizaje por refuerzo funciona, pero requiere muchos datos antes de que converja. Por lo general, los datos se deben recopilar en línea porque está asumiendo que no conoce el modelo y está tratando de aprenderlo. Pero antes de que converja, el comportamiento del aprendizaje por refuerzo es indefinido, que aquí está el código para “generalmente catastrófico”.

Así que el aprendizaje por refuerzo funcionaría, eventualmente. Pero chocarías muchos aviones.

Alternativamente, podría derivar un simple modelo lineal de segundo orden del avión en un puñado de regímenes de vuelo aceptables utilizando técnicas de modelado matemático que tienen más de cien años de antigüedad ahora. Luego, podría aplicar algunas técnicas de la teoría del control lineal que se ha demostrado que funcionan teóricamente y que tienen literalmente millones de horas de operaciones exitosas detrás de ellas, analizar el rendimiento del sistema utilizando técnicas de análisis de estabilidad muy manejables que datan de la década de 1940 y se han utilizado. en todos los tipos de sistemas de control imaginables, desde las antiguas máquinas a vapor hasta la lanzadera espacial, y verifique su análisis mediante una simulación dinámica relativamente simple.

Luego, puede ir a su casa por la noche y dormir profundamente sabiendo que el avión no se estrellará debido a nada de lo que hizo su algoritmo, ya que su algoritmo es matemáticamente manejable, comprobable y tan rigurosamente probado como cualquier diseño de ingeniería en la tierra puede ser.

Ahora imagine que tiene que diseñar el sistema de control para un brazo de robot industrial de dos toneladas que puede moverse a 100 grados por segundo y ejercer una fuerza de más de 500 Newtons. Y trabajará muy cerca de los trabajadores de las fábricas humanas. O un auto auto-conducido, o un cohete o un robot de búsqueda y rescate. ¿Qué algoritmo usas? ¿Qué algoritmo utiliza el ingeniero responsable cuando sus errores pueden hacer que las personas mueran?

Una vez estuve en una conferencia de ingenieros de robótica. Yo era el único ingeniero de control en el grupo; todos los demás eran investigadores de IA La pregunta fue: “¿Cuál de ustedes confiaría su vida en su diseño? Por favor, levántese”.

Yo era el único que se puso de pie. Y es por eso que todavía utilizamos técnicas de control tradicionales.

La robótica es un campo muy grande. Un brazo robótico en el piso de una fábrica es muy diferente a un robot hexápodo que camina sobre terreno áspero.

Tomemos el brazo del robot en un ejemplo de línea de montaje. La estructura es fija, los motores y las cajas de engranajes son de alta precisión, y si algo sale mal, simplemente lo arreglas y vuelve a funcionar como nuevo. El entorno en el que se encuentra no es desordenado como el mundo exterior, está limpio y todas las partes del producto que necesita siempre se pueden encontrar en el mismo lugar y la misma orientación. Este tipo de sistema y su comportamiento se pueden modelar con un grado de precisión lo suficientemente alto como para que simplemente no necesite ningún tipo de aprendizaje automático. El modelo y la realidad están muy sincronizados, por lo que los ingenieros de control pueden establecer sistemas de control casi óptimos. No hay necesidad de mucho aprendizaje o errores potencialmente peligrosos / costosos. Solo modela el sistema matemáticamente y funciona.

Pero ¿qué pasa con un hexápodo diseñado para escabullirse sobre el terreno marciano? Este tipo de robots deben ser flexibles y compatibles (PETMAN es tan mejor que ASIMO al caminar), lo que puede hacer que el modelado matemático de ellos sea intratable. ¿Qué tal si el robot pierde el uso de una extremidad o si las piernas se amontonan en barro pesado, lo que lleva a cambios salvajes en la distribución del peso? Cualquier modelo de sistema de control predefinido del sistema sería muy diferente de la realidad. Y no puedes mandar a un ingeniero para que lo repare. Necesita poder ajustar su comportamiento en respuesta a los cambios en la situación. Quizás pueda desarrollar una cojera, para evitar poner peso en una pierna rota, o puede cambiar de mover 3 piernas en cualquier momento a una sola, para ahorrar energía y permanecer estable.

Así que el punto es, diferentes situaciones requieren diferentes soluciones. Cuando un sistema es lo suficientemente restringido y simple como para ser modelado matemáticamente, esa es la mejor opción. Cuando eso es imposible debido a posibles cambios en la estructura o dinámicas demasiado complejas, o interacciones impredecibles con el mundo real, el aprendizaje es la única solución.

En términos de modelado, somos bastante buenos en la fabricación de modelos dinámicos mecánicos de robots que utilizan las Leyes de Newton y los representan como una matriz de ecuaciones diferenciales de segundo orden. Es cierto que se han hecho algunas simplificaciones, pero en general, estas ecuaciones son lo suficientemente buenas para muchas aplicaciones.

Sin embargo, en términos de control, dependiendo de si su sistema está totalmente activado o no, el control de estos robots puede ser muy fácil o muy difícil, respectivamente. Como regla general, si su sistema está conectado a tierra y tiene actuadores para todas las DoF, el control del robot se puede hacer con métodos clásicos.

Ahora, si tiene un sistema que no funciona correctamente, entonces podemos comenzar a hablar sobre diferentes formas de controlar dicho sistema. Incluso aquí, hay herramientas matemáticas que podemos usar sin saltar a la inteligencia artificial. Por lo general, esto se hace mediante funciones de optimización, búsqueda, heurística y programación dinámica. Y así, para muchas aplicaciones, usar esas herramientas también es suficiente.

Ahora, no estoy diciendo que el aprendizaje por refuerzo no sea útil, pero en muchos casos podría ser una matanza excesiva o innecesaria. Por ejemplo, puede usar el aprendizaje por refuerzo si desea que el robot aprenda mejor sus propios parámetros de modelo. También puede utilizar el aprendizaje por refuerzo para hacer que el robot busque las ganancias de control correctas en el sistema. Pero en este caso, solo estás utilizando el aprendizaje por refuerzo para encontrar mejores parámetros. Antes de llegar a este punto, habría estado utilizando los modelos dinámicos primitivos mencionados anteriormente.

Ahora puede estar pensando en el aprendizaje por refuerzo para que el robot pueda aprender a realizar una tarea en particular. Esto es de nuevo útil, pero solo lo hemos resuelto para ciertas tareas como escoger y colocar. Nadie ha descubierto todavía una manera de hacer que el marco sea lo suficientemente general como para que el robot pueda adaptarse a una tarea determinada sin que un ser humano especifique los objetivos de aprendizaje y qué hacer para alcanzar esos objetivos.

En esencia, todavía estamos atascados en decirle a los robots lo que deben hacer.

Hay una serie de razones por las cuales los métodos de control tradicionales son más utilizados.

La primera razón es una brecha de conocimiento. El aprendizaje por refuerzo es un campo relativamente nuevo, y las personas que se graduaron hace 15 años simplemente no saben mucho al respecto (en general, por supuesto).

Esto está directamente relacionado con mi segunda razón, que es que el aprendizaje reforzado es más difícil de entender y de implementar. Necesita invertir tiempo en aprender estos nuevos métodos, que son bastante diferentes del control tradicional. Además, la implementación de un controlador PID estándar es muy fácil y se puede hacer directamente en hardware o mediante un simple microcontrolador. Para un aprendizaje reforzado, necesita una plataforma que sea capaz de ejecutar un algoritmo complejo. Entonces necesita que alguien implemente un algoritmo, y asegúrese de que sea robusto. Después de todo esto, debe “entrenar” su sistema, lo que lleva mucho tiempo por sí solo, y mucho menos encontrar un buen conjunto de entrenamiento.

La tercera razón es la fiabilidad. Para el control tradicional, puede hacer un análisis de estabilidad y puede aprender mucho sobre qué tan robusto es un sistema. Para el aprendizaje reforzado, no hay garantías. Puede haber una situación de un millón de veces que dispara al controlador, lo que podría resultar en un fallo. Imagine que una máquina multimillonaria se vuelve inestable y se destruye a sí misma … Nunca recomendaría un aprendizaje reforzado en ningún entorno industrial, médico o militar (al menos no con dispositivos de seguridad muy confiables incorporados).

La cuarta razón es la repetibilidad. Si entrega 100 máquinas a un cliente, ¿puede garantizar que todas estas máquinas cumplan con las especificaciones? Y si reemplaza una máquina en un proceso de producción, ¿puede garantizar que esto no afecte a otras máquinas más adelante (debido a un rendimiento diferente, precisión, etc.)?

La quinta razón es que simplemente no es necesario. El control PID todavía se usa ampliamente porque funciona. Para la mayoría de las aplicaciones, el rendimiento óptimo no es tan interesante. La confiabilidad es mucho más importante, y el control PID puede proporcionar eso. Es muy fácil determinar los márgenes de estabilidad, no necesita un buen modelo para hacer un controlador, es fácil sintonizar el controlador, es fácil implementar el controlador (y no tiene una PCB con 100 componentes que puede fallar) …

Todo lo anterior está escrito principalmente desde una perspectiva industrial, y asumí que no hay (o muy poco) un control confiable por debajo para garantizar el rendimiento. Algo así como el control de aprendizaje iterativo (ILC) puede ser, y ha sido, implementado de manera confiable para aplicaciones industriales. Para la electrónica de consumo, muchos de los argumentos anteriores no son tan importantes, y la mayoría de los argumentos no son importantes para muchas de las aplicaciones de robótica con inteligencia artificial. Por lo tanto, el aprendizaje reforzado definitivamente tiene su lugar, pero no sobreestime sus capacidades.

El aprendizaje de refuerzo requiere un conjunto exhaustivo de datos e implica un posible fallo del sistema durante el proceso (recuerde: el fracaso es parte del aprendizaje), ambos son muy problemáticos en muchas configuraciones:

  • El conjunto exhaustivo de datos sobre un robot que evoluciona en un entorno complejo es casi imposible de lograr. Excepto si pasa mucho tiempo dejando que el robot esté en este entorno exacto (incluso así, puede que no se encuentre con una situación muy avanzada en el proceso que lo haga simplemente fallar estúpidamente)
  • y esto lleva al fracaso. La mayoría de las veces, con una máquina compleja que estará en un lugar difícil de alcanzar para el ser humano de otra manera (por ejemplo: una planta de energía nuclear después de una crisis, bajo el agua, espacio, un planeta diferente, …) o simplemente estar en interacción directa con humanos (para los fines del servicio robótico, pero se podría decir lo mismo de los drones que se venden en este momento). Una falla no es una opción, le costará a la persona que deje que este robot no esté listo una gran cantidad de dinero (ya sea porque enviar el robot en este lugar remoto es muy costoso o simplemente porque la falla resultó en dañar a los humanos)

Así que no, no es porque se vea más sexy, porque sabemos “bien” cómo hacerlo y mantenemos buenas propiedades para el robot y para su entorno: predecibilidad, probabilidad, robustez. Esto sería mucho más difícil de abordar con el aprendizaje por refuerzo.

No me malinterpretes; el aprendizaje por refuerzo tiene su lugar en el robótico (y, de hecho, es muy activo en esta comunidad) y, de hecho, puede superponerse con los enfoques basados ​​en modelos. Pero tener la posibilidad de elegir entre un enfoque bien definido y uno flexible pero con pocas garantías, es algo que es bueno. Y en este momento, el aprendizaje por refuerzo en la mayoría de los casos no es la opción tanto para los investigadores (como yo, tal vez quiera agregar un mayor nivel de abstracción sobre un controlador en el que puedan confiar) y para la industria (que no quieren tener grandes pérdidas debido a un aprendizaje va mal) prefiero.

Cualquier tipo de algoritmo de “aprendizaje automático” requiere que tenga un conjunto de datos de entrenamiento bueno, completo y representativo que cubra todas las situaciones que su robot necesita para manejar. Si su conjunto de entrenamiento es inadecuado, los mejores algoritmos de aprendizaje automático del mundo simplemente le darán un comportamiento no deseado.

Es muy difícil falsificar datos que sean precisos y representativos del tipo de datos que un robot real recibe sobre el mundo real a través de sensores reales (con todos sus problemas del mundo real como sensibilidad a la temperatura, voltajes fluctuantes y desconexiones intermitentes, etc.)

O tienes que recoger tu conjunto de entrenamiento “in situ”, en el propio robot, en el mundo real. (Así es como lo hace la naturaleza. Los bebés pasan tiempo aprendiendo dentro de sus propios cuerpos). Esto es costoso: probablemente necesite mucho tiempo y muchos robots, y aceptar que algunos robots se dañarán o destruirán al intentarlo. para averiguar cómo hacer frente a situaciones difíciles o peligrosas.

O básicamente trabaja con un modelo artificial / abstracto del mundo, pero uno que es “conservador” (es decir, el robot se equivoca por el lado de la precaución) En este caso, es suficiente un sistema de control más tradicional, abstracto y basado en reglas. No tiene sentido usar un modelo muy sofisticado y poderoso aprendido a máquina cuando todo lo que está aprendiendo es el comportamiento de un modelo extremadamente simple y abstracto del mundo. Si su modelo mundial es simplista y está definido por reglas, puede compilarlo más o menos directamente en el sistema de control que lo maneja.

Respuesta simple y breve: espere unos años y se utilizará en todas partes en robótica.

La revolución del aprendizaje profundo todavía es muy joven, comenzó en 2008 y explotó después de 2012. Antes de esto, los algoritmos obtuvieron resultados mucho más pobres. En los últimos años, se ha avanzado mucho para que el software sea más fácil de escribir con grandes bibliotecas. Pero aún así, para los investigadores de LD, hay tantas cosas que tratar de hacer con esas nuevas herramientas e ideas que simplemente no hay suficiente gente para hacer esto.

Cuando los científicos invirtieron toda su vida para desarrollar una tecnología, no les gusta cuando los científicos de moda vienen y les dicen que cambien todo lo que los hizo famosos en primer lugar. Así que muy pocos investigadores de robótica son proactivos y tratan con pasión para que funcione. Gran parte de la ciencia que se desarrolló no es útil para RL, no es necesario invertir la cinemática y el manejo de colisiones, el robot aprenderá por sí mismo las combinaciones de ángulos que no son posibles (auto colisiones) y los sensores encontrarán la Colisiones con el medio ambiente.

En general, como necesita un equipo (o una sola persona) que sea bueno tanto en ML como en robótica, muy pocas personas en el mundo están tratando de hacer que esto sea realmente una realidad.

Algunos artículos han mostrado intentos muy prometedores de hacer esto. Se necesitan algunos años para intentar que esto funcione correctamente en los laboratorios. Y se requerirán algunos años más para impulsar esto en la industria.

Sé paciente, el tsunami de aprendizaje automático también está llegando en robótica.

De lo que estás hablando cae en la categoría de controles adaptativos. La preocupación por la capacidad de adaptación siempre ha sido una posible convergencia sobre leyes de control inestables, condicionalmente estables o no verificadamente estables o no convergencia. Los sistemas adaptativos pueden requerir la supervisión humana, lo que limita su valor y también carecen de herramientas que permitan comprenderlo a tiempo para intervenir si es necesario. Por lo tanto, se prefieren los métodos de diseño que permiten el diseño de la ley de control convencional y / o la identificación del sistema para elegir las ganancias dentro de un diseño de bucle dado. Los sistemas multivariables complejos pueden ser más difíciles de diseñar, pero son incluso menos predecibles en un esquema adaptativo.

Debido a que los métodos tradicionales todavía funcionan muy bien, están bien dominados y son fáciles de usar.