Symulator robotyki - Robotics simulator

A robotyki symulator jest symulatorem wykorzystywane do tworzenia aplikacji dla fizycznego robota bez zależności od rzeczywistej maszyny, oszczędzając w ten sposób koszty i czas. W niektórych przypadkach aplikacje te można przenieść do fizycznego robota (lub przebudować) bez modyfikacji.

Termin symulator robotyki może odnosić się do kilku różnych aplikacji symulacyjnych robotyki. Na przykład w aplikacjach robotyki mobilnej symulatory robotyki opartej na zachowaniu umożliwiają użytkownikom tworzenie prostych światów sztywnych obiektów i źródeł światła oraz programowanie robotów do interakcji z tymi światami. Symulacja oparta na zachowaniu pozwala na działania, które mają bardziej biologiczny charakter w porównaniu z symulatorami, które są bardziej binarne lub obliczeniowe. Ponadto symulatory behawioralne mogą „uczyć się” na błędach i są w stanie zademonstrować antropomorficzną jakość wytrwałości.

Symulator robotyki Robologix .

Jedną z najpopularniejszych aplikacji symulatorów robotyki jest modelowanie 3D i renderowanie robota i jego otoczenia. Ten rodzaj oprogramowania robotycznego ma symulator, który jest wirtualnym robotem, który jest w stanie emulować ruch rzeczywistego robota w rzeczywistej przestrzeni roboczej. Niektóre symulatory robotyki wykorzystują silnik fizyczny do bardziej realistycznego generowania ruchu robota. Wykorzystanie symulatora robotyki do opracowania programu sterowania robotyką jest wysoce zalecane niezależnie od tego, czy rzeczywisty robot jest dostępny, czy nie. Symulator umożliwia wygodne pisanie i debugowanie programów dla robotyki w trybie off-line z ostateczną wersją programu testowaną na rzeczywistym robocie. Dotyczy to głównie zastosowań robotów przemysłowych , ponieważ powodzenie programowania off-line zależy od tego, jak podobne jest rzeczywiste środowisko robota do środowiska symulowanego.

Działania robota oparte na czujnikach są znacznie trudniejsze do symulacji i/lub zaprogramowania w trybie off-line, ponieważ ruch robota zależy od chwilowych odczytów czujników w świecie rzeczywistym.

Cechy

Nowoczesne symulatory mają zwykle następujące funkcje:

  • Szybkie prototypowanie robota
    • Wykorzystanie własnego symulatora jako narzędzia do tworzenia.
    • Korzystanie z zewnętrznych narzędzi.
  • Silniki fizyczne do realistycznych ruchów. Większość symulatorów używa Bullet , ODE lub PhysX .
  • Realistyczne renderowanie 3d. Do budowania środowisk można użyć standardowych narzędzi do modelowania 3D lub narzędzi innych firm.
  • Dynamiczne korpusy robotów ze skryptami. C , C++ , Perl , Python , Java , URBI , języki MATLAB używane przez Weboty, Python używany przez Gazebo.

Symulatory

Wśród najnowszych technologii dostępnych obecnie do programowania są te, które wykorzystują wirtualną symulację. Symulacje z wykorzystaniem wirtualnych modeli środowiska pracy i samych robotów mogą przynieść korzyści zarówno firmie, jak i programiście. Dzięki zastosowaniu symulacji zmniejsza się koszty, a roboty można programować w trybie off-line, co eliminuje wszelkie przestoje linii montażowej. Działania robotów i części montażowe można wizualizować w trójwymiarowym środowisku wirtualnym na kilka miesięcy przed wyprodukowaniem prototypów. Pisanie kodu do symulacji jest również łatwiejsze niż pisanie kodu dla fizycznego robota. Podczas gdy ruch w kierunku wirtualnych symulacji do programowania robotów jest krokiem naprzód w projektowaniu interfejsu użytkownika, wiele takich aplikacji jest dopiero w powijakach.

Informacje ogólne

