Sanal robot yarışması

Başlatan z, 29 Eylül 2015, 23:35:38

z

Bir başka başlıkta robot yarışması için organizasyon yapalım vs önerisi getirmiştim. Salon kiralama, bir şehirden bir başka şehre yolculuk vs gibi angarya durumlar var. Neyse o konuyu gene o başlıkta tartışırız.

Birden aklıma geldi. Neden fiziki robotları yarıştırıyoruz neden herkes kendi evinde PC'deki sanal pist üzerinde  sanal robotunu yarışmaya sokmuyor?

Öncelikle yıllar önce yazdığım aşağıdaki programı bir çalıştırıp oynamayı deneyin.

http://www.cncdesigner.com/picproje/Robot.rar

----------------------------------------------------

Olabildiğince fizik kurallarını katıp sanal bir robot simülatörü yazacağız. (Bu kısmı ben üstlenebilirim)

Sonuçta bu bir exe program. Program an ve an sağ motor ve sol motor için voltaj bilgisi istiyor. Bu bilgileri işleyerek motorlar dönüyor ve fizik kuralları çerçevesinde sanal robot hareket ediyor.
Sanal robotun sanal sensörlerinin altındaki çizgi, sensörlerde sanal voltajlar üretiyor ve atıyorum 6 sensörün her birisinin verdiği voltaj değeri geri size bildiriliyor.

Siz sensörlerden gelen bilgilere göre simülatör yazılımına yeni  motor voltaj değerlerini bildiriyorsunuz.

Peki nasıl olacak?

Öncelikle internet gezinti programınızla serverdaki sayfaya giriş yapıyor ve yarışmak istediğiniz pisti ve robot şasesini seçiyorsunuz.

Serverden en güncel robot yazılımını ve yarış pistini indiriyorsunuz.  PC'de herhangi bir dil ile kendi robot yazılımınızı yazıyorsunuz. Sonuçta bir exe programınız olacak ve bu exe sizin robot üzerindeki MCU'nuzu temsil edecek.

PC'deki kontrol yazılımı ile  PC'deki simülatör bir şekilde konuşacak? (Bunun nasıl olacağına karar veriririz)

Farklı hız ve kapasitelerdeki PClerde robotun performansı değişmeyecek şekilde robot simülatörü yapmak bizim işimiz. Siz sadece robot kontrol yazılımınıza kafa yorun.

Exeleri çalıştırdığınızda yarış başlamış oluyor ve siz yarış bitene kadar programları açık tutuyorsunuz. Yarışmacının robotunun hareketlerini bizler nasıl izleyeceğiz?

Sanal robot, motorlarına uygulanan voltaj bilgilerini an ve an dosyaya kaydediyor ve yarış bittiğinde servera yolluyor.

Server sizin üyeliğinizi onayladığında bu dosya serverda saklanıyor.

Bizler bu dosyayı indirip kendi ekranlarımızdaki sanal robota okutabiliyor ve film izler gibi izleyebiliyoruz. (Sonuçta simülatöre motor voltaj bilgileri verilince sanal robot yarışmacının karşı karşıya kaldığı aynı robot hareketleri bizde de yapmış olacak)

Serverda her an için sıralama yayınlanacak.  Millet yeni yeni kodlar yazmayı ve sıralamada başa oturmaya çalışacak. Aynı kişi aynı yarışa katılır ve daha iyi puan yaparsa serverdeki eski verilerin üstüne yenisini yazabilecek.

3 kağıtları önlemek için simülatör yazılımının kaynak kodları ve servere gönderilecek motor voltaj bilgilerini barındıran dosya yapısı gizli tutulacak.

--------------------------------

Farklı yarış tipleri için robot parametreleri zaman zaman yenilenecek.

Mesela teker zemin arası sürtünme katsayısı, redüktör oranı. Robot ağırlığı. Motor tork hız grafiği vs.

Bu proje için bir ekibe ihtiyaç var.

Internet PC tarafı yazılımcılığı.
Internet server tarafı yazılımcılığı.
Sanal robot simulatör yazılımcılığı.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

erdcan

