Estou pensando em programar uma linha após o robô usando algoritmos de aprendizado por reforço. A questão que estou pensando é como posso obter o algoritmo para aprender a navegar por qualquer caminho arbitrário?
Depois de seguir o livro de Sutton & Barto para aprender reforço, resolvi um problema de exercício envolvendo uma pista de corrida onde o agente do carro aprendia a não sair da pista e regular sua velocidade. No entanto, esse problema de exercício levou o agente a aprender a navegar na pista em que treinou.
Está no escopo do aprendizado por reforço conseguir que um robô navegue por caminhos arbitrários? O agente precisa absolutamente ter um mapa do circuito ou caminho da corrida? Quais parâmetros eu poderia usar para meu espaço de estado?
Respostas:
Uma das principais medidas de qualquer algoritmo de aprendizado de máquina é sua capacidade de generalizar (ou seja, aplicar o que aprendeu para desvendar cenários anteriormente). Os alunos de reforço (RL) podem generalizar bem, mas essa capacidade é em parte uma função da formulação do espaço de estados na minha experiência. Isso significa que, se você encontrar a configuração correta, o aluno da RL não precisará de um mapa do circuito de corrida.
Isso deixa a questão de quais parâmetros usar. Sem saber mais sobre os sensores disponíveis no seu robô, só posso especular. Minha primeira inclinação é tentar codificar a orientação relativa da linha e do robô (ou seja, o robô está tendendo para a direita, esquerda ou simplesmente se movendo paralelamente à linha). Fazer isso resultaria em um espaço de estado pequeno e agradável. Embora não seja estritamente necessário, seria uma implementação rápida e simples. Além disso, se o robô não se mover a uma taxa constante, poderá ajudar a codificar a velocidade dos robôs, pois ele precisará reagir mais rapidamente ao se mover em velocidades mais altas.
fonte
Não tenho certeza de que tipo de robô você tem, mas eu tenho feito a linha de resgate robocup há alguns anos. Eu percebi que se você deseja seguir uma linha bem usando PID é uma boa opção. Deixe-me expandir sobre isso. Se você imaginar dois sensores de luz em ambos os lados da linha, gostaria que eles tivessem o mesmo valor para que a linha ficasse no meio. Você pode usar a diferença entre o valor dos dois sensores para alterar a porcentagem de rotação do robô. Com esta técnica, é possível fazer com que um robô siga uma linha em velocidades extraordinárias. exatamente como você está pensando em fazer o robô aprender a melhorar suas habilidades de rastreamento de linha. O que eu vim foi começar com os valores iniciais do PID mais altos do que você deseja que eles sejam e usar um sensor giroscópico para medir a frequência de oscilação do robô enquanto ele segue a linha. A partir daí, você pode criar sua própria função para determinar quanto diminuir seus valores para obter um sistema estável. Isso não é exatamente inteligência artificial, mais como um algoritmo de otimização automática, mas ei, tenho 18 anos e aprendi a codificar a partir do Internet. Eu espero que isso ajude. Se você tiver alguma dúvida envie-me um e-mail, este não é o meu endereço de e-mail principal, portanto não o verifico regularmente. [email protected]
fonte