Robot E-puck in Webots
Creatore | Olivier Michel |
---|---|
Sviluppato da | Cyberbotics Ltd. |
Prima versione | 1996 |
Ultima versione | R2019b revisione 1 (3 ottobre 2019) |
Depositare | GitHub |
Scritto in | C ++ |
Ambiente | Windows 10 e 8 a 64 bit, Linux a 64 bit, Mac OS X 10.14 e 10.13 |
genere | Suite robotica |
Licenza | Apache 2.0 |
Sito web | Sito Web di Cyberbotics |
Webots è un simulatore di robotica open source. È utilizzato nell'industria, nella ricerca e nell'istruzione.
Il progetto Webots è iniziato nel 1996, inizialmente sviluppato dal dottor Olivier Michel presso l' Istituto Federale Svizzero di Tecnologia (EPFL) a Losanna , Svizzera . Da dicembre 2018, Webots distribuito in open-source con licenza Apache 2.0.
Webots utilizza la libreria ODE ( Open Dynamics Engine ) per rilevare le collisioni e simulare le dinamiche di corpi rigidi e fluidi. La libreria ODE permette di simulare accuratamente le proprietà fisiche di oggetti come velocità, inerzia e attrito.
Con il software è disponibile un'ampia raccolta di modelli di robot liberamente modificabili. Inoltre, è anche possibile costruire nuovi modelli da zero. Quando si progetta un modello di robot, l'utente specifica sia le proprietà grafiche che le proprietà fisiche degli oggetti. Le proprietà grafiche includono la forma, le dimensioni, la posizione e l'orientamento, i colori e la consistenza dell'oggetto. Le proprietà fisiche includono la massa, il fattore di attrito, nonché la molla e le costanti di smorzamento .
Webots comprende una serie di sensori e attuatori utilizzati frequentemente in esperimenti robotici, ad esempio sensori di prossimità , sensori di luce , sensori tattili, GPS , accelerometri , fotocamere, trasmettitori e ricevitori, servocomandi (rotativi e lineari), sensori di posizione e forza, LED , pinze , giroscopi , bussole , ecc.
I programmi di controllo robot possono essere scritti in C , C ++ , Java , Python e MATLAB tramite un'API semplice e completa.
Webots offre la possibilità di acquisire schermate PNG e salvare le simulazioni come filmati MPEG (Mac / Linux) o AVI (Windows). I mondi Webots sono archiviati in multipiattaforma. File WBT il cui formato è basato sul linguaggio VRML . È anche possibile importare ed esportare mondi o oggetti Webots in formato VRML. Un'altra caratteristica interessante è che l'utente può interagire con una simulazione in esecuzione in qualsiasi momento. Ha così la possibilità di muovere robot e altri oggetti con il mouse. È possibile inviare una simulazione ai browser Web del client.
Webots è utilizzato in diversi concorsi di programmazione di robot online. La competizione Robotstadium [1] è una simulazione della RoboCup Standard Platform League. In questa simulazione, due squadre di Nao giocano a calcio con regole simili al calcio classico. I robot utilizzano telecamere simulate, sensori a ultrasuoni e di pressione. Nel concorso Rat's Life “ http://www.ratslife.org/ ” ( Archive • Wikiwix • Archive.is • Google • Cosa fare? ) Due robot simulati da E-Puck competono per le risorse energetiche in un labirinto integrato Lego . Le partite si giocano ogni giorno ei risultati possono essere visti in video online.
Dal 18 agosto 2017, https://robotbenchmark.net offre l'accesso online gratuito a una serie di benchmark basati su simulazioni Webots tramite l'interfaccia Web Webots. Le istanze di Webots vengono eseguite sul cloud e l'utente può visualizzarle e interagire con esse tramite il proprio browser web. Gli utenti possono programmare famosi robot in Python e apprendere le basi della robotica lì.
Ecco un semplice esempio di programmazione del controller in C / C ++ con Webots: banale comportamento per evitare le collisioni. Inizialmente, il robot si sposta in avanti, quindi quando viene rilevato un ostacolo, ruota attorno ad esso per un po ', quindi riprende il movimento in avanti.
#include <webots/robot.h> #include <webots/differential_wheels.h> #include <webots/distance_sensor.h> #define TIME_STEP 64 int main() { // initialize Webots wb_robot_init(); // get handle and enable distance sensor WbDeviceTag ds = wb_robot_get_device("ds"); wb_distance_sensor_enable(ds, TIME_STEP); // control loop while (1) { // read sensors double v = wb_distance_sensor_get_value(ds); // if obstacle detected if (v > 512) { // turn around wb_differential_wheels_set_speed(-600, 600); } else { // go straight wb_differential_wheels_set_speed(600, 600); } // run a simulation step wb_robot_step(TIME_STEP); } return 0; }