Cómo hacer un simple robot de autoaprendizaje.

Solo con ver el video de arriba, supongo que están usando un aprendizaje de refuerzo simple sin modelo con un espacio de acción de estado discretizado. La buena noticia es que esto es bastante simple de aprender y fácilmente aplicable a cualquier robot de bajo DOF.

Un algoritmo muy popular y simple para el modelo discreto RL libre se llama aprendizaje Q. Si está interesado en este campo, vale la pena buscar el MDP, la iteración del valor y Q para aprender a comenzar. (Udacity GaTech RL intro videos).

Básicamente, el aprendizaje de Q tendrá algún valor que asigne a un par estado-acción. Un par de acciones de estado sería como que estoy en x = 5 con velocidad 0 y estoy emitiendo 1 N de fuerza. La forma en que se actualiza el valor de acción del estado es al recibir una recompensa del entorno. Sin embargo, está diseñando el robot para que pueda elegir la función de recompensa para alentarlo a hacer lo que quiere que haga (tal vez se borre en el ejemplo a continuación).

Así que para el robot 1.

Espacio de estado: posición y velocidad de la masa vertical, posición angular y velocidad de oscilación (4 estados)

Espacio de acción – ¿par? Sinceramente, nunca he jugado con tormentas mentales, pero el par motor es una salida típica (1 estado)

Recompensa – alguna función de la altura de swing

Discretice el espacio de su estado (tal vez cada 5 grados y 5 grados / s)

Discreta tu espacio de acción (tal vez 5 pares diferentes -max, -max / 2,0, max / 2, max)

Correr q aprendiendo

s = estado inicial

corre para siempre

a = epsilon_greedy (Q (s, :)) // dilema de exploración frente a explotación

tomar acción y observar el siguiente estado s

s = s ‘

Q (s, a) + = alpha * (r + gamma * max (Q (s ‘, :)) – Q (s, a)) // consulta esto

Y ahí lo tienes.

Personalmente, comenzaría con la simulación para asegurarme de que usted comprende el algoritmo. Algunos ejemplos de controles canónicos sugeriría: péndulo simple, Acrobot, CartPole. Me gustaría ver Robótica Inactiva en EdX. Esa clase escribe el EOM para esos ejemplos y también tiene un código de ejemplo en Drake (matlab) para estos. Si prefieres Python, el gimnasio OpenAI tiene todos estos ejemplos canónicos junto con muchos más.

Después de hacer estos pequeños problemas de robótica, empieza a pensar en cómo podrías hacer un robot DOF más grande. Notará que la discretización comienza a llevar a malos resultados y se ejecuta rápidamente en la Maldición de la dimensionalidad. Una vez que esté aquí, le sugeriría que lea un documento de encuesta llamado “Aprendizaje de refuerzo para robótica: una encuesta”