BR112018067482B1 - Método e sistema de aprendizado de máquina, método de treinar uma rede neural e mídia de armazenamento - Google Patents

Método e sistema de aprendizado de máquina, método de treinar uma rede neural e mídia de armazenamento Download PDF

Info

Publication number
BR112018067482B1
BR112018067482B1 BR112018067482-6A BR112018067482A BR112018067482B1 BR 112018067482 B1 BR112018067482 B1 BR 112018067482B1 BR 112018067482 A BR112018067482 A BR 112018067482A BR 112018067482 B1 BR112018067482 B1 BR 112018067482B1
Authority
BR
Brazil
Prior art keywords
end actuator
neural network
image
convolutional neural
motion vector
Prior art date
Application number
BR112018067482-6A
Other languages
English (en)
Other versions
BR112018067482A2 (pt
Inventor
Sergey Levine
Peter Pastor Sampedro
Alex Krizhevsky
Original Assignee
Google Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google Llc filed Critical Google Llc
Priority claimed from US15/377,280 external-priority patent/US10207402B2/en
Publication of BR112018067482A2 publication Critical patent/BR112018067482A2/pt
Publication of BR112018067482B1 publication Critical patent/BR112018067482B1/pt

Links

Abstract

MÉTODOS E APARELHO DE APRENDIZAGEM DE MÁQUINA PROFUNDO PARA BRAÇO ROBÓTICO COM GARRA Métodos e aparelho de aprendizagem de máquina profundo relacionados à manipulação de um objeto por um efetor final de um robô. Algumas implementações estão relacionadas ao treinamento de uma rede neural profunda para prever uma medida em que dados de movimento candidatos para um efetor final de um robô resultarão em uma compreensão bem sucedida de um ou mais objetos pelo efetor final. Algumas implementações são direcionadas para a utilização da rede neural profunda treinada para servir um efeito final de agarrar de um robô para conseguir uma compreensão bem sucedida de um objeto pelo efeito final de agarrar. Por exemplo, a rede neural profunda treinada pode ser utilizada na atualização iterativa de comandos de controle de movimento para um ou mais atuadores de um robô que controlam a pose de um executor final de agarrar do robô e para determinar quando gerar comandos de controle de preensão para efetuar uma tentativa de agarrar pelo efeito final de agarrar.

Description

ANTECEDENTES
[001] Muitos robôs são programados para utilizar um ou mais atuadores de extremidades para pegar um ou mais objetos. Por exemplo, um robô pode utilizar um atuador de extremidade de pega tal como um pegador “impactivo” ou pegador “ingressivo” (por exemplo, que penetra fisicamente em um objeto usando pinos, agulhas, etc.) para retirar um objeto de uma primeira localização, deslocar o objeto para uma segunda localização e depositar o objeto na segunda localização. Alguns exemplos adicionais de atuadores de extremidades de robôs que podem pegar objetos incluem atuadores de extremidades “adstritivos” (por exemplo, usando sucção ou vácuo para pegar um objeto) e um ou mais atuadores de extremidades “contigutivos” (por exemplo, usando tensão de superfície, congelamento ou adesivo para pegar um objeto), para citar alguns.
SUMÁRIO
[002] Este relatório descritivo de uma maneira geral diz respeito a métodos e aparelho de aprendizado de máquina profundo relacionados com manipulação de um objeto por meio de um atuador de extremidade de um robô. Algumas implementações são direcionadas para treinamento de uma rede neural profunda, tal como uma rede neural convolucional (também referida neste documento como uma “CNN”), para predizer a probabilidade de que dados de movimento candidato para um atuador de extremidade de um robô resultarão em uma pega bem sucedida de um ou mais objetos pelo atuador de extremidade. Por exemplo, algumas implementações capacitam aplicar, como entrada para uma rede neural profunda treinada, pelo menos: (1) um vetor de movimento candidato que define um movimento candidato (se algum) de um atuador de extremidade de pega de um robô e (2) uma imagem que captura pelo menos uma parte do espaço de trabalho do robô; e gerar, com base na aplicação, pelo menos uma medida que indica diretamente ou indiretamente a probabilidade de que o vetor de movimento candidato resultará em uma pega bem sucedida. A probabilidade predita pode então ser usada ao acionar desempenho de tentativas de pega por um robô tendo um atuador de extremidade de pega, melhorando desse modo a capacidade do robô para pegar de modo bem sucedido objetos em seu ambiente.
[003] Algumas implementações são direcionadas para utilização da rede neural profunda treinada para acionar um atuador de extremidade de pega de um robô para alcançar uma pega bem sucedida de um objeto por meio do atuador de extremidade de pega. Por exemplo, a rede neural profunda treinada pode ser utilizada na atualização iterativa de comandos de controle de movimento para um ou mais acionadores de um robô que controlam a posição de um atuador de extremidade de pega do robô, e para determinar quando é para gerar comandos de controle de pega para efetuar uma pega tentada pelo atuador de extremidade de pega. Em várias implementações, utilização da rede neural profunda treinada para acionar o atuador de extremidade de pega pode capacitar realimentação rápida para perturbações robóticas e/ou movimento de objeto(s) ambiental(s) e/ou robustez para acionamento(s) robótico(s) impreciso(s).
[004] Em algumas implementações, um método é fornecido que inclui gerar um vetor de movimento de atuador de extremidade candidato que define movimento para deslocar um atuador de extremidade de pega de um robô de uma posição corrente para uma posição adicional. O método inclui adicionalmente identificar uma imagem corrente que é capturada por um sensor de visão associado com o robô e que captura o atuador de extremidade de pega e pelo menos um objeto em um ambiente do robô. O método inclui adicionalmente aplicar a imagem corrente e o vetor de movimento de atuador de extremidade candidato como entradas para uma rede neural convolucional treinada e gerar, na rede neural convolucional treinada, uma medida de pega bem sucedida do objeto com aplicação do movimento. A medida é gerada com base na aplicação da imagem e do vetor de movimento de atuador de extremidade à rede neural convolucional treinada. O método inclui adicionalmente de forma opcional gerar um comando de atuador de extremidade com base na medida e fornecer o comando de atuador de extremidade para um ou mais acionadores do robô. O comando de atuador de extremidade pode ser um comando de pega ou um comando de movimento de atuador de extremidade.
[005] Este método e outras implementações de tecnologia reveladas neste documento podem, cada um, incluir opcionalmente um ou mais dos recursos seguintes.
[006] Em algumas implementações, o método inclui adicionalmente determinar uma medida corrente de pega bem sucedida do objeto sem aplicação do movimento, e gerar o comando de atuador de extremidade com base na medida e na medida corrente. Em algumas versões dessas implementações, o comando de atuador de extremidade é o comando de pega e gerar o comando de pega é em resposta a determinar que comparação da medida com a medida corrente satisfaz um limiar. Em algumas outras versões dessas implementações, o comando de atuador de extremidade é o comando de movimento de atuador de extremidade e gerar o comando de movimento de atuador de extremidade inclui gerar o comando de movimento de atuador de extremidade para ficar de acordo com o vetor de movimento de atuador de extremidade candidato. Também em outras versões dessas implementações, o comando de atuador de extremidade é o comando de movimento de atuador de extremidade e gerar o comando de movimento de atuador de extremidade inclui gerar o comando de movimento de atuador de extremidade para efetuar uma correção de trajetória para o atuador de extremidade. Em algumas implementações, determinar a medida corrente de pega bem sucedida do objeto sem aplicação do movimento inclui: aplicar a imagem e um vetor de movimento de atuador de extremidade nulo como entradas para a rede neural convolucional treinada; e gerar, na rede neural convolucional treinada, a medida corrente de pega bem sucedida do objeto sem aplicação do movimento.
[007] Em algumas implementações, o comando de atuador de extremidade é o comando de movimento de atuador de extremidade e está de acordo com o vetor de movimento de atuador de extremidade candidato. Em algumas dessas implementações, fornecer o comando de movimento de atuador de extremidade para o um ou mais acionadores desloca o atuador de extremidade para uma nova posição, e o método inclui adicionalmente: gerar um vetor de movimento de atuador de extremidade candidato adicional definindo novo movimento para deslocar o atuador de extremidade de pega da nova posição para uma posição adicional mais adiante; identificar uma nova imagem capturada por um sensor de visão associado com o robô, a nova imagem capturando o atuador de extremidade na nova posição e capturando os objetos no ambiente; aplicar a nova imagem e o vetor de movimento de atuador de extremidade candidato adicional como entradas para a rede neural convolucional treinada; gerar, na rede neural convolucional treinada, uma nova medida de pega bem sucedida do objeto com aplicação do novo movimento, a nova medida sendo gerada com base na aplicação da nova imagem e do vetor de movimento de atuador de extremidade adicional para a rede neural convolucional treinada; gerar um novo comando de atuador de extremidade com base na nova medida, o novo comando de atuador de extremidade sendo o comando de pega ou um novo comando de movimento de atuador de extremidade; e fornecer o novo comando de atuador de extremidade para um ou mais acionadores do robô.
[008] Em algumas implementações, aplicar a imagem e o vetor de movimento de atuador de extremidade candidato como entradas para a rede neural convolucional treinada inclui: aplicar a imagem como entrada para uma camada inicial da rede neural convolucional treinada; e aplicar o vetor de movimento de atuador de extremidade candidato para uma camada adicional da rede neural convolucional treinada. A camada adicional pode estar a jusante da camada inicial. Em algumas dessas implementações, aplicar o vetor de movimento de atuador de extremidade candidato para a camada adicional inclui: passar o vetor de movimento de atuador de extremidade através de uma camada totalmente conectada da rede neural convolucional para gerar saída de vetor de movimento de atuador de extremidade; e concatenar a saída de vetor de movimento de atuador de extremidade com saída a montante. A saída a montante é de uma camada imediatamente a montante da rede neural convolucional que fica imediatamente a montante da camada adicional e que fica a jusante da camada inicial e de uma ou mais camadas intermediárias da rede neural convolucional. A camada inicial pode ser uma camada convolucional e a camada imediatamente a montante pode ser uma camada de agrupamento.
[009] Em algumas implementações, o método inclui adicionalmente identificar uma imagem adicional capturada pelo sensor de visão e aplicar a imagem adicional como entrada adicional para a rede neural convolucional treinada. A imagem adicional pode capturar o um ou mais objetos ambientais e omitir o atuador de extremidade robótico ou incluir o atuador de extremidade robótico em uma posição diferente daquela do atuador de extremidade robótico na imagem. Em algumas dessas implementações, aplicar a imagem e a imagem adicional para a rede neural convolucional inclui concatenar a imagem e a imagem adicional para gerar uma imagem concatenada, e aplicar a imagem concatenada como entrada para uma camada inicial da rede neural convolucional.
[010] Em algumas implementações, gerar o vetor de movimento de atuador de extremidade candidato inclui gerar uma pluralidade de vetores de movimento de atuador de extremidade candidatos e executar uma ou mais iterações de otimização de entropia cruzada na pluralidade de vetores de movimento de atuador de extremidade candidatos para selecionar o vetor de movimento de atuador de extremidade candidato da pluralidade de vetores de movimento de atuador de extremidade candidatos.
[011] Em algumas implementações, um método é fornecido que inclui identificar uma pluralidade de exemplos de treinamento gerados com base em saída de sensor de um ou mais robôs durante uma pluralidade de tentativas de pega pelos robôs. Cada um dos exemplos de treinamento incluindo entrada de exemplo de treinamento e saída de exemplo de treinamento. A entrada de exemplo de treinamento de cada um dos exemplos de treinamento inclui: uma imagem para uma instância de tempo correspondente de uma tentativa de pega correspondente das tentativas de pega, a imagem capturando um atuador de extremidade robótico e um ou mais objetos ambientais na instância de tempo correspondente; e um vetor de movimento de atuador de extremidade definindo movimento do atuador de extremidade para deslocar de uma posição de instância de tempo do atuador de extremidade na instância de tempo correspondente para uma posição final do atuador de extremidade para a tentativa de pega correspondente. A saída de exemplo de treinamento de cada um dos exemplos de treinamento inclui uma etiqueta de sucesso de pega indicativa de sucesso da tentativa de pega correspondente. O método inclui adicionalmente treinar a rede neural convolucional com base nos exemplos de treinamento.
[012] Este método e outras implementações de tecnologia reveladas neste documento podem, cada uma, incluir opcionalmente um ou mais dos recursos seguintes.
[013] Em algumas implementações, a entrada de exemplo de treinamento de cada um dos exemplos de treinamento inclui adicionalmente uma imagem adicional para a tentativa de pega correspondente. A imagem adicional pode capturar o um ou mais objetos ambientais e omitir o atuador de extremidade robótico ou incluir o atuador de extremidade robótico em uma posição diferente daquela do atuador de extremidade robótico na imagem. Em algumas implementações, treinar a rede neural convolucional inclui aplicar, para a rede neural convolucional, a entrada de exemplo de treinamento de um dado exemplo de treinamento dos exemplos de treinamento. Em algumas dessas implementações, aplicar a entrada de exemplo de treinamento do dado exemplo de treinamento inclui: concatenar a imagem e a imagem adicional do dado exemplo de treinamento para gerar uma imagem concatenada; e aplicar a imagem concatenada como entrada para uma camada inicial da rede neural convolucional.
[014] Em algumas implementações, treinar a rede neural convolucional inclui aplicar, para a rede neural convolucional, a entrada de exemplo de treinamento de um dado exemplo de treinamento dos exemplos de treinamento. Em algumas dessas implementações, aplicar a entrada de exemplo de treinamento do dado exemplo de treinamento inclui: aplicar a imagem do dado exemplo de treinamento como entrada para uma camada inicial da rede neural convolucional; e aplicar o vetor de movimento de atuador de extremidade do dado exemplo de treinamento para uma camada adicional da rede neural convolucional. A camada adicional pode estar a jusante da camada inicial. Em algumas dessas implementações, aplicar o vetor de movimento de atuador de extremidade para a camada adicional inclui: passar o vetor de movimento de atuador de extremidade através de uma camada totalmente conectada para gerar saída de vetor de movimento de atuador de extremidade e concatenar a saída de vetor de movimento de atuador de extremidade com saída a montante. A saída a montante pode ser de uma camada imediatamente a montante da rede neural convolucional que fica imediatamente a montante da camada adicional e que fica a jusante da camada inicial e de uma ou mais camadas intermediárias da rede neural convolucional. A camada inicial pode ser uma camada convolucional e a camada imediatamente a montante pode ser uma camada de agrupamento.
[015] Em algumas implementações, o vetor de movimento de atuador de extremidade define movimento do atuador de extremidade em espaço de tarefas.
[016] Em algumas implementações, os exemplos de treinamento incluem: um primeiro grupo dos exemplos de treinamento gerados com base em saída de uma pluralidade de primeiros sensores de robô de um primeiro robô durante uma pluralidade das tentativas de pega pelo primeiro robô; e um segundo grupo dos exemplos de treinamento gerados com base em saída de uma pluralidade de segundos sensores de robô de um segundo robô durante uma pluralidade das tentativas de pega pelo segundo robô. Em algumas dessas implementações: os primeiros sensores de robô incluem um primeiro sensor de visão gerando as imagens para os exemplos de treinamento do primeiro grupo; os segundos sensores de robô incluem um segundo sensor de visão gerando as imagens para os exemplos de treinamento do segundo grupo; e uma primeira posição do primeiro sensor de visão em relação a uma primeira base do primeiro robô é distinta de uma segunda posição do segundo sensor de visão em relação a uma segunda base do segundo robô.
[017] Em algumas implementações, cada uma das tentativas de pega nas quais uma pluralidade de exemplos de treinamento é baseada inclui uma pluralidade de comandos de acionador aleatórios que deslocam aleatoriamente o atuador de extremidade de uma posição inicial do atuador de extremidade para a posição final do atuador de extremidade, e então pegam com o atuador de extremidade na posição final. Em algumas dessas implementações, o método inclui adicionalmente: gerar tentativas de pega adicionais com base na rede neural convolucional treinada; identificar uma pluralidade de exemplos de treinamento adicionais com base nas tentativas de pega adicionais; e atualizar a rede neural convolucional por meio de treinamento adicional da rede convolucional com base nos exemplos de treinamento adicionais.
[018] Em algumas implementações, a etiqueta de sucesso de pega para cada um dos exemplos de treinamento é um primeiro valor indicativo de sucesso ou um segundo valor indicativo de falha.
[019] Em algumas implementações, o treinamento compreende executar retropropagação na rede neural convolucional com base na saída de exemplo de treinamento da pluralidade de exemplos de treinamento.
[020] Outras implementações podem incluir uma mídia de armazenamento não transitório legível por computador armazenando instruções executáveis por um processador (por exemplo, uma unidade central de processamento (CPU) ou unidade de processamento gráfico (GPU)) para executar um método tal como um ou mais dos métodos descritos anteriormente. Também uma outra implementação pode incluir um sistema de um ou mais computadores e/ou um ou mais robôs que incluem um ou mais processadores operáveis para executar instruções armazenadas para executar um método tal como um ou mais dos métodos descritos anteriormente.
[021] Deve ser percebido que todas as combinações dos conceitos indicados anteriormente e de conceitos adicionais descritos com mais detalhes neste documento são consideradas como sendo parte da matéria em questão revelada neste documento. Por exemplo, todas as combinações de matérias em questão reivindicada aparecendo no final desta revelação são consideradas como sendo parte da matéria em questão revelada neste documento.
BREVE DESCRIÇÃO DOS DESENHOS
[022] A figura 1 ilustra um ambiente de exemplo no qual tentativas de pega podem ser executadas por robôs, dados associados com as tentativas de pega podem ser utilizados para gerar exemplos de treinamento e/ou os exemplos de treinamento podem ser utilizados para treinar uma rede neural convolucional.
[023] A figura 2 ilustra um dos robôs da figura 1 e um exemplo de movimento de um atuador de extremidade de pega do robô ao longo de um caminho.
[024] A figura 3 é um fluxograma ilustrando um método de exemplo de executar tentativas de pega e armazenar dados associados com as tentativas de pega.
[025] A figura 4 é um fluxograma ilustrando um método de exemplo de gerar exemplos de treinamento com base em dados associados com tentativas de pega de robôs.
[026] A figura 5 é um fluxograma ilustrando um método de exemplo de treinar uma rede neural convolucional com base em exemplos de treinamento.
[027] As figuras 6A e 6B ilustram uma arquitetura de uma rede neural convolucional de exemplo.
[028] A figura 7A é um fluxograma ilustrando um método de exemplo de utilizar uma rede neural convolucional treinada para acionar um atuador de extremidade de pega.
[029] A figura 7B é um fluxograma ilustrando algumas implementações de certos blocos do fluxograma da figura 7A.
[030] A figura 8 representa esquematicamente uma arquitetura de exemplo de um robô.
[031] A figura 9 representa esquematicamente uma arquitetura de exemplo de um sistema de computador.
DESCRIÇÃO DETALHADA
[032] Algumas implementações da tecnologia descrita neste documento são direcionadas para treinar uma rede neural profunda, tal como uma CNN, para capacitar utilização da rede neural profunda treinada para predizer uma medida indicando a probabilidade de que dados de movimento candidato para um atuador de extremidade de pega de um robô resultarão em uma pega bem sucedida de um ou mais objetos pelo atuador de extremidade. Em algumas implementações, a rede neural profunda treinada aceita uma imagem (It) gerada por um sensor de visão e aceita um vetor de movimento de atuador de extremidade (vt), tal como um vetor de movimento de espaço de tarefas. A aplicação da imagem (It) e do vetor de movimento de atuador de extremidade (vt) para a rede neural profunda treinada pode ser usada para gerar, na rede neural profunda, uma medida predita de que executar comando(s) para implementar o movimento definido por vetor de movimento (vt), e pegar subsequentemente, produzirá uma pega bem sucedida. Algumas implementações são direcionadas para utilização da rede neural profunda treinada para acionar um atuador de extremidade de pega de um robô para alcançar uma pega bem sucedida de um objeto pelo atuador de extremidade de pega. Descrição adicional destas e de outras implementações da tecnologia é fornecida a seguir.
[033] Com referência para as figuras 1-6B, várias implementações de treinamento de uma CNN são descritas. A figura 1 ilustra um ambiente de exemplo no qual tentativas de pega podem ser executadas por robôs (por exemplo, pelos robôs 180A, 180B e/ou por outros robôs), dados associados com as tentativas de pega podem ser utilizados para gerar exemplos de treinamento e/ou os exemplos de treinamento podem ser utilizados para treinar uma CNN.
[034] Os robôs de exemplo 180A e 180B estão ilustrados na figura 1. Os robôs 180A e 180B são “braços de robô” tendo múltiplos graus de liberdade para capacitar deslocamento dos atuadores de extremidades de pega 182A e 182B ao longo de qualquer um de uma pluralidade de potenciais caminhos para posicionar os atuadores de extremidades de pega 182A e 182B em localizações desejadas. Por exemplo, com referência para a figura 2, um exemplo de robô 180A deslocando seu atuador de extremidade ao longo de um caminho 201 está ilustrado. A figura 2 inclui uma imagem imaginária e uma não imaginária do robô 180A mostrando duas posições diferentes de um conjunto de posições alcançadas pelo robô 180A e por seu atuador de extremidade ao deslocar ao longo do caminho 201. Referindo-se de novo à figura 1, cada um dos robôs 180A e 180B controla adicionalmente as duas “garras” opostas de seu atuador de extremidade de pega correspondente 182A, 182B para acionar as garras entre pelo menos uma posição aberta e uma posição fechada (e/ou opcionalmente uma pluralidade de posições “parcialmente fechadas”).
[035] Os sensores de visão de exemplo 184A e 184B também estão ilustrados na figura 1. Na figura 1, o sensor de visão 184A está montado em uma posição fixa em relação à base ou outro ponto de referência estacionário do robô 180A. O sensor de visão 184B também está montado em uma posição fixa em relação à base ou outro ponto de referência estacionário do robô 180B. Tal como ilustrado na figura 1, a posição do sensor de visão 184A em relação ao robô 180A é diferente da posição do sensor de visão 184B em relação ao robô 180B. Tal como descrito neste documento, em algumas implementações isto pode ser benéfico para capacitar geração de exemplos de treinamento variados que podem ser utilizados para treinar uma rede neural que seja robusta e/ou independente de calibração de câmera. Os sensores de visão 184A e 184B são sensores que podem gerar imagens relacionadas com forma, cor, profundidade e/ou outras características de objetos que estejam na linha de visão dos sensores. Os sensores de visão 184A e 184B podem ser, por exemplo, câmeras monográficas, câmeras estereográficas e/ou scanner a laser 3D. Um scanner a laser 3D inclui um ou mais lasers que emitem luz e um ou mais sensores que coletam dados relacionados com reflexões da luz emitida. Um scanner a laser 3D pode ser, por exemplo, um scanner a laser 3D de tempo de voo ou um scanner a laser 3D baseado em triangulação e pode incluir um detector sensível à posição (PSD) ou outro sensor de posição ótico.
[036] O sensor de visão 184A tem um campo de visão de pelo menos uma parte do espaço de trabalho do robô 180A, tal como a parte do espaço de trabalho que inclui os objetos de exemplo 191A. Embora superfície(s) de apoio para os objetos 191A não esteja(m) ilustrada(s) na figura 1, esses objetos podem ficar apoiados em uma mesa, uma bandeja e/ou em outra(s) superfície(s). Os objetos 191A incluem uma espátula, um grampeador e um lápis. Em outras implementações mais objetos, menos objetos, objetos adicionais e/ou objetos alternativos podem ser fornecidos durante todas ou partes das tentativas de pega do robô 180A tal como descrito neste documento. O sensor de visão 184B tem um campo de visão de pelo menos uma parte do espaço de trabalho do robô 180B, tal como a parte do espaço de trabalho que inclui os objetos de exemplo 191B. Embora superfície(s) de apoio para os objetos 191B não esteja(m) ilustrada(s) na figura 1, eles podem ficar apoiados em uma mesa, uma bandeja e/ou em outra(s) superfície(s). Os objetos 191B incluem um lápis, um grampeador e óculos. Em outras implementações mais objetos, menos objetos, objetos adicionais e/ou objetos alternativos podem ser fornecidos durante todas ou partes das tentativas de pega do robô 180B tal como descrito neste documento.
[037] Embora os robôs particulares 180A e 180B estejam ilustrados na figura 1, robôs adicionais e/ou alternativos podem ser utilizados, incluindo braços de robô adicionais que sejam similares aos robôs 180A e 180B, robôs tendo outras formas de braços de robô, robôs tendo uma forma humana, robôs tendo uma forma de animal, robôs que deslocam por meio de uma ou mais rodas (por exemplo, robôs de autoequilíbrio), robôs de veículos submersíveis, um veículo aéreo não tripulado (“UAV”) e assim por diante. Também, embora atuadores de extremidades de pega particulares estejam ilustrados na figura 1, atuadores de extremidades adicionais e/ou alternativos podem ser utilizados, tais como atuadores de extremidades de pega impactivos alternativos (por exemplo, aqueles com “placas” de pega, aqueles com mais ou menos “dedos”/”garras”), atuadores de extremidades de pega “ingressivos”, atuadores de extremidades de pega “adstritivos”, ou atuadores de extremidades de pega “contigutivos”, ou atuadores de extremidades sem pega. Adicionalmente, embora montagens particulares dos sensores de visão 184A e 184B estejam ilustradas na figura 1, montagens adicionais e/ou alternativas podem ser utilizadas. Por exemplo, em algumas implementações, sensores de visão podem ser montados diretamente nos robôs, tal como em componentes não acionáveis dos robôs ou em componentes acionáveis dos robôs (por exemplo, no atuador de extremidade ou em um componente próximo ao atuador de extremidade). Também, por exemplo, em algumas implementações, um sensor de visão pode ser montado em uma estrutura não estacionária que seja separada de seu robô associado e/ou pode ser montado em um modo não estacionário em uma estrutura que seja separada de seu robô associado.
[038] Os robôs 180A, 180B e/ou outros robôs podem ser utilizados para executar uma grande quantidade de tentativas de pega e dados associados com as tentativas de pega podem ser utilizados pelo sistema de geração de exemplos de treinamento 110 para gerar exemplos de treinamento. Em algumas implementações, todos ou aspectos do sistema de geração de exemplos de treinamento 110 podem ser implementados no robô 180A e/ou no robô 180B (por exemplo, por meio de um ou mais processadores dos robôs 180A e 180B). Por exemplo, cada um dos robôs 180A e 180B pode incluir uma instância do sistema de geração de exemplos de treinamento 110. Em algumas implementações, todos ou aspectos do sistema de geração de exemplos de treinamento 110 podem ser implementados em um ou mais sistemas de computadores que sejam separados dos robôs 180A e 180B, mas que estejam em comunicação de rede com eles.
[039] Cada tentativa de pega pelo robô 180A, 180B e/ou por outros robôs consiste de T intervalos ou instâncias de tempo separados. Em cada intervalo de tempo, uma imagem corrente capturada pelo sensor de visão do robô executando a tentativa de pega é armazenada, a posição corrente do atuador de extremidade também é armazenada, e o robô escolhe um caminho (translacional e/ou rotacional) ao longo do qual deve deslocar o pegador. No intervalo de tempo final T, o robô aciona (por exemplo, fecha) o pegador e armazena dados adicionais e/ou executa uma ou mais ações adicionais para capacitar avaliação do sucesso da pega. O mecanismo de sucesso de pega 116 do sistema de geração de exemplos de treinamento 110 avalia o sucesso da pega, gerando uma etiqueta de sucesso de pega .
[040] Cada tentativa de pega resulta em T exemplos de treinamento, representados por. Isto é, cada exemplo de treinamento inclui pelo menos a imagem observada nesse intervalo de tempo , o vetor de movimento de atuador de extremidade da posição nesse intervalo de tempo para a posição que é alcançada eventualmente (a posição final da tentativa de pega), e a etiqueta de sucesso de pega da tentativa de pega. Cada vetor de movimento de atuador de extremidade pode ser determinado pelo mecanismo de vetor de movimento de atuador de extremidade 114 do sistema de geração de exemplos de treinamento 110. Por exemplo, o mecanismo de vetor de movimento de atuador de extremidade 114 pode determinar uma transformação entre a posição corrente e a posição final da tentativa de pega e usar a transformação como o vetor de movimento de atuador de extremidade. Os exemplos de treinamento para a pluralidade de tentativas de pega de uma pluralidade de robôs são armazenados pelo sistema de geração de exemplos de treinamento 110 na base de dados de exemplos de treinamento 117.
[041] Os dados gerados por sensor(s) associado(s) com um robô e/ou os dados derivados dos dados gerados podem ser armazenados em uma ou mais mídias não transitórias legíveis por computador locais para o robô e/ou distante do robô. Em algumas implementações, a imagem corrente pode incluir múltiplos canais, tais como um canal vermelho, um canal azul, um canal verde e/ou um canal de profundidade. Cada canal de uma imagem define um valor para cada um de uma pluralidade de pixels da imagem tal como um valor de 0 a 255 para cada um dos pixels da imagem. Em algumas implementações, cada um dos exemplos de treinamento pode incluir a imagem corrente e uma imagem adicional para a tentativa de pega correspondente, onde a imagem adicional não inclui o atuador de extremidade de pega ou inclui o atuador de extremidade em uma posição diferente (por exemplo, uma que não sobrepõe com a posição da imagem corrente). Por exemplo, a imagem adicional pode ser capturada após qualquer tentativa de pega precedente, mas antes de o movimento de atuador de extremidade para a tentativa de pega começar e quando o atuador de extremidade de pega está deslocado para fora do campo de visão do sensor de visão. A posição corrente e o vetor de movimento de atuador de extremidade da posição corrente para a posição final da tentativa de pega podem ser representados em espaço de tarefas, em espaço de juntas ou em um outro espaço. Por exemplo, o vetor de movimento de atuador de extremidade pode ser representado por meio de cinco valores em espaço de tarefas: três valores definindo o vetor de translação tridimensional (3D), e dois valores representando uma codificação seno-cosseno da mudança em orientação do atuador de extremidade em volta de um eixo geométrico do atuador de extremidade. Em algumas implementações, a etiqueta de sucesso de pega é uma etiqueta binária, tal como uma etiqueta “0/bem sucedido” ou “1/não bem sucedido”. Em algumas implementações, a etiqueta de sucesso de pega pode ser selecionada de mais de duas opções, tais como 0, 1, e um ou mais valores entre 0 e 1. Por exemplo, “0” pode indicar uma “pega não bem sucedida” confirmada, “1” pode indicar uma pega bem sucedida confirmada, “0,25” pode indicar uma “pega muito provavelmente não bem sucedida” e “0,75” pode indicar uma “pega muito provavelmente bem sucedida”.
[042] O mecanismo de treinamento 120 treina uma CNN 125, ou outra rede neural, com base nos exemplos de treinamento da base de dados de exemplos de treinamento 117. Treinar a CNN 125 pode incluir atualizar iterativamente a CNN 125 com base na aplicação dos exemplos de treinamento para a CNN 125. Por exemplo, a imagem corrente, a imagem adicional e o vetor da posição corrente para a posição final da tentativa de pega dos exemplos de treinamento podem ser utilizados como entrada de exemplo de treinamento; e a etiqueta de sucesso de pega pode ser utilizada como saída de exemplo de treinamento. A CNN 125 é treinada para predizer uma medida indicando a probabilidade de que, como resultado de imagem corrente (e opcionalmente de uma imagem adicional, tal como uma que omite pelo menos parcialmente o atuador de extremidade), deslocar um pegador de acordo com um dado vetor de movimento de atuador de extremidade, e pegar subsequentemente, produzirá uma pega bem sucedida.
[043] A figura 3 é um fluxograma ilustrando um método de exemplo 300 de executar tentativas de pega e armazenar dados associados com as tentativas de pega. Por conveniência, as operações do fluxograma são descritas com referência para um sistema que executa as operações. Este sistema pode incluir um ou mais componentes de um robô, tais como um processador e/ou sistema de controle de robô do robô 180A, 180B, 840 e/ou de outro robô. Além disso, embora operações do método 300 estejam mostradas em uma ordem particular, isto não é destinado para ser limitante. Uma ou mais operações podem ser reordenadas, omitidas ou adicionadas.
[044] No bloco 352, o sistema inicia uma tentativa de pega. No bloco 354, o sistema armazena uma imagem de um ambiente sem um atuador de extremidade presente na imagem. Por exemplo, o sistema pode deslocar o atuador de extremidade de pega para fora do campo de visão do sensor de visão (isto é, não obstruindo a vista do ambiente) e capturar uma imagem em uma instância quando o atuador de extremidade de pega está fora do campo de visão. A imagem pode então ser armazenada e associada com a tentativa de pega.
[045] No bloco 356, o sistema determina e implementa um movimento de atuador de extremidade. Por exemplo, o sistema pode gerar um ou mais comandos de movimento para fazer com que um ou mais dos acionadores que controlam a posição do atuador de extremidade sejam acionados, mudando desse modo a posição do atuador de extremidade.
[046] Em algumas implementações e/ou iterações do bloco 356, o(s) comando(s) de movimento pode(m) ser aleatório(s) dentro de um dado espaço, tal como o espaço de trabalho alcançável pelo atuador de extremidade, um espaço restringido dentro do qual o atuador de extremidade é confinado para as tentativas de pega, e/ou um espaço definido por limites de posição e/ou de torque de acionador(s) que controla(m) a posição do atuador de extremidade. Por exemplo, antes de o treinamento inicial de uma rede neural ser completado, o(s) comando(s) de movimento gerado(s) pelo sistema no bloco 356 para implementar movimento de atuador de extremidade pode(m) ser aleatório(s) dentro de um dado espaço. Aleatório tal como usado neste documento pode incluir verdadeiramente aleatório ou pseudoaleatório.
[047] Em algumas implementações, o(s) comando(s) de movimento gerado(s) pelo sistema no bloco 356 para implementar movimento de atuador de extremidade pode(m) ser baseado(s) pelo menos em parte em uma versão corrente de uma rede neural treinada e/ou baseado(s) em outros critérios. Em algumas implementações, na primeira iteração do bloco 356 para cada tentativa de pega, o atuador de extremidade pode estar “fora de posição” por causa de ter sido deslocado para fora do campo de visão no bloco 354. Em algumas dessas implementações, antes da primeira iteração do bloco 356 o atuador de extremidade pode ser deslocado aleatoriamente ou de outro modo “de volta para a posição”. Por exemplo, o atuador de extremidade pode ser deslocado de volta para uma “posição de início” estabelecida e/ou deslocado para uma posição selecionada aleatoriamente dentro de um dado espaço.
[048] No bloco 358, o sistema armazena: (1) uma imagem que captura o atuador de extremidade e o ambiente na instância corrente da tentativa de pega e (2) a posição do atuador de extremidade na instância corrente. Por exemplo, o sistema pode armazenar uma imagem corrente gerada por um sensor de visão associado com o robô e associar a imagem com a instância corrente (por exemplo, com uma etiqueta de tempo). Também, por exemplo, o sistema pode determinar a posição corrente do atuador de extremidade com base em dados de um ou mais sensores de posições de juntas do robô cujas posições afetam a posição do robô, e o sistema pode armazenar essa posição. O sistema pode determinar e armazenar a posição do atuador de extremidade no espaço de tarefas, espaço de juntas ou em um outro espaço.
[049] No bloco 360, o sistema determina se a instância corrente é a instância final para a tentativa de pega. Em algumas implementações, o sistema pode incrementar um contador de instância no bloco 352, 354, 356 ou 358 e/ou incrementar um contador temporal à medida que o tempo passa - e determinar se a instância corrente é a instância final com base em comparar um valor do contador a um limiar. Por exemplo, o contador pode ser um contador temporal e o limiar pode ser 3 segundos, 4 segundos, 5 segundos e/ou outro valor. Em algumas implementações, o limiar pode variar entre uma ou mais iterações do método 300.
[050] Se o sistema determinar no bloco 360 que a instância corrente não é a instância final para a tentativa de pega, o sistema retorna para o bloco 356, onde ele determina e implementa um outro movimento de atuador de extremidade, e então prossegue para o bloco 358 onde ele armazena uma imagem e a posição na instância corrente. Por meio de múltiplas iterações dos blocos 356, 358 e 360 para uma dada tentativa de pega, a posição do atuador de extremidade será alterada por meio das múltiplas iterações do bloco 356, e uma imagem e a posição armazenadas em cada uma dessas instâncias. Em muitas implementações, os blocos 356, 358, 360 e/ou outros blocos podem ser executados em uma frequência relativamente alta, armazenando desse modo uma quantidade relativamente grande de dados para cada tentativa de pega.
[051] Se o sistema determinar no bloco 360 que a instância corrente é a instância final para a tentativa de pega, o sistema prossegue para o bloco 362, onde ele aciona o pegador do atuador de extremidade. Por exemplo, para um atuador de extremidade de pegador impactivo, o sistema pode fazer com que uma ou mais placas, dedos e/ou outros componentes sejam fechados. Por exemplo, o sistema pode induzir os componentes para fechar até que eles estejam em uma posição totalmente fechada ou que uma leitura de torque medida por sensor(s) de torque associado(s) com os componentes satisfaça um limiar.
[052] No bloco 364, o sistema armazena dados adicionais e opcionalmente executa uma ou mais ações adicionais para capacitar determinação do sucesso da pega do bloco 360. Em algumas implementações, os dados adicionais são uma leitura de posição, uma leitura de torque e/ou outra leitura do atuador de extremidade de pega. Por exemplo, uma leitura de posição que é maior que algum limiar (por exemplo, 1 cm) pode indicar uma pega bem sucedida.
[053] Em algumas implementações, no bloco 364 o sistema adicionalmente e/ou alternativamente: (1) mantém o atuador de extremidade na posição acionada (por exemplo, fechado) e desloca (por exemplo, verticalmente e/ou lateralmente) o atuador de extremidade e qualquer objeto que possa estar pego pelo atuador de extremidade; (2) armazena uma imagem que captura a posição de pega original após o atuador de extremidade ser deslocado; (3) induz o atuador de extremidade para “soltar” qualquer objeto que esteja sendo pego pelo atuador de extremidade (opcionalmente após deslocar o pegador de volta para perto da posição de pega original); e (4) armazena uma imagem que captura a posição de pega original após o objeto (se algum) ter sido solto. O sistema pode armazenar a imagem que captura a posição de pega original após o atuador de extremidade e o objeto (se algum) serem deslocados e pode armazenar a imagem que captura a posição de pega original após o objeto (se algum) ter sido solto - e associar as imagens com a tentativa de pega. Comparar a imagem após o atuador de extremidade e o objeto (se algum) serem deslocados com a imagem após o objeto (se algum) ter sido solto pode indicar se uma pega foi bem sucedida. Por exemplo, um objeto que aparece em uma imagem e não aparece na outra pode indicar uma pega bem sucedida.
[054] No bloco 366, o sistema restaura o contador (por exemplo, o contador de instância e/ou o contador temporal), e prossegue de volta para o bloco 352 para iniciar uma outra tentativa de pega.
[055] Em algumas implementações, o método 300 da figura 3 pode ser implementado em cada um de uma pluralidade de robôs, opcionalmente operando em paralelo durante uma ou mais (por exemplo, todas) de suas respectivas iterações do método 300. Isto pode capacitar alcançar mais tentativas de pega em um dado período de tempo do que se somente um robô estivesse operando o método 300. Além disso, em implementações onde um ou mais da pluralidade de robôs incluem um sensor de visão associado com uma posição em relação ao robô que é exclusivo da posição de um ou mais sensores de visão associados com outro dos robôs, exemplos de treinamento gerados com base em tentativas de pega da pluralidade de robôs podem fornecer robustez para posição de sensor de visão em uma rede neural treinada com base nesses exemplos de treinamento. Além disso, em implementações onde atuadores de extremidades de pega e/ou outros componentes de hardware da pluralidade de robôs variam e/ou desgastam de modo diferente, e/ou em que robôs diferentes (por exemplo, mesma fabricação e/ou modelo e/ou fabricação(s) e/ou modelo(s) diferentes) interagem com objetos diferentes (por exemplo, objetos de tamanhos diferentes, pesos diferentes, formas diferentes, translucidezes diferentes, materiais diferentes) e/ou em ambientes diferentes (por exemplo, superfícies diferentes, iluminação diferente, obstáculos ambientais diferentes), exemplos de treinamento gerados com base em tentativas de pega da pluralidade de robôs podem fornecer robustez para várias configurações robóticas e/ou ambientais.
[056] Em algumas implementações, os objetos que são alcançáveis por um dado robô e para os quais tentativas de pega podem ser feitas podem ser diferentes durante iterações diferentes do método 300. Por exemplo, um operador humano e/ou um outro robô pode adicionar e/ou remover objetos para o espaço de trabalho de um robô entre uma ou mais tentativas de pega do robô. Também, por exemplo, o robô propriamente dito pode deixar cair um ou mais objetos fora de seu espaço de trabalho após pegas bem sucedidas desses objetos. Isto pode aumentar a diversidade dos dados de treinamento. Em algumas implementações, fatores ambientais tais como iluminação, superfície(s), obstáculos, etc. adicionalmente e/ou alternativamente podem ser diferentes durante iterações diferentes do método 300, o que também pode aumentar a diversidade dos dados de treinamento.
[057] A figura 4 é um fluxograma ilustrando um método de exemplo 400 de gerar exemplos de treinamento baseados em dados associados com tentativas de pega de robôs. Por conveniência, as operações do fluxograma são descritas com referência para um sistema que executa as operações. Este sistema pode incluir um ou mais componentes de um robô e/ou um outro sistema de computador, tal como um processador e/ou sistema de controle do robô 180A, 180B, 1220, e/ou um processador do sistema de geração de exemplos de treinamento 110 e/ou de outro sistema que opcionalmente possa ser implementado separado de um robô. Além disso, embora operações do método 400 estejam mostradas em uma ordem particular, isto não é destinado para ser limitante. Uma ou mais operações podem ser reordenadas, omitidas ou adicionadas.
[058] No bloco 452, o sistema inicia geração de exemplo de treinamento. No bloco 454, o sistema seleciona uma tentativa de pega. Por exemplo, o sistema pode acessar uma base de dados que inclui dados associados com uma pluralidade de tentativas de pega armazenadas, e selecionar uma das tentativas de pega armazenadas. A tentativa de pega selecionada pode ser, por exemplo, uma tentativa de pega gerada com base no método 300 da figura 3.
[059] No bloco 456, o sistema determina uma etiqueta de sucesso de pega para a tentativa de pega selecionada com base em dados armazenados para a tentativa de pega selecionada. Por exemplo, tal como descrito com relação ao bloco 364 do método 300, dados adicionais podem ser armazenados para a tentativa de pega para capacitar determinação de uma etiqueta de sucesso de pega para a tentativa de pega. Os dados armazenados podem incluir dados provenientes de um ou mais sensores, onde os dados são gerados durante e/ou após a tentativa de pega.
[060] Como um exemplo, os dados adicionais podem ser uma leitura de posição, uma leitura de torque, e/ou outra leitura do atuador de extremidade de pega. Em um exemplo como este, o sistema pode determinar uma etiqueta de sucesso de pega com base na(s) leitura(s). Por exemplo, onde a leitura é uma leitura de posição, o sistema pode determinar uma etiqueta de “pega bem sucedida” se a leitura for maior que algum limiar (por exemplo, 1 cm) - e pode determinar uma etiqueta de “pega malsucedida” se a leitura for menor que algum limiar (por exemplo, 1 cm).
[061] Como um outro exemplo, os dados adicionais podem ser uma imagem que captura a posição de pega original após o atuador de extremidade e o objeto (se algum) serem deslocados e uma imagem que captura a posição de pega original após o objeto (se algum) ter sido solto. Para determinar a etiqueta de sucesso de pega, o sistema pode comparar (1) a imagem após o atuador de extremidade e o objeto (se algum) serem deslocados (2) à imagem após o objeto (se algum) ter sido solto. Por exemplo, o sistema pode comparar pixels das duas imagens e, se mais que um número limiar de pixels entre as duas imagens forem diferentes, então o sistema pode determinar uma etiqueta de “pega bem sucedida”. Também, por exemplo, o sistema pode executar detecção de objeto em cada uma das duas imagens, e determinar uma etiqueta de “pega bem sucedida” se um objeto for detectado na imagem capturada após o objeto (se algum) ter sido solto, mas não é detectado na imagem capturada após o atuador de extremidade e o objeto (se algum) serem deslocados.
[062] Também como um outro exemplo, os dados adicionais podem ser uma imagem que captura a posição de pega original após o atuador de extremidade e o objeto (se algum) serem deslocados. Para determinar a etiqueta de sucesso de pega, o sistema pode comparar (1) a imagem após o atuador de extremidade e o objeto (se algum) serem deslocados a (2) uma imagem adicional do ambiente obtida antes de a tentativa de pega começar (por exemplo, uma imagem adicional que omite o atuador de extremidade).
[063] Em algumas implementações, a etiqueta de sucesso de pega é uma etiqueta binária, tal como uma etiqueta de “bem sucedido”/“não bem sucedido”. Em algumas implementações, a etiqueta de sucesso de pega pode ser selecionada de mais de duas opções, tais como 0, 1 e um ou mais valores entre 0 e 1. Por exemplo, em uma abordagem de comparação de pixels, “0” pode indicar uma “pega não bem sucedida” confirmada e pode ser selecionado pelo sistema quando menos que um primeiro número limiar de pixels é diferente entre as duas imagens; “0,25” pode indicar uma “pega muito provavelmente não bem sucedida” e pode ser selecionado quando o número de pixels diferentes é do primeiro limiar para um segundo limiar maior, “0,75” pode indicar uma “pega muito provavelmente bem sucedida” e pode ser selecionado quando o número de pixels diferentes é maior que o segundo limiar (ou outro limiar), mas menor que um terceiro limiar; e “1” pode indicar uma “pega bem sucedida confirmada”, e pode ser selecionado quando o número de pixels diferentes é igual ou maior que o terceiro limiar.
[064] No bloco 458, o sistema seleciona uma instância para a tentativa de pega. Por exemplo, o sistema pode selecionar dados associados com a instância com base em uma etiqueta de tempo e/ou em outra demarcação associada com os dados que a diferencia de outras instâncias da tentativa de pega.
[065] No bloco 460, o sistema gera um vetor de movimento de atuador de extremidade para a instância com base na posição do atuador de extremidade na instância e na posição do atuador de extremidade na instância final da tentativa de pega. Por exemplo, o sistema pode determinar uma transformação entre a posição corrente e a posição final da tentativa de pega e usar a transformação como o vetor de movimento de atuador de extremidade. A posição corrente e o vetor de movimento de atuador de extremidade da posição corrente para a posição final da tentativa de pega podem ser representados em espaço de tarefas, em espaço de juntas ou em um outro espaço. Por exemplo, o vetor de movimento de atuador de extremidade pode ser representado por cinco valores em espaço de tarefas: três valores definindo o vetor de translação tridimensional (3D) e dois valores representando uma codificação seno-cosseno da mudança em orientação do atuador de extremidade em volta de um eixo geométrico do atuador de extremidade.
[066] No bloco 462, o sistema gera um exemplo de treinamento para a instância que inclui: (1) a imagem armazenada para a instância, (2) o vetor de movimento de atuador de extremidade gerado para a instância no bloco 460, e (3) a etiqueta de sucesso de pega determinada no bloco 456. Em algumas implementações, o sistema gera um exemplo de treinamento que também inclui uma imagem adicional armazenada para a tentativa de pega, tal como uma que omite pelo menos parcialmente o atuador de extremidade e que foi capturada antes da tentativa de pega. Em algumas dessas implementações, o sistema concatena a imagem armazenada para a instância e a imagem adicional armazenada para a tentativa de pega para gerar uma imagem concatenada para o exemplo de treinamento. A imagem concatenada inclui tanto a imagem armazenada para a instância quanto a imagem adicional armazenada. Por exemplo, onde ambas as imagens incluem X por Y pixels e três canais (por exemplo, vermelho, azul, verde), a imagem concatenada pode incluir X por Y pixels e seis canais (três de cada imagem). Tal como descrito neste documento, a imagem corrente, a imagem adicional e o vetor da posição corrente para a posição final da tentativa de pega dos exemplos de treinamento podem ser utilizados como entrada de exemplo de treinamento; e a etiqueta de sucesso de pega pode ser utilizada como saída de exemplo de treinamento.
[067] Em algumas implementações, no bloco 462 o sistema opcionalmente pode processar a(s) imagem(s). Por exemplo, o sistema opcionalmente pode redimensionar a imagem para encaixar em um tamanho definido de uma camada de entrada da CNN, remover um ou mais canais da imagem e/ou normalizar os valores para canal(s) de profundidade (em implementações onde as imagens incluem um canal de profundidade).
[068] No bloco 464, o sistema determina se a instância selecionada é a instância final da tentativa de pega. Se o sistema determinar que a instância selecionada não é a instância final da tentativa de pega, o sistema retorna para o bloco 458 e seleciona uma outra instância.
[069] Se o sistema determinar que a instância selecionada é a instância final da tentativa de pega, o sistema prossegue para o bloco 466 e determina se existem tentativas de pega adicionais para processar. Se o sistema determinar que existem tentativas de pega adicionais para processar, o sistema retorna para o bloco 454 e seleciona uma outra tentativa de pega. Em algumas implementações, determinar se existem tentativas de pega adicionais para processar pode incluir determinar se existem quaisquer tentativas de pega não processadas remanescentes. Em algumas implementações, determinar se existem tentativas de pega adicionais para processar pode incluir adicionalmente e/ou alternativamente determinar se um número limiar de exemplos de treinamento já foi gerado e/ou se outros critérios foram satisfeitos.
[070] Se o sistema determinar que não existem tentativas de pega adicionais para processar, o sistema prossegue para o bloco 466 e o método 400 termina. Uma outra iteração do método 400 pode ser executada de novo. Por exemplo, o método 400 pode ser executado de novo em resposta a pelo menos um número limiar de tentativas de pega adicionais ser executado.
[071] Embora o método 300 e o método 400 estejam ilustrados em figuras separadas neste documento com o propósito de clareza, é entendido que um ou mais blocos do método 400 podem ser executados pelo(s) mesmo(s) componente(s) que executa(m) um ou mais blocos do método 300. Por exemplo, um ou mais (por exemplo, todos) dos blocos do método 300 e do método 400 podem ser executados por processador(s) de um robô. Também, é entendido que um ou mais blocos do método 400 podem ser executados em combinação, ou precedendo ou seguindo um ou mais blocos do método 300.
[072] A figura 5 é um fluxograma ilustrando um método de exemplo 500 de treinar uma rede neural convolucional com base em exemplos de treinamento. Por conveniência, as operações do fluxograma são descritas com referência para um sistema que executa as operações. Este sistema pode incluir um ou mais componentes de um sistema de computador, tais como um processador (por exemplo, uma GPU) do mecanismo de treinamento 120 e/ou de outro sistema de computador operando na rede neural convolucional (por exemplo, a CNN 125). Além disso, embora operações do método 500 estejam mostradas em uma ordem particular, isto não é destinado para ser limitante. Uma ou mais operações podem ser reordenadas, omitidas ou adicionadas.
[073] No bloco 552, o sistema inicia treinamento. No bloco 554, o sistema seleciona um exemplo de treinamento. Por exemplo, o sistema pode selecionar um exemplo de treinamento gerado com base no método 400 da figura 4.
[074] No bloco 556, o sistema aplica uma imagem para a instância do exemplo de treinamento e uma imagem adicional do exemplo de treinamento selecionado para uma camada inicial de uma CNN. Por exemplo, o sistema pode aplicar as imagens para uma camada convolucional inicial da CNN. Tal como descrito neste documento, a imagem adicional pode omitir pelo menos parcialmente o atuador de extremidade. Em algumas implementações, o sistema concatena a imagem e a imagem adicional e aplica a imagem concatenada para a camada inicial. Em algumas outras implementações, a imagem e a imagem adicional já estão concatenadas no exemplo de treinamento.
[075] No bloco 558, o sistema aplica o vetor de movimento de atuador de extremidade do exemplo de treinamento selecionado para uma camada adicional da CNN. Por exemplo, o sistema pode aplicar o vetor de movimento de atuador de extremidade para uma camada adicional da CNN que fica a jusante da camada inicial para a qual as imagens são aplicadas no bloco 556. Em algumas implementações, para aplicar o vetor de movimento de atuador de extremidade para a camada adicional, o sistema passa o vetor de movimento de atuador de extremidade através de uma camada totalmente conectada para gerar saída de vetor de movimento de atuador de extremidade, e concatena a saída de vetor de movimento de atuador de extremidade com saída de uma camada imediatamente a montante da CNN. A camada imediatamente a montante fica imediatamente a montante da camada adicional para a qual o vetor de movimento de atuador de extremidade é aplicado e opcionalmente pode ser uma ou mais camadas a jusante da camada inicial para a qual as imagens são aplicadas no bloco 556. Em algumas implementações, a camada inicial é uma camada convolucional, a camada imediatamente a montante é uma camada de agrupamento e a camada adicional é uma camada convolucional.
[076] No bloco 560, o sistema executa retropropagação na CNN com base na etiqueta de sucesso de pega do exemplo de treinamento. No bloco 562, o sistema determina se existem exemplos de treinamento adicionais. Se o sistema determinar que existem exemplos de treinamento adicionais, o sistema retorna para o bloco 554 e seleciona um outro exemplo de treinamento. Em algumas implementações, determinar se existem exemplos de treinamento adicionais pode incluir determinar se existem quaisquer exemplos de treinamento remanescentes que não tenham sido utilizados para treinar a CNN. Em algumas implementações, determinar se existem exemplos de treinamento adicionais pode incluir adicionalmente e/ou alternativamente determinar se um número limiar de exemplos de treinamento foi utilizado e/ou se outros critérios foram satisfeitos.
[077] Se o sistema determinar que não existem exemplos de treinamento adicionais e/ou que alguns outros critérios foram satisfeitos, o sistema prossegue para o bloco 564 ou para o bloco 566.
[078] No bloco 564, o treinamento da CNN pode terminar. A CNN treinada pode então ser fornecida para uso por um ou mais robôs ao acionar um atuador de extremidade de pega para alcançar uma pega bem sucedida de um objeto pelo atuador de extremidade de pega. Por exemplo, um robô pode utilizar a CNN treinada ao executar o método 700 da figura 7A.
[079] No bloco 566, o sistema pode fornecer adicionalmente e/ou alternativamente a CNN treinada para gerar exemplos de treinamento adicionais com base na CNN treinada. Por exemplo, um ou mais robôs podem utilizar a CNN treinada ao executar tentativas de pega e dados dessas tentativas de pega podem ser utilizados para gerar exemplos de treinamento adicionais. Por exemplo, um ou mais robôs podem utilizar a CNN treinada ao executar tentativas de pega com base no método 700 da figura 7A e dados dessas tentativas de pega podem ser utilizados para gerar exemplos de treinamento adicionais com base no método 400 da figura 4. Os robôs cujos dados são utilizados para gerar exemplos de treinamento adicionais podem ser robôs em uma configuração de laboratório/treinamento e/ou robôs em uso real por um ou mais consumidores.
[080] No bloco 568, o sistema pode atualizar a CNN com base nos exemplos de treinamento adicionais gerados em resposta a fornecer a CNN treinada no bloco 566. Por exemplo, o sistema pode atualizar a CNN ao executar iterações adicionais dos blocos 554, 556, 558 e 560 com base em exemplos de treinamento adicionais.
[081] Tal como indicado pela seta se estendendo entre os blocos 566 e 568, a CNN atualizada pode ser fornecida de novo no bloco 566 para gerar exemplos de treinamento adicionais e esses exemplos de treinamento podem ser utilizados no bloco 568 para atualizar adicionalmente a CNN. Em algumas implementações, tentativas de pega executadas em associação com iterações futuras do bloco 566 podem ser tentativas de pega maiores temporalmente do que essas executadas em iterações futuras e/ou aquelas executadas sem utilização de uma CNN treinada. Por exemplo, implementações do método 300 da figura 3 que são executadas sem utilização de uma CNN treinada podem ter as tentativas de pega menores temporalmente, aquelas executadas com uma CNN treinada inicialmente podem ter tentativas de pega maiores temporalmente, aquelas executadas com a próxima iteração de uma CNN treinada também têm tentativas de pega maiores temporalmente, etc. Isto opcionalmente pode ser implementado por meio do contador de instância e/ou contador temporal opcional do método 300.
[082] As figuras 6A e 6B ilustram uma arquitetura de exemplo de uma CNN 600 de várias implementações. A CNN 600 das figuras 6A e 6B é um exemplo de uma CNN que pode ser treinada com base no método 500 da figura 5. A CNN 600 das figuras 6A e 6B é também um exemplo de uma CNN que, uma vez que treinada, pode ser utilizada ao acionar um atuador de extremidade de pega com base no método 700 da figura 7A. De uma maneira geral, uma rede neural convolucional é uma estrutura de aprendizagem de múltiplas camadas que inclui uma camada de entrada, uma ou mais camadas convolucionais, camadas de pesos e/ou outras opcionais, e uma camada de saída. Durante treinamento, uma rede neural convolucional é treinada para conhecer uma hierarquia de representações de recursos. Camadas convolucionais da rede estão envolvidas com filtros e opcionalmente subamostradas por camadas de agrupamento. De uma maneira geral, as camadas de agrupamento agregam valores em uma região menor por meio de uma ou mais funções de subamostragem tais como amostragem máxima, mínima e/ou de normalização.
[083] A CNN 600 inclui uma camada de entrada inicial 663 que é uma camada convolucional. Em algumas implementações, a camada de entrada inicial 663 é uma camada convolucional 6 x 6 com passo 2 e 64 filtros. Imagem com um atuador de extremidade 661A e imagem sem um atuador de extremidade 661B também estão ilustradas na figura 6A. As imagens 661A e 661B estão ilustradas adicionalmente estando concatenadas (representadas pelas linhas se fundindo se estendendo de cada uma) e a imagem concatenada sendo alimentada para a camada de entrada inicial 663. Em algumas implementações, cada uma das imagens 661A e 661B pode ser de 472 pixels, por 472 pixels, por 3 canais (por exemplo, os 3 canais podem ser selecionados de canal de profundidade, primeiro canal de cor, segundo canal de cor, terceiro canal de cor). Portanto, a imagem concatenada pode ser de 472 pixels, por 472 pixels, por 6 canais. Outros tamanhos podem ser usados tais como tamanhos de pixels diferentes ou mais ou menos canais. As imagens 661A e 661B são reunidas para a camada de entrada inicial 663. Os pesos dos recursos da camada de entrada inicial e de outras camadas da CNN 600 são conhecidos durante treinamento da CNN 600 com base em múltiplos exemplos de treinamento.
[084] A camada de entrada inicial 663 é seguida por uma camada de agrupamento máximo 664. Em algumas implementações, a camada de agrupamento máximo 664 é uma camada de agrupamento máximo 3 x 3 com 64 filtros. A camada de agrupamento máximo 664 é seguida por seis camadas convolucionais, duas das quais estão representadas na figura 6A por 665 e 666. Em algumas implementações, cada uma das seis camadas convolucionais é uma camada convolucional 5 x 5 com 64 filtros. A camada convolucional 666 é seguida por uma camada de agrupamento máximo 667. Em algumas implementações, a camada de agrupamento máximo 667 é uma camada de agrupamento máximo 3 x 3 com 64 filtros.
[085] Um vetor de movimento de atuador de extremidade 662 também está ilustrado na figura 6A. O vetor de movimento de atuador de extremidade 662 é concatenado com a saída da camada de agrupamento máximo 667 (tal como indicado pelo “+” da figura 6A) e a saída concatenada é aplicada para uma camada convolucional 670 (figura 6B). Em algumas implementações, concatenar o vetor de movimento de atuador de extremidade 662 com a saída da camada de agrupamento máximo 667 inclui processar o vetor de movimento de atuador de extremidade 662 por meio de uma camada totalmente conectada 668, cuja saída é então adicionada ponto a ponto a cada ponto no mapa de respostas da camada de agrupamento máximo 667 ao posicionar lado a lado a saída sobre as dimensões espaciais por meio de um vetor posicionado lado a lado 669. Em outras palavras, o vetor de movimento de atuador de extremidade 662 é passado através da camada totalmente conectada 668 e reproduzido, por meio do vetor posicionado lado a lado 669, sobre as dimensões espaciais do mapa de respostas da camada de agrupamento máximo 667.
[086] Voltando agora à figura 6B, a concatenação do vetor de movimento de atuador de extremidade 662 e da saída da camada de agrupamento máximo 667 é fornecida para camada convolucional 670, a qual é seguida por mais cinco camadas convolucionais (a última camada convolucional 671 dessas cinco está ilustrada na figura 6B, mas as quatro intervenientes não estão). Em algumas implementações, cada uma das camadas convolucionais 670 e 671, e das quatro camadas convolucionais intervenientes, é uma camada convolucional 3 x 3 com 64 filtros.
[087] A camada convolucional 671 é seguida por uma camada de agrupamento máximo 672. Em algumas implementações, a camada de agrupamento máximo 672 é uma camada de agrupamento máximo 2 x 2 com 64 filtros. A camada de agrupamento máximo 672 é seguida por três camadas convolucionais, duas das quais estão representadas na figura 6A por 673 e 674.
[088] A camada convolucional final 674 da CNN 600 é totalmente conectada a uma primeira camada totalmente conectada 675 que, por sua vez, é totalmente conectada a uma segunda camada totalmente conectada 676. As camadas totalmente conectadas 675 e 676 podem ser vetores, tais como vetores de tamanho 64. A saída da segunda camada totalmente conectada 676 é utilizada para gerar a medida 677 de uma pega bem sucedida. Por exemplo, uma sigmoide pode ser utilizada para gerar e enviar a medida 677. Em algumas implementações de treinar a CNN 600, vários valores para períodos, taxa de aprendizagem, decaimento de peso, probabilidade de perda de sinal e/ou outros parâmetros podem ser utilizados. Em algumas implementações, uma ou mais GPUs podem ser utilizadas para treinar e/ou utilizar a CNN 600. Embora uma rede neural convolucional particular 600 esteja ilustrada na figura 6, variações são possíveis. Por exemplo, mais ou menos camadas convolucionais podem ser fornecidas, uma ou mais camadas podem ter tamanhos diferentes desses fornecidos como exemplos, etc.
[089] Uma vez que a CNN 600 ou outra rede neural seja treinada de acordo com técnicas descritas neste documento, ela pode ser utilizada para acionar um atuador de extremidade de pega. Com referência para a figura 7A, um fluxograma ilustrando um método de exemplo 700 de utilizar uma rede neural convolucional treinada para acionar um atuador de extremidade de pega está ilustrado. Por conveniência, as operações do fluxograma são descritas com referência para um sistema que executa as operações. Este sistema pode incluir um ou mais componentes de um robô, tais como um processador (por exemplo, CPU e/ou GPU) e/ou sistema de controle de robô do robô 180A, 180B, 840 e/ou de outro robô. Ao implementar um ou mais blocos do método 700, o sistema pode operar em uma CNN treinada que pode ser, por exemplo, armazenada localmente em um robô e/ou pode ser armazenada distante do robô. Além disso, embora operações de método 700 estejam mostradas em uma ordem particular, isto não é destinado para ser limitante. Uma ou mais operações podem ser reordenadas, omitidas ou adicionadas.
[090] No bloco 752, o sistema gera um vetor de movimento de atuador de extremidade candidato. O vetor de movimento de atuador de extremidade candidato pode ser definido em espaço de tarefas, espaço de juntas ou em outro espaço, dependendo dos parâmetros de entrada da CNN treinada a ser utilizados em blocos adicionais.
[091] Em algumas implementações, o sistema gera um vetor de movimento de atuador de extremidade candidato que é aleatório dentro de um dado espaço, tal como o espaço de trabalho alcançável pelo atuador de extremidade, um espaço restringido dentro do qual o atuador de extremidade é confinado para as tentativas de pega e/ou um espaço definido por limites de posições e/ou de torque de acionador(s) que controla(m) a posição do atuador de extremidade.
[092] Em algumas implementações o sistema pode utilizar uma ou mais técnicas para amostrar um grupo de vetores de movimento de atuador de extremidade candidatos e para selecionar um subgrupo do grupo amostrado. Por exemplo, o sistema pode utilizar uma técnica de otimização, tal como o método de entropia cruzada (CEM). CEM é um algoritmo de otimização livre de derivada que amostra um grupo de N valores em cada iteração, encaixa uma distribuição gaussiana para M<N destas amostras, e então amostra um novo grupo de N desta gaussiana. Por exemplo, o sistema pode utilizar CEM e valores de M = 64 e N = 6, e executar três iterações de CEM para determinar (de acordo com o CEM) um melhor vetor de movimento de atuador de extremidade candidato disponível.
[093] Em algumas implementações, uma ou mais restrições podem ser impostas em relação ao vetor de movimento de atuador de extremidade candidato que pode ser gerado no bloco 752. Por exemplo, os movimentos de atuador de extremidade candidatos avaliados por meio de CEM ou por outra técnica podem ser restringidos com base nas restrições. Um exemplo das restrições são restrições introduzidas por pessoa (por exemplo, por meio de um dispositivo de entrada de interface de usuário de um sistema de computador) que impõe restrições a respeito de área(s) na(s) qual(s) pegas podem ser tentadas, restrições a respeito de objeto(s) particular(s) e/ou de classificação(s) de objeto particular para o qual pegas podem ser tentadas, etc. Um outro exemplo de restrições são restrições geradas por computador que impõem restrições a respeito de área(s) em que pegas podem ser tentadas, restrições a respeito de objeto(s) particular(s) e/ou de classificação(s) de objeto particular para o qual pegas podem ser tentadas, etc. Por exemplo, um classificador de objeto pode classificar um ou mais objetos com base em imagens capturadas e impor restrições que restringem pegas para objetos de certas classificações. Outros casos de restrições ainda incluem, por exemplo, restrições com base em um espaço de trabalho do robô, limites de juntas do robô, limites de torque do robô, restrições fornecidas por um sistema de prevenção de colisão que restringe o movimento do robô para impedir colisão com um ou mais objetos, etc.
[094] No bloco 754, o sistema identifica uma imagem corrente que captura o atuador de extremidade e um ou mais objetos ambientais. Em algumas implementações, o sistema também identifica uma imagem adicional que omite pelo menos parcialmente o atuador de extremidade, tal como uma imagem adicional dos objetos ambientais que foi capturada por um sensor de visão quando o atuador de extremidade estava pelo menos parcialmente fora de vista do sensor de visão. Em algumas implementações, o sistema concatena a imagem e a imagem adicional para gerar uma imagem concatenada. Em algumas implementações, o sistema opcionalmente executa processamento da(s) imagem(s) e/ou da imagem concatenada (por exemplo, para ajustar para uma entrada da CNN).
[095] No bloco 756, o sistema aplica a imagem corrente e o vetor de movimento de atuador de extremidade candidato para uma CNN treinada. Por exemplo, o sistema pode aplicar a imagem concatenada, a qual inclui a imagem corrente e a imagem adicional, para uma camada inicial da CNN treinada. O sistema também pode aplicar o vetor de movimento de atuador de extremidade candidato para uma camada adicional da CNN treinada que fica a jusante da camada inicial. Em algumas implementações, ao aplicar o vetor de movimento de atuador de extremidade candidato para a camada adicional, o sistema passa o vetor de movimento de atuador de extremidade através de uma camada totalmente conectada da CNN para gerar saída de vetor de movimento de atuador de extremidade e concatena a saída de vetor de movimento de atuador de extremidade com saída a montante da CNN. A saída a montante é de uma camada imediatamente a montante da CNN que fica imediatamente a montante da camada adicional e que fica a jusante da camada inicial e de uma ou mais camadas intermediárias da CNN.
[096] No bloco 758, o sistema gera, na CNN treinada, uma medida de uma pega bem sucedida com base no vetor de movimento de atuador de extremidade. A medida é gerada com base na aplicação da imagem corrente (e opcionalmente da imagem adicional) e do vetor de movimento de atuador de extremidade candidato para a CNN treinada no bloco 756 e determinar a medida com base nos pesos de aprendizado da CNN treinada.
[097] No bloco 760, o sistema gera um comando de atuador de extremidade com base na medida de uma pega bem sucedida. Por exemplo, em algumas implementações, o sistema pode gerar um ou mais vetores de movimento de atuador de extremidade candidatos adicionais no bloco 752, e gerar medidas de pegas bem sucedidas para esses vetores de movimento de atuador de extremidade candidatos adicionais em iterações adicionais do bloco 758 ao aplicar essas e a imagem corrente (e opcionalmente a imagem adicional) para a CNN treinada em iterações adicionais do bloco 756. As iterações adicionais dos blocos 756 e 758 opcionalmente podem ser executadas em paralelo pelo sistema. Em algumas dessas implementações, o sistema pode gerar o comando de atuador de extremidade com base na medida para o vetor de movimento de atuador de extremidade candidato e nas medidas para os vetores de movimento de atuador de extremidade candidatos adicionais. Por exemplo, o sistema pode gerar o comando de atuador de extremidade para ficar totalmente ou substancialmente de acordo com o vetor de movimento de atuador de extremidade candidato com a medida mais indicativa de uma pega bem sucedida. Por exemplo, um sistema de controle de um robô do sistema pode gerar comando(s) de movimento para acionar um ou mais acionadores do robô para deslocar o atuador de extremidade com base no vetor de movimento de atuador de extremidade.
[098] Em algumas implementações, o sistema também pode gerar o comando de atuador de extremidade com base em uma medida corrente de pega bem sucedida se nenhum vetor de movimento de atuador de extremidade candidato não for utilizado para gerar novos comandos de movimento (por exemplo, a medida corrente de pega bem sucedida). Por exemplo, se uma ou mais comparações da medida corrente para a medida do vetor de movimento de atuador de extremidade candidato que é mais indicativa de pega bem sucedida falhar para satisfazer um limiar, então o comando de movimento de atuador de extremidade pode ser um “comando de pega” que induz o atuador de extremidade para tentar uma pega (por exemplo, fechar dedos de um atuador de extremidade de pega impactivo). Por exemplo, se o resultado da medida corrente dividida pela medida do vetor de movimento de atuador de extremidade candidato que é mais indicativa de pega bem sucedida for igual ou maior que um primeiro limiar (por exemplo, 0,9), o comando de pega pode ser gerado (de acordo com a análise racional de parar a pega prematuramente se fechamento do pegador estiver quase tão provável de produzir uma pega bem sucedida à medida que deslocar o mesmo). Também, por exemplo, se o resultado for igual ou menor que um segundo limiar (por exemplo, 0,5), o comando de atuador de extremidade pode ser um comando de movimento para efetuar uma correção de trajetória (por exemplo, deslocar o atuador de extremidade de pega “para cima” por pelo menos X metros) (de acordo com a análise racional de que o atuador de extremidade de pega muito provavelmente não está posicionado em uma boa configuração e um movimento relativamente grande é exigido). Também, por exemplo, se o resultado estiver entre os primeiro e segundo limiares, um comando de movimento pode ser gerado que substancialmente ou totalmente está de acordo com o vetor de movimento de atuador de extremidade candidato com a medida que é mais indicativa de pega bem sucedida. O comando de atuador de extremidade gerado pelo sistema pode ser um único grupo de um ou mais comandos, ou uma sequência de grupos de um ou mais comandos.
[099] A medida de pega bem sucedida se nenhum vetor de movimento de atuador de extremidade candidato não for utilizado para gerar novos comandos de movimento pode ser com base na medida para o vetor de movimento de atuador de extremidade candidato utilizado em uma iteração anterior do método 700 e/ou com base em aplicar um vetor de movimento “nulo” e a imagem corrente (e opcionalmente a imagem adicional) para a CNN treinada em uma iteração adicional do bloco 756, e gerar a medida com base em uma iteração adicional do bloco 758.
[0100] No bloco 762, o sistema determina se o comando de atuador de extremidade é um comando de pega. Se o sistema determinar no bloco 762 que o comando de atuador de extremidade é um comando de pega, o sistema prossegue para o bloco 764 e implementa o comando de pega. Em algumas implementações, o sistema opcionalmente pode determinar se o comando de pega resulta em uma pega bem sucedida (por exemplo, usando técnicas descritas neste documento) e, se não for bem sucedida, o sistema opcionalmente pode ajustar a posição do atuador de extremidade e retornar para o bloco 752. Mesmo onde a pega é bem sucedida, o sistema pode retornar para o bloco 752 mais tarde para pegar um outro objeto.
[0101] Se o sistema determinar no bloco 762 que o comando de atuador de extremidade não é um comando de pega (por exemplo, ele é um comando de movimento), o sistema prossegue para o bloco 766 e implementa o comando de atuador de extremidade, e então retorna para o bloco 752, onde ele gera um outro vetor de movimento de atuador de extremidade candidato. Por exemplo, no bloco 766 o sistema pode implementar um comando de movimento de atuador de extremidade que substancialmente ou totalmente está de acordo com o vetor de movimento de atuador de extremidade candidato com a medida que é mais indicativa de pega bem sucedida.
[0102] Em muitas implementações, blocos do método 700 podem ser executados em uma frequência relativamente alta, capacitando desse modo atualização iterativa de comandos de atuador de extremidade e capacitando acionamento do atuador de extremidade ao longo de uma trajetória que é informada pela CNN treinada para resultar em uma probabilidade relativamente alta de pega bem sucedida.
[0103] A figura 7B é um fluxograma ilustrando algumas implementações de certos blocos do fluxograma da figura 7A. Em particular, a figura 7B é um fluxograma ilustrando algumas implementações dos blocos 758 e 760 da figura 7A.
[0104] No bloco 758A, o sistema gera, na CNN, uma medida de uma pega bem sucedida com base no vetor de movimento de atuador de extremidade candidato do bloco 752.
[0105] No bloco 758B, o sistema determina a medida corrente de uma pega bem sucedida com base na posição corrente do atuador de extremidade. Por exemplo, o sistema pode determinar a medida corrente de pega bem sucedida se nenhum vetor de movimento de atuador de extremidade candidato não for utilizado para gerar novos comandos de movimento com base na medida para o vetor de movimento de atuador de extremidade candidato utilizado em uma iteração imediatamente anterior do método 700. Também, por exemplo, o sistema pode determinar a medida corrente com base em aplicar um vetor de movimento “nulo” e a imagem corrente (e opcionalmente a imagem adicional) para a CNN treinada em uma iteração adicional do bloco 756, e gerar a medida com base em uma iteração adicional do bloco 758.
[0106] No bloco 760A, o sistema compara as medidas dos blocos 758A e 758B. Por exemplo, o sistema pode efetuar comparação ao dividir as medidas, subtrair as medidas e/ou aplicar as medidas a uma ou mais funções.
[0107] No bloco 760B, o sistema gera um comando de atuador de extremidade com base na comparação do bloco 760A. Por exemplo, se a medida do bloco 758B for dividida pela medida do bloco 758A e o quociente for igual ou maior que um limiar (por exemplo, 0,9), então o comando de movimento de atuador de extremidade pode ser um “comando de pega” que induz o atuador de extremidade para tentar uma pega. Também, por exemplo, se a medida do bloco 758B for dividida pela medida do bloco 758A e o quociente for igual ou menor que um segundo limiar (por exemplo, 0,5), o comando de atuador de extremidade pode ser um comando de movimento para efetuar uma correção de trajetória. Também, por exemplo, se a medida do bloco 758B for dividida pela medida do bloco 758A e o quociente estiver entre o segundo limiar e o primeiro limiar, um comando de movimento pode ser gerado que substancialmente ou totalmente está de acordo com o vetor de movimento de atuador de extremidade candidato.
[0108] Exemplos particulares são dados neste documento de treinar uma CNN e/ou utilizar uma CNN para acionar um atuador de extremidade. Entretanto, algumas implementações podem incluir recursos adicionais e/ou alternativos que variam dos exemplos particulares. Por exemplo, em algumas implementações, uma CNN pode ser treinada para predizer uma medida indicando a probabilidade de que dados de movimento candidato para um atuador de extremidade de um robô resultarão em uma pega bem sucedida de um ou mais objetos particulares, tais como objetos de uma classificação particular (por exemplo, lápis, utensílios de gravação, espátulas, utensílios de cozinha, objetos tendo uma configuração de uma maneira geral retangular, objetos macios, objetos cujo menor limite está entre X e Y, etc.).
[0109] Por exemplo, em algumas implementações objetos de uma classificação particular podem ser incluídos junto com outros objetos para robôs pegarem durante várias tentativas de pega. Exemplos de treinamento podem ser gerados onde uma etiqueta de “pega bem sucedida” é encontrada somente se: (1) a pega foi bem sucedida e (2) a pega foi de um objeto que está de acordo com essa classificação particular. Determinar se um objeto está de acordo com uma classificação particular pode ser feito, por exemplo, com base no robô virar o atuador de extremidade de pega para o sensor de visão seguinte a uma tentativa de pega e usar o sensor de visão para capturar uma imagem do objeto (se algum) pego pelo atuador de extremidade de pega. Um revisor humano e/ou uma rede neural de classificação de imagem (ou outro sistema de classificação de imagem) pode então determinar se o objeto pego pelo atuador de extremidade é da classificação particular - e essa determinação é utilizada para aplicar uma etiqueta de pega apropriada. Tais exemplos de treinamento podem ser utilizados para treinar uma CNN tal como descrito neste documento e, como um resultado de treinamento por meio de tais exemplos de treinamento, a CNN treinada pode ser utilizada para acionar um atuador de extremidade de pega de um robô para alcançar uma pega bem sucedida, pelo atuador de extremidade de pega, de um objeto que é da classificação particular.
[0110] A figura 8 representa esquematicamente uma arquitetura de exemplo de um robô 840. O robô 840 inclui um sistema de controle de robô 860, um ou mais componentes operacionais 840a-840n e um ou mais sensores 842a-842m. Os sensores 842a-842m podem incluir, por exemplo, sensores de visão, sensores de luz, sensores de pressão, sensores de onda de pressão (por exemplo, microfones), sensores de proximidade, acelerômetros, giroscópios, termômetros, barômetros e assim por diante. Embora os sensores 842a-m estejam representados como sendo integrais ao robô 840, isto não é destinado para ser limitante. Em algumas implementações, os sensores 842a-m podem ficar localizados externos ao robô 840, por exemplo, como unidades autônomas.
[0111] Os componentes operacionais 840a-840n podem incluir, por exemplo, um ou mais atuadores de extremidades e/ou um ou mais servomotores ou outros acionadores para efetuar movimento de um ou mais componentes do robô. Por exemplo, o robô 840 pode ter múltiplos graus de liberdade e cada um dos acionadores pode controlar acionamento do robô 840 dentro de um ou mais dos graus de liberdade responsivos aos comandos de controle. Tal como usado neste documento, o termo acionador abrange um dispositivo mecânico ou elétrico que cria movimento (por exemplo, um motor), além de qualquer acionador que possa estar associado com o acionador e que translada comandos de controle recebidos para um ou mais sinais para acionar o acionador. Portanto, fornecer um comando de controle para um acionador pode compreender fornecer o comando de controle para um acionador que translada o comando de controle para sinais apropriados para acionar um dispositivo elétrico ou mecânico para criar movimento desejado.
[0112] O sistema de controle de robô 860 pode ser implementado em um ou mais processadores, tais como uma CPU, GPU e/ou outro(s) controlador(s) do robô 840. Em algumas implementações, o robô 840 pode compreender uma “caixa de memória” que pode incluir todos ou aspectos do sistema de controle 860. Por exemplo, a caixa de memória pode fornecer rajadas em tempo real de dados para os componentes operacionais 840a-n, com cada uma das rajadas em tempo real compreendendo um conjunto de um ou mais comandos de controle que ditam, entre outras coisas, os parâmetros de movimento (se algum) para cada um de um ou mais dos componentes operacionais 840a-n. Em algumas implementações, o sistema de controle de robô 860 pode executar um ou mais aspectos dos métodos 300, 400, 500 e/ou 700 descritos neste documento.
[0113] Tal como descrito neste documento, em algumas implementações todos ou aspectos dos comandos de controle gerados pelo sistema de controle 860 ao posicionar um atuador de extremidade para pegar um objeto podem ser baseados em comandos de atuador de extremidade gerados com base na utilização de uma rede neural treinada, tal como uma CNN treinada. Por exemplo, um sensor de visão dos sensores 842am pode capturar uma imagem corrente e uma imagem adicional, e o sistema de controle de robô 860 pode gerar um vetor de movimento candidato. O sistema de controle de robô 860 pode fornecer a imagem corrente, a imagem adicional e o vetor de movimento candidato para uma CNN treinada e utilizar uma medida gerada com base na aplicação para gerar um ou mais comandos de controle de atuador de extremidade para controlar o movimento e/ou pega de um atuador de extremidade do robô. Embora sistema de controle 860 esteja ilustrado na figura 8 como uma parte integral do robô 840, em algumas implementações todos ou aspectos do sistema de controle 860 podem ser implementados em um componente que esteja separado do robô 840, mas em comunicação com ele. Por exemplo, todos ou aspectos do sistema de controle 860 podem ser implementados em um ou mais dispositivos de computação que estejam em comunicação com fio e/ou sem fio com o robô 840, tal como o dispositivo de computação 910.
[0114] A figura 9 é um diagrama de blocos de um dispositivo de computação de exemplo 910 que opcionalmente pode ser utilizado para executar um ou mais aspectos de técnicas descritas neste documento. O dispositivo de computação 910 tipicamente inclui pelo menos um processador 914 que se comunica com diversos dispositivos periféricos via subsistema de barramento 912. Estes dispositivos periféricos podem incluir um subsistema de armazenamento 924, incluindo, por exemplo, um subsistema de memória 925 e um subsistema de armazenamento de arquivos 926, os dispositivos de saída de interface de usuário 920, os dispositivos de entrada de interface de usuário 922 e um subsistema de interface de rede 916. Os dispositivos de entrada e de saída permitem interação de usuário com o dispositivo de computação 910. O subsistema de interface de rede 916 fornece uma interface para redes externas e é acoplado a dispositivos de interface correspondentes em outros dispositivos de computação.
[0115] Os dispositivos de entrada de interface de usuário 922 podem incluir um teclado, dispositivos indicadores tais como um mouse, mouse estacionário, superfície sensível ao toque, ou tablet de gráficos, um scanner, uma tela sensível ao toque incorporada ao mostrador, dispositivos de entrada de áudio tais como sistemas de reconhecimento de voz, microfones e/ou outros tipos de dispositivos de entrada. De uma maneira geral, uso do termo “dispositivo de entrada” é pretendido para incluir todos os tipos possíveis de dispositivos e modos para introduzir informação no dispositivo de computação 910 ou em uma rede de comunicação.
[0116] Os dispositivos de saída de interface de usuário 920 podem incluir um subsistema de exibição, uma impressora, uma máquina de fax ou dispositivos não visuais tais como dispositivos de saída de áudio. O subsistema de exibição pode incluir um tubo de raios catódicos (CRT), um dispositivo de tela plana tal como uma tela de cristal líquido (LCD), um dispositivo de projeção, ou algum outro mecanismo para criar uma imagem visível. O subsistema de exibição também pode fornecer exibição não visual tal como por meio de dispositivos de saída de áudio. De uma maneira geral, uso do termo “dispositivo de saída” é pretendido para incluir todos os tipos possíveis de dispositivos e modos para enviar informação do dispositivo de computação 910 para o usuário ou para uma outra máquina ou dispositivo de computação.
[0117] O subsistema de armazenamento 924 armazena construções de programação e de dados que fornecem a funcionalidade de todos ou de alguns dos módulos descritos neste documento. Por exemplo, o subsistema de armazenamento 924 pode incluir a lógica para executar aspectos selecionados do método das figuras 3, 4, 5 e/ou 7A e 7B.
[0118] Estes módulos de software de uma maneira geral são executados pelo processador 914 sozinho ou em combinação com outros processadores. A memória 925 usada no subsistema de armazenamento 924 pode incluir diversas memórias incluindo uma memória de acesso aleatório (RAM) principal 930 para armazenamento de instruções e dados durante execução de programa e uma memória somente de leitura (ROM) 932 na qual instruções fixas são armazenadas. Um subsistema de armazenamento de arquivos 926 pode fornecer armazenamento permanente para arquivos de programas e de dados, e pode incluir uma unidade de disco rígido, uma unidade de disco flexível junto com mídias removíveis associadas, uma unidade de CD-ROM, uma unidade ótica ou cartuchos de mídias removíveis. Os módulos executando a funcionalidade de certas implementações podem ser armazenados pelo subsistema de armazenamento de arquivos 926 no subsistema de armazenamento 924, ou em outras máquinas acessíveis pelo(s) processador(s) 914.
[0119] O subsistema de barramento 912 fornece um mecanismo para permitir que os vários componentes e subsistemas do dispositivo de computação 910 se comuniquem uns com os outros, tal como pretendido. Embora o subsistema de barramento 912 esteja mostrado esquematicamente como um único barramento, implementações alternativas do subsistema de barramento podem usar múltiplos barramentos.
[0120] O dispositivo de computação 910 pode ser de vários tipos incluindo uma estação de trabalho, servidor, agrupamento de computação, servidor em lâmina, conjunto de servidores ou qualquer outro sistema de processamento ou dispositivo de computação de dados. Por causa da natureza sempre mudando dos computadores e redes, a descrição do dispositivo de computação 910 representado na figura 9 é pretendida somente como um exemplo específico para o propósito de ilustrar algumas implementações. Muitas outras configurações do dispositivo de computação 910 são possíveis tendo mais ou menos componentes que o dispositivo de computação representado na figura 9.
[0121] Embora várias implementações tenham sido descritas e ilustradas neste documento, uma variedade de outros recursos e/ou estruturas para executar a função e/ou obter os resultados e/ou uma ou mais das vantagens descritas neste documento pode ser utilizada, e cada uma de tais variações e/ou modificações é considerada como estando dentro do escopo das implementações descritas neste documento. De uma maneira mais geral, todos os parâmetros, dimensões, materiais e configurações descritos neste documento são destinados para serem exemplares e que os parâmetros, dimensões, materiais e/ou configurações reais dependerão da aplicação ou aplicações específicas para as quais os preceitos são usados. Os versados na técnica reconhecerão, ou serão capazes de descobrir usando não mais que experimentação de rotina, muitas equivalências para as implementações específicas descritas neste documento. Portanto, é para ser entendido que as implementações indicadas anteriormente são apresentadas somente a título de exemplo e que, no escopo das reivindicações anexas e equivalências a isto, implementações podem ser praticadas de outro modo a não ser tal como descrito e reivindicado especificamente. Implementações da presente revelação são direcionadas para cada recurso, sistema, artigo, material, kit e/ou método individual descrito neste documento. Além do mais, qualquer combinação de dois ou mais de tais recursos, sistemas, artigos, materiais, kits e/ou métodos, se tais recursos, sistemas, artigos, materiais, kits e/ou métodos não forem mutuamente inconsistentes, está incluída no escopo da presente revelação.

Claims (22)

1. Método, caracterizado pelo fato de que compreende: gerar, por um ou mais processadores, um vetor de movimento de atuador de extremidade candidato definindo movimento para deslocar um atuador de extremidade de pega de um robô de uma posição corrente para uma posição adicional; identificar, por um ou mais dos processadores, uma imagem corrente capturada por um sensor de visão associado com o robô, a imagem corrente capturando o atuador de extremidade de pega e pelo menos um objeto em um ambiente do robô; aplicar, por um ou mais dos processadores, a imagem corrente e o vetor de movimento de atuador de extremidade candidato como entradas para uma rede neural convolucional treinada; gerar, na rede neural convolucional treinada, uma medida de pega bem sucedida do objeto com aplicação do movimento, a medida sendo gerada com base na aplicação da imagem corrente e do vetor de movimento de atuador de extremidade para a rede neural convolucional treinada; gerar um comando de atuador de extremidade com base na medida, o comando de atuador de extremidade sendo um comando de pega ou um comando de movimento de atuador de extremidade; e fornecer o comando de atuador de extremidade para um ou mais acionadores do robô.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: determinar, por um ou mais dos processadores, uma medida corrente de pega bem sucedida do objeto sem aplicação do movimento; em que gerar o comando de atuador de extremidade é com base na medida e na medida corrente.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o comando de atuador de extremidade é o comando de pega e em que gerar o comando de pega é em resposta a determinar que comparação da medida com a medida corrente satisfaz um limiar.
4. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o comando de atuador de extremidade é o comando de movimento de atuador de extremidade e em que gerar o comando de movimento de atuador de extremidade compreende gerar o comando de movimento de atuador de extremidade para ficar de acordo com o vetor de movimento de atuador de extremidade candidato.
5. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o comando de atuador de extremidade é o comando de movimento de atuador de extremidade e em que gerar o comando de movimento de atuador de extremidade compreende gerar o comando de movimento de atuador de extremidade para efetuar uma correção de trajetória para o atuador de extremidade.
6. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que determinar a medida corrente de pega bem sucedida do objeto sem aplicação do movimento compreende: aplicar, por um ou mais dos processadores, a imagem corrente e um vetor de movimento de atuador de extremidade nulo como entradas para a rede neural convolucional treinada; e gerar, na rede neural convolucional treinada, a medida corrente de pega bem sucedida do objeto sem aplicação do movimento, a medida corrente sendo gerada com base na aplicação da imagem corrente e do vetor de movimento de atuador de extremidade nulo para a rede neural convolucional treinada.
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o comando de atuador de extremidade é o comando de movimento de atuador de extremidade e está de acordo com o vetor de movimento de atuador de extremidade candidato, em que fornecer o comando de movimento de atuador de extremidade para o um ou mais acionadores desloca o atuador de extremidade para uma nova posição, e compreendendo adicionalmente: gerar, por um ou mais processadores, um vetor de movimento de atuador de extremidade candidato adicional definindo novo movimento para deslocar o atuador de extremidade de pega da nova posição para uma posição adicional mais adiante; identificar, por um ou mais dos processadores, uma nova imagem capturada por um sensor de visão associado com o robô, a nova imagem capturando o atuador de extremidade na nova posição e capturando os objetos no ambiente; aplicar, por um ou mais dos processadores, a nova imagem e o vetor de movimento de atuador de extremidade candidato adicional como entradas para a rede neural convolucional treinada; gerar, na rede neural convolucional treinada, uma nova medida de pega bem sucedida do objeto com aplicação do novo movimento, a nova medida sendo gerada com base na aplicação da nova imagem e do vetor de movimento de atuador de extremidade adicional para a rede neural convolucional treinada; gerar um novo comando de atuador de extremidade com base na nova medida, o novo comando de atuador de extremidade sendo o comando de pega ou um novo comando de movimento de atuador de extremidade; e fornecer o novo comando de atuador de extremidade para um ou mais acionadores do robô.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que aplicar a imagem corrente e o vetor de movimento de atuador de extremidade candidato como entradas para a rede neural convolucional treinada compreende: aplicar a imagem corrente como entrada para uma camada inicial da rede neural convolucional treinada; e aplicar o vetor de movimento de atuador de extremidade candidato para uma camada adicional da rede neural convolucional treinada, a camada adicional estando a jusante da camada inicial.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que aplicar o vetor de movimento de atuador de extremidade candidato para a camada adicional compreende: passar o vetor de movimento de atuador de extremidade através de uma camada totalmente conectada da rede neural convolucional para gerar saída de vetor de movimento de atuador de extremidade; e concatenar a saída de vetor de movimento de atuador de extremidade com saída a montante, a saída a montante sendo de uma camada imediatamente a montante da rede neural convolucional que fica imediatamente a montante da camada adicional e que fica a jusante da camada inicial e de uma ou mais camadas intermediárias da rede neural convolucional.
10. Método, de acordo com a reivindicação 9, caracterizado pelo fato de que a camada inicial é uma camada convolucional e a camada imediatamente a montante é uma camada de agrupamento.
11. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que compreende adicionalmente: identificar, por um ou mais dos processadores, uma imagem adicional capturada pelo sensor de visão, a imagem adicional capturando o um ou mais objetos ambientais e omitindo o atuador de extremidade robótico ou incluindo o atuador de extremidade robótico em uma posição diferente daquela do atuador de extremidade robótico na imagem corrente; e aplicar a imagem adicional como entrada adicional para a rede neural convolucional treinada.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que aplicar a imagem corrente e a imagem adicional para a rede neural convolucional compreende: concatenar a imagem corrente e a imagem adicional para gerar uma imagem concatenada; e aplicar a imagem concatenada como entrada para uma camada inicial da rede neural convolucional.
13. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que gerar o vetor de movimento de atuador de extremidade candidato compreende: gerar uma pluralidade de vetores de movimento de atuador de extremidade candidatos; e executar uma ou mais iterações de otimização de entropia cruzada na pluralidade de vetores de movimento de atuador de extremidade candidatos para selecionar o vetor de movimento de atuador de extremidade candidato da pluralidade de vetores de movimento de atuador de extremidade candidatos.
14. Sistema, caracterizado pelo fato de que compreende: um sensor de visão observando um ambiente; uma rede neural convolucional treinada armazenada em uma ou mais mídias não transitórias legíveis por computador; pelo menos um processador configurado para: gerar um vetor de movimento de atuador de extremidade candidato definindo movimento para deslocar um atuador de extremidade robótico de uma posição corrente para uma posição adicional; aplicar o vetor de movimento de atuador de extremidade candidato e uma imagem capturada pelo sensor de visão como entradas para a rede neural convolucional treinada, a imagem capturando um atuador de extremidade e pelo menos um objeto em um ambiente do objeto; gerar, através da rede neural convolucional treinada, uma medida de pega bem sucedida do objeto com aplicação do movimento, a medida sendo gerada com base na aplicação da imagem e do vetor de movimento de atuador de extremidade para a rede neural convolucional treinada; gerar um comando de atuador de extremidade com base na medida, o comando de atuador de extremidade sendo um comando de pega ou um comando de movimento de atuador de extremidade; e fornecer o comando de atuador de extremidade para um ou mais acionadores do robô.
15. Método de treinar uma rede neural convolucional, caracterizado pelo fato de que compreende: identificar, por um ou mais processadores, uma pluralidade de exemplos de treinamento gerados com base em saída de sensor de um ou mais robôs durante uma pluralidade de tentativas de pega pelos robôs, cada dos exemplos de treinamento incluindo entrada de exemplo de treinamento compreendendo: uma imagem para uma instância de tempo correspondente de uma tentativa de pega correspondente das tentativas de pega, a imagem capturando um atuador de extremidade robótico e um ou mais objetos ambientais na instância de tempo correspondente, e um vetor de movimento de atuador de extremidade definindo movimento do atuador de extremidade para deslocar de uma posição de instância de tempo do atuador de extremidade na instância de tempo correspondente para uma posição final do atuador de extremidade para a tentativa de pega correspondente, cada dos exemplos de treinamento incluindo saída de exemplo de treinamento compreendendo: uma etiqueta de sucesso de pega indicativa de sucesso da tentativa de pega correspondente; treinar, por um ou mais dos processadores, a rede neural convolucional com base nos exemplos de treinamento.
16. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que a entrada de exemplo de treinamento de cada um dos exemplos de treinamento compreende adicionalmente: uma imagem adicional para a tentativa de pega correspondente, a imagem adicional capturando o um ou mais objetos ambientais e omitindo o atuador de extremidade robótico ou incluindo o atuador de extremidade robótico em uma posição diferente daquela do atuador de extremidade robótico na imagem.
17. Método, de acordo com a reivindicação 16, caracterizado pelo fato de que treinar a rede neural convolucional compreende aplicar, para a rede neural convolucional, a entrada de exemplo de treinamento de um dado exemplo de treinamento dos exemplos de treinamento, em que aplicar a entrada de exemplo de treinamento do dado exemplo de treinamento compreende: concatenar a imagem e a imagem adicional do dado exemplo de treinamento para gerar uma imagem concatenada; e aplicar a imagem concatenada como entrada para uma camada inicial da rede neural convolucional.
18. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que treinar a rede neural convolucional compreende aplicar, para a rede neural convolucional, a entrada de exemplo de treinamento de um dado exemplo de treinamento dos exemplos de treinamento, em que aplicar a entrada de exemplo de treinamento do dado exemplo de treinamento compreende: aplicar a imagem do dado exemplo de treinamento como entrada para uma camada inicial da rede neural convolucional; e aplicar o vetor de movimento de atuador de extremidade do dado exemplo de treinamento para uma camada adicional da rede neural convolucional, a camada adicional estando a jusante da camada inicial.
19. Método, de acordo com a reivindicação 18, caracterizado pelo fato de que aplicar o vetor de movimento de atuador de extremidade para a camada adicional compreende: passar o vetor de movimento de atuador de extremidade através de uma camada totalmente conectada para gerar saída de vetor de movimento de atuador de extremidade e concatenar a saída de vetor de movimento de atuador de extremidade com saída a montante, a saída a montante sendo de uma camada imediatamente a montante da rede neural convolucional que fica imediatamente a montante da camada adicional e que fica a jusante da camada inicial e de uma ou mais camadas intermediárias da rede neural convolucional.
20. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que os exemplos de treinamento compreendem: um primeiro grupo dos exemplos de treinamento gerados com base em saída de uma pluralidade de primeiros sensores de robô de um primeiro robô durante uma pluralidade das tentativas de pega pelo primeiro robô; e um segundo grupo dos exemplos de treinamento gerados com base em saída de uma pluralidade de segundos sensores de robô de um segundo robô durante uma pluralidade das tentativas de pega pelo segundo robô.
21. Método, de acordo com a reivindicação 15, caracterizado pelo fato de que compreende adicionalmente: gerar tentativas de pega adicionais com base na rede neural convolucional treinada; identificar uma pluralidade de exemplos de treinamento adicionais com base nas tentativas de pega adicionais; e atualizar a rede neural convolucional por meio de treinamento adicional da rede convolucional com base nos exemplos de treinamento adicionais.
22. Mídia de armazenamento não transitório legível por computador compreendendo instruções, caracterizada pelo fato de que, quando as instruções são executadas por pelo menos um processador, induzem o pelo menos um processador a executar o método conforme definido em qualquer uma das reivindicações 1 a 13.
BR112018067482-6A 2016-03-03 2016-12-13 Método e sistema de aprendizado de máquina, método de treinar uma rede neural e mídia de armazenamento BR112018067482B1 (pt)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662303139P 2016-03-03 2016-03-03
US62/303,139 2016-03-03
US15/377,280 US10207402B2 (en) 2016-03-03 2016-12-13 Deep machine learning methods and apparatus for robotic grasping
US15/377,280 2016-12-13
PCT/US2016/066393 WO2017151206A1 (en) 2016-03-03 2016-12-13 Deep machine learning methods and apparatus for robotic grasping

Publications (2)

Publication Number Publication Date
BR112018067482A2 BR112018067482A2 (pt) 2019-01-02
BR112018067482B1 true BR112018067482B1 (pt) 2023-06-13

Family

ID=

Similar Documents

Publication Publication Date Title
US11548145B2 (en) Deep machine learning methods and apparatus for robotic grasping
US11045949B2 (en) Deep machine learning methods and apparatus for robotic grasping
US11717959B2 (en) Machine learning methods and apparatus for semantic robotic grasping
US11607807B2 (en) Machine learning methods and apparatus for automated robotic placement of secured object in appropriate location
US10166676B1 (en) Kinesthetic teaching of grasp parameters for grasping of objects by a grasping end effector of a robot
US9616568B1 (en) Generating a grasp affordance for an object based on a thermal image of the object that is captured following human manipulation of the object
CN111085997A (zh) 基于点云获取和处理的抓取训练方法及系统
BR112018067482B1 (pt) Método e sistema de aprendizado de máquina, método de treinar uma rede neural e mídia de armazenamento