Melhor resposta
A resposta mais simples seria C ++ e Python .
Todos os projetos de robótica em que trabalhei são executados em qualquer uma dessas plataformas, de uma forma ou de outra. No entanto, essa seria uma resposta incompleta sem mostrar a imagem real do que acontece na robótica.
Sistema operacional:
- C ++ e Python são definitivamente a linguagem de programação que você usa no final. No entanto, os códigos da maioria dos robôs hoje em dia vivem dentro de um sistema operacional chamado ROS (Robot Operating System). O ROS fornece uma arquitetura de software elegante para facilitar o controle e o planejamento do robô. Existem esses programas de nós diferentes que você escreve que podem publicar certas informações que podem ser usadas por outros nós que vivem dentro de ROS . Por exemplo, o nó de localização que estima a posição de um drone no mundo 3D publicaria essas informações para outros nós usarem. Um nó do planejador de trajetória pode então se inscrever nesses nós para obter esses dados para avaliar o próximo caminho para o drone. Cada um desses nós são códigos C ++ ou Python simples.
Programação para pesquisa robótica:
- Simulação : quase todas as simulações e testes rigorosos na fase de pesquisa são feitos primeiro em MATLAB antes de ser convertido para um código C ++ ou Python . Isso ocorre por causa das ferramentas de visualização elegantes e funções pré-escritas práticas que a plataforma oferece. Os códigos MATLAB também podem ser integrados com ROS .
Programação para cognição visual:
- Modelos de aprendizado de máquina : se o robô usa algum tipo de aprendizado de máquina ou técnicas de aprendizado profundo, eles são primeiro treinados com plataformas como Tensorflow, Keras, PyTorch etc e depois o treinado os modelos são transferidos para ROS como um nó. Por exemplo, um drone de busca e resgate usaria um modelo de detecção humana como um nó ROS que se inscreve no nó da imagem bruta da câmera e publica toda a detecção humana. li>
- Processamento de imagem : OpenCV é uma ferramenta de processamento de imagem amplamente usada que pode ser integrado com C ++ ou Python dentro de ROS . Um robô de futebol, por exemplo, precisaria deste módulo para detectar todas as bolas coloridas na imagem.
Programação para hardware de robótica:
- Programação de hardware : para nível de hardware FPGA programação, verilog ou VHDL é usado.
- Firmware ou microcontroladores : AVR programação para ATMEGA chips é amplamente utilizado se você deseja ter um controle mais eficiente e sofisticado do hardware. Uma opção mais fácil é usar o micro controlador Arduino , que usa um wrapper em torno da linguagem C . É bastante simples programar no Arduino para rodar um servo motor ou controlar um driver de motor.
- Computadores de placa única : Se você precisar de mais memória e poder de processamento do que o fornecido pelo Arduino ou Atmega , você deve usar Raspberry Pi ou Beagle Board . Ambos são compatíveis com Ubuntu integrado com Python ou C ++ em ROS , tornando sua vida mais fácil!
No final, tudo se resume a Python, C ++ e MATLAB em uma plataforma ROS . ROS acabou de conquistar o campo da robótica tanto que a maioria das novas ferramentas de programação robótica interessantes nascem como ROS pacotes.
Resposta
Talvez o roteiro que criei irá ajudá-lo em sua jornada para aprender robótica. Eu vejo essa pergunta sendo feita com frequência.
O roteiro tem 4 níveis e cada nível se concentra em 4 conceitos principais.
Nível de aquecimento
- Aprenda codificação: comece a escolher pelo menos uma linguagem de programação útil. O IDE do Arduino é bom.Python é ótimo. C / C ++ será fantástico. Minha sugestão seria Python . Existem vários motivos para isso e mais tarde no roteiro você verá o porquê.
- Aprenda eletrônica: Comece a construir circuitos . Pode ser tão simples quanto acender um LED. Em seguida, acenda mais LEDs. Faça um sinal de trânsito simples. Implemente interruptores. Aprenda as idéias teóricas por trás de como funcionam os circuitos de tensão, corrente, resistores, transistores, série e paralelo. Explore sensores e servo motores também!
- Aprenda a montagem básica: Quando crianças, adorávamos fazer brinquedos e construir coisas. Faça o mesmo aqui. Aprenda a fazer algumas estruturas básicas usando madeira, acrílico, fibra ou plástico.
- Integre com microcontrolador: Com conhecimento do acima conceitos, você deve tentar e testá-los em um microcontrolador básico. Afinal, você quer que seu circuito “reaja”. A escolha mais popular entre amadores e iniciantes é ir com o Arduino . O Arduino realmente simplificou o processo de codificação e implementação de circuitos reacionários básicos.
(Recursos: YouTube, Khan Academy, Code, Coursera, Udemy)
Nível iniciante
- Aprenda Programação Orientada a Objetos: Não é importante apenas codificar em robótica, mas também como codificar bem . A programação orientada a objetos (OOP) é um músculo tremendo para crescer e quanto mais cedo você puder fazer isso, mais você se agradecerá no futuro. OOP não é exclusivo do Python. No entanto, em Python você pode implementá-los facilmente e praticar. Através do OOP, você aprenderá sobre classes, métodos, herança, etc. e esta é uma excelente técnica para escrever códigos funcionais, modulares e eficientes.
- Aprenda física, probabilidade e álgebra linear: À medida que você está passando de um roboticista infantil a um adolescente, é importante que você também saiba como a robótica é escrita, lida e falada por outras pessoas na comunidade. Esta linguagem de robótica usa fortemente física, probabilidade e álgebra linear. Sim, você pode não gostar dessas matérias na escola ou universidade, mas acredite em mim, se você for sério sobre robótica. Você não pode ter visão computacional sem saber sobre matrizes. Você não pode fazer o planejamento de caminhos sem saber sobre física. Você não pode fazer inteligência artificial ou aprendizado de máquina sem saber sobre probabilidade.
- Conhecimentos de informática mais envolvidos: Agora, o que quero dizer com isso? Muitos novatos na robótica ficam perplexos (eu também!) Que precisam aprender este novo sistema operacional de aparência alienígena que tem um pinguim em algum lugar próximo a ele. Estou falando sobre o sistema operacional Linux . É imperativo que quem deseja se aprofundar na robótica se familiarize com o Linux. Muitas bibliotecas, pacotes e softwares desenvolvidos para robótica são distribuídos de forma muito fácil e eficiente em ambientes Linux. Escolha popular do sistema operacional Linux: Ubuntu
- Sistemas incorporados: Agora que você desenvolveu um melhor conhecimento de codificação, circuitos, conceitos teóricos e familiaridade com o Linux, precisamos implementá-los em um computador menor que o nosso laptop. Então vá em frente e experimente conceitos de nível de aquecimento junto com os conceitos acima em um minicomputador como Raspberry Pi ou BeagleBone. Conecte alguns sensores, servos e uma câmera a um desses min-computadores e escreva algum código para sentir, mover e detectar coisas!
(Recursos: YouTube, Khan Academy, Code, Coursera, MIT OCW)
Nível intermediário
- Desenvolva fundamentos teóricos: aqui dependendo de em qual área da robótica você está interessado, você precisa aprender mais sobre a teoria por trás dela. Saiba mais sobre manipulação de braço robótico (cinemática e controle), percepção (visão computacional, álgebra linear , matrizes), aprendizado de máquina / inteligência artificial (probabilidade, estatística, matemática). Você vê como alguns dos conceitos anteriores são fundamentais para essas áreas centrais da robótica?
- Use bibliotecas avançadas: Agora você precisa implementar a máquina algoritmos de aprendizagem e / ou visão computacional em seu robô. Afinal, o robô deve ser capaz de ver, pensar e aprender, certo?No Python, existem incríveis bibliotecas escritas para implementar o aprendizado de máquina e algoritmos de visão computacional, por exemplo, fluxo tensor e OpenCV. Da mesma forma, muita IA também pode ser praticada em Python. Claro que você pode fazer o mesmo em C / C ++. No entanto, estou tentando mantê-lo consistente aqui.
- Familiarize-se com ROS: Com o conhecimento de todos os itens acima, um excelente O middleware que se deve aprender é o Sistema Operacional do Robô (ROS). Pode ser um pouco complicado de entender no início. No entanto, o ROS abre suas portas para testar algoritmos avançados e simulações em robôs que você nem mesmo tem! Quer pilotar um quadricóptero? Ou navegar em um robô de forma autônoma em um mapa? Que tal fazer um braço industrial pegar um objeto? Você pode fazer isso no ROS por meio de seu ambiente de simulação chamado Gazebo.
- Mais CAD: Você pode estar interessado em desenvolver e projetar robôs complexos. Comece a aprender software de design 3D , como Blender ou SolidWorks, para que você possa projetar seus próprios robôs.
Nível de especialista
- Continue aprendendo e crescendo: cada conceito mencionado acima é infinito por sua própria virtude, e para se tornar um especialista em robótica, você precisará investir tempo e continuar aprendendo. Você perceberá que precisa aprender mais classificadores ou modelos para detectar melhor objetos / imagens. Ou você pode precisar aprender mais sobre algoritmos de controle para otimizar suas soluções.
- Mais software / hardware: dependendo de sua área de interesse e especialização, você estará fazendo cada vez mais de codificação, desenvolvimento algorítmico, ROS e / ou design robótico.
Por último, definitivamente não sou um especialista e, portanto, não posso acrescentar muito a isso . O que posso dizer com certeza é que não sei o que não sei. Uma coisa importante a lembrar é: comece e seja consistente =)