• Forumu şuan da Ziyaretçi olarak görüntülüyorsunuz. Forum ziyaretçileri tüm konu ve bağlantıları görüntüleyemez ve kaynaklara erişimi yoktur. Eğer üye iseniz buradan üye girişi yapın ya da burayı tıklayarak şimdi üye olun.
  • Ubden® Topluluk Projelerine, Aracılığınızla Destek Vermektedir.

    Topluluk projelerine katkı yapmak ve topluğumuza ulaşan genç girişimcilere destek olmak için Buradaki  bağlantıdan işlem kanallarına ulaşabilirsiniz.

    Desteklerinizle 7.000 kişilik bir ekosistem olduk ve büyümeye devam ediyoruz. Desteğiniz için teşekkürler.

Haber Isaac Sim ile SLAM ve Haritalandırma

  • Konbuyu başlatan blog
  • Başlangıç tarihi
B

blog

Misafir
Misafir
SLAM

SLAM (Simultaneous Localization and Mapping)​


SLAM teknolojisi, günümüzde robotların ve otonom cihazların etkileyici performansını sergilemesine olanak tanıyan önemli bir bileşendir. Bu ileri teknoloji sayesinde, robotlar ve akıllı cihazlar hem kendi konumlarını belirleyebilir hem de etraflarındaki nesneleri sürekli olarak haritalandırabilir. Böylece, daha akıllı ve bağımsız hareket etme yeteneğine sahip olurlar.

SLAM teknolojisi, insansız hava araçlarından temizlik robotlarına, otonom araçlardan endüstriyel robotlara kadar pek çok alanda başarıyla uygulanmaktadır. Bu teknolojinin arkasındaki temel fikir, cihazların sürekli olarak kendi pozisyonlarını ve çevrelerindeki nesnelerin konumlarını hesaplamalarını sağlayarak, daha doğru ve verimli hareket etmelerine imkan tanımaktır.

SLAM’ın işleyişi, sensörler ve algoritmaların bir araya gelmesiyle gerçekleşir. Sensörler, cihazın çevresindeki nesneler hakkında sürekli olarak veri toplar. Bu veri, algoritmalar tarafından işlenerek gerçek zamanlı bir harita oluşturulur ve cihazın kendi konumu belirlenir. Bu süreç, cihaz hareket ettikçe sürekli olarak tekrarlanır ve güncellenir, böylece dinamik ve değişen ortamlarda bile doğru bir şekilde navigasyon sağlanır.

Otonom araçlar da SLAM teknolojisinin faydalarından yararlanır. SLAM, otonom araçların karmaşık trafik koşullarında ve çevresel değişikliklerde bile doğru bir şekilde konumlarını belirlemelerine ve en uygun yolu seçmelerine yardımcı olur. Böylece sürücüsüz araçlar, insanların hayatını kolaylaştıştıran güvenli ve etkili bir ulaşım alternatifi sunar.

Başlamak İçin Gerekenler​

  • ROS2’nin kurulumunun tamamlanmış ve kullanılabilir olmasıdır. Eğer kurulu değilse takip eden bölümün başında kurabilirsiniz.
  • Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.
    ‘nin kurulu olması,
  • ROS2 workspace(çalışma alanının) mantığının temel olarak kavranmış olunması,
  • Isaac Sim’in kurulu olması ve genel kullanıma hakim olunması,
  • Omnigraph düğümlerinin çalışma mantığına hakim olunması gerekmektedir.

Kullanılacak Workspace İçin Gereken Dosyalar​


1. Eğer kurulu bir ROS2 workspace’iniz yoksa
Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.
kurabilirsiniz. Biz bu kısımda workspace’in adını “scratch_ws” yaptık.

2. Öncelikle Slam Toolbox için bir kurulum yapmamız gerekiyor. Bunun için alttaki kod ile github’tan robotun gereken kısımlarını alabilirsiniz. Bu kodu daha önce oluşturulmuş olan “~/scratch_ws/src” içinde çalıştırmanız gerekmektedir. Daha sonra yaptığımız değişiklikleri kullanmak için “colcon build” komutunu kullanıyoruz .

