Simulador de robótica

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 editar

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 editar

Informações gerais editar

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

Informações técnicas editar

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 editar

Suporte editar

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 editar

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 editar

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 editar

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 Desconhecido
Gazebo Sim[41] Sim[42] Sim[43] Sim[44] Sim[45] Sim[46] Sim[47]
MORSE Sim Sim Parcial[48] Parcial[49] Não Não Sim
OpenHRP Sim Não Não Sim Sim Sim Sim
RoboDK Não Não Não Sim[50] 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 Sim[51] Sim Sim Sim[52] 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 editar

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 editar

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 editar

Simuladores de código aberto editar

  • 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 editar

  • AnyKode Marilou.
  • ORCA-Sim: um simulador de robôs 3D que usa o motor de física Newton Game Dynamics (Windows).

Referências

  1. Veja MORSE authors para a lista de autores.
  2. Open Architecture Humanoid Robotics Platform
  3. OSRF. «SDF». sdformat.org. Consultado em 6 de outubro de 2017 
  4. «urdf - ROS Wiki». wiki.ros.org. Consultado em 6 de outubro de 2017 
  5. Koch, Séverin Lemaignan, Pierrick, pymorse: Python bindings for the Modular OpenRobots Simulation Engine (MORSE), consultado em 6 de outubro de 2017 
  6. Veja a documentação V-Rep
  7. Versões >= 3.1.0, veja opções de linha de comando V-rep
  8. «Actin User Guide». Consultado em 28 de janeiro de 2017. Arquivado do original em 13 de janeiro de 2017 
  9. «Gazebo Community». Gazebo Community (em inglês). Consultado em 6 de outubro de 2017 
  10. OSRF. «Gazebo  : API». gazebosim.org. Consultado em 6 de outubro de 2017 
  11. «Questions - Gazebo: Q&A Forum». answers.gazebosim.org. Consultado em 6 de outubro de 2017 
  12. OSRF. «Gazebo  : Tutorials». gazebosim.org. Consultado em 6 de outubro de 2017 
  13. «osrf / gazebo / issues — Bitbucket». bitbucket.org (em inglês). Consultado em 6 de outubro de 2017 
  14. «osrf / gazebo / wiki / Home — Bitbucket». bitbucket.org (em inglês). Consultado em 6 de outubro de 2017 
  15. MORSE users mailing list, MORSE developers mailing list
  16. «Overview — The MORSE Simulator Documentation». www.openrobots.org. Consultado em 6 de outubro de 2017 
  17. morse: The Modular OpenRobots Simulation Engine, The Modular OpenRobots Simulation Engine, 4 de outubro de 2017, consultado em 6 de outubro de 2017 
  18. «openhrp3-users Info Page». choreonoid.org. Consultado em 6 de outubro de 2017 
  19. «OpenHRP3 Official Site». fkanehiro.github.io. Consultado em 6 de outubro de 2017 
  20. «User's Manual». fkanehiro.github.io. Consultado em 6 de outubro de 2017 
  21. KANEHIRO, Fumio (8 de março de 2017), openhrp3: Open Architecture Human-centered Robotics Platform, consultado em 6 de outubro de 2017 
  22. «Subscribe to our newsletter - RoboDK». www.robodk.com (em inglês). Consultado em 6 de outubro de 2017 
  23. «RoboDK's Python API examples - RoboDK». www.robodk.com (em inglês). Consultado em 6 de outubro de 2017 
  24. «RoboDK help guide». www.robodk.com (em inglês). Consultado em 6 de outubro de 2017 
  25. «Spark - A generic physical simulator / Mailing Lists». sourceforge.net (em inglês). Consultado em 6 de outubro de 2017 
  26. «Network Protocol - Simspark». simspark.sourceforge.net (em inglês). Consultado em 6 de outubro de 2017 
  27. «Users Manual - Simspark». simspark.sourceforge.net (em inglês). Consultado em 6 de outubro de 2017 
  28. «Spark - A generic physical simulator / Bugs». sourceforge.net (em inglês). Consultado em 6 de outubro de 2017 
  29. «Simspark». simspark.sourceforge.net (em inglês). Consultado em 6 de outubro de 2017 
  30. «V-REP API framework». www.coppeliarobotics.com. Consultado em 6 de outubro de 2017 
  31. «V-REP Forum - Index page». www.forum.coppeliarobotics.com (em inglês). Consultado em 6 de outubro de 2017 
  32. «V-REP User Manual». www.coppeliarobotics.com. Consultado em 6 de outubro de 2017 
  33. «Webots». www.cyberbotics.com (em inglês). Consultado em 6 de outubro de 2017 
  34. «Webots: forum». www.cyberbotics.com (em inglês). Consultado em 6 de outubro de 2017 
  35. «Webots». www.cyberbotics.com (em inglês). Consultado em 6 de outubro de 2017 
  36. Webots bug report
  37. «Cyberbotics' Robot Curriculum - Wikibooks, open books for an open world». en.wikibooks.org (em inglês). Consultado em 6 de outubro de 2017 
  38. a b support{AT}4d-virtualiz.com
  39. a b c d e f g h OSRF. «Gazebo». gazebosim.org. Consultado em 6 de outubro de 2017 
  40. Source: Ohloh
  41. OSRF. «Gazebo  : Tutorial : Beginner: Model Editor». gazebosim.org. Consultado em 6 de outubro de 2017 
  42. OSRF. «Gazebo  : Tutorial : Aerodynamics». gazebosim.org. Consultado em 6 de outubro de 2017 
  43. OSRF. «Gazebo  : Tutorial : Hydrodynamics». gazebosim.org. Consultado em 6 de outubro de 2017 
  44. OSRF. «Gazebo  : ARIAC». gazebosim.org. Consultado em 6 de outubro de 2017 
  45. OSRF. «Gazebo  : HAPTIX». gazebosim.org. Consultado em 6 de outubro de 2017 
  46. «DARPA's legacy: Open source simulation for robotics development and testing | Robohub». robohub.org (em inglês). Consultado em 6 de outubro de 2017 
  47. OSRF. «Gazebo  : Tutorial : Make an animated model (actor)». gazebosim.org. Consultado em 6 de outubro de 2017 
  48. Modelo de submarino disponível, mas sem modelo dinâmico
  49. Inclui Kuka-LWR e Mitsubishi PA-10. Outros braços podem ser simulados através do atuador kinematic chains.
  50. «Robot Library | RoboDK». www.robodk.com (em inglês). Consultado em 6 de outubro de 2017 
  51. inclui robô Salamandra
  52. Inclui Nao, DARwIn-OP, Fujitsu HOAP2, Kondo KHR-2HV, KHR-3, etc.
  53. Controle de articulações (somente posição/velocidade, sem controle por força) e cinemática inversa
  54. OSRF. «Gazebo  : Tutorial : Contact Sensor». gazebosim.org. Consultado em 6 de outubro de 2017 
  55. OSRF. «Gazebo  : Tutorial : Camera Distortion». gazebosim.org. Consultado em 6 de outubro de 2017 
  56. Velodyne 3D laser scanner
  57. «Robot and Environmental Model Define Format». fkanehiro.github.io. Consultado em 6 de outubro de 2017 
  58. «Robot and Environmental Model Define Format». fkanehiro.github.io. Consultado em 6 de outubro de 2017 
  59. Detecção de colisão usando um modelo simplificado
  60. Possível, sem modelo para ruídos