Robotlar İçin Verimli Simülasyon Süreçleri
Teknolojinin ilerlemesiyle birlikte robotlar daha dinamik hareket görevlerini üstleniyor. Ancak, geliştiricilerin ihtiyaç duyduğu, çevre ve iş yükleri ile etkin bir şekilde ölçeklenebilen fiziksel doğrulukta simülasyonlar sağlamak için yüksek kaliteli verilere gereksinim duyuluyor. Bu verilerin fiziksel dünyada toplanması oldukça pahalı ve zaman alıcı olabilir.
Sentetik veriler, NVIDIA Isaac Sim ile oluşturulan simüle edilmiş ortamlar kullanılarak üretilebilir ve veri üretim sürecini hızlandırmanın pratik bir yolunu sunar.
Simüle Edilmiş Ortamlar ve Veri Üretimi
Bu blogda şu konuları ele alacağız:
- 3D ortam varlıklarını NVIDIA Omniverse NuRec ile simüle edilmiş bir ortama eklemek.
- Simülasyona hazır (SimReady) varlıkları sahneye eklemek.
- Mobilite verilerini MobilityGen kullanarak Isaac Sim ya da NVIDIA Isaac Lab’de üretmek.
- Üretilen verileri NVIDIA Cosmosdünya temel modelleri ile geliştirmek.
3D Dijital İkizler Oluşturma
Omniverse NuRec, gerçek dünya sensör verilerinden 3D etkileşimli simülasyonların yeniden oluşturulmasını sağlayan bir teknoloji setidir. Yeniden oluşturulan ortamlar, robotik, otonom araçlar ve endüstriyel/jeo-uzamsal gibi birçok alanda yapay veriler üretmek, AI modellerini eğitmek ve model davranışını test etmek için kullanılır.
Isaac Sim, NuRec Gaussian tabanlı renderleme ile nöral ışıma alanları (NeRF), 3D Gaussian Splat’lar (3DGS) ve 3D Gaussian Unscented Dönüşümleri (3DGUT) destekler. Veriler, simülasyon için OpenUSD formatında işlenir. Uygun varlıklar ve sahneleri Isaac Sim’de yükleyebilir ve render işlemlerini OmniNuRecVolumeAPI özellikleri üzerinden kontrol edebilirsiniz. Robotik kullanım durumları için NuRec hakkında daha fazla bilgi için belgelere göz atın.
SimReady Varlıklarının Eklenmesi
SimReady varlıkları, USDPhysics tabanlı fizik özelliklerine sahip, inandırıcı 3D modellerdir ve robot simülasyon kurulumunu hızlandırır. SimReady Warehouse 01 Varlık Paketi, paletler, depolama rafları ve rampalar gibi nesnelerin geniş bir koleksiyonunu içerir. Bu varlıkları sahnenize sürükleyip bırakabilirsiniz. Robotik ve ilgili kullanım durumları için Physical AI veri setini keşfedin.
Aşağıdaki video, Isaac Sim’de nasıl SimReady varlıkları ekleyebileceğinizi göstermektedir.
Bu şekilde, simülasyonda birden fazla nesne ile sahneler oluşturabiliriz. Bu simüle edilmiş ortamların en büyük kullanım amacı, robot politikalarını eğitmek için yapay veri toplamaktır ki bunu bir sonraki bölümde öğreneceğiz.
MobilityGen ile Sentetik Veri Üretimi
MobilityGen, Isaac Sim üzerinde mobil robotlar için veri üretmeyi sağlayan bir akıştır. Klavye ve oyun kumandası ile manuel yöntemler ya da rastgele ivmeler ve rastgele yol takip etme gibi otomatik yöntemlerle veri toplama desteği sunar.
Aşağıdaki örnekte, MobilityGen‘in Isaac Sim’deki H1 humanoid robotu için veri üretiminde nasıl kullanıldığını öğreneceksiniz. Bu iş akışı, kendi robot türleri üzerinde de kullanılabilir ve Spot ve Carter robotlarında test edilmiştir.
MobilityGen’den alınan veriler, robotların hareket politikalarını eğitmek için kullanılır. Ancak performans, verinin görsel çeşitlilik içermesi ile artmaktadır. Bu konuda veriyi görsel çeşitlilik ile artırmayı NVIDIA Cosmos ile bir sonraki bölümde öğreneceğiz.
MobilityGen ile veri üretirken izlenecek adımların şunlar olduğunu özetleyebiliriz:
- İşgal Haritası Oluşturma: Bu, robotun ortamını temsil eden bir grid tabanlı yapıdır; her bir hücre, bir engelin olup olmadığını gösterir.
- Bir Yörünge Kaydetme: Mobil bir robotun yörüngesi, hareket ederken her anın pozisyonunu, hızını ve yönünü tanımlar.
- Replay ve Render: Üretilen yörüngeleri yeniden oynatarak verileri değerlendirebilir ve görselleştirebilirsiniz.
İlk iki video, Isaac Sim kullanarak MobilityGen ile nasıl sentetik veri üreteceğinizi gösteriyor.
Aşağıdaki örnekte, Isaac Sim’deki bir depo ortamında MobilityGen’i kullanıyoruz. Önceki bölümde öğrendiğimiz SimReady varlıklarını kullanarak kendi ortamınızı oluşturabilirsiniz.
İşgal Haritası Oluşturma Adımları
- Depo aşamasını yükleyin:
- İçerik Tarayıcısını açın (Pencere > Tarayıcılar > İçerik).
- Isaac Sim/Ortamlar/Simple_Warehouse/warehouse_multiple_shelves.usd yola sahip depo USD dosyasını yükleyin.
- İşgal Haritasını Oluşturma
- Araçlar > Robotik > İşgal Haritası seçeneğini seçerek uzantıyı açın.
- İşgal Haritası penceresinde Orijin değerini ayarlayın:
- X: 2.0
- Y: 0.0
- Z: 0.0
- Not: Metin kutusuna değer girmek için Ctrl + sol tıklama ile giriş modunu aktifleştirin.
- İşgal Haritası penceresinde Üst Sınır değerlerini ayarlayın:
- X: 10.0
- Y: 20.0
- Z: 2.0 (Robotun 2 metre yüksekliğindeki geçitlerin altından geçeceği varsayılmaktadır)
- İşgal Haritası penceresinde Alt Sınır değerlerini ayarlayın:
- X: -14.0
- Y: -18.0
- Z: 0.1 (Robotun 5 cm’lik tümseklerin üstünden geçebilmesi varsayılmaktadır)
- Hesapla butonuna tıklayarak işgal haritasını oluşturun.
- Görselleştir butonuna tıklayarak işgal haritasını görebilirsiniz.
- Görselleştirme penceresinde, 180 değerini seçerek resmi döndürün.
- Görselleştirme penceresinde Koordinat Türü olarak ROS İşgal Haritası Parametre Dosyası YAML seçeneğini seçin.
- Resmi Yeniden Oluştur butonuna tıklayın.
- Kopyalanan YAML metnini bir metin editörü yardımıyla oluşturabileceğiniz bir dosyaya yapıştırın; dosya adı ~/MobilityGenData/maps/warehouse_multiple_shelves/map.yaml olarak ayarlayın.
Lütfen Windows kullanıyorsanız, ~ yerine tercih ettiğiniz bir dizin kullanın. - Görselleştirme penceresinde, Resmi Kaydet butonuna tıklayın.
- Ağaç tarayıcısında ~/MobilityGenData/maps/warehouse_multiple_shelves klasörünü açın.
- Dosya adının altına map.png yazın.
- Kaydet butonuna tıklayın.
Şimdi ~/MobilityGenData/maps/warehouse_multiple_shelves/ adında bir klasör oluşturduğunuzu ve içinde map.yaml ve map.png adında dosyaların bulunduğunu kontrol edin.
Yörünge Kaydetme Adımları
Bir ortamın haritasını oluşturdunuzdan sonra, MobilityGen ile veri üretebilirsiniz:
- MobilityGen UI uzantısını etkinleştirin.
- Uygulama menüsüne gidin ve Pencere > Uzantılar menüsünden MobilityGen UI başlığını aratın.
- MobilityGen UI uzantısının anahtarını tıklatın.
- Not: İki pencere açılmalıdır. Biri MobilityGen UI penceresi, diğeri ise işgal haritası ve görselleştirmeleri gösteren penceredir. İki pencereyi aynı anda görebilmek için birini diğerinin yanına sürükleyebilirsiniz.
- Senaryoyu oluşturun:
- MobilityGen penceresinde Aşama altında aşağıdaki USD’yi yapıştırın:
http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/5.0/Isaac/Environments/Simple_Warehouse/warehouse_multiple_shelves.usd - MobilityGen penceresinde İşgal Haritası altında, daha önce oluşturduğunuz map.yaml dosyasının yolunu girin:
~/MobilityGenData/maps/warehouse_multiple_shelves/map.yaml - Robot açılır menüsünden H1Robot seçeneğini belirleyin.
- Senaryo açılır menüsünden KlavyeTeleoperasyonSenaryosu seçeneğini belirleyin.
- Oluştur butonuna tıklayın.
Birkaç saniye içinde sahneyi görmeniz ve işgal haritasını kontrol etmeniz gerekir.
- MobilityGen penceresinde Aşama altında aşağıdaki USD’yi yapıştırın:
- Robotu sürmek için aşağıdaki tuş kombinasyonlarını kullanın:
- W – İleri git
- A – Sola dön
- S – Geri git
- D – Sağa dön
- Kayda başlamak için:
- Kaydı başlatmak için Kayda Başla butonuna tıklayın.
- Robotu hareket ettirin.
- Kaydı durdurmak için Kaydı Durdur butonuna tıklayın.
Veri varsayılan olarak ~/MobilityGenData/recordings dizinine kaydedilecektir.
Yeniden Oynatma ve Render İşlemleri
Bir yörünge kaydettikten sonra, robot pozları gibi veriler içeren senaryoyu şimdi yeniden oynatabilir.
- replay_directory.py Python betiğini kullanın. Betiği çalıştırmak için, Isaac Sim dizini içinde aşağıdaki komutu girin:
./python.sh standalone_examples/replicator/mobility_gen/replay_directory.py --render_interval 40 --enable isaacsim.replicator.mobility_gen.examples
Komut tamamlandığında, içinde render edilmiş sensör verilerini barındıran ~/MobilityGenData/replays klasörüne sahip olmalısınız. Bu klasör içinde verileri keşfedebilirsiniz.
Kaydedilen verilerin yüklenmesi ve çalışılması ile ilgili örneklere açık kaynak MobilityGen GitHub Repo’sunda ulaşabilirsiniz. Kaydedilen verilerinizi görselleştirmek için Gradio Görselleştirme Betiği‘ni çalıştırmayı öneririz.
NVIDIA Cosmos Kullanarak Veri Zenginleştirme
MobilityGen ile veri ürettikten sonra, Cosmos Transfer kullanarak sentetik robot verilerinden fotogerçekçi videolar üretebilirsiniz. Bu, simülasyondan gerçeğe geçişe yardımcı olur ve politikaların uygulama sonrası performansını artırır.

