Sanal Robot Deney Platformu: Virtual Robot Experimentation Platform: V-REP Tanıtım Sunumu Serkan ÇİÇEK Makine Mühendisi Tura Akıllı Sistemler Mühendislik Enerji Elektronik Robotik ve İmalat Tic. Ltd. Şti.
V-REP ve Uygulama Alanları Sahne Nesneleri Hesaplama Modülleri Kontrol Mekanizmaları Diğer Özellikler Genel Bakış Ürün Ailesi ve Lisanslama Tipleri İçerik V-REP ve Uygulama Alanları Sahne Nesneleri Hesaplama Modülleri 3 Ana Unsur Kontrol Mekanizmaları Diğer Özellikler Genel Bakış Ürün Ailesi ve Lisanslama Tipleri 2
V-REP Nedir? Herhangi bir sistemin fiziksel ve yazılımsal modelini oluşturabileceğiniz genel amaçlı bir robot simülatörüdür. Modeller; Lyall Randell, HiBot, Cubictek, KUKA ve ABB nin izniyle kullanılmaktadır. Diğerlerinden farklı olarak ABB nin V-REP ile resmi bir bağlantısı yoktur. Tura Mühendislik, Coppelia Robotics'in Türkiye'de yetkili tek distribütörüdür. 3
Tipik Uygulama Alanları Hızlı prototipleme ve doğrulama Fabrika otomasyon sistemleri simülasyonu Hızlı algoritma geliştirme Robotik eğitimi Uzaktan görüntüleme Donanım kontrolü Güvenlik kontrolü Etkili ürün sunumu vb. Kara robotu hareketleri Su altı robotu davranışları Hava aracı davranışları 4
3 Ana Unsur V-REP'i oluşturan 3 ana unsur. Sahne Nesneleri Hesaplama Modülleri Kontrol Mekanizmaları 5
Sahne Nesneleri Temel yapıtaşları 12 farkı tip nesne Birbirleriyle kullanılabilirler. Hesaplama modülleri ve kontrol mekanizmaları ile kullanılarak kompleks sistemler oluşturabilirler. Sahne Nesneleri Kontrol Mekanizmaları Hesaplama Modülleri 6
Sahne Nesneleri Şekiller Mafsallar Kameralar Işıklar Referans Nesneler Mesafe Sensörleri Sahne Nesneleri Aynalar Kuvvet / Tork Sensörleri Görüntü Sensörleri Kesiciler Yollar / Güzergahlar Grafikler 7
Sahne Nesneleri Şekiller (Shapes) Üçgen yüzlerden oluşan rijit sayısal ağ nesneleridir. İçeri-dışarı aktarılabilirler. Program içerisinde oluşturulabilir/düzenlenebilirler. Hızlı hesaplamalar için optimize edilmişlerdir. Dört tipi vardır: Simple/grouped random shape Simple/grouped convex shape Pure simple/grouped shape Heightfield shape * * A special non-primitive collision shape. A terrain mesh can easily be constructed by just giving a heightfield image. 8
Sahne Nesneleri Mafsallar (Joints) En az bir serbestlik derecesi olan, mekanizmalar oluşturmaya ve nesneleri hareket ettirmeye yarayan nesnelerdir. Döner (Revolute-type) Prizmatik (Prismatic-type) Vida (Screw-type) Küresel (Spherical-type) 9
Sahne Nesneleri Mesafe Sensörleri (Proximity Sensors) US'ten IR'e her tip mesafe sensörü, çok gerçekçi modellenebilir. Algılama hacmi yaklaşımı ile ayrık (discrete) algılama ışınları yaklaşımına göre çok daha gerçekçi mesafe hesaplaması. Ayalanabilir algılama hacmi Hacim içerisinde çok hızlı en kısa mesafe hesaplaması 10
Sahne Nesneleri Görüntü Sensörleri (Vision Sensors) Kamera simülasyonu Entegre görüntü işleme özelliği Plugin mekanizması ile geliştirilebilir. 11
Sahne Nesneleri Kuvvet/Tork Sensörleri (Force/Torque Sensors) İki şekil arasındaki kuvvet ve tork iletimini ölçebilen rijit bağlantılardır. Rijitlikleri koşullara bağlıdır; belli eşik değerlerine göre kırılabilirler. 12
Sahne Nesneleri Kesiciler (Mills) Şekiller üzerinden talaş kaldırabilmeyi sağlar. Neredeyse her tip işleme metodu modellenebilir. Özelleştirilebilir kesme hacmi. 13
Sahne Nesneleri Kameralar (Cameras) Sahnemizi farklı bakış açılarından görebilmek içindir. Perspektif / ortografik gösterim Bir nesneyi takip edebilme özelliği Otomatik görüntü sığdırma fonksiyonu 14
Sahne Nesneleri Işıklar (Lights) Sahneyi görebilmemizi sağlayan ışık kaynaklarıdır. 3 tipi vardır: Spot Lamba (Spotlight) Yönlü Lamba (Directional) Yönsüz Lamba (Omnidirectional) 15
Sahne Nesneleri Referans Nesneler (Dummies) En basit nesnedir (oryantasyonu olan bir nokta). Çok amaçlı yardımcı nesnelerdir. Referans Koordinat Ekseni olarak düşünülebilir. Tek başına anlamlı değildir, ancak diğer nesne ve hesaplama modülleriyle birlikte kullanılması çok önemlidir. 16
Sahne Nesneleri Grafikler (Graphs) Simülasyondaki veri akışlarını kaydetmek ve görselleştirmek için kullanılır. 3 tipi vardır: Zaman Grafikleri X/Y Grafikleri 3B Eğriler Dışarı aktarılabilirler. 17
Sahne Nesneleri Yollar (Güzergahlar) (Paths, Trajectories) 6 eksende güzergah tanımlama. Yollar, mevcut şekillerden türetilebilir. 18
Sahne Nesneleri Aynalar (Mirrors) Ayna olarak görüntüyü/ışığı yansıtan nesneler olarak kullanılabilir. Sahne/model/nesneden kesit almak için kullanılabilir. 19
Hesaplama Modülleri 5 temel algoritma Birbirleriyle kullanılabilirler. Sahne nesneleri ve kontrol mekanizmaları ile kullanılarak kompleks sistemler oluşturabilirler. Sahne Nesneleri Kontrol Mekanizmaları Hesaplama Modülleri 20
Hesaplama Modülleri Hesaplama Modülleri Çakışma Tespiti Dinamik / Fizik En Kısa Mesafe Hesaplaması Güzergah Planlama İleri / Ters Kinematik Hesaplamalar 21
Hesaplama Modülleri Dinamik / Fizik Gerçek ortam fiziğini ve nesnelerin etkileşimlerini (çarpışma, kavrama, vb.) simüle edebilmek için hızlı ve özelleştirilebilir dinamik hesaplamalar yapabilir. İki fizik motoru desteği: Bullet & ODE Tek tıklamayla motorlar arası geçiş. Hava ve su jeti simülasyonları için dinamik partiküller. Kinematik modülü ile birlikte çalışabilir. ODE and Bullet are both open-source physics engines. Physics engines track all of the physically-active objects, and take into account gravity, collisions, and other constraints to determine how each object's position and orientation changes from one frame to the next. The "open-source" part is important for two reasons. First, it makes cross-platform development a lot easier. Second, with source-code access, users can change anything that isn't working just how they want, and then submit their improvements so that others can use them as well. 22
Hesaplama Modülleri İleri / Ters Kinematik Hesaplamalar Herhangi bir mekanizma için ileri ve ters kinematik hesaplamalar modülüdür. Her türlü mekanizma/yapı için uygundur. Sönümlü/sönümsüz çözüm Ağırlık fonksiyonlu çözüm Koşulluk çözüm Engellerden kaçınma Modele gömülebilme 23
Hesaplama Modülleri Çakışma Tespiti Tüm yapılar için çakışma kontrolü. 24
Hesaplama Modülleri En Kısa Mesafe Hesaplaması Tüm yapılar için en kısa mesafe hesaplaması. 25
Hesaplama Modülleri Güzergah Planlama 2-6 serbestlik derecesinde holonomik Taşıt benzeri yapılar için holonomik olmayan Holonomik sistemler, olası durumlarını sınırlayan kısıtlara bağlı olan mekanik sistemlerdir. Kısıtlar hız üzerine verildiğinde durum değişkenleri integre edilebilecek şekilde bulunabilir. Holonomik kısıtlara örnek olarak normal salınımdaki uzunluk kısıtları ve katı cisim hareketindeki rijitlik kısıtları gösterilebilir. 26
Kontrol Mekanizmaları 6 metot / arayüz Aynı anda ve iç içe kullanılabilirler. 6 programlama dili Entegre geliştirme ortamı Sahne Nesneleri Kontrol Mekanizmaları Hesaplama Modülleri 27
Kontrol Mekanizmaları V-REP kontrol mimarisinde her bir nesne/model bir arayüz tercihi ile bireysel olarak kontrol edilebilir. API: Bir yazılımın başka bir yazılımdaki fonksiyonları kullanabilmesi için oluşturulmuş bir tanım bütünü. Gömülü Uzak API >280 API fonksiyonu Script'ler İstemcileri >100 API fonksiyonu >400 API fonksiyonu Plugin'ler ROS Node'lar >100 servis >30 "publisher" tipi >25 "subscriber" tipi Robot Operating System (ROS) is a software framework for robot software development, providing operating system-like functionality on a heterogeneous computer cluster. Add-on'lar Özel Çözümler A node is an executable file within a ROS package. ROS nodes use a ROS client library to communicate with other nodes. Nodes can publish or subscribe to a Topic. Nodes can also provide or use a Service. 28
Kontrol Mekanizmaları Yerel ve Uzak Arayüzler (Local and Remote Interfaces) Yerel Uzak Yerel (aynı işlem) senkron* veya asenkron* operasyon. Gömülü Script'ler Uzak API İstemcileri Uzak (farklı işlem/donanım) asenkron* operasyon. Plugin'ler ROS Node'lar Add-on'lar Özel Çözümler * simülasyon döngüsüne 29
Kontrol Mekanizmaları Yerel Arayüzler (Local Interfaces) Gömülü Script'ler > 300 API fonksiyonu. Genişletilebilir. Herhangi bir sahne nesnesi ile ilişkilendirilebilir. Birçok Lua genişleme kütüphanesi mevcuttur. Threaded veya non-threaded olabilirler. Thread'ler kolayca senkronize edilebilir. Farklı tipler: main script, child scripts, callback scripts (ör: özel mafsal kontrolcüleri) Plugin'ler > 400 API fonksiyonu. Genişletilebilir. C/C++ arayüzü Simülatörü özelleştirebilir. Yeni gömülü script komutları tanımlamak için kullanılabilir. Add-on'lar > 300 API fonksiyonu. Genişletilebilir. Lua arayüzü Simülatörü özelleştirebilir. Pratik ve kolay kurulum. Birçok Lua genişleme kütüphanesi mevcuttur. Non-threaded: Sıraya konulan işlem. Threaded: Sıraya konulmadan paralelden yürütülen işlem. 30
Kontrol Mekanizmaları Uzak Arayüzler (Remote Interfaces) Uzak API İstemcileri > 100 API fonksiyonu. Genişletilebilir. C/C++, Python, Java, Matlab ve Urbi arayüzleri Veri akışı ve bölümlendirme modları Pratik ve kolay kurulum. ROS Node'lar > 100 servis (>30 "publisher" tipi, >25 "subscriber" tipi. Genişletilebilir. "Publisher"lar ve "Subscriber"lar, servis çağrısı veya gömülü script fonksiyon çağrısı ile aktifleştirilebilir. 31
Kontrol Mekanizmaları Gömülü Script Avantajları 1/6: Kontrolcü Entegrasyonu Plugin Gömülü Script Simülasyon modeli (şekiller, mafsallar, sensörler, vb.) + Plugin (kontrolcü) Simülasyon modeli (şekiller, mafsallar, sensörler, vb.) + kontrolcü 2 öğe 1 öğe 32
Kontrol Mekanizmaları Gömülü Script Avantajları 2/6: Ölçeklenebilirlik Plugin Gömülü Script Simülasyon modeli 1 Simülasyon modeli 1 Simülasyon modeli 2 Plugin Simülasyon modeli 2 Simülasyon modeli 3 Simülasyon modeli 3 Modelleri plugin yönetmeli. Doğal olarak ölçeklenebilir. 33
Kontrol Mekanizmaları Gömülü Script Avantajları 3/6: Versiyon Uyuşmazlığı Plugin Gömülü Script Simülasyon modeli 1 (versiyon 1) Simülasyon modeli 2 (versiyon 1) Plugin (versiyon 1) Simülasyon modeli 1 (versiyon 1) Simülasyon modeli 2 (versiyon 1) Simülasyon modeli 1 (versiyon 2) Plugin (versiyon 2) Simülasyon modeli 1 (versiyon 2) Uyuşmazlık ihtimali çok fazla. Uyuşmazlık ihtimali yok. 34
Kontrol Mekanizmaları Gömülü Script Avantajları 4/6: Taşınabilirlik Aynı İşletim Sistemi Plugin Aynı İşletim Sistemi Gömülü Script Simülasyon modeli Farklı İşletim Sistemi Plugin Simülasyon modeli 2 dosya 1 dosya Farklı İşletim Sistemi Simülasyon modeli Plugin Plugin source Plugin source kaynağı Simülasyon modeli Çok fazla dosya Derleme gereksinimi İşletim sist. yönelik problemler 1 dosya Derleme gereksinimi yok İşletim sist. yönelik problemleri yok 35
Kontrol Mekanizmaları Gömülü Script Avantajları 5/6: Diğer Etkenler Plugin Oluşturma, derleme ve kurulum zorluğu: Yüksek Gömülü Script Oluşturma, derleme ve kurulum zorluğu: Düşük Model düzenleme zorluğu: Yüksek Model düzenleme zorluğu: Düşük Bakım: İşletim sistemine bağlı. Bakım: İşletim sisteminden bağımsız. 36
Kontrol Mekanizmaları Göm. Scr. Avan. 6/6: Simülasyon Döngüsü ile Senkronizasyon Non-treaded Threaded Plugin Kontrol rutini, her simülasyon döngüsünde bir çağrılır. Kolay Kompleks senkronizasyon mekanizması gereksinimi Zor Non-treaded Threaded Kontrol rutin thread'i, bir yardımcı rutinmiş gibi davranır. Ör: Gömülü Script Kontrol rutini, her simülasyon döngüsünde bir çağrılır. Kolay simswitchthread() simsetthreadswitchtiming(delay) simsetthreadisfree(isfree) simsetthreadresumelocation(location,order) Kolay 37
Kontrol Mekanizmaları Gömülü Script Örneği Şekil Mafsal Mesafe sensörü Gömülü script Algılanan noktalar Hexapod Simülasyon Modeli Hokuyo modelinin hiyerarşik görünümü Hokuyo Simülasyon Modeli Mesafe örnekleme ışınları 38
Kontrol Mekanizmaları Uzak API Avantajları 1/2: Herhangi bir donanım üzerinde çalışabilir, pratik, birçok dil desteği Urbi Matlab............................ V-REP Java C/C++ Python 39
Kontrol Mekanizmaları Uzak API Avantajları 2/2: Kolay kullanım, normal bir API gibi V-REP............................ Remote API client Uzak API fonksiyonu Normal değişkenler int errorcode=simxgetjointposition(jointhandle,&position,operationmode); simx_error_noerror simx_error_timeout_flag simx_error_novalue_flag simx_error_remote_error_flag simx_error_local_error_flag etc. Bloklama modu simx_opmode_oneshot simx_opmode_oneshot_wait simx_opmode_streaming simx_opmode_discontinue simx_opmode_buffer etc. 40
Kontrol Mekanizmaları İşbirlikçi Kontrol Mekanizmaları Gömülü Script'ler Uzak API İstemcileri Plugin'ler ROS Node'lar Add-on'lar Özel Çözümler 41
Kontrol Mekanizmaları İşbirlikçi Kontrol Mekanizmaları Örneği 1/3 Sinyale koordinat bilgisi ekler. "objcreation" Uzak API İstemci int pos[3]={1.0f,2.0f,3.0f}; simxappendstringsignal("objcreation",(simxchar*)pos,3*4,simx_opmode_oneshot); Sinyalde bulunan koordinatlarda silindirler yaratır. "objcreation" signaldata=simgetstringsignal("objcreation") simclearstringsignal("objcreation") if signaldata then data=simunpackfloats(signaldata) for i=0,(#data-1)/3,1 do handle=simcreatepureshape(2,22,{0.1,0.1,0.1},0.1) Gömülü Script simsetobjectposition(handle,-1,{data[3*i+1],data[3*i+2],data[3*i+3]}) end end 42
Kontrol Mekanizmaları İşbirlikçi Kontrol Mekanizmaları Örneği 2/3 void SCRIPT_DO_SOME_MAGIC_CALLBACK(SLuaCallBack* p) {... ( gets called when a script calls simxext_dosomemagic ) } Plugin // Initialization phase of plugin: register new script commands: #define SCRIPT_DO_SOME_MAGIC "simext_dosomemagic" int inargs[]={2,sim_lua_arg_int,sim_lua_arg_float sim_lua_arg_table}; simregistercustomluafunction(script_do_some_magic,strconcat("number value1, number value2=",script_do_some_magic,"(number index,table invals)"), inargs,script_do_some_magic_callback); Özel API fonksiyonunu kaydeder ve işler. "simext_dosomemagic" Özel API fonksiyonunu çağırır. "simext_dosomemagic" Gömülü Script returndata1,returndata2=simext_dosomemagic(arg1,arg2) 43
Kontrol Mekanizmaları İşbirlikçi Kontrol Mekanizmaları Örneği 3/3 ROS'a resim akışını aktifleştirir. -- Following in the script initialization phase (executed just once): -- Retrieve the handle of the vision sensor we wish to stream: visionsensorhandle=simgetobjecthandle('vision_sensor') -- Now enable topic publishing and streaming of the vision sensor's data: topicname=simextros_enablepublisher('visionsensordata',1, simros_strmcmd_get_vision_sensor_image,visionsensorhandle,0,'') -- Retrieve the handle of the passive vision sensor. We will use -- the passive vision sensor to visualize received data: passivesensorhandle=simgetobjecthandle('passivevision_sensor') Gömülü Script -- Now enable a topic subscription: simextros_enablesubscriber(topicname,1, simros_strmcmd_set_vision_sensor_image,passivesensorhandle,0,'') ROS'tan resim akışını aktifleştirir. ROS Framework 44
Kontrol Mekanizmaları Unsurlara Genel Bakış 45
Kontrol Mekanizmaları Mimariye Genel Bakış 1. C/C++ API bildirileri 2. Script'lerin ard arda yürütülmesi 3. Lua API çağrıları 4. Özelleştirilmiş Lua API bildirileri 5. V-REP olay bildirileri 6. Uzak API fonksiyon çağrıları 7. ROS aktarımı 8. Özelleştirilmiş iletişim (soket, seri, veri yolu, vb.) 9. Lua API'ye Add-on çağrıları 10. Script bildiri çağrıları 46
Diğer Özellikler Özelleştirilebilir Kullanıcı Arayüzü Entegre arayüz düzenleme modunda, tamamen özelleştirilebilir sayısız kullanıcı arayüzü bileşeni. Butonlar, kaydırıcılar, düzenleme kutuları ve etiketleri Kaplanabilir veya anime edilebilir (örneğin video akışı ile) Sahne nesneleri ile ilişkilendirilebilir (gömülebilir). Taşınabilir Entegre düzenleme modu Kişiselleştirilmiş Windows stilleri desteği 47
Diğer Özellikler Entegre Düzenleme Modları (Mesh Edit Modes) Modellere yönelik temel düzenleme modları. Örneğin; Yarı-otomatik temel şekil algılama metodunu içeren sayısal ağ düzenleme modu. Üçgen, kenar ve nokta düzenleme modları Sayısal ağ düzenleme (nokta ayarlama, üçgen ekle/çıkar) Yarı-otomatik ilkel şekil çıkartma fonksiyonu Üçgen, kenar ve nokta çıkartma Sayısal ağ ayrıştırma Dışbükey şekil ayrıştırma Dışbükey şekil kabuğu ayrıştırma 48
Diğer Özellikler Daha birçok özellik İçeri aktarma formatları: OBJ, STL, 3DS, DXF, COLLADA, URDF Entegre Reflexxes Hareket Kütüphanesi (Tip 4) Dinamik partiküller Yüzey işleme simülasyonu Video kaydedici Kablosuz haberleşme simülasyonu Boyama ve kaynak atma simülasyonları Optik aynalar Model listeleyici ve sahne hiyerarşisi Statik ve dinamik dokular Çoklu geri al / yinele özelliği Detaylı dokümantasyon ve yardım vb... The Reflexxes Motion Libraries provide instantaneous trajectory generation capabilities for motion control systems. 49
V-REP'e Genel Bakış Gelişmiş dağınık kontrol mimarisi Gömülü script'ler Uzak API ROS arayüzü Çok sayıda gelişmiş unsur >400 farklı API fonksiyonu 12 tip simülasyon nesnesi (kuvvet/tork sensörü, mafsal, kamera, vb.) Entegre fizik motoru, kinematik/çakışma/mesafe/güzergah hesaplamaları Çok sayıda platform, arayüz ve dil desteği Arayüzler : Plugin'ler, Gömülü script'ler, Add-on'lar, Uzak API, ROS Diller : C/C++, Java, Python, Lua, Matlab, Urbi Fizik motorları : Bullet, ODE Platformlar : Windows, MacOS, Linux 50
Ürün Ailesi V-REP PRO EDU: Ticari olmayan kullanım için. Ücretsiz. Hobi amaçlı kullanıcı, öğrenci, öğretmen, akademisyen, okul, üniversite, vb. Sınırlamasız, tüm fonksiyonlar açık. Kullanıcı kaydı gereksinimi yok. V-REP PRO: Ticari kullanım için. Ücretli. Şirket, araştırma enstitüsü, kar amacı gütmeyen organizasyon, vb. Sınırlamasız, tüm fonksiyonlar açık. V-REP PLAYER: Oynatıcı. Ücretsiz. Herkes için. Ücretsiz ve dağıtılabilir. Düzenleme kabiliyetleri sınırlı. Dosya kaydetme özelliği yok. 51
Açık Kaynak Kodu ve Alt-Lisanslama V-REP, açık kaynak kodludur. V-REP'i kullanarak kendi yazılımınızı geliştirebilir, bu yazılımı kendi bünyenizde kullanabilir ya da satabilirsiniz. Yazılımı yine esnek bir simülatör olarak geliştirebileceğiniz gibi, kendi ürünlerinize özel bir yazılıma da dönüştürebilirsiniz. Alt-Lisanslama: Özelleştirilmiş V-REP'in ticari olarak satılması için gereken lisans tipidir. V-REP SOURCE CODE Educational: Açık kaynak kodun eğitim versiyonu. Ücretsiz. V-REP SOURCE CODE Commercial: Açık kaynak kodun ticari versiyonu. Yani özelleştirilmiş V-REP'in alt-lisanslaması için. Ücretli. 52
Teşekkürler Tura Akıllı Sistemler Mühendislik Enerji Elektronik Robotik ve İmalat Tic. Ltd. Şti. Aşağı Öveçler Mah. 1322. Cad. No:27/7 Çankaya/Ankara/Türkiye +90 312 472 66 16 iletisim@turamuhendislik.com www.turamuhendislik.com