Na semana passada, descobrimos como o lendário algoritmo de coordenação da marcha BigDog funciona. O robô ainda não era autônomo e só podia atravessar o terreno sob o controle do operador.
A maioria dos leitores da última vez endossou a ideia de uma nova tradução - sobre como o BigDog aprendeu a seguir de maneira independente o caminho certo e navegar no espaço. Bem, na verdade, aqui está ele. O sistema de navegação BigDog usa uma combinação de varredura a laser planar, visão estéreo e percepção proprioceptiva. Com sua ajuda, a localização do robô no mundo circundante é determinada. Ela descobre obstáculos e os coloca em um modelo bidimensional do mundo. Então ela planeja o caminho e controla o robô para seguir o caminho escolhido. O planejador de caminhos é uma variação do algoritmo de busca clássico A *. O algoritmo de suavização processa os resultados e os passa para o algoritmo de seguimento de caminho. Ele calcula os comandos de direção do BigDog.
O sistema descrito foi testado em uma zona florestal com muitas árvores, pedregulhos e vegetação rasteira. Além dos territórios planos, também possuía declives (ângulos de até 11 graus). Foram realizados 26 testes, dos quais 88% foram bem sucedidos. O robô "viu" o terreno em um raio de 130 metros ao se mover a uma determinada velocidade e superou mais de 1,1 km.
Equipamento
1) Sensores proprioceptivosUsado para controlar a marcha do BigDog e a navegação autônoma. Cada um dos 16 graus de liberdade ativos e 4 passivos do robô está equipado com um sensor. Eles fornecem dados sobre a posição atual e a carga. Esta informação é combinada com os dados da IMU para avaliar o estado de contato com o solo, a altura do corpo, a velocidade do corpo. Além disso, vários sensores indicam o estado dos sistemas de propulsão, computação, hidráulico, térmico e outros sistemas BigDog.
Sensores BigDog: a) antena GPS; b) lidar; c) câmera estéreo Bumblebee; d) IMU da Honeywell; e) sensores de juntas.2) sensores exteroceptivosO robô está equipado com quatro sensores externos: o SICK LMS 291 lidar, a câmera estéreo Bumblebee PointGrey, o receptor GPS NovAtel e a IMU da Honeywell. Os dados deles entram no sistema mostrado no diagrama abaixo.
3) ComputadoresPara implementar o sistema com o diagrama acima, dois computadores são usados. O computador principal do BigDog é um PC104 com um processador Intel Pentium M de um núcleo (1,8 GHz). Ele interage com sensores proprioceptivos, controla o equilíbrio e o movimento do robô, calcula o modelo atual do ambiente e o caminho através dele e também controla a marcha.
O Vision é fornecido por um computador separado com um processador Intel CoreDuo (1,7 GHz). Ele se comunica com um par de câmeras, detecta inconsistências, avalia a odometria visual e suporta um mapa 3D do terreno. Este computador transmite os dados do mapa e da odometria visual para o computador host a uma frequência de 15 Hz através da rede local integrada.
A vantagem desse sistema é a capacidade de simplificar a tarefa de planejamento dividindo-a em duas partes. Os dados do lidar e dos sensores são tridimensionais, mas podemos confiar na autoestabilização do sistema de controle da marcha para abandonar a percepção e o planejamento 3D mais complexos.
Abordagem técnica
Em nossa abordagem técnica geral, usamos dados de dois sensores ambientais para detectar obstáculos, calcular o caminho através ou ao redor de obstáculos e comandar o sistema de controle de marcha do robô para seguir um determinado caminho.
Todo o processo pode ser dividido em três etapas. Primeiro, as imagens do lidar e da câmera são processadas para obter uma lista de pontos indicando obstáculos no ambiente. Então esses pontos são divididos em objetos disjuntos e rastreados por algum tempo. Além disso, esses objetos são combinados na memória temporária para mapeamento. Este gráfico é usado para planejar a direção da viagem para um destino intermediário. O planejador é projetado para controlar se as trajetórias do BigDog estão à distância adequada dos obstáculos e que as trajetórias são estáveis no espaço durante as iterações do planejador. O algoritmo de movimento ao longo de uma determinada trajetória força o robô a seguir o caminho pretendido, enviando comandos de velocidade ao sistema de controle da marcha. Ela alternadamente move os membros do robô.
A. Coleta de informações
1) Avaliação da situaçãoExistem duas fontes de informação odométrica: sensores cinemáticos nas pernas e um sistema de visão artificial. Os dados obtidos a partir deles são combinados para avaliar a localização do robô.
O sistema odométrico usa informações cinemáticas das pernas para calcular os movimentos do robô. E o sistema de odometria visual monitora as características visuais para calcular o movimento. Ambas as ferramentas usam um módulo de medição inercial (IMU) como fonte de informação para orientação espacial. Um medidor geral combina a saída desses dois odômetros, com foco na odometria visual em baixas velocidades e na cinemática em velocidades mais altas. A combinação desses dois indicadores elimina as deficiências de cada um dos contadores: a possível falha dos sistemas estéreo, a deriva das leituras do odômetro localizadas nos membros durante a execução no local, bem como os erros desse sensor ao longo do eixo vertical.
O lidar usado no robô BigDog produz uma nova imagem a cada 13 milissegundos. Cada imagem é transformada em um sistema de coordenadas externo com o centro na localização do robô. Nesse caso, são usadas informações sincronizadas com tempo do contador de locais. A nuvem de pontos 3D resultante é então transmitida para processamento pelo algoritmo de segmentação descrito abaixo. Da mesma forma, o sistema de visão estereoscópica coleta mapas de não conformidade por algum tempo para criar um mapa 3D do terreno em um quadrado de 4 x 4 metros centrado no robô. O filtro espacial determina as áreas de mudanças significativas de altitude (ou seja, obstáculos em potencial) e transmite uma lista de pontos pertencentes a essas áreas para o algoritmo de segmentação de nuvens de pontos.
2) Segmentação de nuvem de pontos e rastreamento de objetosDevido a irregularidades da terra e aos movimentos do robô, parte dos dados do scanner lidar incluirá imagens da terra. Os reflexos de longos obstáculos (como paredes) têm aparência semelhante aos reflexos da superfície da Terra. Para uma operação bem-sucedida, o sistema deve interpretar essas reflexões de forma que possa controlar o robô perto das paredes e não ter "medo" da terra. O primeiro passo nesse processo é a segmentação dos pontos de obstáculo fornecidos pelo lidar e o mapa do terreno em objetos separados. Nuvens de pontos 3D raras são segmentadas em objetos, mesclando pontos individuais separados por uma distância inferior a 0,5 metros.
Objetos obtidos graças ao algoritmo de segmentação são rastreados por algum tempo. Para realizar essa tarefa, usamos um algoritmo iterativo ganancioso com restrições heurísticas. O objeto na imagem atual coincide com o objeto mais próximo da última imagem, desde que os objetos sejam separados por uma distância não superior a 0,7 metros.
Devido ao fato de as nuvens de pontos serem segmentadas em objetos e rastreadas por algum tempo, o robô pode se mover adequadamente no ambiente, com desníveis moderados da terra e vários tipos de obstáculos: árvores, paralelepípedos, troncos caídos, paredes. Árvores e paredes são determinadas principalmente por um scanner lidar e pedras e troncos são determinados por um sistema de visão estereoscópico.
Uma sequência de ilustrações mostrando um robô (retângulo amarelo) com: a) dados de um lidar (pontos azuis) gravados em alguns segundos; b) suas respectivas instalações. Objetos altos e marrons são árvores. As reflexões do solo são mostradas transparentes e planas. O cilindro verde é o objetivo; a linha azul do caminho calculado leva a ele. c) Vista superior do cartograma: as áreas com o menor valor letal são indicadas em verde e as áreas com o maior valor são indicadas em roxo. Cada unidade de grade corresponde a 5 metros.B. Planejamento de navegação
Nossa abordagem para resolver o problema de navegação é geralmente aceita na comunidade robótica. Os pontos de obstáculo (obtidos devido aos processos de percepção) são plotados em um cartograma com o centro na localização do robô. O alvo final do robô é projetado na borda do cartograma, e uma variante do algoritmo A ∗ é aplicada a ele. Este processo é repetido aproximadamente uma vez por segundo.
1) Memória de obstáculos rastreadosDevido ao campo de visão limitado dos dois sensores do robô, é imperativo que o robô mantenha uma memória precisa dos obstáculos que não pode mais ver. Como a lista de objetos é fornecida pelo sistema de rastreamento de objetos, objetos individuais são adicionados, atualizados ou excluídos na memória do objeto do sistema de planejamento. O tamanho da lista de objetos é limitado; portanto, quando novos objetos são adicionados a ela, outros devem ser excluídos.
Denotando a lista atual de objetos da variável O, podemos calcular duas subclasses parametrizadas de O:
Aqui a idade (q) é a diferença entre a hora atual e a hora da última medição do objeto q,
norma (q, r) inf - a distância mínima entre a localização atual do robô e os limites do objeto q.
Os objetos são excluídos de O pelos seguintes critérios:- O conjunto {P (30) ∩ Q (15)} é subtraído de O. Estes são objetos com mais de 30 segundos e localizados a menos de 15 metros do robô.
- O conjunto {P (1800) ∩ Q (10)} é subtraído de O. Esses são objetos com mais de meia hora e localizados a menos de 10 metros do robô.
- Os objetos são removidos de O quando o limite da lista é atingido. A prioridade do objeto é determinada pelo tempo durante o qual ele foi rastreado com sucesso pelo rastreador. Em outras palavras, os objetos que o robô "olhou" por mais tempo são armazenados por mais tempo na memória.
- No entanto, nenhum objeto rastreado nos 10 segundos anteriores é descartado.
Essa alocação de recursos de memória leva ao seguinte comportamento: quando os objetos deixam o campo de visão dos sensores do robô, esquecem os objetos e objetos excluídos que não foram vistos várias vezes. Objetos à vista ou inacessíveis, mas localizados próximos ao robô, não são esquecidos.
2) Criando um cartogramaUsamos um cartograma criado com base em uma grade 2D para representar o ambiente ao redor do robô. Em vez de criar dinamicamente um cartograma (à medida que o robô recebe novas informações ambientais), um novo cartograma é compilado a cada iteração do planejamento e preenchido com objetos da memória do agendador. Daqui resulta que o planejador de rotas dinâmico não pode ser usado em vez do algoritmo A *. Como assumimos que o tamanho dos objetos é limitado (que a ausência de um beco sem saída no ambiente é mais da metade do mapa), o escopo da tarefa de planejamento e o tempo para calcular o caminho são pequenos.
O cartograma é preenchido com valores da lista de objetos de acordo com o seguinte algoritmo:
As células onde os objetos estão localizados recebem um valor letal muito alto. O indicador para as células próximas ao objeto é definido de acordo com a função f, que leva em consideração a distância atual até esse ponto. Para os resultados dos testes apresentados aqui, f era simplesmente o cubo inverso da distância.
O efeito dessa abordagem é que ela diminui gradualmente das células com um valor muito alto à medida que se afasta delas (e dos objetos que elas designam).
3) Estabilidade do caminhoPara garantir que não "controlemos" o BigDog de maneira aleatória e sistemática, é dada atenção especial à estabilidade do caminho planejado. Deve ser o mais estável possível através das iterações do planejador de caminho. Isso é fornecido de três maneiras.
Primeiro, o ponto de partida passado para o algoritmo A * não é a posição atual do robô, mas a projeção de sua posição no ponto final do caminho indicado anteriormente pelo algoritmo A * (vamos chamar esse ponto p). Desde que o BigDog siga o caminho planejado, ele pode se desviar um pouco dele de lado. Ao projetar o ponto de partida no ponto do cálculo anterior do algoritmo A *, filtramos a flutuação da posição do robô e os caminhos exibidos pelo planejador se tornam mais estáveis. Se o robô se desviar do caminho mais do que o valor definido (por padrão é de 3 metros), o ponto p é simplesmente transferido para a posição atual do robô.
Em segundo lugar, para verificar a continuidade do planejador de trajetos, calculamos q - a projeção da posição do robô de 2,5 segundos no passado até o último ponto calculado pelo algoritmo A *. Em seguida, o segmento do último caminho planejado de q até p é adicionado ao cálculo do novo caminho. Como resultado, o robô rastreia uma pequena distância já percorrida. Graças a isso, o algoritmo para seguir o caminho se mostra melhor com violações significativas da posição, que são frequentemente encontradas por robôs em pé.
Em terceiro lugar, algum histórico dos caminhos planejados é armazenado na memória do robô. Esses caminhos são usados para reduzir os valores dessas células do cartograma onde o robô já foi, enquanto aumentam o valor das células na área circundante. Portanto, como regra, um novo caminho planejado na mesma direção repetirá o caminho já percorrido pelo robô (mas sem uma garantia estrita disso).
4) Suavização de caminhoO caminho calculado, uma vez que é baseado em uma grade regular, é um pouco irregular. Mudanças significativas de direção podem causar comandos de controle indesejados. Para evitar isso, o algoritmo de suavização De Boer é aplicado.
Além disso, o planejamento de caminhos com base em grade geralmente leva a caminhos tecnicamente ideais, mas menos desejáveis para o destino. Resolvemos esse problema calculando um caminho suavizado para cada iteração do planejador. Para iterações subsequentes, é atribuído um valor mais baixo às células do cartograma onde o caminho suavizado é executado. Isso fornece um caminho mais direto e suave para a meta.
C. Controle da marcha: mobilidade e equilíbrio
O sistema de planejamento de navegação determina um novo caminho aproximadamente uma vez por segundo. Um algoritmo para seguir um caminho que opera com uma frequência de 200 Hz guia o robô de acordo com o último caminho planejado. Esse algoritmo cria um conjunto de comandos na forma das velocidades corporais desejadas, incluindo velocidade para frente, velocidade lateral e taxa de guinada corporal. Essas velocidades são transmitidas ao controlador de marcha, que controla o movimento das pernas.
Com base na distância entre o robô e o caminho, uma das três estratégias é usada. Se o robô estiver localizado próximo a uma seção do caminho, ele começará a se mover na diagonal até entrar de lado, movendo-se a toda velocidade. Se o robô estiver longe do caminho, ele será direcionado exatamente para o ponto desejado. Em uma posição intermediária, uma combinação dessas estratégias é usada.
Uma descrição detalhada dos algoritmos de controle da marcha está além do escopo deste artigo. No entanto, como regra, as velocidades corporais atuam como entradas de controle para os controladores de marcha BigDog de baixo nível. O controlador de marcha produz comandos de força e posição para cada articulação para garantir estabilidade, responde a anormalidades e fornece as velocidades corporais necessárias. Embora os cálculos do algoritmo do investigador de caminho possam ser usados para qualquer marcha do BigDog, o trote é ideal devido à velocidade e à capacidade de atravessar terrenos acidentados.
Resultados dos testes de campo
O sensor e o sistema de navegação descritos acima foram instalados no BigDog e testados fora do laboratório. Os testes foram realizados em uma área onde havia muitas árvores, pedregulhos, vegetação rasteira, morros com declives de até 11 graus. A Figura 1 mostra exemplos de paisagens. A Figura 2 mostra os dados do lidar processados pelo robô.
Fig. 1. O terreno onde os testes foram realizadosFig. 2. Teste, vista superior. Imagem recebida das câmeras lidar e estéreo. Áreas escuras são árvores e outros obstáculos. O tamanho da malha é de 5 metros.O sistema de navegação e o planejador foram desenvolvidos durante um período de 7 meses, com testes regulares uma vez a cada cinco semanas. Os resultados de testes recentes são descritos aqui.
Dos 26 testes realizados, 23 terminaram com sucesso: o robô atingiu a meta, não encontrou nenhum dos obstáculos e não estava perto disso. Os resultados desses testes estão marcados na tabela dinâmica como meta. O robô caiu no final de apenas um teste depois de pisar em uma pequena pedra. Normalmente, o sistema de controle da marcha lida com essas situações, mas não desta vez (o resultado é marcado na tabela como Queda - “Queda”). Em três testes, o robô encontrou grandes obstáculos (mais de 20 metros de largura). O robô calculou qual lado é melhor para contornar o obstáculo e não avançou em um determinado período de tempo (20 segundos). Obstáculos desse tamanho vão além do escopo para o qual um sistema autônomo foi desenvolvido. Os resultados desses testes são indicados na tabela como Live-lock.

Nestes 26 testes, o robô foi colocado em cenários bastante semelhantes e no meio da floresta. À medida que o ambiente se torna mais complexo, o número de resultados do Live-lock aumenta e o robô seleciona caminhos menos eficientes.
Mais interessante - em robo-hunter.com :
Nosso canal do YouTube