Fikir muhteşem, bu süreç için ne kadar zaman ayırdığınızı merak ediyorum? Sistem oturur ise yeni ufuklar açılır öğrenciler, meraklılar ve ürün geliştirmek isteyenler için. Başarılar dilerim.

z

#2
Ben yaptım oldu mantığıyla robot yazılımı yazmak istemeyenler simülatöre test sinyalleri yollayıp örneğin 0...100Hz aralığında frekans tepki cevabını alabilir ve sistemi modelleyebilir.

Önü açık bir proje. Sadece bir server kiralamak gerekiyor. Oyun serverleri gibi bir server gerekiyor.

Simülatör en geç bir ayda yazılır. Zaman içinde iyileştirilir.

Mesela ilk versiyonda merkezkaç kuvvetinin neden olacağı savrulma olmaz da bir sonraki versiyonda olur gibi....

Verdiğim örnek simülatördeki robot, tepeden kuş bakışı görülmekte.

İçimizde 3 boyutlu gerçekçi nesne görünütüsü elde edip bu nesneyi verilen parametrelere göre hareket ettirebilecek varmı?

Araba yarışı programlarında arabalar hareket ederken adamlar arabayı 3 boyutluymuş gibi gösteriyorlar. Araba sağa, sola dönüyor ileri geri, gidiyor benzer çalışmayı bizim robotumuz için yapabilecek varmı?

Ben yapamam yapabilecek varsa projenin bu kısmını size verelim. Yoksa ilk programdaki gibi ilkel kuş bakışı robot görüntüsü ile idare edeceğiz.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sovalye

#3
Aslinda cok guzel olur ama herhalde cizgi izleyen yaristirmayacagiz. ( cizgi isleyende duzgun yazilmis, kodlar arasindaki fark bilgisayarda gozlenebilir mi , gozlense de adil olabilir mi ?)
Normalde mekanik kisimlari yuzunden pek mumkun olmayan veya ragbet gormeyen robot kategorileri icin tasarlasak daha hos olur. Biz yarisma icin bir senaryo verecegiz. Robotta surekli kendini duruma uydurmaya calisacak. Biraz machine learning li.
3 boyuttan bahsetmissiniz ama ilk planda ugrasmak biraz gereksiz olmaz mi ? Bu yarismaya girmek isteyen grafiklerini dusunmeyecektir. 3 boyut la ugrasak kisilerde fizik motoruna baksalar daha hizli sonuca varilamaz mi ?

tekosis

hayata geçebilirse eğlenceli bir platform olabilir hocam. böyle bir ortamda "drag" yarışları yaparız :)
İlim ilim bilmektir, ilim kendin bilmektir, sen kendin bilmezsin, bu nice okumaktır.

vsalma

#5
Selamlar bence cok iyi fikir. Bence ilk versiyonda web yazilimi isine girmeden, dogrudan sizin executable a veri gonderen/veri alan, yazilim gelistirme seklinde olabilir. Puanlandirmayi sizin yazilim yapar pist bitiminde gosterir. Web kismi zor değil ama gereksinim onceligi olarak geride bence. Belki nihai olarak tum sistem (simulator ve robot kodu gelistirme ortami(python mesela)) webe tasinarak tum dunyaya acilabilir. Yeni bir akim olur, cok iyi olur.  Ama bence sistemi ogrenmek/gereksiminleri gormek icin  kisa zamanda ortaya cikartilabilecek prototip daha uygun.

Bu arada exe nin kodlarini epey merak ediyorum. Sakincasi yoksa benimle paylasabilir misiniz? Windows kullanmiyorum, screenshotunu gormustum, sistemi nasil modellediginizi epey merak ettim.

Sanal robot simulatoru kisminda projeye destek vermek isterim ama ne kadar vakit ayirabilirim gercekten bilmiyorum. Gerceklestirmeye karar verirseniz tekrar konusalim neler yapabilriim ne kadar zaman ayirabilirim.

robomaster

Simulator icin saglam bir fizik motoru lazim. Daha bir suru sey. Adamin gelistirme ortami gozetilecek mi? Yoksa simulator ve eklentileri de bunun icin zemin hazirlayacak mi? Cok buyuk.

