Webots'ta e-puck robotu
Yaratıcı | Olivier Michel |
---|---|
Tarafından geliştirildi | Cyberbotics Ltd. |
İlk versiyon | 1996 |
Son sürüm | R2019b revizyon 1 (3 Ekim 2019) |
Depozito | GitHub |
Yazılmış | C ++ |
Çevre | 64-bit Windows 10 ve 8, 64-bit Linux, Mac OS X 10.14 ve 10.13 |
Tür | Robotik süit |
Lisans | Apache 2.0 |
İnternet sitesi | Cyberbotics web sitesi |
Webots , açık kaynaklı bir robotik simülatörüdür. Endüstride, araştırmada ve eğitimde kullanılır.
Webots projesi başlangıçta Dr Olivier Michel tarafından geliştirilen, 1996 yılında başlayan İsviçre Federal Teknoloji Enstitüsü içinde (EPFL) Lozan , İsviçre . Aralık 2018'den beri Webots, Apache 2.0 lisansı altında açık kaynak olarak dağıtılmaktadır.
Webots, çarpışmaları algılamak ve katı gövdelerin ve sıvıların dinamiklerini simüle etmek için ODE ( Açık Dinamik Motoru ) kitaplığını kullanır. ODE kütüphanesi, hız, atalet ve sürtünme gibi nesnelerin fiziksel özelliklerini doğru bir şekilde simüle etmeye izin verir.
Yazılımla birlikte geniş bir serbestçe değiştirilebilir robot modelleri koleksiyonu mevcuttur. Ayrıca sıfırdan yeni modeller oluşturmak da mümkün. Bir robot modeli tasarlarken, kullanıcı nesnelerin hem grafik özelliklerini hem de fiziksel özelliklerini belirler. Grafik özellikleri, nesnenin şeklini, boyutlarını, konumunu ve yönünü, renklerini ve dokusunu içerir. Fiziksel özellikler, kütle, sürtünme faktörünün yanı sıra yay ve sönümleme sabitlerini içerir .
Webotlar, robotik deneylerde sıklıkla kullanılan bir dizi sensör ve aktüatörden oluşur ; örneğin, yakınlık sensörleri , ışık sensörleri , dokunma sensörleri, GPS , ivmeölçerler , kameralar, vericiler ve alıcılar, servolar (rotasyonel ve doğrusal), konum ve kuvvet sensörleri, LED'ler , tutucular , jiroskoplar , pergel vs.
Robot kontrol programları, basit ve kapsamlı bir API aracılığıyla C , C ++ , Java , Python ve MATLAB ile yazılabilir .
Webots, PNG ekran görüntülerini alma ve simülasyonları MPEG (Mac / Linux) veya AVI (Windows) filmleri olarak kaydetme yeteneği sağlar . Webots dünyaları çapraz platformda saklanır. Biçimi VRML diline dayalı olan WBT dosyaları . Webots dünyalarını veya nesnelerini VRML formatında içe ve dışa aktarmak da mümkündür. Bir başka ilginç özellik, kullanıcının herhangi bir zamanda çalışan bir simülasyonla etkileşime girebilmesidir. Böylelikle robotları ve diğer nesneleri fare ile hareket ettirme olanağına sahiptir. İstemci web tarayıcılarına bir simülasyon gönderilebilir.
Webotlar, çeşitli çevrimiçi robot programlama yarışmalarında kullanılmaktadır. Robotstadyum yarışması [1] , RoboCup Standart Platform Ligi'nin bir simülasyonudur . Bu simülasyonda Nao'nun iki takımı klasik futbola benzer kurallarla futbol oynuyor. Robotlar simüle edilmiş kameralar, ultrasonik ve basınç sensörleri kullanır. Rat's Life yarışmasında “ http://www.ratslife.org/ ” ( Arşiv • Wikiwix • Archive.is • Google • Ne yapmalı? ) E-Puck simülasyonlu iki robot , yerleşik bir labirentte enerji kaynakları için rekabet eder Lego . Maçlar her gün oynanır ve sonuçlar çevrimiçi videolarda görülebilir.
18 Ağustos 2017'den beri https://robotbenchmark.net , Webots web arayüzü aracılığıyla Webots simülasyonlarına dayalı bir dizi karşılaştırmaya ücretsiz çevrimiçi erişim sunuyor. Webot örnekleri bulut üzerinde çalıştırılır ve kullanıcı web tarayıcıları aracılığıyla bunları görüntüleyebilir ve etkileşime girebilir. Kullanıcılar Python'da ünlü robotları programlayabilir ve orada robotik biliminin temellerini öğrenebilirler.
İşte denetleyiciyi C / C ++ ile Webots ile programlamanın basit bir örneği: önemsiz çarpışmadan kaçınma davranışı. Başlangıçta robot öne doğru yönelir, sonra bir engel algılandığında bir süre etrafında döner ve ardından ileri hareketine devam eder.
#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; }