LusoRobótica - Robótica em Português

Sobre o LusoRobótica => Notícias e Novidades => Tópico iniciado por: TigPT em 03 de Junho de 2015, 13:07

Título: Injured robots learn to limp
Enviado por: TigPT em 03 de Junho de 2015, 13:07
https://www.youtube.com/watch?v=KFDMm666QBU (https://www.youtube.com/watch?v=KFDMm666QBU)

Like most computers, robots are highly efficient… until something goes wrong. But could they learn to adapt to mechanical faults? Scientists have been deliberately sabotaging walking robots to see how fast they learn to cope.

O youtube está feito parvo por isso fica aqui o link clicavel (https://www.youtube.com/embed/KFDMm666QBU).
Título: Re: Injured robots learn to limp
Enviado por: dropes em 03 de Junho de 2015, 13:42
Não consigo ver o vídeo.
Youtube em manutenção, só faltava o google também fechar as portas para isso.
Título: Re: Injured robots learn to limp
Enviado por: senso em 03 de Junho de 2015, 13:48
Funciona aqui.
Título: Re: Injured robots learn to limp
Enviado por: dropes em 03 de Junho de 2015, 14:22
Ok, agora já consegui ver o vídeo, pelo que que estava directamente dava um aviso de manutenção em várias línguas...
Gostei de ver a adaptação, embora fosse programado já com o defeito em mente, logo não vi ser o próprio robot a adaptar-se em tempo real depois de um "ferimento", isso devia ter sido realizado, nem que se desligasse uma das pernas ao longo da caminhada para se ver a adaptação dele.

Parece-me realmente útil em vários casos, que ficaria inoperacional sobre uma avaria ou dano físico.

Algo como verificação do terreno em modo de conflitos / guerra, exploração espacial de planetas ou satélites, os equipamentos como os robots são desenvolvidos sob um rigor extremo, dispendiosos e testados vezes sem conta para despistar anomalias, se no programa incluir esta aprendizagem seria uma mais valia, porque muitos deles não têm substituição ao alcance.

Como tudo o que é tecnologia falha no momento em que mais é necessária, a auto-aprendizagem é bem-vinda.
Título: Re: Injured robots learn to limp
Enviado por: TigPT em 03 de Junho de 2015, 14:26
Pois também acheio pena que era indicado que o robot ia tentar várias programações pré existentes.

Eu creio que antes já vi uns algoritmos de auto aprendizagem, em que por exemplo era dado ao robot o objectivo de se deslocar num dado vector e o mesmo ia sozinho descobrir os actuadores que tinha e fazendo combinações de utilização dos mesmos até conseguir melhores performances.

Como era esperado, a reacção do robot não era de fazer o movimento que nos parecia mais obvio mas acabava por ter performances muito boas. Vou ver se encontro o artigo.
Título: Re: Injured robots learn to limp
Enviado por: StarRider em 03 de Junho de 2015, 14:52
Boas,

Qual "learning" qual carapuça ...  uns simples "if" no código e uma lista de
pré-programações até encontrar a melhor, não acho que isso seja "aprender"
nada, mas ok.

Abraços,
PA
Título: Re: Injured robots learn to limp
Enviado por: jm_araujo em 03 de Junho de 2015, 14:54
Eu creio que antes já vi uns algoritmos de auto aprendizagem, em que por exemplo era dado ao robot o objectivo de se deslocar num dado vector e o mesmo ia sozinho descobrir os actuadores que tinha e fazendo combinações de utilização dos mesmos até conseguir melhores performances.

Como era esperado, a reacção do robot não era de fazer o movimento que nos parecia mais obvio mas acabava por ter performances muito boas. Vou ver se encontro o artigo.

Também já vi em tempos algo semelhante, usando algoritmos genéticos, uma área da IA engraçada.
Título: Re: Injured robots learn to limp
Enviado por: dropes em 03 de Junho de 2015, 15:01
LoL
@StarRider, tu e os "cases" if pata nº4 = kaput then implement function disable pata(4).
Claro que é através de código, esse é o propósito.
Em caso de avaria eléctrica só com sensores e está despachado, também com código a acompanhar de zeros, uns e essas coisas...
Título: Re: Injured robots learn to limp
Enviado por: StarRider em 03 de Junho de 2015, 15:18
LoL
@StarRider, tu e os "cases" if pata nº4 = kaput then implement function disable pata(4).
Claro que é através de código, esse é o propósito.
Em caso de avaria eléctrica só com sensores e está despachado, também com código a acompanhar de zeros, uns e essas coisas...

Yap, é mais ou menos isto:

Código: [Seleccione]
forma_de_andar = array[1000] : [aos pulos, com 3 patas, aos saltinhos, rastejar, ...]

on pata_partida do:
   modo = 0
   while forma_de_andar[modo] not empty
      select forma_de_andar[modo]
      if estou_a_andar_para_a_frente = ok
         fixe
         bute_daqui_para_fora
      else
        modo++
   endwhile
   if modo=ultimo_modo and ainda_estou_parado
       avisar_programor_que_afinal_de_contas_esta_porra_não_funciona
       ficar_parado_e_esperar_por_salvamento
  endif
   

Conclusão, o gajo não aprendeu um corno, esteve limitado a executar o que
estava programado, neste aspecto um programa de facturação ou de gestão
"aprende" de longe mais que este robo ;)