z

Robotu modellemeye başladım.

Parametrelerim

Motor voltajı
Motor endüktans ve direnci.
Mıknatısların akısı
Redüksiyon oranı
Robotun ağırlığı
Tekerlek çapı
Tekerlekler arası mesafe
Sürtünme katsayısı

Üçkağıtlara karşı önlemler
Max motor akımı
Robot MCU'da ana döngü süresi
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

robomaster

#8
Belki yardımı dokunur.
Sayfada download applet kısmını tıklayınca kod çalışıyor. PID kaysayılarını güzel simule etmiş.

http://www.ostan.cz/LineFollowerSimulator/

İstediğiniz gbi boyutla falan oynayıp sonuçları gözlemleyin. :)

ohacagatay

emeklerinize yazık, bunları yapan bir sürü açık yazılım robot simulatörü ( gazebo ve gazebo cloud ) bunları forklayıp bunlar üstünden geliştirebilirsiniz. Dökümantasyonları çok geniş hem de çok kişi tarafından maintain ediliyor ve arkasında OSRF var. Bir sürü Robotic Middleware yazılımını da destekliyor. Robot simülatörü geliştirmek yerine bu simülatör üstünde çalışan robot geliştirmek daha mantıklı. Ekstradan sadece hardware 'ını simüle etmek istiyorsanız ( voltaj veya sensör değerleri, motor dinamiği veya sonlu elemanlar analizi gibi) gerçekten bunlar robotiğin konusu değil
sadece robotlu bir Spice simülatörü yapmış olursunuz. Kişisel görüşüm bu yönde ama güzel amatör bir alıştırma olabilir.
Some people believe çiğ köfte is a matter of life and death, I am very disappointed with that attitude. I can assure you it is much, much more important than that

z

Simulatorun üçte biri bitti. Her ne kadar motor voltajları değiştirildiğinde robot hızı değişiyor olsa da henüz motorların simülasyonunu yapmadım.

Artık motorların simülasyonuna başlayabilirim.

http://www.cncdesigner.com/wordpress/wp-content/uploads/ZRobot.zip

Hızla viraja giren robotun savrulmasını nasıl matematiksel modellerim fikrim yok.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

kralsam

Hocam Selamlar,

Sana bir öneride bulunayım. Muhtemelen hoşuna gidecek. Oyun yapmak için kullanılan Free bir Fizik motoru var Unity diye bir incele istersen. 3D tasarım yapabiliyor ve çok esnek.

https://unity3d.com/

İyi çalışmalar.

z

Çok güzelmiş. Fakat bunu öğreninceye kadar işimi klasik yollardan görürüm.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

boreas

#13
Pascal için newton, ode ve chipmunk  fizik motorları var bunları dahili kullanan glscene32 adında da gelişmiş bir kit var ama bence bu çok gelir. Terra Game engine  (http://www.pascalgameengine.com/) (open source) newton fizik motorunu kullanıyor, bir zamanlar incelediğim zengl oyun motorunun light engine 2d eklentisinde ise chipmunk engine var  (http://www.zengl.org/extra.html) projeniz işimi görsün yeter değilde geliştirilmeye açık olsun istiyorsanız bu tarz bir motor kullanmanızı kesinlikle tavsiye ederim.

mesaj birleştirme:: 02 Ekim 2015, 10:02:36

Bir öneride görsellik adına yol ve ekrana basılan resimleri farklı tutarak görselliği de güzelleştirebilirsiniz.  Bazı yarış oyunlarında 2bit bmp dosyası harita için kullanıp ekrana basılan grafiği farklı bir resim kullanırlar böylece gözü rahatsız etmeyen  bir uygulama olur.

superconductor

Bahsettiginiz platform "robocup"  adli uluslararası robot yarismasinda bir suredir olan bir kategori. Robocup in genel temasi futbol. Fiziksel olarak futbol oynayan cesitli boylardaki robotlar icin kategori ler var. Bunun yaninda unreal engine uzerinde yazilmis sanal maclar yapiliyor. Rağbet epey fazla idi sanal yarismaya.