As respostas que recebi à pergunta sobre o treinamento de uma linha após o robô usando técnicas de aprendizado por reforço me levaram a pensar em como treinar um robô. Eu acredito que existem essencialmente duas maneiras -
- Treine o robô físico.
- Modele o robô e simule o treinamento.
- Perdi alguma coisa?
A abordagem 2 é definitivamente a melhor abordagem. No entanto, a priori o conhecimento do movimento (resposta), um determinado sinal PWM (estímulo) causaria quando o robô estivesse em um determinado estado. O movimento causado por um sinal PWM pode depender da ( 1 ) tensão atual da bateria, ( 2 ) da massa do robô e ( 3 ) da velocidade atual (perdi alguma coisa?).
Como faço para modelar esse robô? E como faço para modelá-lo rapidamente? Se eu trocar a bateria ou adicionar algumas placas e outros periféricos e alterar a massa do robô, teria que remodelar e treinar novamente o robô. Posso fazer isso fornecendo alguns PWMs de estímulo aleatório e medindo a resposta?
adicionado: Minha pergunta relacionada no dsp.SE
Atualização: Uma edição sugerida por Ian, digna de ser mencionada no título - " Como faço para treinar um robô para que, se sua dinâmica mudar, ele não precise de um novo treinamento completo? " um que estou perguntando aqui. Estou bem com a re-formação por enquanto.
fonte
Respostas:
A meu ver, existem duas questões principais aqui. A primeira é: como eu modelo um robô? Isso é freqüentemente feito com uma formulação no espaço de estados das equações de movimento . As equações exatas dependem da construção física do seu robô. Sim, para modelá-los com entrada PWM, é necessário determinar a função de transferência dos valores PWM que você fornece para a saída de seus atuadores. Então você conecta essa função para o sinal de controle em seu modelo. Novamente, a derivação dessa função é específica do robô. A tensão atual da bateria e a massa do robô provavelmente seriam úteis, mas não sei sobre a velocidade.
A segunda pergunta é, dado um modelo matemático do meu robô, qual é a melhor maneira de treinar um algoritmo de aprendizado por reforço (RL) para controlá-lo? Em suma, não existe um melhor caminho. Treinar diretamente no robô tende a ser demorado, pois leva mais tempo para executar as tentativas. Entretanto, as simulações podem resultar em políticas menos precisas, pois a física da simulação é necessariamente simplificada. Outra abordagem é treinar o aluno em simulação para obter uma aproximação razoável e, em seguida, transferir a política resultante para o robô para aperfeiçoamento. Obviamente, isso falhará se o modelo não for suficientemente preciso. Também requer desenvolvimento extra.
Por fim, você pergunta "Posso [remodelar e treinar novamente o robô] fornecendo alguns PWMs de estímulo aleatório e medindo a resposta?" No caso da RL, não há razão para pensar que a nova política ótima seja semelhante à política ótima anterior e, como tal, não há muitas razões para pensar que alguns controles aleatórios fornecerão informações suficientes para alterar a política adequadamente. É claro que a reciclagem só precisa ocorrer se as alterações feitas no seu robô afetarem a formulação do modelo de espaço de estados e / ou o modelo de ação que você usa. Por exemplo, se seu modelo de ação é em termos de ações de alto nível ("go-left", "go-right", "go-forward"), alterar a dinâmica exige a alteração de como você implementa esses movimentos, mas a política ainda deve ser mantida. .
fonte
Para modelar, a cinemática
Denavit–Hartenberg parameters
é comumente usada. o curso Introdução à robótica da Stanford University está disponível no YouTubefonte