Um simulador de robótica é utilizado para criar aplicações embarcadas para um robô sem depender de uma máquina física, economizando tempo e custo. Em alguns casos, estas aplicações podem ser transferidas para o robô real (ou recompiladas) sem modificações.
O termo simulador de robótica pode se referir a diferentes aplicações de simulação na robótica. Por exemplo, na robótica móvel, simuladores de robótica baseada em comportamento permitem que os usuários criem mundos simples que contêm objetos rígidos e fontes de luz; e programem robôs para interagir com esses mundos.
Uma das aplicações mais populares para simuladores de robótica é a modelagem 3D e a renderização de um robô e seu ambiente. Este tipo de software de robótica simula um robô virtual, que é capaz de imitar os movimentos de um robô físico. Alguns simuladores de robótica usam um motor de física para gerar movimentos mais realistas para o robô.
O uso de um simulador de robótica para o desenvolvimento de um programa para controlar robôs é altamente recomendado, independentemente de o robô físico estar disponível ou não. O simulador permite que programas sejam convenientemente escritos e depurados off-line, e o software seja testado em robôs reais apenas depois de estarem mais "maduros". Isso é especialmente conveniente para a programação off-line, como é comum na robótica industrial, que se caracteriza por ambientes bem definidos e que são facilmente simulados. Também é possível simular aplicações robóticas que dependem de dados coletados em tempo real por sensores. Neste caso, o simulador é responsável por gerar dados similares aos que sensores físicos gerariam no mundo real.
Recursos Simuladores modernos tendem a oferecer os seguintes recursos: Prototipagem rápida de robôs: Usando o próprio simulador como ferramenta de criação (Virtual Robot Experimentation Platform, Webots, R-Station, Marilou, 4DV-Sim, Gazebo); Usando ferramentas externas. Motor de física para movimentos realistas: Muitos simuladores usam ODE (Gazebo, LpzRobots, Marilou, Webots) ou PhysX (Microsoft Robotics Studio, 4DV-Sim). Renderização 3D realista: Ferramentas de modelagem 3D podem ser utilizadas para construir os ambientes. Uma interface para a programação de corpos dinâmicos.
Comparação de simuladores
Informações gerais
Software Desenvolvedores Status de desenvolvimento Licença Motor de renderização 3D Motor de física Modelador 3D Plataformas suportadas Actin Energid Technologies Ativo Proprietário OpenGL Proprietário Proprietário Windows, macOS, Linux, VxWorks, RTOS-32 ARS RAL Ativo BSD VTK ODE Nenhum Linux, macOS, WindowsGazebo Open Source Robotics Foundation(OSRF) Ativo Apache 2.0 OGRE ODE/Bullet/Simbody/DART Interno Linux, macOS, Windows MORSE Academic communityVeja MORSE authors para a lista de autores. Ativo BSD Blender game engine Bullet Blender Linux, BSD*, macOS OpenHRP AIST Ativo Eclipse Java3D ODE/Interno InternoOpen Architecture Humanoid Robotics Platform Linux, Windows RoboDK RoboDK Ativo Proprietário OpenGL Nenhum Interno Linux, macOS, Windows, Android SimSpark O. Obst et al. (+26) Ativo GNU GPL (v2) Interno ODE Nenhum Linux, macOS, Windows V-Rep Coppelia Robotics Ativo Proprietário/GNU GPL Interno ODE/Bullet/Vortex Interno Linux, macOS, Windows Webots Cyberbotics Ativo Proprietário OGRE versão customizada do ODE Interno Linux, macOS, Windows 4DV-Sim 4D Virtualiz Ativo Proprietário OGRE PhysX Interno Linux Software Desenvolvedores Status de desenvolvimento Licença Motor de renderização 3D Motor de física Modelador 3D Plataformas suportadas
Informações técnicas
Software Principal linguagem de programação Formatos suportados Extensabilidade APIs externas Suporte para middleware de robótica Interface de usuário primária Simulação headless Actin C++ SLDPRT, SLDASM, STEP, OBJ, STL, 3DS, Collada, VRML, URDF, XML, ECD, ECP, ECW, ECX, ECZ, Plugins (C++), API Desconhecido Nenhum GUI Sim (ActinRT) ARS Python Desconhecido Python Desconhecido Nenhum Desconhecido DesconhecidoGazebo C++ SDF/URDF Plugins (C++) C++ ROS, Player, Sockets (mensagens protobuf) GUI Sim MORSE Python Desconhecido Python Python Sockets, YARP, ROS, Pocolibs, MOOS Linha de comando Sim OpenHRP C++ VRML Plugins (C++), API C/C++, Python, Java OpenRTM-aist GUI Desconhecido RoboDK Python STEP, IGES, STL, WRML Plugins (C++), API C/C++, Python, Matlab Socket GUI Desconhecido SimSpark C++, Ruby Ruby Scene Graphs Mods (C++) Network (sexpr) Sockets (sexpr) GUI, Sockets Desconhecido V-Rep LUA OBJ, STL, DXF, 3DS, Collada,Veja a documentação V-Rep URDF API, Add-ons, Plugins C/C++, Python, Java, Urbi, Matlab/Octave Sockets, ROS GUI SimVersões >= 3.1.0, veja opções de linha de comando V-rep Webots C++ WBT, VRML'97 Plugins (C++), API C/C++, Python, Java, Matlab ROS, URBI, NaoQI GUI Sim 4DV-Sim C++ 3DS, OBJ, Mesh Plugins (C++), API FMI/FMU, Matlab ROS, Sockets, Plug & Play interfaces GUI Sim Software Principal linguagem de programação Formatos suportados Extensabilidade APIs externas Suporte para middleware de robótica Interface de usuário primária Simulação headless
Infra-estrutura
Suporte
Software Lista de e-mail Documentação da API Fórum público/Sistema de ajuda Manual do usuário Seguimento de incidentes Wiki Actin Não Sim Não Sim Sim (Interno) Não ARS Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido DesconhecidoGazebo Sim Sim Sim Sim Sim Sim MORSE SimMORSE users mailing list, MORSE developers mailing list Desconhecido Não Sim Sim Não OpenHRP Sim Sim Não Sim Sim Não RoboDK Sim Sim Não Sim Não Não SimSpark Sim Sim Não Sim Sim Sim V-Rep Não Sim Sim Sim Desconhecido Não Webots Não Sim Sim Sim SimWebots bug report Sim 4DV-Sim Simsupport{AT}4d-virtualiz.com Não Sim Sim Sim Não Software Lista de e-mail Documentação da API Fórum público/Sistema de ajuda Manual do usuário Seguimento de incidentes Wiki
Qualidade do código
Software Checagem de código estática Checagem de estilo Sistema de testes Cobertura de funções em testes Cobertura de galhos em testes Linhas de código Linhas de comentários Integração contínua Actin Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Jenkins ARS Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido DesconhecidoGazebo cppcheck cpplint gtest e qtest 52.9% 44.5% 298k 99k Jenkins MORSE Desconhecido pylint Python unittests Desconhecido Desconhecido 31.4kSource: Ohloh 9.0k Jenkins, Travis OpenHRP Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido RoboDK Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido SimSpark Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido V-Rep Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Webots Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido 4DV-Sim Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Software Checagem de código estática Checagem de estilo Sistema de testes Cobertura de funções em testes Cobertura de galhos em testes Linhas de código Linhas de comentários Integração contínua
Recursos Software CAD para movimento Prevenção de colisão dinâmica Extremo do membro relativo Programação off-line Controle em tempo real Actin Sim Sim Sim Sim Sim ARS Desconhecido Não Desconhecido Não NãoGazebo Desconhecido Não Desconhecido Não Não MORSE Desconhecido Não Desconhecido Não Não OpenHRP Desconhecido Não Desconhecido Não Não RoboDK Desconhecido Não Desconhecido Sim Não SimSpark Desconhecido Não Desconhecido Não Não V-Rep Desconhecido Não Desconhecido Não Não Webots Desconhecido Não Desconhecido Não Não 4DV-Sim Desconhecido Não Desconhecido Não Não Software CAD para movimento Prevenção de colisão dinâmica Extremo do membro relativo Programação off-line Controle em tempo real
Famílias de robôs
Software VTNT (veículo terrestre não tripulado) VANT (veículo aéreo não tripulado) AUV (robôs submarinos) Robôs industriais Mãos robóticas (simulação de manipulação) Robôs humanóides Avatares humanos Actin Sim Sim Sim Sim Sim Sim Sim ARS Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido DesconhecidoGazebo Sim Sim Sim Sim Sim Sim Sim MORSE Sim Sim ParcialModelo de submarino disponível, mas sem modelo dinâmico ParcialInclui Kuka-LWR e Mitsubishi PA-10. Outros braços podem ser simulados através do atuador kinematic chains. Não Não Sim OpenHRP Sim Não Não Sim Sim Sim Sim RoboDK Não Não Não Sim Não Não Não SimSpark Sim Não Não Talvez Talvez Sim Não V-Rep Sim Sim Não Sim Sim Sim Sim Webots Sim Sim Siminclui robô Salamandra Sim Sim SimInclui Nao, DARwIn-OP, Fujitsu HOAP2, Kondo KHR-2HV, KHR-3, etc. Sim 4DV-Sim Sim Sim Não Sim Talvez Não Sim Software VTNT (veículo terrestre não tripulado) VANT (veículo aéreo não tripulado) AUV (robôs submarinos) Robôs industriais Mãos robóticas (simulação de manipulação) Robôs humanóides Avatares humanos
Atuadores suportados
Software Cadeias cinemáticas genéricas Movimento controlado por força Lista completa Cadeias cinemáticas circulares Cadeias cinemáticas redundantes Cadeias cinemáticas bifurcadas Actin Sim Sim Motion ConstraintsSimSimSim ARS Desconhecido Desconhecido Desconhecido Desconhecido DesconhecidoGazebo Sim Sim Sim Sim Sim MORSE SimControle de articulações (somente posição/velocidade, sem controle por força) e cinemática inversa Sim atuadores MORSE Desconhecido Desconhecido Desconhecido OpenHRP Sim Sim Desconhecido Desconhecido Desconhecido RoboDK Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido SimSpark Sim Não atuadores SimSpark Desconhecido Desconhecido Desconhecido V-Rep Sim Sim Desconhecido Desconhecido Desconhecido Webots Sim Sim Desconhecido Desconhecido Desconhecido 4DV-Sim Sim Sim Desconhecido Desconhecido Desconhecido Software Cadeias cinemáticas genéricas Movimento controlado por força Lista completa Cadeias cinemáticas circulares Cadeias cinemáticas redundantes Cadeias cinemáticas bifurcadas
Sensores suportados
Software Odometria Unidade de Medida Inercial Colisão GPS Câmera monocular Câmera estereoscópica Câmera de profundidade Câmera omnidirecional Laser scanner 2D Laser scanner 3D Lista completa Actin Sim Sim Sim Desconhecido Sim Sim Sim Sim Sim Sim ARS Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido DesconhecidoGazebo Sim Sim Sim Sim Sim Sim Sim Desconhecido Sim Sim MORSE Sim Sim Sim Sim Sim Desconhecido Sim Desconhecido Sim SimVelodyne 3D laser scanner sensores MORSE OpenHRP Desconhecido Sim Sim Desconhecido Sim Desconhecido Sim Desconhecido Sim Sim sensores OpenHRP RoboDK Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido Desconhecido SimSpark Sim Sim SimDetecção de colisão usando um modelo simplificado ParcialPossível, sem modelo para ruídos Sim Parcial Desconhecido Desconhecido Não Não perceptores SimSpark V-Rep Desconhecido Sim Sim Sim Sim Desconhecido Sim Desconhecido Sim Sim Webots Sim Sim Sim Sim Sim Sim Sim Desconhecido Sim Sim 4DV-Sim Sim Sim Sim Sim Sim Sim Sim Sim Sim Sim Software Odometria Unidade de Medida Inercial Colisão GPS Câmera monocular Câmera estereoscópica Câmera de profundidade Câmera omnidirecional Laser scanner 2D Laser scanner 3D Lista completa
Outros simuladores
Simuladores de código aberto
Breve: simulador de múltiplos agentes em mundos 3D em Python. EZPhysics: combinação de renderização Ogre3D e física ODE, GUI expõe todas as informações does objetos do ODE, controle remoto opcionalmente através de Matlab/Simulink. Simulador Khepera: um simulador de código aberto para Windows, para simular o robô Khepera antes do Webots.[carece de fontes]