Okuma 12.6 dkKategoriler: OMNIVERSE, PRO GRAFİK

NVIDIA Omniverse‘ün bir parçası olan NVIDIA Isaac Sim, robotik simülasyonları için NVIDIA tarafından geliştirilen bir robotik platformudur. Isaac Sim, ışın izleme teknolojisi ile birlikte, yüksek gerçeklik ve fiziksel doğrulukta robotik simülasyonlarınız için ideal bir ortam oluşturur.

Omniverse yalnızca CAD modelleri ile çizilmiş robotları Isaac Sim’e aktarmayı değil, aynı zamanda oldukça basit bir şekilde kendi robotunuzu Isaac Sim ortamında geliştirmenize olanak tanıyor.

Bu yazımızda dört tekerlekli bir aracın nasıl tasarlanacağına ve robota hareket kabiliyetinin nasıl kazandırılacağına değineceğiz.

Çalışmaya başlamadan önce yapmanız gerekenleri aşağıda yer alan gereksinimler kısmında belirttik. Bu çalışmayı takip edebilmeniz için gereksinimlerin tamamlanmış olması, araç hareketleri ile ilgili bazı temel fizik kurallarının bilinmesi ve Isaac Sim Omnigraph hakkında temel bilgi seviyesine sahip olunması gerekmektedir.

Sorularınızı yorum kısmında belirtebilirsiniz.

Şimdiden keyifli çalışmalar dileriz.

Gereksinimler

Haydi Başlayalım!

Öncelikle 4 tekerlekli basit bir robotun nasıl oluşturulduğunu öğrenelim. Bunun için bir dikdörtgen prizmanın yanına 4 adet silindir ekleyerek basit bir robot tasarlayacağız.

  1. Isaac Sim uygulamasını açalım.
  2. Create → Mesh → Cube yolunu izleyerek sahnede bir küp oluşturalım. Küpün boyutlarını aracın gövdesine benzeyecek şekilde dönüştürelim.
  3. Ardından aracın tekerleklerini oluşturmak için Create → Mesh → Cylinder yolunu izleyerek bir silindir oluşturalım. Silindirin boyutlarını oluşturduğumuz gövdeye uygun şekilde yeniden düzenleyelim ve oluşturduğumuz tekerin yönünü gövdeye uygun şekilde döndürelim.
  4. Tekerlekleri kopyalayarak (Ctrl + D ile kopyalayabilirsiniz) ilave 3 teker daha oluşturalım.
  5. Tekerlekleri gövdenin yanlarına yerleştirerek aracın görüntüsünü elde edelim.

Aracın jointsiz hali ve stage ekranı

Robotumuzu oluşturduktan sonra parçaları uygun bir şekilde isimlendirelim. “Robot” adında bir Xform oluşturalım ve 5 adet parçayı da bu Xform’un altına yerleştirelim. Konumlarını da şekildeki gibi ayarlayarak robotumuzun şeklini tamamlayalım.

Fizik İşlemleri

Robotun simülasyon ortamında gerçek fizik kurallarına tepki gösterebilmesi için fiziki bir yapıya dönüştürülmesine ihtiyaç vardır. Bunun için  colliders (çarpışma özellikleri) tanımlanması gerekmektedir.

Robotun her bir parçası için (gövde ve tekerlekler için ayrı ayrı) Add → Physics → Rigid body with collider preset yolunu izleyerek fizik özelliklerini ekleyelim.  Ayrıca oluşturduğumuz aracın bulunduğu ortamın da fizik kurallarının geçerli olması için Add → Physics → Ground Plane yolunu izleyerek fiziğe sahip düz bir yüzey oluşturabilirsiniz. Play butonuna bastığınızda parçaların yere düştüğünü göreceksiniz.

Bağlantı işlemleri (Jointler)