Abraços,
PA
Título: Re: Injured robots learn to limp
Enviado por: dropes em 03 de Junho de 2015, 16:10
Ok... pelo menos nesse sentido estamos de acordo.

Temos um robot que é o do vídeo e parte-se uma pata, então o que se faz, altera-se o programa para que ande em linha recta.
De IA não tem nada, pois tudo o que leva mecânica o programa tem de estar de acordo com o que vai controlar.

Gostei do teu código  :P
Título: Re: Injured robots learn to limp
Enviado por: senso em 03 de Junho de 2015, 16:15
Vi o clip sem som, mas quem é que vos garante com toda a certeza que o machine learning não foi gravado ou foi editado e mostraram só os melhores resultados, dai estarem a mostrar pontos especificos do mapa?...

Não iam mostrar horas ou dias de machine learning dado que a demonstração/conclusão seria a mesma.....
Título: Re: Injured robots learn to limp
Enviado por: StarRider em 03 de Junho de 2015, 16:33
Vi o clip sem som, mas quem é que vos garante com toda a certeza que o machine learning não foi gravado ou foi editado e mostraram só os melhores resultados, dai estarem a mostrar pontos especificos do mapa?...

Não iam mostrar horas ou dias de machine learning dado que a demonstração/conclusão seria a mesma.....

Se ouvires com som a certa altura é mencionado a existência de milhares de
pré-programações que o robo pode escolher para se movimentar, no meu
livro isso não é "machine learning", será no máximo "machine choosing".

Abraços,
PA


Título: Re: Injured robots learn to limp
Enviado por: jm_araujo em 03 de Junho de 2015, 16:40
Também pode ser um "dumb-it-down" para o grande público, de forma a tornar a notícia apelativa. Se começam a debitar jargão não tinham notícia.
Título: Re: Injured robots learn to limp
Enviado por: dropes em 03 de Junho de 2015, 16:43
É assim, se querem demonstrar que o robot "aprende", tem de haver uma fase de transição entre funcionamento correcto, dano e correcção da sua deslocação, tudo no mesmo vídeo sem cortes, seja em time lapse ou como entenderem, mas com continuidade.

Sim, é possível que o código esteja todo lá, mas nada nos confirma com este vídeo, é onde quero chegar.

Tenho um carro, um pneu fura-se, tiro a roda para fora e coloco um calhau na ponta oposta para fazer peso e compensar.
Houve uma fase de learning, agora de quem?!
Título: Re: Injured robots learn to limp
Enviado por: StarRider em 03 de Junho de 2015, 17:52
Boas,

Segundo os autores:
"it chose this walking styles from thousands of walking styles programmed into it"

... tá tudo dito ;)

Já leram os comentários no youtube ? Só agora é que reparei que afinal esta questão
não foi somente levantada aqui por nós.

Abraços,
PA
Título: Re: Injured robots learn to limp
Enviado por: senso em 03 de Junho de 2015, 18:01
Pffffffffffffffffffffffffffffffffff.
Fazia isso com um arduino  8)
Título: Re: Injured robots learn to limp
Enviado por: dropes em 03 de Junho de 2015, 19:01
Segundo os autores:
"it chose this walking styles from thousands of walking styles programmed into it"

O que vou dizer é real e creio que se aplica a essa frase:

