ROS2 ile haritalama ve otonom navigasyon, bizlere en çok gelen sorulardan biridir. Özellikle RPLidar Kurulumu ve Kullanımı yazımızdan sonra sıkça lidar ile haritalama işleminin nasıl yapıldığını sordunuz. Biz de sizlerden gelen bu istek doğrultusunda bir blog yazısı hazırlamaya karar verdik. Bu yazımızda slam_toolbox kullanarak haritalama yapmayı ve Nav2 (Navigation Stack) ile de otonom navigasyon işleminin nasıl yapıldığını göreceğiz.
Şimdi isterseniz kısaca, haritalama ve otonom navigasyonun robotikteki amacından ve görevlerinden bahsedelim:
- Haritalama: Bir sistemin otonom şekilde yani dış müdahale olmadan hareket edebilmesi için bulunduğu alanı tanıması amacıyla kullanılır. Bunun için sıkça kullanılan paketler şu şekildedir: Cartographer, SLAM Toolbox
- Navigasyon: Sistemin haritaladığı alana göre yol planı oluşturmasını ve otonom şekilde hareket etmesini sağlar. Bu alanda en yaygın kullanılan araçlardan birisi Nav2 paketidir.
Ben bu yazıda sizlere slam_toolbox paketi ile nasıl haritalama yapabileceğinizi ve ardından haritalanan bu alanda nasıl otonom navigasyon gerçekleştirebilceğinizi anlatacağım. Son olarak tüm bu işlemler size karmaşık gelmeye başladıysa, uygulamamızı yukarıdaki videoyu da takip ederek yapabilirsiniz.
1. Kurulumlar
Bu aşamada ihtiyacımız olan paketlerin kurulumunu yapacağız. İlk olarak sistemimizi güncelleyelim ve ardından turtlebot3 paketinin kurulumunu yapalım. Bu paket bizlere gerekli tüm sensörlerle donatılmış bir robot sağlayacak.
sudo apt update
sudo apt upgrade
sudo apt install ros-humble-turtlebot3*
Ardından haritalama ve navigasyonda kullanacağımız paketlerin kurulumunu gerçekleştirelim:
sudo apt install ros-humble-navigation2
sudo apt install ros-humble-nav2-bringup
sudo apt install ros-humble-slam-toolbox
ros-humble-slam-toolbox paketini haritalama yapmak için kullanacağız. ros-humble-navigation2 ve ros-humble-nav2-bringup paketlerini ise otonom navigasyon yapmak için gerekli launch dosyalarına erişmek için kullancağız.
Şimdi benzetim (simülasyon) adımına geçebiliriz !
2. Robotu Benzetim Ortamında Gezdirme
Tutlebot3 paketinde farklı robot modelleri bulunmaktadır. Bizler waffle modelini kullanacağımızı .bashrc içinde belirtmeliyiz. Ayrıca DDS ayarımızı da yapmalıyız. Öncelikle bu işlemleri birlikte gerçekleştirelim:
gedit ~/.bashrc
export TURTLEBOT3_MODEL=waffle
export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
Ardından .bashrc dosyamızı kaynaklayarak son ayarları bildirelim:
source ~/.bashrc
printenv | grep TURTLE
Şimdi bir simülasyonu başlatarak robotumuzu görelim:
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
ros2 run turtlebot3_teleop teleop_keyboard
Bu adımda öncelikle robotumuzu Gazebo ortamında başlatıyor ve ardından da tuştakımı üzerinden hareket ettirecek paketi çalıştırıyoruz. Bu kontrollere alışmak için en başta bir miktar deneme yapmanız gerekebilir.

3. SLAM ile Haritalama
Önceki başlıktaki adımları hatasız bir şekilde tamamladıysanız haritalama adımına geçebiliriz. slam_toolbox ile haritalama yaparken önümüzde iki seçenek var: Senkron Haritalama, Asenkron Haritalama

