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
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, Windows |
Gazebo | Open Source Robotics Foundation(OSRF) | Ativo | Apache 2.0 | OGRE | ODE/Bullet/Simbody/DART | Interno | Linux, macOS, Windows |
MORSE | Academic community[1] | Ativo | BSD | Blender game engine | Bullet | Blender | Linux, BSD*, macOS |
OpenHRP | AIST | Ativo | Eclipse | Java3D | ODE/Interno | Interno[2] | 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 |
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 | Desconhecido |
Gazebo | C++ | SDF[3]/URDF[4] | Plugins (C++) | C++ | ROS, Player, Sockets (mensagens protobuf) | GUI | Sim |
MORSE | Python | Desconhecido | Python | Python[5] | 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,[6] URDF | API, Add-ons, Plugins | C/C++, Python, Java, Urbi, Matlab/Octave | Sockets, ROS | GUI | Sim[7] |
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[8] | Sim (Interno) | Não |
ARS | Desconhecido | Desconhecido | Desconhecido | Desconhecido | Desconhecido | Desconhecido |
Gazebo | Sim[9] | Sim[10] | Sim[11] | Sim[12] | Sim[13] | Sim[14] |
MORSE | Sim[15] | Desconhecido | Não | Sim[16] | Sim[17] | Não |
OpenHRP | Sim[18] | Sim[19] | Não | Sim[20] | Sim[21] | Não |
RoboDK | Sim[22] | Sim[23] | Não | Sim[24] | Não | Não |
SimSpark | Sim[25] | Sim[26] | Não | Sim[27] | Sim[28] | Sim[29] |
V-Rep | Não | Sim[30] | Sim[31] | Sim[32] | Desconhecido | Não |
Webots | Não | Sim[33] | Sim[34] | Sim[35] | Sim[36] | Sim[37] |
4DV-Sim | Sim[38] | Não | Sim[38] | 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 | Desconhecido |
Gazebo | cppcheck[39] | cpplint[39] | gtest e qtest[39] | 52.9%[39] | 44.5%[39] | 298k[39] | 99k[39] | Jenkins[39] |
MORSE | Desconhecido | pylint | Python unittests | Desconhecido | Desconhecido | 31.4k[40] | 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ão |
Gazebo | 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
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 Constraints | Sim | Sim | Sim |
ARS | Desconhecido | Desconhecido | | Desconhecido | Desconhecido | Desconhecido |
Gazebo | Sim | Sim | | Sim | Sim | Sim |
MORSE | Sim[53] | 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 | Desconhecido | |
Gazebo | Sim | Sim | Sim[54] | Sim | Sim[55] | Sim | Sim | Desconhecido | Sim | Sim | |
MORSE | Sim | Sim | Sim | Sim | Sim | Desconhecido | Sim | Desconhecido | Sim | Sim[56] | sensores MORSE |
OpenHRP | Desconhecido | Sim[57] | Sim | Desconhecido | Sim | Desconhecido | Sim | Desconhecido | Sim | Sim[58] | sensores OpenHRP |
RoboDK | Desconhecido | Desconhecido | Desconhecido | Desconhecido | Desconhecido | Desconhecido | Desconhecido | Desconhecido | Desconhecido | Desconhecido | |
SimSpark | Sim | Sim | Sim[59] | Parcial[60] | 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]
- Klamp't: um simulador introduzido em 2013, especializado em contato estável entre malhas de triângulos. Suporta locomoção de patas e manipulação.
- LpzRobots: um simulador de física de robôs em 3D desenvolvido na Universidade de Leipzig.
- MiniBloq: este software para programação de robôs para o Arduino tem um novo simulador.
- Moby: uma biblioteca de dinâmica de corpos rígidos escrita em C++.
- OpenSim: Simulador de robôs articulados e com rodas, com uma ampla gama de características. Seu desenvolvimento foi interrompido em 2006.
- Robotics Toolbox para o MATLAB: é um software livre que fornece funcionalidade para representar pose (transformações homogêneas, ângulos Euler e RPY, quaterniões), braços robóticos (para a cinemática inversa, direta, dinâmica, simulação e animação) e robôs móveis (controle, localização, planejamento e animação).
- ARTE: uma ferramenta de robótica para educação (ARTE em inglês) é um software livre educacional baseado em Matlab. Ele fornece funções para representar posições e orientações. Assim, inclui funções para simular braços robóticos (cinemática direta/inversa, dinâmica, planejamento de caminho, etc.). A ferramenta inclui um grande conjunto de modelos 3D de robôs que podem ser visualizados e simulados dentro de uma célula robótica.
- Simbad 3d: Simulador de robôs baseado em Java.
- SimRobot: um pacote de software de simulador de robôs desenvolvido na Universidade de Bremen e no Centro alemão de Pesquisa de Inteligência Artificial.
- Fase: simulador 2.5D, muitas vezes usado com o Player para formar o sistema Player/Stage. Parte do Projeto Player.
- STDR: simulador simples, flexível e escalável 2D de múltiplos robôs para uso dentro de Sistema Operacional de Robôs.
- UCHILSIM: um simulador baseado em física para os Robôs AIBO, introduzido na RoboCup 2004.
- UWSim: um simulador de robótica submarina para pesquisa e desenvolvimento, que incorpora simulação de sensores, dinâmica e física.
Simuladores de código fechado e proprietários
- AnyKode Marilou.
- ORCA-Sim: um simulador de robôs 3D que usa o motor de física Newton Game Dynamics (Windows).
Referências
- ↑ Veja MORSE authors para a lista de autores.
- ↑ Open Architecture Humanoid Robotics Platform
- ↑ OSRF. «SDF». sdformat.org. Consultado em 6 de outubro de 2017
- ↑ «urdf - ROS Wiki». wiki.ros.org. Consultado em 6 de outubro de 2017
- ↑ Koch, Séverin Lemaignan, Pierrick, pymorse: Python bindings for the Modular OpenRobots Simulation Engine (MORSE), consultado em 6 de outubro de 2017
- ↑ Veja a documentação V-Rep
- ↑ Versões >= 3.1.0, veja opções de linha de comando V-rep
- ↑ «Actin User Guide». Consultado em 28 de janeiro de 2017. Arquivado do original em 13 de janeiro de 2017
- ↑ «Gazebo Community». Gazebo Community (em inglês). Consultado em 6 de outubro de 2017
- ↑ OSRF. «Gazebo : API». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ «Questions - Gazebo: Q&A Forum». answers.gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ OSRF. «Gazebo : Tutorials». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ «osrf / gazebo / issues — Bitbucket». bitbucket.org (em inglês). Consultado em 6 de outubro de 2017
- ↑ «osrf / gazebo / wiki / Home — Bitbucket». bitbucket.org (em inglês). Consultado em 6 de outubro de 2017
- ↑ MORSE users mailing list, MORSE developers mailing list
- ↑ «Overview — The MORSE Simulator Documentation». www.openrobots.org. Consultado em 6 de outubro de 2017
- ↑ morse: The Modular OpenRobots Simulation Engine, The Modular OpenRobots Simulation Engine, 4 de outubro de 2017, consultado em 6 de outubro de 2017
- ↑ «openhrp3-users Info Page». choreonoid.org. Consultado em 6 de outubro de 2017
- ↑ «OpenHRP3 Official Site». fkanehiro.github.io. Consultado em 6 de outubro de 2017
- ↑ «User's Manual». fkanehiro.github.io. Consultado em 6 de outubro de 2017
- ↑ KANEHIRO, Fumio (8 de março de 2017), openhrp3: Open Architecture Human-centered Robotics Platform, consultado em 6 de outubro de 2017
- ↑ «Subscribe to our newsletter - RoboDK». www.robodk.com (em inglês). Consultado em 6 de outubro de 2017
- ↑ «RoboDK's Python API examples - RoboDK». www.robodk.com (em inglês). Consultado em 6 de outubro de 2017
- ↑ «RoboDK help guide». www.robodk.com (em inglês). Consultado em 6 de outubro de 2017
- ↑ «Spark - A generic physical simulator / Mailing Lists». sourceforge.net (em inglês). Consultado em 6 de outubro de 2017
- ↑ «Network Protocol - Simspark». simspark.sourceforge.net (em inglês). Consultado em 6 de outubro de 2017
- ↑ «Users Manual - Simspark». simspark.sourceforge.net (em inglês). Consultado em 6 de outubro de 2017
- ↑ «Spark - A generic physical simulator / Bugs». sourceforge.net (em inglês). Consultado em 6 de outubro de 2017
- ↑ «Simspark». simspark.sourceforge.net (em inglês). Consultado em 6 de outubro de 2017
- ↑ «V-REP API framework». www.coppeliarobotics.com. Consultado em 6 de outubro de 2017
- ↑ «V-REP Forum - Index page». www.forum.coppeliarobotics.com (em inglês). Consultado em 6 de outubro de 2017
- ↑ «V-REP User Manual». www.coppeliarobotics.com. Consultado em 6 de outubro de 2017
- ↑ «Webots». www.cyberbotics.com (em inglês). Consultado em 6 de outubro de 2017
- ↑ «Webots: forum». www.cyberbotics.com (em inglês). Consultado em 6 de outubro de 2017
- ↑ «Webots». www.cyberbotics.com (em inglês). Consultado em 6 de outubro de 2017
- ↑ Webots bug report
- ↑ «Cyberbotics' Robot Curriculum - Wikibooks, open books for an open world». en.wikibooks.org (em inglês). Consultado em 6 de outubro de 2017
- ↑ a b support{AT}4d-virtualiz.com
- ↑ a b c d e f g h OSRF. «Gazebo». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ Source: Ohloh
- ↑ OSRF. «Gazebo : Tutorial : Beginner: Model Editor». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ OSRF. «Gazebo : Tutorial : Aerodynamics». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ OSRF. «Gazebo : Tutorial : Hydrodynamics». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ OSRF. «Gazebo : ARIAC». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ OSRF. «Gazebo : HAPTIX». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ «DARPA's legacy: Open source simulation for robotics development and testing | Robohub». robohub.org (em inglês). Consultado em 6 de outubro de 2017
- ↑ OSRF. «Gazebo : Tutorial : Make an animated model (actor)». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ Modelo de submarino disponível, mas sem modelo dinâmico
- ↑ Inclui Kuka-LWR e Mitsubishi PA-10. Outros braços podem ser simulados através do atuador kinematic chains.
- ↑ «Robot Library | RoboDK». www.robodk.com (em inglês). Consultado em 6 de outubro de 2017
- ↑ inclui robô Salamandra
- ↑ Inclui Nao, DARwIn-OP, Fujitsu HOAP2, Kondo KHR-2HV, KHR-3, etc.
- ↑ Controle de articulações (somente posição/velocidade, sem controle por força) e cinemática inversa
- ↑ OSRF. «Gazebo : Tutorial : Contact Sensor». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ OSRF. «Gazebo : Tutorial : Camera Distortion». gazebosim.org. Consultado em 6 de outubro de 2017
- ↑ Velodyne 3D laser scanner
- ↑ «Robot and Environmental Model Define Format». fkanehiro.github.io. Consultado em 6 de outubro de 2017
- ↑ «Robot and Environmental Model Define Format». fkanehiro.github.io. Consultado em 6 de outubro de 2017
- ↑ Detecção de colisão usando um modelo simplificado
- ↑ Possível, sem modelo para ruídos
Portal da robótica