Aracımızın yapısını incelediğimizde, tüm tekerleklerin ileri-geri hareket etmesi ve ön tekerleklerin sağa-sola dönmesi gerekmektedir. Aracımızın parçalarını birleştirirken, aracın bağlantılarının bu prensiplerde yapılmasına dikkat edilmelidir.

İleri ve Geri Gitmeyi Sağlayan Bağlantılar

Tüm tekerleklerin ileri ve geri hareketini yapabilmesi ve ön tekerleklerin kendi etraflarında dönmesini sağlamak için eklem bağlantılarının yapılması gereklidir. Isaac Sim’de bu işlemi Revolute Joint ile gerçekleştirebiliriz. Joint bağlantıları yaparken dikkate alınması gereken en önemli hususlardan biri, parent-child ilişkisidir. Yani hangi parçanın hangi parçanın etrafında döneceğidir. Aracımızda tekerleklerin gövdenin etrafında dönmesi gerektiği için gövde parent (ana) parça, tekerlekler ise child (alt) parçalar olarak tanımlanmalıdır.

Bunun için önce gövdeyi, ardından arka tekerlerin her biri için ayrı ayrı Create → Physics → Joint → Revolute Joint yolunu izleyerek joint bağlantılarını oluşturalım. Joint bağlantısını oluşturduktan sonra, Stage üzerinden oluşturduğumuz Joint’i seçelim ve Properties (özellikler) kısmında Body0 bölümünde gövdenin, Body1 bölümünde ise tekerleğin tanımlı olduğunu kontrol edelim. Aksi takdirde bağlantımız doğru bir şekilde tanımlanmamış olabilir.

Bu işlemin ardından doğru dönme ekseni ayarlarını yapalım. Her bir joint’in sağ alttaki Property (özellik) kısmından dönme ekseni olarak Z’yi belirleyelim.

Jointlerin seçili hali aşağıdaki gibi görünmelidir.

Arka jointlerin gösterimi

Bu durumda play butonuna bastığınızda herhangi bir şekilde parçaların birbirinden ayrılmadığını, ayrıca Shift’e basılı tutarken gövdeyi mouse ile çektiğinizde tekerlerin hareket ettiğini ve Z ekseninde döndüğünü göreceksiniz.

Robotun sağa ve sola dönme yetisini sağlayan bağlantılar

Bu işlem için tekerlekleri ayrı ayrı döndürmek yerine, bir mil aracılığıyla tekerlerin dönme bağlantısını sağlayacağız.

Öncelikle ön tekerlere bir mil koyarak işleme başlayalım.

Aracın dış yapısının tamamlanmış hali

Şekildeki gibi basit bir silindir aracılığıyla işlemi gerçekleştirebiliriz.

Şimdi ise bu mili gövdeye bağlayarak sınırlı bir açıda dönme yetisi verelim. Bunun için yine Revolute Joint kullanacağız. Önce gövdeyi, ardından oluşturduğumuz mili seçelim ve Create → Physics → Joint → Revolute Joint yolunu izleyerek bir dönme bağlantısı oluşturalım.

Yine sağ alttaki property sekmesi aracılığı ile Dönme ekseni (Axis) → X Lower Limit → -60 Upper Limit → 60 olacak şekilde değerleri ayarlayalım.

Sağa ve sola dönüşlerde kullanılacak jointin maksimum ve minimum açı değerlerinin ayarlanması

Bu işlem sonucunda eklediğimiz bağlantı şekildeki gibi gözükecektir.

Sağa ve sola dönüşler için kullanılacak joint

Şimdi ise ön tekerler ile silindir arasındaki tekerlere dönme yetisi oluşturalım. Bunun için önce silindiri ve sonra ön tekerlerin her birini tekeri ayrı ayrı seçerek Create → Physics → Joint → Revolute Joint yolunu izleyerek Joint oluşuturalım.

Joint ekleme yolu

Not : Jointleri isimlendirmek ileride kullanım açısından büyük kolaylık sağlayacaktır ve jointlerin isimlerinin çakışmasını engelleyecektir. Bu yüzden her bir jointe benzersiz bir isim vermeniz tavsiye edilir. (Örn : onsagjoint , onsoljoint vs.)