Bizler Asenkron haritalama yöntemini tercih edeceğiz. Bu işe yeni başlayanlar için daha uygun olduğunu söylebilirim. Bu konunun detaylarına belki daha sonra değinebiliriz. Eğer Gazebo‘yu kapattıysanız aşağıdaki komutla tekrar açın ve tuştakımı bağlantısını da başlatın:
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
ros2 run turtlebot3_teleop teleop_keyboard
Ardından aşağıdaki haritalama ve görselleştirme paketini başlatın:
ros2 launch slam_toolbox online_async_launch.py use_sim_time:=True
ros2 run rviz2 rviz2 -d /opt/ros/humble/share/nav2_bringup/rviz/nav2_default_view.rviz
# ros2 run rviz2 rviz2
İlk komut slam_toolbox paketini başlatacak. İkincisi ise haritalana bölgeleri gerçek zamanlı olarak izlememizi sağlayacak. Tüm alan haritalandıktan sonra Rviz’deki SlamToolboxPlugin panelini kullanarak videoda gösterildiği gibi haritanıı kaydedebilirsiniz

Not: Eğer bu adımlarda sorun yaşadıysanız lütfen videoyu bir kez izleyin !
4. Otonom Navigasyon
Bu adımda otonom navigasyon gerçekleştireceğiz. Bunun için daha önce kaydettiğimiz haritayı robotumuzun sistemine göndermemiz gerekiyor. Amacımız haritaladığımız alan bilgisini kullarak otonom navigasyon gerçekleştirmek olacak. O zaman haydi başlayalım. 🔥

Navigasyon işlemi için Navigation Stack paketini kullanacağız. Bu yöntem endüstride oldukça yaygın olarak kullanılmaktadır. Navigation Stack özelleştirilebilir bir mimariye sahiptir. Dolayısıyla oldukça esnektir ve farklı sistemler içinde çalışabilmektedir. Bu konuda destek almak isterseniz, sitemizde iletişim formu veya e-posta adresimiz üzerinden bana ulaşabilirsiniz.
Navigasyon paketini başlatmadan önce Turtlebot3 için bir ayar yapacağız. Sistem dosyalarından waffle.yaml dosyasına ulaşıp bir düzenleme gerçekleştireceğiz. Bu ayar Nav2 paketinin kullanımı için oldukça kritik bir önem taşıyor. Eğer bu ayarı yapmazsanız Nav2 çalışmaz.
cd /opt/ros/humble/share/turtlebot3_navigation2/param
sudo gedit waffle.yaml
Şimdi bu dosyanın içinde 29. satırdaki “robot_model” parametresini yorum satırı yapıp hemen altına yeni satırımızı ekleyeceğiz. Dosyada parametrenin son hali şu şekilde olmalı:
#robot_model_type: "differential"
robot_model_type: "nav2_amcl::DifferentialMotionModel"
Son olarak, yukarıdaki ayarı yaptıktan sonra dosyayı kaydedip kapatalım ve ana dizine geri dönelim. Burada Gazebo’yu tekrar açın ve ardından aşağıdaki komutu çalıştırın:
ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True map:=$HOME/map/test.yaml
İstersek Rviz üzerinde bir hedef gönderebilir, istersek de çoklu hedefler gönderebiliriz. Bununla ilgili konuları videomuzda ayrıntılı bir şekilde anlattım, oradan da takip edebilirsiniz.

5. Endüstriyel Uygulamalar
Bu blog yazısında, SLAM Toolbox paketini kullanarak haritalama yaptık. Daha sonra Navigation Stack ile otonom navigasyonun nasıl yapıalcağını gördük. Bu bilgiler ışığında sizlerin geliştireceği projeleri görmeyi dört gözle bekliyorum !
Son olarak, burada paylaşılan komutlar ve yöntemler temel çalışmaları ifade etmektedir. Endüstriyel çalışmalara uygun sistemler geliştirmek ve sorunlarınıza hızlı bir şekilde çözüm üretmek için iletişim formu veya e-posta (analizgorsel@gmail.com) adresimiz üzerinden benimle iletişime geçebilirsiniz.
Hocam merhabalar , elinizde lidar varsa direkt olarak lidari bilgisayara bağlayıp gerçek bir lidar üzerinden haritalama yapmak ile ilgili bir blog hazırlayabilir misiniz.
Merhaba, sanırım blog sayfamıza en çok gelen soru bu 😀
Peki, uygun bir vakitte bu konuyu da ele alalım.