Sanal Gerçeklik Yürüyüş platformunda Arduino nun yeri?
  • Merhabalar. 2 adet analog çıkışlı 3 eksen sensörü arduino uno ya bağlayıp x y z eksenlerinde yürüdüğumde oyundaki karakteri nasıl hareket ettirebilirim. 3 eksen sensöre ve arduino uno kartına nasıl bir kod girmem gerekli. Yardımlarınızı bekliyorum. Şimdiden teşekkürler
  • Oyun ortami hazirmi o kismi halletiyseniz ortamin gerektirdigi inputlari olusturacagiz arduino ve sensorlerle
  • Öncelikle teşekkür ederim. örneğin gta yada crysis gibi oyunlar için. Ben olduğum yerde yürüyeceğim fakat oyundaki karakter gerçek ilerleyecek. ileri hareketimde ileri (w) geri hareketimde geri (s) gibi. Klavye kullanmadan 3 eksen sensör ile (2 adet) karakterin hareketlerini kontrol etmek istiyorum. 1 adet arduino uno 2 adet analog çıkışlı sensör ile bunu halledebilirmiyim yoksa başka devrelere gerek olurmu. Sensörü 2 adet kullanmamdaki amaç birisi sağ ayağımda birisi sol ayağımda olacak. Kafamda şu şekilde tasarladım. Mesela x ekseni için +100 den sonrasında ileri -100 ün altında geri. Y ekseni için +100 den sonra sağa -100 ün altında sola kaysın. +-100 ile 0 değerleri arasındada hareket etmesin. Bunu kodlamayı bilmiyorum.
  • demek usb klavye simulasyonu yapılacak tuş kombinasyonları ile sanal ortamda gezilecek. arduino leonardo veya arduino due usb keyboard veya mouse gibi davranabilir. once bu urunleri alın ve kod olarak ileri geri sağa sola komutlarını vermeyi deneyin. bu istediğiniz gibi oluyorsa daha sonra gerekli sensorleri okuyarak sensor verilerini tuşa dönüştürüp yollyacaksınız. ayakları birer anahtar bağlamanız yeterli ayaklarınız yerden her kaldırdığınızda bir hareket olur herhalde yurumek yerine olduğu yerde adım sayma şeklinde olur bu çünkü adım attıkça yeri de hareket ettirmenız gerekecek bunları düşündünüz mü? bence bayagı ciddi mekanık bir platforma ihtiyacınızda var
  • Bulunduğum yer sabit olacak. Öncelikle şunu denemek istiyorum. Sensörden aldığım veri ile arduinonun çıkışından +5 v alabilirmiyim. Bu kısmını halledebilirsem diğer kısımlarda kafa yormak daha kolay olur. Dediğim gibi mesela sensörün xekseni için + 100 üstü için arduino uno çıkışından +5v alıp 0 ile +100 arasında 0v alabilirmiyim. Bunun için nasıl bir kodlama yapmam gerekir.
  • 0..5v arasında voltajları pwm ile alabilirsin. pwm çıkışını opampla ve transistorle surmen lazım.
  • hareket sensorleri için nasıl bir şey uygun bilemiyorum bazı nsensorler var anlık G kuvvetini verir 3 eksende(xyz) bazı sensorlerde bulunulan konumu açı olarak verir bazı dönüşümlerle hız elde edilebilir. bunları sizin accelemetre ve jiroskop ozelliği olan modullere ıhtıyacınız olabilir. bu moduller hep ham data verir bu bilgileri işlemek bayağı maharet ister program yazma konusunda bayağı işi çözmeniz gerekiyor
  • Sensörün verilerini kısıtlayamazmıyım. Örneğin sadece x ekseni +100 den sonra x1 çıkışından +5v -100 altı x2 çıkışından +5v y ekseni +100 den sonra y1 +5v -100 altı y2 çıkışından +5 v almak istiyorum. (X1 y1 x2 y2 örnek olsun diye yazdım. Arduino uno nun herhangi bir "benim belirleyeceğim 4 adet çıkışlardan" +5 v almak istiyorum.
  • 9dof sensör siparişide verdim hız ve açı (360° kafa dönüşünü ve koşmayı onunla yapmayı düşünüyorum) fakat bunu ikinci aşamada projeye dahil edeceğim. Benim için şuan önemli olan Arduino uno nun 2 girişini kullanarak x ve y koordinatlarında + - aşamalarında 2 şer çıkış ( toplam 4 çıkış) tan +5 v almak istiyorum. Yani yukarda belirttiğim gibi x+ da çıkış1=5v x- de çıkış2=5v y+da çıkış3=5v y- de çıkış4=5v
  • Şimdi 2 adet arduino leonardo siparişi verdim. Klavye kombinasyonlarını sizinde yardımlarınızla 2. Projede yaparız. Fakat benim takıldığım konu bu 3eksen sensörlere nasıl belirli aralıklarda çıkış vermesi komutunu verebiliriz. Yoksa ayağımızı milim hareket ettirsek arduino çıkışa hemen 5v gönderir. Bunu engellemek için minumum ve maximum değerler atamamız gerek. Hadi belki maksimuma gerek yok. 0 ile -+100 değerleri arasında çıkış vermemesi -+ 100 den sonrasında nasıl çıkış verdirebiliriz. Birde arduinoya bağladığımız sensörleri nasıl ne olduğunu tanıtacağız. Yani buton mu, basınç sensörümü, sıcaklık sensörümü, jiroskopmu. Bağladığımız nesnenin ne olduğunu arduino nasıl anlayacak. Ve ya anlamasına gerek varmı yoksa sadece değerler üzerinden mi hareket edecek. Kafamda milyonlarca soru var. :)
  • digitalwrite(5,HIGH) komutu 5.pinden +5v verir LOW yazarsan 0v verir arası değer olmaz. tek pinden en faz 10ma çek toplamda arduinodan 100ma den fazla çekmeye çalışırsan resetlenebilir.
  • Tamam zaten çıkış pinlerine triyak bağlamayı düşünüyorum. 5 v ile triyağı sürüp giriş çıkıs uçlarına klavyenin w a s d tuşlarını bağlicam.
    Yani anladığım kadarı ile
    Çıkış için:
    digitalwrite(1,HIGH) = Wtuşunu
    digitalwrite(2,HIGH) = Stuşunu
    digitalwrite(3,HIGH) = Atuşunu
    digitalwrite(4,HIGH) = Dtuşunu
    aktif edecek olan triyağa 5v gönderecek öyle değilmi?

  • Örnek kod: (kodlama dilini bilmediğim için böyle yazıyorum)
    Giriş:
    x axis +100> digitalwrite(1,HIGH)
    x axis +100< digitalwrite(1,LOW)
    x axis -100> digitalwrite(2,LOW)
    x axis -100< digitalwrite(2,HIGH)
    y axis +100> digitalwrite(3,HIGH)
    y axis +100< digitalwrite(3,LOW)
    y axis -100> digitalwrite(4,LOW)
    y axis -100< digitalwrite(4,HIGH)
    Doğrumudur?
  • Okoman bey sanırım başınızı çok ağrıttım ama bana bu konuda yardımcı olursanız çok memnun olurum. Arduino uno kartının girişine bağlayacağım sensör Adxl335. Ben bu sensörün sadece x ve y koordinatlarını kullanacağım. Giriş kodlarını nasıl belirlemeliyim.
  • İstediğiniz şeyi olduğunuz yerde adım atarak yapamazsınız. Okoman hocanın bahsettiği gibi bulunduğunuz mekanında hareketli olması gerekir. Bi tavsiyem var bu sistemi kurup mouse yerine kullanırsanız kafanıza bağlayıp en azından yukarı baktığınızda yukarı aşşğı baktığınızda aşşağı sağ sol navigasyonları gerçek zamanlı yapabilirsiniz. Bir bilardo eldiveninede buton yerleştirip tetik olayınıda çözersiniz. Baya eğlenceli bişey çıkar gibime geldi.
  • "İstediğiniz şeyi olduğunuz yerde adım atarak yapamazsınız." Bu sözünüzü hiç unutmadan googlede yada youtube ta virtuix omni kelimelerini aratırsanız yapılanını görebilirsiniz. 360° bakış açısını hallettim. Onda bi sıkıntım kalmadı. Onuda nasıl hallettiğimi belirteyim. Hiç değilse benim gibi konu hakkında yardım bekleyen arkadaşlara faydam olsun. Android yada ios telefonunuza ve pc nize trinus yükleyin. Hem pcnizin ekranını telefonunuzun ekranında görürsünüz hemde oyundaki karakterin kafa hareketlerini telefonu hareket ettirdikçe yapabilirsiniz. Windshair hedeflerin herzaman büyük olsun. Pes etmek bana uzak.
  • Buda bahsettiğim sistemi yapan firmalardan bir tanesi.
    http://www.virtuix.com/
    Tamamen eksen sensörleri ile yapılmış bu firmanın sistemi.
    Mesela birde şöyle bir örnek vereyim:
    Arduino uno nun girişine bir termometre bağladık. çıkışınada buzer. ısı 40 derece nin üzerine çıktığında arduino kartı bunu algılayıp çıkıştaki buzzeri aktif hale getirecek. (Alarm çalacak) tekrar 40 derecenin altına düştüğünde alarm susacak.
    İşte burada Arduino ya bu dereceyi nasıl belirteceğiz. Asıl projemizde x ekseninin +100 üstü ve -100 altı değerleri gibi.
  • arkadaşım amacım polemik değildir. amma ve lakin öncelikle tanımadığın kişilerin hedeflerinin boyutunu ölçme yeteneğini okuduğunu anlayarak kullan. pes etmek tabiki uzak olsun . bu arada hedef büyük olunca adımları büyük atmak gerektiği hissine kapılmışsınız. önce ufaktan kod yapısını öğrenseniz! 3 eksen sensörüne verdiğiniz örnekte hareketli bir mekan simule edilmiş ve daha önemlisi 3 eksen sensörüyle değil bele bağlanan hareketi algılayıcılar yürüme ve yön bilgilerini aktarmış. 3 eksen sensörü bahsettiğim kafadaki sanal gerçeklik gözlüğünde zaten dahili olan birşey ve hem fikir olduğumuz bakış açısı bilgilerini iletiyor.

    sorduğunuz soru ile vardığınız son nokta pek alakasız. madem bu sistem var ve bunu yapmak istiyorsunuz başından bunu yapmak istiyorum deseydiniz büyük hedefinize kırıntı sayabileceğim kadarda olsa dahil olurdum. bunun yerine burda hedeflerimin boyutunu tartışmazdım. kolay gelsin.
  • Arkadaşım yapamazsınız deyip kesip atmışsın. Hedefiniz küçük demedim sadece büyük olsun temennisinde bulundum.
    Benim şuanlık burada istediğim tek şey x ve y derecelerinde
    x +100 ve üzeri iken 1. çıkış +5v
    x +100 ün altındayken 1.çıkış 0v
    x -100 ün altındayken 2. çıkış +5v
    x -100 ün üstündeyken 2. çıkış 0v

    yani 0 ile 100 değerleri arasında Arduino uno çıkış vermeyecek.
  • Mesela sensör derece si için kodu böyle yazabilirmiyiz
    if (x+>=100) {

    if (x-<=-100) {<br />
    if (y+>=100) {

    if (y-<=-100) {
  • bakın okuduğunuzu anlamıyorsunuz. yapamazsın dediğim 3 eksen sensörü dediğimiz meretle yürüme hareketini sabit bi platformda algılayamazsınız. çok yorulmadan bi örnek vereyim umarım sensörün mantığını kaparsınız. air mouse varsa elinizde vicudunuza bağlayın ve paylaştığınız üründeki gibi olduğunuz yerde adım atarmış gibi ayağınızı kaydırın. ekranda mouse imlecinin hareketi algılamasını anlayın. 3 eksen sensör dediğimiz accelometre gyro birleşimi bir sensördür. asıl kullanım amacıda iki sistemden gelen bilgileri alıp yorumlayıp açısal bilgiler vermesidir ve ivmelenmeyi ölçmesidir.. çeşitli hesaplamalarla konum hesabı hız bilgileride alırsınız. ama olduğunuz yerde ayağınızı kaydırarak hangi konum bilgisini alacaksınız ? o üründe yürümeyi algılayan sistem farklı bele bağlanmış çok yönlü algılayıcılar aladıkları bilgilerle yürüme eğilme vs vicut hareketlerini alıp işliyor.

    hedefiniz büyük anladık ama önce neyin ne işe yaradığıyla başlayın.

    madem sorduğunuz 2 satır kodun mantığını kapmak

    if (x>100 )
    digitalwrite(1,HIGH)
    if(x<100&& x>0)
    digitalwrite(1,LOW)


    şeklinde kullanırsınız. sanırım bir klavyeye bu durumları aktarıp wsda tuşlarına görev atayacaksınız. arduino leonardo ile klavye bozmanıza gerek kalmazdı. bu komutları leonardoda işleyip bilgisayara bu tuşları klavye gibi gönderebilirdiniz.
  • Son cümleleriniz tamda istediğimi anlatıyor evet. Fakat yazılarımın hepsini okusaydınız sizde ilk başta ne istediğimi anlardınız. Leonardo kartı siparişi verdiğimi onu 2. Projede yapacağımı belirtmiştim ve o gelene kadar klavye üzerinden arduino ile kontrol edeceğimi belirtmiştim. Yukarda belirtmiş olduğunuz koda - değerini de girebiliyormuyuz. Çünkü bunu w tuşu için atadığımda geriye gitmek için s tuşunada - değerinden komut atayıp yapmam gerekiyor. Peki bu şekilde hareketsiz bir yüzeyde olduğum yerde yürüyerek karakteri ileri geri sağa sola hareket ettiremezmiyim?
  • Hakkınızı helal edin. Teşekkürler. O kadar canım sıkıldıki. Kafama taktığım bir şeyi çözemeyince kendimi yiyorum. Hırsım beni mahvediyor. Kusura bakmayın. Yapamazsınız yazısınıda okuyunca daha bi kötü oldum.
  • virtuix yeni bir proje değil en az 5 yıldır var yapanda bir turk almanyadaydı sanırım. o projedeki platform hareketli sabit değil adım attıkça zemin her yöne kayabiliyor hareket tek yonde olsa yuruyen bantta işi çözebilirdik ama oradaki geliştirme bunun her yöne yapılabilmesi ve hareket yönu hızı platformun hareketınden alınıyor. sizin projede ıvme sensorlerı ıle anlık mınık ıvmeler okuyacaksınız sureklı bır hareket elde etmek ıcın bayagı ıyı algorıtmalar yazmak gerekıyor. bence oncelıkle malzemelerınız elınıze gecsın adxl çıkışını bır ınceleyın bakalım nasıl bırşey gelecek. hani size kolaylık olsun adxl ivmeyi voltaj olarak verir hiç hareket yoksa 2.5v olursunuz eksenden yukarı doğru bir hareket olursa 2.5v...5v arasında bir takım sıçramalar göreceksiniz. eksenin altına göre hareket gelişirse 2.5v...0v a doğru bir gerilim oluşacak hepsi bu. siz bunu map komutu ile sizin 100 birimlik skalanıza donustureceksiniz.

    şu ornek guzel fıkır verebılır



    şuradada adc çıkış yerine i2c çıkış veren adxl için guzel bır anlatım var
  • Sağolun okoman bey . Dediğiniz gibi parçalar bi gelsin ona göre bakalım. Olmazsa basınç sensörleri ile yapmayı denicem. Ama ondada sadece ileri geri yapabilirim galiba. Sağ sol için yapılamaz diye düşündüm. Birde ayak mausları var ama onu klavye komutlarına çeviremem. O yüzden sadece kafa hareketleri ni yapıyor çünkü. Benim için sadece yürüme kısmı lazım. Ama robot kol projelerinde ki gibi bir kod işimi görmesi lazım ama bilemiyorum yinede. Ondada mesela adxl kullanmışlar ve 4 motoru kontrol ediyorlar. Banada 4 çıkış lazım. 4 çıkışa ayrı ayrı 5 v verebilsem yeterli. Yani adxl yi saga yatirdiğımda 1 sola yatırdıgımda 2. İleri yatırdığımda 3. Gerıye yatırdığımdada 4. Çıkıştan 5v alsam olur gibi sanki.
  • Virtuix omni şirketi hisselerini Mark zucherberk aldı diye biliyorum. Bizim Türk yapımcının şirketi cyberith. Sitesi : http://cyberith.com/ 10 ortaklar. Ben çok araştırdım. Omni platformların yürüyüş alanları hareketli değil. Omni pad lar sayesinde adımlarını oluşturuyorlar. Ayaklarına takıyorlar. Sadece bel kısımları hareketli. Oda kolay dönüş yapabilmek ve sanal ortamda gezinirken kazaya sebep olmamak için. Gözümden kaçan birşey olmuş olabilir ama hala yürüyüş alanının sabit olduğunda ısrarcıyım :)
  • Bizim türk yapımcının şirketi virtuix şirketinden daha yetenekli ama. Virtuix ayak hareketlerini pad la yaparken bizimki çorabla yapıyor. Çorap tabi bildiğimiz çoraplardan değil. Sanırım flex sensör ve/veya basınç sensörü gibi ince bir sensör kullanmış. Arkadaşlarım abilerim ablalarım kardeşlerim böyle bir ortamda neden bu tür şeyleri araştırıp yapamayalımki. Şurada bu ortamı yakalamışken birbirimizle bilgi alışverişinde bulunarak çok kolay yapılabilecek şeyler bunlar. Sermayemizi hiç olmazsa dışa aktarmayız. Bu yıl içerisinde virtuix şirketi Türkiye pazarına gireceğini belirtmişti. Bu sistemi araştırıp biz kendimiz yapalım.
  • Omnide yüzey hareketliymiş bende biraz bakınınca bu bilgiyi buldum. Hatta hafif çukur oluşu çok eleştirilmiş tamamen düz çok yönlü koşu bandı gibi yapmışlar. Basınç sensörleri güzel bir fikir gibi. yürümeyi koşmayı algılamak aslında çok zor şeyler değil zor olan bu hareketleri yorumlayacak algoritma.
  • Evet çukur olması benimde tuhafıma gitmişti. Neden düz yapılabiliyorken çukur yapmışlar diye ama vardır illaki sebebi. Peki yüzey hareketli ise bu omni pad lar ne işe yarıyor. Yani ben yürüyüş kısmını pad ler sayesinde yapmışlar diye biliyorum. Çünkü stompz firmasının da böyle bir sensörü var. http://www.stompzvr.com/
  • Yüzey hareketli olacakki yürüme simülasyonu olsun..
  • Stompzvr yi inceledinmi. Olduğu yerde ayaklarını hareket ettirerek karakteri oynatıyor. Mesela okoman beyin paylaştığı üstteki videodaki kullandığı kod da bu iş için ideal. El hareketiyle eğim uygulayarak arabayı ileri geri saga sola hareket ettiriyor.
  • Biz burada motor tekerlerini değilde devre çıkıslarına triyak bağlayarak w a s d tuşlarının giriş çıkış uçlarını triyağın giriş çıkış uçlarına bağlayarak triyağa buton görevi yaptıracağız. Tabi bu uno için. Leonardo da klavyeyede gerek kalmayacak. Çıkışları direk pc ye klavye gibi aktaracaz.
    Hayırlısıyla şu kartlar bi gelseydi (tabi bozuk çıkmazsa) tek tek deneyeceğim ve olumlu yada olumsuz herşeyi burada sizlerle paylaşacağım.
  • takipteyim bende, yurume işi için biri imkansıza yakın :) 2 yöntem geldi aklıma

    1.si basit bir yuruyuş bandı ancak merkezinden 360* kendi etrafında dönecek şekilde. döndurme işini servo yapacak, oyuncu kafasındaki bir şapka sayesinde hangi yöne kafasını çevirirse yuruyuş platformuda aynı oranda dönecek ve oyuncu yurumeye başlıyacak.

    2.si daha saçma hiç anlatmayım :)
  • :) omni nin neden eğimli bir yüzey kullandığını sanırım çözdüm. Ama emin değilim tabi.
    Pratikte düşündüğum zaman x ve y eksenlerini titreşimleri önlemek için +z eksenleri ile birlikte kullanmış olabilir diye düşünüyorum. Düz zeminde 0z eksene geldiğinde hareketsizlik oluşuyor olabilir. Düz zeminden eğimli zemin üzerine geçtiğinde hangi yöne istiyorsak o yöne hareket ettirebiliriz. Arduino uno için tüm kodların ne anlama geldiğini anlatan bir döküman varmı. A dan Z ye tüm kodların bulunduğu bir döküman lazım. Arduino uno ve leonardo kodları (temel kodlar) aynımı.
  • nsaryc bu konu er yada geç öyle yada böyle çözülecek. :)
  • arduino.cc de herşey var
  • Teşekkür ederim okoman bey.
  • konu eski ama fikir vermesi acisindan size su videoyu paylasayim:



    demekki ciddi bir proje yuruturken en cok dikkate alinmasi gereken sey hali hazirda yapilmis olanlari yakindan incelemekmis burada bunu goruyoruz

    godugunuz gibi ozel bir ayakkabi var ve ustune sensor takilmis, ayakkabinin altinda kaygan bir malzeme kullanilmis ve yuruyus platformu da buna gore dizayn edilmis

    kendi capinda zorluklari vardir tabi ama konsept bana baya kolay geldi, evde amotor olarak uretmek mumkun gibi gorunuyor
  • bu ayakkabi altindaki kaygan malzemenin benzerini plastik bir dograma tahtasini zimparalayip keserek elde etmek mumkun

    ayakkabi altindaki malzeme longboard eldivenlerinde kullanildigi icin yakindan taniyorum

    kalin plasigi kesmek icin ya marangozcuya gitmek lazim yada dekupaj testeresi varsa kolayca kesilebilir, yine zimpara icinde zimpara makinesi lazim cunku cok zor el ile yapmak

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.