Yine sağ alttaki property sekmesi aracılığı ile Dönme ekseni (Axis) → Z olacak şekilde değerleri ayarlayalım.

Son safhada jointlerimiz şekildeki gibi görünmelidir.

Aracın tüm jointleri bağlanmış hali

Bağlantı işlemleri tamamlandı. Şimdi ise sırada hareket yeteneğinin aktarılması var.

Araca sürüş ve hareket yeteneğinin eklenmesi

Öncelikle aracımızın hareket edebilmesi için bağladığımız jointlerin belirli bir kuvvet etkisi altında kalması gerekiyor. Biz bu kuvvetleri klavye aracılığı ile sağlayacağız.

Tüm jointleri seçelim (5 jointin hepsini) ve sağ tıklayarak Add → Physics →Angular Drive yolunu izleyerek jointlere angular drive özelliğini kazandıralım.

Şimdi ise oluşturduğumuz jointlerin bazı fiziksel özelliklerini belirleyeceğiz. Bunlar Damping (Sönümleme) ve Stiffness (Sertlik) gibi aracın hareket yeteneğini sağlayan parametrelerdir.

Aşağıdaki görselde gerekli değerleri görebilirsiniz.

Damping ve Stiffness parametrelerinin ayarlanması

Ardından Aracımızı seçelim ve sağ tıklayarak Add → Physics →Articulation Root yolunu izleyerek ana hareket mekanizması olarak robotumuzu belirleyelim.

Jointlere Angular Drive özelliğinin eklenmesi

OmniGraph (Action Graph) ile hareketin sağlanması

İlk olarak sağ üstten Window →Visual Scripting → Action Graph yolunu izleyerek Action Graph penceresini açalım ve New Action Graph seçeneği ile yeni bir Action Graph oluşturalım.

Action Graph açılış yolu

Aşağıdaki Action Graph şeklini birebir yerleştirelim.

Klavye ile hareketi sağlayan Action Graph

Buradaki her bir parça bir amaca hizmet ediyor. Bu nodeların işlevlerini ve alması gereken parametreleri aşağıdaki tabloda bulabilirsiniz.

Amaç Alması Gereken Parametreler
Read Keyboard State Klavyeden seçilen değerin
okunmasını sağlar. Herhangi bir
tuşu atayabilirsiniz.( Biz burada
numpad tuşlarını kullanacağız.)
Değerler sırasıyla : Numpad 8
Numpad 5 Numpad 6 Numpad 4
To Double Gelen değerin “Double”
çevirilmesini sağlar. Örneğin a
harfine basılırsa 1 basılmazsa 0
şeklinde örneklendirilebilir.
Herhangi bir parametre almıyor
Constant Double Sabit bir sayı tanımlamak için
kullanılır. Burada tuşa
basıldığında gelen değeri
katlayabilmek için kullanıyoruz.
Araç hızı için (üstteki) 1000
Dönme hızı (alttaki) için 500
girilebilir. (Ardından kullanıma
göre bu değerleri
değiştirebilirsiniz.)
Multiply Gelen iki değeri çarparak bir
sonuç çıktısı veriyor. To Double
ile Constant Double değerlerini
çarpmak için kullanıyoruz.
Herhangi bir parametre almıyor
Substract Gelen iki değerin farkını alır.
Burada aracın ileri ve geri
gitmesini sağlamak için ileri ve
geri tuşundan gelen sayısal
değerlerin farkını alıyoruz.
Herhangi bir parametre almıyor.
Constant Token Sabit bir değişken tutmak için
kullanılır. Burada joint isimlerini
belirteceğiz.
Üst kısımdaki tokenler için arka
iki tekerdeki jointlerin ismi
verilmelidir. Alt kısımdaki tokene
silindire bağladığımız jointin ismi
verilmelidir.
Make Array Bir dizi oluşturmak için kullanılır.
Gelen joint isimlerini tek bir
arrayde tutmak için kullanılabilir.
Burada her iki Make Array bloğu
için de input: Array Type Token
input, Array Size 2 olarak
belirtilmelidir.
Differantial Controller Hız komutunun veya kuvvet,
ivme gibi değerler ile birlikte robotun tekerlek
çapı gibi değerlerini
ayarladığımız kısım.
Oluşturmuş olduğunu aracın
teker boyutlarını ve buna göre
radius değerini girmelisiniz.
Bunun için measure tool
kullanabilirsiniz.
Articulation Controller Robotun joint ayarlamalarının
belirtildiği ve articulation rootun
belirtildiği kısım.
Burada yanlızca Robot path
kısmına oluşturmuş olduğunuz
robotun yolunu belirtin.(Örn
/World/Robot ). Gerekli joint
ayarlamalarını vs. Action Graph
içerisinde yapıyoruz.