Um senhor vai num autocarro que entretanto pára para deixar entrar e sair passageiros
Como é a paragem do senhor, ele desce as escadas do autocarro, tropeça e espalha-se ao comprido
Ficam todos a olhar para ele com um olhar do tipo "coitadinho do senhor"
Ele levanta-se e diz em voz alta "Cada um sai como quer"

Moral da história, cada robot escolhe a forma como quer andar   ;D

Título: Re: Injured robots learn to limp
Enviado por: nvoltex em 03 de Junho de 2015, 19:03
Um dos autores responde a esta questão na secção dos comentários:

"That is not correct (I am one of the authors). From our FAQ:  The robot is not simply picking a working gait from a small library of options. The map (or library) has over 13,000 behaviors. Yet the robot finds one that works after trying around 8 of them. Clearly, it is not testing them all. It is able to do this because the robot, like a scientist, carefully chooses which experiments to conduct to find an answer as quickly as possible (here, the answer the robot seeks is how to keep functioning despite its damage).The map of behaviors is not hand-designed: it is learned by the robot. The robot uses a computer simulation of itself to create this map ahead of time. These maps can be quite large. In our experiments with the six-legged robot, the map contained over 13,000 gaits. While generating that map is computationally intensive, it only has to be done once per robot design before the robots are deployed. Importantly, this map does not represent all possible behaviors the robot can make. The space of all possible behaviors that is searched to find these 13,000 high-performing behaviors is unimaginably vast. In fact, it contains 10^47 possible behaviors, which is about how many water molecules on the planet Earth! That would be too many for our robot scientist to search through once damaged. Instead, we search through this vast space ahead of time to find 13,000 high-performing gaits (via a new algorithm we invented called "MAP-Elites"). In short, whereas previous algorithms searched for needles in fields of haystacks, we gather the needles ahead of time, so we are searching through a pile of needles to find the right one."
Título: Re: Injured robots learn to limp
Enviado por: dropes em 03 de Junho de 2015, 19:13
Pffffffffffffffffffffffffffffffffff.
Fazia isso com um arduino  8)

"13.000 behaviors" acho que não te safavas com um arduino...
O mais estúpido disto tudo é que ele não necessita de ter 13.000 comportamentos diferentes,
só tem 6 patas, logo só existem 6^2 (36) variantes quanto à falha das patas para associar a uma forma de deslocação diferente.
Título: Re: Injured robots learn to limp
Enviado por: metRo_ em 03 de Junho de 2015, 19:24
Pffffffffffffffffffffffffffffffffff.
Fazia isso com um arduino  8)

"13.000 behaviors" acho que não te safavas com um arduino...
O mais estúpido disto tudo é que ele não necessita de ter 13.000 comportamentos diferentes,
só tem 6 patas, logo só existem 6^2 (36) variantes quanto à falha das patas para associar a uma forma de deslocação diferente.

Consegues com um arduino sim, essas variantes nao fazem muito sentido pois para cada pata tens varias distancias e velocidades.
Título: Re: Injured robots learn to limp
Enviado por: senso em 03 de Junho de 2015, 19:28
São sequências de movimentos, os servos são dinamixel(pelo menos parecem) logo falam todos serial, ligados sem série(Redundant department of redundancy lol), tecnicamente uma máquina de estados bem pensada e usas 2-3 bytes para cada movimento de todos os servos, bit-packing, quiçá RLE e enfia-se tudo na EEPROM.
Título: Re: Injured robots learn to limp
Enviado por: dropes em 03 de Junho de 2015, 20:58
Referi que não daria num arduino, programado normalmente, de acordo com as especificações descritas pelo @nvoltex retiradas de um comentário do youtube.
Desconheço a plataforma usada, mas dá a entender que aquilo tem um abuso de processamento.

Acredito que a rotina para mexer um bicho daqueles não tenha nada que se diga, é tudo à base de sequências e velocidade de cada uma delas, essas são as variáveis que devem ser alteradas caso alguma das 6 patas falhe.

Daí se conseguir colocar num array múltiplo de 36, os valores respectivos.
Este múltiplo corresponde à sequência do ciclo das temporização de cada servo assim como a velocidade.
Devo ter tropeçado por aqui algures mas é +- isso...

Por isso sim, um arduino daria se o código for escrito decentemente.