Copy to Clipboard
cd ~/scratch_ws/src git clone -b foxy-devel
Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.
cd ~/scratch_ws rosdep install -y -r -q --from-paths src --ignore-src --rosdistro foxy colcon build --symlink-install


Burada “foxy-devel” yazdığımız yere kendi kullandığınız ROS2 sürümünü yazabilirsiniz. Isaac Sim’in dokümanında genel olarak “foxy-devel” kullanıldığı için “foxy-devel” yazdık.

Rosdep ROS2 paketlerindeki bağımlılıkları kontrol eder ve olmayanları yükler. Eğer rosdep sisteminizde yoksa aşağıdaki komutlar ile yükleyebilirsiniz.

Copy to Clipboard
sudo apt install python-rosdep sudo apt install python3-rosdep


3- DDS bağlantısını yapmak için ~/.ros/ konumunda fastdds.xml adında bir .xml dosyası açmamız gerekiyor. Dosyayı alttaki kod ile açtıktan sonra terminalden yazabiliriz.

Copy to Clipboard
cd ~/.ros/ touch fastdds.xml cat > fastdds.xml


Bizden girdi bekleyen terminale alttaki metni yapıştıralım.

Copy to Clipboard
Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. NVIDIA CORPORATION and its licensors retain all intellectual property and proprietary rights in and to this software, related documentation and any modifications thereto. Any use, reproduction, disclosure or distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited.
UdpTransport UDPv4
UdpTransport false


Daha sonra yaptığımız DDS ayarlarının sistem tarafından tanımlanması için ~/.bashrc ’ye dosya yolunu girmemiz gerekiyor.

Copy to Clipboard
nano ~/.bashrc


nano ile dosyayı açıp alttaki kodu dosyanın en alt satırına yapıştıralım.

Copy to Clipboard
export FASTRTPS_DEFAULT_PROFILES_FILE=~/.ros/fastdds.xml


Terminale aşağıdaki komutu yazdıktan sonra ROS2 kurulumu için yapacaklarımız tamamlanmış oluyor.

Copy to Clipboard
source ~/.bashrc

SLAM ile Harita Oluşturma​


1. Şimdi Isaac Sim’i açıyoruz ve “omniverse://localhost/NVIDIA/Assets/Isaac/2022.2.1/Isaac/Samples/ROS2/Scenario/carter_warehouse_apriltags_worker.usd” USD’sini açıyoruz. Önümüze gelen pencerede “Open Original File” düğmesine tıklıyoruz.

Burada dikkat edilmesi gereken noktalardan birisi, bu bölümün dördüncü adımına kadar simülasyonun çalıştırılmaması gerektiğidir.

slam_1-1024x586.png


Görsel 1. Isaac Sim üzerinde örnek sahnenin açılması. Kırmızı ok ile gösterilen yere 1. adımdaki USD adresini girin.
slam_3-1024x584.png


Görsel 2. Isaac Sim üzerinde örnek sahnenin açılması.

USD açıldığı zaman Stage sekmesinden /World/Carter_ROS/ActionGraph Omnigraph’ına sağ tıklayıp Open Graph diyoruz.

slam_4-1024x584.png


Görsel 3. Isaac Sim üzerinde örnek sahnenin açılması.

2. Açılan Omnigraph’ta bizim ek olarak robotun pozisyonunu “base_link” adı altında odometry düğümü olarak yayın yapmamız gerekiyor. Bunun için dördüncü fotoğraftaki gibi bağlantıları yapıyoruz.

Buradaki adımları aşağıda belirtildiği şekilde yapabilirsiniz:

  • Stage sekmesindeki “ros2_publish_odometry” elementinin ikizini oluşturmamız gerekiyor. Bunu yapmak için, Stage sekmesinden “/World/Carter_ROS/ActionGraph” elementinin altındaki “ros2_publish_odometry“e tıklayıp klavyeden “Ctrl+D”‘ye basarak ikizini oluşturuyoruz.
  • Oluşan odometry düğümünün “Linear Velocity” ve “Angular Velocity” bağlantılarını bağlantıya sağ tıklayarak kopartıyoruz. Beşinci veya altıncı fotoğraftaki gibi bir görüntü oluşması gerekiyor.
slam_5-1024x584.png