Measure tool için Window → Extension kısmında Measure araması yapın ve ardından çıkan extensionu sağ taraftan açın. Üst paneldeki tools kısmını kullanarak measure tool penceresini açabilirsiniz. Sağ üstteki line seçeneğini seçerek tekerin iki ucunun arasındaki mesafeyi görebilirsiniz. Bu değer Differantial Controller içerisindeki Wheel distance parametresinin değeri olacak.

Measure tool kullanımı

Çıkan sonuçlara göre Differantial Controller Nodeunun property sekmesindeki whellDistance ve wheelRadius parametrelerini ayarlayabilirsiniz.

whellDistance ve wheelRadius değerlerinin ayarlanması

Ardından play butonuna bastığınızda Numpad üzerinde 8-5-4-6 butonları ile aracın hareketini sağlayabilirsiniz.

Not : W-A-S-D Tuşlarını kullanmak w,s gibi tuşlar kısayol belirttiği için (Omniverse içerisinde komut değiştirme tuşlarıdır) araç hareketi için kullanmak uygun olmayabilir. Eğer numpad yoksa ok tuşlarını ya da Isaac sim içerisinde kısayol belirtmeyen (Örn I-J-K-L) tuşları kullanabilirsiniz.

Not : W-A-S-D Tuşlarını kullanmak w,s gibi tuşlar kısayol belirttiği için (Omniverse içerisinde komut değiştirme tuşlarıdır) araç hareketi için kullanmak doğru olmayabilir. Eğer numpad yoksa ok tuşlarını ya da Isaac Sim içerisinde kısayol belirtmeyen (Örn I-J-K-L) tuşları kullanabilirsiniz.

Bu yazımızda sizlere NVIDIA Omniverse Isaac Sim kullanarak simülasyon ortamında 4 tekerli bir robotun birleştirilmesi, bağlantılarının yapılması ve hareket yeteneğinin kazandırılmasında kullanmanız gereken temel parametrelerden bahsettik. Daha ayrıntılı çalışmalar için https://openzeka.com/omniverse/ sayfasını ziyaret edebilir veya [email protected] e-posta adresinden bize ulaşabilirsiniz

RTX serisi ekran kartları, iş istasyonları, NVIDIA Jetson Developer Kitler ve daha fazlası için mağazamızı ziyaret etmeyi unutmayın.

Ayrıca hemen bu sayfayı ziyaret ederek RTX Serisi ekran kartlarında geçerli fırsatlardan faydalanabilirsiniz.

İyi çalışmalar dileriz!

OPENZEKA HABERLERİ

Abone olmak ister misiniz?

Hemen ilgilendiğiniz alanları seçerek bültenimizden haberdar olabilirsiniz.

Kategoriler

OPENZEKA HABERLERİ

Abone olmak ister misiniz?

Hemen ilgilendiğiniz alanları seçerek bültenimizden haberdar olabilirsiniz.

Kategoriler

Hesaplarınızda paylaşmak ister misiniz?

İlgili Yazılar