Cosmos Transfer, RGB, derinlik ve segmentasyon gibi çoklu video modlarıyla fotogerçekçi videolar üretir. Ayrıca, üretilen videonun görünümünü yönlendiren bir metin istemi verebilirsiniz. Aşağıda bir örnek istem verilmiştir:
Gerçekçi bir depo ortamı, sürekli aydınlatma, perspektif ve kamera hareketleri ile. Giriş videosundaki orijinal yapı, nesne pozisyonları ve düzeni korumalıdır. Çıktı, her çerçevede zamanlama ve içerik bakımından kesintisiz bir şekilde segmentasyon videosuna tam olarak uymalıdır. Kamera hareketi orijinal yolda titizlikle takip edilmelidir.
Video 4, MobilityGen verileri üzerinde Cosmos Transfer’in nasıl çalıştığını ve görsel çeşitliliği nasıl artırdığını gösteriyor.
Video 5. Fotogerçekçi videoların üretilmesi süreci
Videoda görüldüğü üzere, Cosmos Transfer ile çalıştırma için örnek bir komut şu şekildedir:
export CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES:=0,1,2,3}"
export CHECKPOINT_DIR="${CHECKPOINT_DIR:=./checkpoints}"
export NUM_GPU="${NUM_GPU:=4}"
PYTHONPATH=$(pwd) torchrun --nproc_per_node=$NUM_GPU --nnodes=1 --node_rank=0 cosmos_transfer1/diffusion/inference/transfer.py
--checkpoint_dir $CHECKPOINT_DIR
--video_save_folder outputs/example1_single_control_edge
--controlnet_specs assets/inference_cosmos_transfer1_single_control_edge.json
--offload_text_encoder_model
--offload_guardrail_models
--num_gpus $NUM_GPU
Kapalı devre değerlendirmelerinde, hem sentetik hem de Cosmos zenginleştirilmiş verilerle eğitilen bir politika, yalnızca sentetik verilerle eğitilen bir politikaya göre daha başarılı olmuştur. Sentetik ve Cosmos artırılmış verilerle eğitilmiş politika, aşağıdaki senaryoları iyi bir şekilde yönetmiştir:
- Şeffaf engellerin etrafından geçiş yapma.
- Arka planda eriyen engelleri aşma; örneğin, gri bir direğin gri bir zeminde bulunması.
- Engellere yakınlaşma ve hedef pozisyona ulaşma için toplam mesafeyi azaltma.
- Düşük ışıkta gezinme.
- Darı geçitlerde manevra yapma.
Cosmos Transfer’i gerçek ya da sentetik video verilerinde çalıştırabilirsiniz. Başka bir örnek ise Sentetik Veri Seti Zenginleştirmek İçin Cosmos Kullanımı isimli öğreticidir; bu eğitim, Isaac Sim’de Replicator kullanarak sentetik veri üretmeyi açıklar.
Başlamak için
NVIDIA, öğrenim yolculuğunuzu hızlandırmak için kapsamlı OpenUSD kaynakları sunmaktadır. Temel becerileri geliştirmek için OpenUSD Öğren, Dijital İkizler ve Robotik eğitim müfredatlarıyla başlayabilirsiniz.
Robotik kariyerlerinde bir sonraki adımı atmaya hazır profesyonellere, OpenUSD Geliştirici sertifikası, OpenUSD kullanarak 3D içerik boru hatları oluşturma, bakım ve optimizasyon konularında uzmanlığınızı doğrulayan bir mesleki sınavdır. NVIDIA GTC Washington, D.C.’de OpenUSD sertifikası alabilirsiniz ve Fiziksel AI ve Robotik Günü sırasında robot geliştirme ile ilgili daha fazla bilgi edinebilirsiniz.
Gelecek etkinlikler içinOpenUSD İnsider canlı yayınlarına katılın ve NVIDIA Geliştirici Topluluğu ile bağlantı kurun. NVIDIA Omniverse’i takip ederek güncel kalınInstagram, LinkedInve X, Threadsve YouTube.