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
- Isaac SIM Kurulumu
Eğer Isaac SIM kurulu değilse https://www.nvidia.com/en-us/omniverse/download adresini ziyaret ederek Omniverse Launcher’ı indirebilirsiniz. Kayıt işleminden sonra, Exchange menüsünden Isaac SIM uygulamasını yükleyin ve Library sekmesinden Launch butonuna tıklayarak Isaac Sim’i başlatın.
(Omniverse kurulumu hakkında daha fazla bilgi için Omniverse Kurulum, Nucleus ve Create – Omniverse Webinar Serisi #2 – YouTube adresini ziyaret edebilirsiniz. - NVIDIA RTX Ekran Kartı
Çalışmalarımızı en yeni nesil NVIDIA RTX 6000 Ada GPU üzerinde yaptık. Diğer RTX Serisi GPU’lara erişmek için web sitemizde yer alan ekran kartları sayfamızı ziyaret edebilirsiniz. Ayrıca çalışmalarınızda kullanmak üzere özelleştirilebilir iş istasyonları konfigürasyonlarını da inceleyebilirsiniz. İş istasyonları ile birlikte üç aylık Cordatus Lisansı ücretsiz olarak sunulmaktadır.
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.
- Isaac Sim uygulamasını açalım.
- 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.
- 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.
- Tekerlekleri kopyalayarak (Ctrl + D ile kopyalayabilirsiniz) ilave 3 teker daha oluşturalım.
- 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İ
OPENZEKA HABERLERİ
Hesaplarınızda paylaşmak ister misiniz?