Oprogramowanie Deweloperzy Status rozwoju Licencja Silnik renderowania 3D Silnik fizyczny Modelarz 3D Obsługiwane platformy
Balkon Fundacja Robotyki Open Source (OSRF) Aktywny Apache 2.0 OGR ODE / Bullet / Simbody / DART Wewnętrzny Linux, macOS, Windows
RoboDK RoboDK Aktywny Prawnie zastrzeżony OpenGL Wtyczka grawitacyjna Wewnętrzny Linux, macOS, Windows, Android, iOS, Debian
SimSpark O. Obst i in. (+26) Aktywny GNU GPL (v2) Wewnętrzny ODA Nic Linux, macOS, Windows
Weboty Cyberbotyka Sp. Aktywny Apache 2.0 Wewnętrzny (WREN) Widelec ODE Wewnętrzny Linux, macOS, Windows
OtwórzRAVE Społeczność OpenRAVE Aktywny GNU LGPL Coin3D / OpenSceneGraph ODE / Kula Wewnętrzny Linux, macOS, Windows
CoppeliaSim Robotyka Coppelia Aktywny Podwójny: Komercyjny / GNU GPL Wewnętrzny Dynamika gry Bullet / ODE / Vortex / Newton Wewnętrzny Linux, macOS, Windows
Oprogramowanie Deweloperzy Status rozwoju Licencja Silnik renderowania 3D Silnik fizyczny Modelarz 3D Obsługiwane platformy

Specyfikacja

Oprogramowanie Główny język programowania Obsługa formatów Rozciągliwość Zewnętrzne interfejsy API Obsługa oprogramowania pośredniczącego w robotyce Główny interfejs użytkownika Symulacja bez głowy
Balkon C++ SDF/URDF, OBJ , STL , Collada Wtyczki (C++) C++ ROS, Player, Sockety (komunikaty protobufowe) GUI tak
RoboDK Pyton SLDPRT , SLDASM , STEP , OBJ , STL , 3DS , Collada , VRML , URDF , Rhinoceros_3D , ... API, interfejs wtyczek Python, C/C++, C#, Matlab, ... Gniazdo elektryczne GUI Nieznany
SimSpark C++, Rubin Wykresy sceny rubinowej Mody (C++) Sieć ( sexpr ) Gniazda ( sexpr ) GUI, gniazda Nieznany
Weboty C++ WBT, VRML , X3D , 3DS , Blender , BVH , Collada , FBX , STL , OBJ , URDF API, PROTO, wtyczki (C/C++) C, C++, Python, Java, Matlab, ROS Gniazda, ROS, NaoQI GUI tak
OtwórzRAVE C++, Python XML , VRML , OBJ , Collada Wtyczki (C++), API C/C++, Python, Matlab Gniazda, ROS, YARP GUI, gniazda tak
CoppeliaSim C++, Lua 3DS , Blender , Collada , STL , OBJ , URDF, SDF, GLTF, XML Wtyczki (C/C++), Osadzone skrypty (Lua), Remote API (C, C++, Python, Java, MATLAB, Octave), Dodatki (Lua) C, C++, Python, Java, MATLAB, Octave, ROS, ROS 2.0 Gniazda, ROS, ROS 2.0, ZeroMQ GUI tak
Oprogramowanie Główny język programowania Obsługa formatów Rozciągliwość Zewnętrzne interfejsy API Wsparcie dla robotów pośredniczących Główny interfejs użytkownika Symulacja bez głowy

Infrastruktura

Wsparcie

Oprogramowanie Lista mailingowa Dokumentacja API Forum publiczne/system pomocy Instrukcja obsługi Lista problemow Wiki Czat
Balkon tak tak tak tak tak Nie
RoboDK tak tak tak tak tak Nie Nieznany
SimSpark tak tak Nie tak tak tak Nieznany
Weboty Nie tak Nie tak tak tak tak
OtwórzRAVE tak tak tak tak tak tak Nieznany
CoppeliaSim Nie tak tak tak tak Nieznany Nie
Oprogramowanie Lista mailingowa Dokumentacja API Forum publiczne/system pomocy Instrukcja obsługi Lista problemow Wiki

Jakość kodu