Görsel 4. ros2_publish_odometry Düğümü
slam_6-1024x584.png


Görsel 5. ros2_publish_odometry Düğümü Üzerinde Yapılan İşlem

Bu odometry düğümüne tıklayıp Property sekmesinde chasisFrameId kısmından ismini base_link yapıyoruz. Daha sonra odomFrameId parametresini map ile değiştiriyoruz ve topicName’i base_link olarak değiştiriyoruz.

slam_8-1024x846.png


Görsel 6. ros2_publish_odometry Düğümü Üzerinde Yapılan İşlem

3. Simülasyonu başlat tuşundan başlatabiliriz.
4. Bilgisayarımızda aşağıda tanımlanan yola gidiyoruz ve yaml dosyasını açıyoruz.

Copy to Clipboard
~/scratch_ws/src/slam_toolbox/config/mapper_params_online_async.yaml


Dosyanın içinde yazılı olan base_frame parametresini değiştirmemiz gerekiyor.

Copy to Clipboard
base_frame: base_link

slam_9-1024x846.png


Görsel 7. Yaml Dosyası Üzerinde Yapılan İşlem

SLAM ROS2 düğümünü çalıştırma aşamasına geldik. Bu kısımda terminal üzerinden işlemlerimizi yapacağız. İlk olarak iki terminal açıp alttaki gibi workspace’imizi sourcekomutu ile ayarlamamız gerekiyor.

Copy to Clipboard
cd ~/scratch_ws source /opt/ros/foxy/setup.bash source install/local_setup.bash


Şimdi bunları yaptığımız ilk terminalimizden alttaki gibi SLAM düğümünü çalıştırıp ikinci terminalden ise rviz2’yi çalıştırmamız gerekiyor.

Terminal 1 :

Copy to Clipboard
ros2 launch slam_toolbox online_async_launch.py params_file:=~/scratch_ws/src/slam_toolbox/config/mapper_params_online_async.yaml use_sim_time:=true


Terminal 2:

Copy to Clipboard
rviz2


Rviz2 ekranından Add’e basıp By topic sekmesinden /map yazılı topic adını bulmamız gerekiyor.

slam_10-1024x750.png


Görsel 8. Rviz ile Harita Gösterimi

En son görüntümüzün onuncu görseldeki gibi olması gerekiyor.

SLAM


Görsel 8. Rviz ile Harita Gösterimi

Onuncu fotoğrafta görüldüğü gibi SLAM algoritmamız belirli topicleri alıp çalışmaya başladı. Bu kısımdan sonrasında robotunuzu hareket ettirmeye başlayıp haritayı çıkartmaya başlayabilirsiniz.

SLAM ile Oluşan Haritayı Kaydetme​


Haritanızı kaydetme panelini açmak için Panels sekmesinden Add New Panel’e tıklayıp SlamToolboxPlugin’e tıklamanız gerekiyor.

slam_12-1024x755.png


Görsel 9. Oluşturulan Haritanın Kaydedilmesi
slam_13-1024x752.png


Görsel 10. Oluşturulan Haritanın Kaydedilmesi

Çıkardığımız haritayı Save Map ve Serialize Map şeklinde kaydedeceğiz. Haritanın serileştirilmesi, haritanın daha kolay paylaşılması ve depolanması içindir. Bunun için bu alanların metin kısımlarına haritamız için belirlediğimiz adı yazıp Save Map ve Serialize Map tuşlarına basıyoruz.

slam_14-1024x752.png


Görsel 11. Oluşturulan Haritanın Kaydedilmesi

Bu kısımda kaydettiğiniz harita “~/scratch_ws“nin içine gelmiş olması gerekiyor.

Bu yazıda, robotlar ve akıllı cihazların kendi konumlarını belirleyebiliri için çok önemli bir husus olan eş zamanlı konumlandırma ve haritalandırma işlemini Isaac Sim ortamında SLAM ile nasıl haritalandırma yapıldığı ve bu haritanın nasıl kaydedildiği konularını işledik. Sonraki yazılarımızda görüşmek üzere.


Bu bağlantıyı görüntüleyebilmek için kayıt olmalı zaten üyeyseniz üye girişi yapmalısınız.
 
Üst