A robótica conta com uma vasta gama de algoritmos que abrangem várias áreas principais. Aqui está um colapso de alguns dos mais importantes:
1. Percepção/detecção: Algoritmos que permitem ao robô entender seu ambiente através de sensores.
*
Visão computacional: *
Detecção de objeto: YOLO, SSD, R-CNN mais rápido, Mask R-CNN, Transformers (Detr, Deformable Detr)-Identificando e localizando objetos em imagens/vídeo.
*
Segmentação da imagem: U -Net, Deeplab - Dividindo uma imagem em regiões significativas, atribuindo um rótulo a cada pixel.
*
Detecção e correspondência de recursos: SIFT, Surf, Orb - Encontrando recursos distintos em imagens para corresponder em diferentes pontos de vista e condições.
*
Estrutura do movimento (SFM): Reconstruindo a estrutura 3D de uma série de imagens 2D.
*
Visual Slam (localização e mapeamento simultâneo): ORB-SLAM, DSO-SLAM-Construindo simultaneamente um mapa do meio ambiente e determinando a localização do robô dentro desse mapa usando a visão.
*
Fluxo óptico: Lucas -Kanade, Farneback - Estimando o movimento dos objetos e o próprio robô com base nas mudanças nos recursos visuais.
* estimativa de profundidade: Visão estéreo, estimativa de profundidade monocular com aprendizado profundo (por exemplo, usando transformadores).
* Processamento
Lidar: *
Point Cloud Registration: ICP (ponto mais próximo iterativo), ransac - nuvens de ponto de alinhamento de várias varreduras para criar um modelo 3D completo.
*
Reconhecimento e classificação de objetos: PointNet, PointNet ++, DGCNN - Processando diretamente os dados da nuvem de pontos para identificar e classificar objetos.
*
Segmentação: Crescimento da região, ajuste de avião, segmentação de nuvem de pontos profundos baseados em aprendizado.
*
lidar slam: LAM (odometria e mapeamento LIDAR), LEGO -LOAM - semelhante ao visual SLAM, mas usando dados LIDAR.
*
Mapeamento da grade de ocupação: Representando o ambiente como uma grade em que cada célula indica se está ocupada ou livre.
*
Fusão do sensor: Combinando dados de vários sensores para obter uma percepção mais precisa e robusta do ambiente.
* Filtro de Kalman: Estimando o estado de um sistema (por exemplo, posição e velocidade do robô) combinando dados do sensor barulhento com um modelo dinâmico. Filtro Kalman estendido (EKF), filtro Kalman sem perfume (UKF) são variações para sistemas não lineares.
*
Filtragem bayesiana: Uma estrutura geral para combinar conhecimento prévio com dados do sensor para atualizar crenças sobre o ambiente. Os filtros de partículas são uma implementação específica.
* filtro complementar: Misturando a saída de diferentes sensores com base em suas características de frequência (por exemplo, usando acelerômetro para movimento de alta frequência e giroscópio para orientação a longo prazo).
2. Localização e mapeamento: Algoritmos que permitem ao robô conhecer sua posição e criar uma representação de seus arredores. Muitas vezes se sobrepõe à percepção.
*
slam (localização e mapeamento simultâneos): Como mencionado acima, o Visual e o Lidar Slam são críticos. Os principais algoritmos incluem:
*
ekf slam: Uma abordagem inicial usando o filtro Kalman estendido.
*
SLAM baseado em gráfico: Representando o mapa como um gráfico em que os nós são poses e bordas de robôs são restrições entre poses. G2O, Solver Ceres são bibliotecas de otimização comuns.
*
filtro de partículas Slam (Fastslam): Usando um conjunto de partículas (hipóteses) para representar as possíveis poses e mapas do robô.
* Gráficos de fator
: Uma generalização do slam do gráfico que permite uma modelagem mais flexível de ruído e restrições do sensor.
*
somente localização: *
Monte Carlo Localização (MCL): Usando um filtro de partículas para estimar a pose do robô, dada um mapa conhecido.
*
AMCL (localização adaptativa de Monte Carlo): Uma extensão do MCL que pode adaptar o número de partículas com base na incerteza na pose do robô.
*
GPS (sistema de posicionamento global): Para ambientes externos onde o sinal GPS está disponível. Frequentemente fundido com outros sensores.
*
mapeamento: *
Mapeamento da grade de ocupação: Construindo um mapa probabilístico do meio ambiente.
*
Mapeamento baseado em recursos: Criando um mapa de recursos salientes no ambiente (por exemplo, cantos, bordas).
*
Mapeamento topológico: Representando o ambiente como um gráfico de lugares e conexões entre eles. Útil para navegação de alto nível.
*
Mapeamento semântico: Aumentando o mapa com informações semânticas sobre os objetos e lugares do ambiente (por exemplo, "cozinha", "mesa", "pessoa").
3. Planejamento e navegação: Algoritmos para determinar o melhor caminho para o robô seguir para atingir uma meta.
*
Planejamento de caminho: *
a* pesquisa: Um algoritmo de pesquisa de gráficos que encontra o caminho mais curto de um início para uma meta, usando uma heurística para orientar a pesquisa.
*
Algoritmo de Dijkstra: Outro algoritmo de pesquisa de gráficos que encontra o caminho mais curto, mas sem uma heurística.
*
rrt (árvore aleatória com exploração rápida): Um algoritmo que constrói uma árvore de caminhos possíveis, amostrando aleatoriamente o espaço de configuração. RRT*, RRT* informado são variantes que melhoram o desempenho.
*
Prm (Roteiro Probabilístico): Um algoritmo baseado em amostragem que constrói um roteiro do ambiente, que pode ser usado para planejar caminhos entre dois pontos.
*
Campos potenciais: Criar um campo potencial artificial em que o objetivo é atraente e os obstáculos são repulsivos. O robô segue o gradiente do campo.
*
Otimização de trajetória: Formulando o problema de planejamento do caminho como um problema de otimização e resolvendo -o usando técnicas como descida de gradiente ou programação quadrática sequencial. Chomp, Trajopt.
*
Planejamento de movimento: Considera a dinâmica e as restrições do robô (por exemplo, velocidade, aceleração, limites da articulação) ao planejar um caminho. Geralmente usa otimização de trajetória.
* Navegação:
*
Controle PID: Um algoritmo de controle amplamente usado para regular o movimento do robô. Termos proporcionais, integrais e derivados.
*
Controle preditivo do modelo (MPC): Uma técnica de controle avançado que otimiza a trajetória do robô sobre um horizonte finito, levando em consideração a dinâmica e as restrições do robô.
* Aprendizagem de reforço
: Treinando o robô para navegar em um ambiente por meio de tentativa e erro. Q-learning, Deep Q-Networks (DQN), Otimização de Política Proximal (PPO). Particularmente útil para ambientes dinâmicos e complexos.
*
Robótica baseada em comportamento: Projetando o comportamento do robô como uma coleção de módulos reativos que respondem a diferentes entradas de sensores. Arquitetura de subsunção.
*
Planejamento de tarefas: Planejamento de nível superior que envolve dividir uma tarefa complexa em uma sequência de ações. Redes de tarefas hierárquicas (HTNS).
4. Controle: Algoritmos para executar o caminho planejado e manter a estabilidade.
*
Controle PID: (Como mencionado acima, também usado na navegação).
*
Controle de feedforward: Usando um modelo do sistema para prever as entradas de controle necessárias.
*
Estimativa de estado: (Filtros Kalman, etc.) Estimando o estado interno do robô (posição, velocidade, etc.) a partir dos dados do sensor. Isso é crucial para o controle de feedback.
*
Controle de força: Controlar as forças exercidas pelo robô no meio ambiente. Posição híbrida/controle de força, controle de impedância, controle de admissão. Importante para tarefas de manipulação.
*
Controle adaptativo: Ajustando os parâmetros de controle em tempo real para compensar as mudanças no ambiente ou a dinâmica do robô.
*
Controle robusto: Projetar controladores insensíveis a incertezas e distúrbios.
*
Controle não linear: Técnicas para controlar robôs com dinâmica não linear. Controle do modo de deslizamento, backstepping.
5. Manipulação: Algoritmos para agarrar, manipular e montar objetos.
*
Grasping: *
Planejamento de compreensão: Determinando a melhor maneira de entender um objeto com base em sua forma e na garra do robô.
*
Fechamento de força: Garantir que o alcance seja estável e possa resistir às forças externas.
*
entender as métricas de qualidade: Avaliando a qualidade de uma compreensão com base em fatores como estabilidade, robustez e destreza.
*
Aprendizagem profunda para agarrar: Treinando redes neurais para prever o GRASP Poses diretamente de imagens ou nuvens de ponto. GRASPNET, DEX-NET.
*
planejamento de movimento para manipulação: *
Planejamento baseado em amostragem: (RRT, PRM) Planejando a moção do braço do robô, evitando colisões com o meio ambiente e o objeto que está sendo manipulado.
*
Otimização de trajetória: Otimizando a trajetória do robô para minimizar o consumo de energia ou o tempo de execução.
*
Controle de força para manipulação: (Como mencionado acima)
* Planejamento da Assembléia: Planejando a sequência de ações necessárias para montar um objeto complexo.
*
manipulação dexterosa: Algoritmos para usar vários dedos ou braços para executar tarefas complexas de manipulação.
6. Aprendizado de máquina e inteligência artificial: * Aprendizagem de reforço
: (Como mencionado acima)
* Aprendizagem supervisionada: Modelos de treinamento para prever o comportamento do robô ou classificar dados do sensor.
* Aprendizagem não supervisionada: Descobrindo padrões em dados do sensor sem exemplos rotulados.
*
Aprendizagem profunda: Usando redes neurais profundas para percepção, planejamento e controle.
*
Aprendizagem de imitação: Treinar um robô para imitar o comportamento de um demonstrador humano.
*
Modelos generativos: Criando modelos que podem gerar novos dados (por exemplo, imagens, nuvens de pontos) para simulação ou aumento de dados. Gans, Vaes.
*
Processamento de linguagem natural (NLP): Permitindo que os robôs entendam e respondam aos comandos de linguagem natural.
Considerações importantes: *
Desempenho em tempo real: Muitos algoritmos de robótica precisam ser executados em tempo real para serem úteis.
*
Robustez: Os algoritmos precisam ser robustos ao ruído, incerteza e mudanças no ambiente.
*
Complexidade computacional: A complexidade computacional do algoritmo precisa ser considerada, especialmente para robôs com poder de processamento limitado.
*
integração: Diferentes algoritmos precisam ser integrados juntos para criar um sistema robótico completo.
*
simulação: A simulação é frequentemente usada para desenvolver e testar algoritmos de robótica antes de implantá -los em robôs reais. Gazebo, V-Rep/Coppeliasim, Pybullet são ambientes de simulação comuns.
*
estruturas e bibliotecas: O ROS (Robot Operating System) é uma estrutura amplamente usada que fornece uma coleção de ferramentas e bibliotecas para o desenvolvimento de software de robótica. OpenCV (para visão computacional), PCL (Point Cloud Library), Tensorflow, Pytorch (para aprendizado de máquina) também são essenciais.
Esta lista não é exaustiva, mas fornece uma boa visão geral dos principais algoritmos usados na robótica. Os algoritmos específicos usados em um robô específico dependerão da tarefa, ambiente e hardware do robô. O campo da robótica está em constante evolução, portanto, novos algoritmos e técnicas estão sendo desenvolvidos o tempo todo.