Oprogramowanie Statyczny kontroler kodu Kontroler stylu System(y) testowy(e) Pokrycie funkcji testowej Pokrycie oddziału testowego Linie kodu Linie komentarzy Ciągła integracja
Balkon cppcheck cpplint gtest i qtest 77,0% 53,3% 320k 106k Jenkins
RoboDK Nieznany Nieznany Nieznany Nieznany Nieznany Nieznany Nieznany Nieznany
SimSpark Nieznany Nieznany Nieznany Nieznany Nieznany Nieznany Nieznany Nieznany
Weboty cppcheck clang-format testy jednostkowe 100% funkcji API mistrz, rozwijać ~200k ~50k Travis, AppVeyor, GitGuardian, Akcje GitHub
OtwórzRAVE Nieznany Nieznany Nos Pythona Nieznany Nieznany Nieznany Nieznany Jenkins
CoppeliaSim Nieznany Nieznany Nieznany Nieznany Nieznany Nieznany Nieznany Nieznany
Oprogramowanie Statyczny kontroler kodu Kontroler stylu System(y) testowy(e) Pokrycie funkcji testowej Pokrycie oddziału testowego Linie kodu Linie komentarzy Ciągła integracja

Cechy

Oprogramowanie CAD do ruchu Dynamiczne unikanie kolizji Względne efektory końcowe Programowanie offline Kontrola sprzętu w czasie rzeczywistym
Balkon Nieznany tak tak tak tak
RoboDK tak tak tak tak tak
SimSpark Nieznany Nie Nieznany Nie Nie
Weboty Nieznany tak tak tak tak
OtwórzRAVE Nieznany Nie Nieznany Nie Nie
CoppeliaSim Nieznany tak tak tak tak
Oprogramowanie CAD do ruchu Dynamiczne unikanie kolizji Względne efektory końcowe Programowanie offline Kontrola przesyłania strumieniowego w czasie rzeczywistym

Rodziny robotów

Oprogramowanie UGV (naziemny robot mobilny) UAV (roboty powietrzne) AUV (roboty podwodne) Ramiona robota Ręce robota (symulacja chwytania) Roboty humanoidalne Awatary ludzi Pełna lista
Balkon tak tak tak tak tak tak tak
RoboDK Nie Nie Nie tak Nie Nie Nie tak
SimSpark tak Nie Nie Być może Być może tak Nie
Weboty tak tak tak tak tak tak tak tak
OtwórzRAVE tak Nieznany Nieznany tak tak tak tak
CoppeliaSim tak tak tak tak tak tak tak tak
Oprogramowanie UGV (naziemny robot mobilny) UAV (roboty powietrzne) AUV (roboty podwodne) Ramiona robota Ręce robota (symulacja chwytania) Roboty humanoidalne Awatary ludzi Pełna lista

Obsługiwane siłowniki

Oprogramowanie Ogólne łańcuchy kinematyczne Ruch sterowany siłą Pełna lista Łańcuchy kinematyczne kołowe Łańcuchy redundantne kinematycznie Rozwidlone łańcuchy kinematyczne
Balkon tak tak tak tak tak
RoboDK Nieznany Nieznany Nieznany Nieznany Nieznany
SimSpark tak Nie Efektory SimSpark Nieznany Nieznany Nieznany
Weboty tak tak Siłowniki Webotów tak tak tak
OtwórzRAVE tak tak Przeguby , dodatkowe siłowniki tak tak tak
CoppeliaSim tak tak tak tak tak
Oprogramowanie Ogólne łańcuchy kinematyczne Ruch sterowany siłą Pełna lista Łańcuchy kinematyczne kołowe Łańcuchy redundantne kinematycznie Rozwidlone łańcuchy kinematyczne

Obsługiwane czujniki

Oprogramowanie Odometria IMU Kolizja GPS Kamery monokularowe Kamery stereofoniczne Kamery głębinowe Kamery dookólne Skanery laserowe 2D Skanery laserowe 3D Pełna lista
Balkon tak tak tak tak tak tak tak tak tak tak
RoboDK Nieznany Nieznany Nieznany Nieznany Nieznany tak tak tak tak tak
SimSpark tak tak tak Częściowy tak Częściowy Nieznany Nieznany Nie Nie Postrzegacze SimSpark
Weboty tak tak tak tak tak tak tak tak tak tak Czujniki Webotów
OtwórzRAVE tak tak tak tak tak tak tak Nieznany tak tak
CoppeliaSim tak tak tak tak tak tak tak tak tak tak
Oprogramowanie Odometria IMU Kolizja GPS Kamery monokularowe Kamery stereofoniczne Kamery głębinowe Kamery dookólne Skanery laserowe 2D Skanery laserowe 3D Pełna lista

Bibliografia

Zewnętrzne linki