ROS2 Nav2 Rehberi
Giriş
Nav2 (Navigation2), ROS 2 için geliştirilmiş otonom navigasyon sistemidir. Mobil robotların harita üzerinde kendilerini konumlandırması, yol planlaması ve engel kaçınması gibi görevleri yerine getirir.
Gereksinimler
ROS 2 kurulumu (Humble, Iron veya Rolling önerilir) ve temel ROS 2 bilgisi gereklidir. Ayrıca colcon build tool ve Gazebo simülatörü de kurulu olmalıdır.
Nav2 Kurulumu
Debian paketlerinden kurulum için terminalde şu komutu çalıştırın:
sudo apt install ros-<distro>-navigation2 ros-<distro>-nav2-bringup
Burada <distro> yerine kullandığınız ROS 2 dağıtımını yazın (humble, iron vb.).
TurtleBot3 simülasyon paketlerini de kurun:
sudo apt install ros-<distro>-turtlebot3*
Temel Kavramlar
Nav2 birkaç temel bileşenden oluşur. Costmap, robotun çevresindeki engelleri ve serbest alanları temsil eden bir ızgara haritasıdır. Planner, başlangıç noktasından hedefe giden global yolu hesaplar. Controller ise bu yolu takip ederek robotu hareket ettirir. Recovery behaviors, robot sıkıştığında veya takılıp kaldığında devreye girer.
İlk Simülasyon
Önce TurtleBot3 model tipini ayarlayın:
export TURTLEBOT3_MODEL=waffle
Gazebo simülatörünü başlatın:
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
Yeni bir terminalde Nav2'yi başlatın:
ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True
Bu komut RViz'i açacak ve navigasyon stack'ini başlatacaktır.
RViz ile Navigasyon
RViz açıldığında robotun başlangıç konumunu belirlemek için "2D Pose Estimate" butonuna tıklayın ve harita üzerinde robotun gerçek konumunu işaretleyin. Ardından "Nav2 Goal" butonu ile hedef noktayı seçin. Robot otomatik olarak yol planlayacak ve hedefe doğru hareket edecektir.
Kendi Robotunuzla Kullanım
Nav2'yi kendi robotunuzda kullanmak için URDF robot tanımı, sensor verileri (LaserScan veya PointCloud2), odometry bilgisi ve robot kontrolü için cmd_vel topic'i gereklidir.
Örnek bir launch dosyası oluşturun:
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
return LaunchDescription([
Node(
package='nav2_bringup',
executable='bringup_launch.py',
parameters=[{'use_sim_time': False}]
)
])
Parametre Ayarları
Nav2 davranışlarını özelleştirmek için YAML konfigürasyon dosyası kullanın. Örnek bir params.yaml dosyası:
controller_server:
ros__parameters:
controller_frequency: 20.0
min_x_velocity_threshold: 0.001
min_theta_velocity_threshold: 0.001
planner_server:
ros__parameters:
expected_planner_frequency: 20.0
planner_plugins: ["GridBased"]
GridBased:
plugin: "nav2_navfn_planner/NavfnPlanner"
Haritalama (Mapping)
Navigasyon için önce bir harita oluşturmanız gerekir. SLAM kullanarak harita çıkarın:
ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=True
Robotu teleop ile hareket ettirerek ortamı tarayın:
ros2 run turtlebot3_teleop teleop_keyboard
Haritayı kaydedin:
ros2 run nav2_map_server map_saver_cli -f ~/my_map
İleri Seviye Özellikler
Nav2 behavior trees ile karmaşık navigasyon senaryoları oluşturabilir, waypoint follower ile birden fazla hedefe sırayla gidebilir ve recovery behaviors ile robot sıkışmalarda kurtarma rutinleri çalıştırabilirsiniz.
Kaynaklar
Daha fazla bilgi için Navigation2 resmi dokümantasyonunu (https://navigation.ros.org/) ve ROS 2 dokümantasyonunu (https://docs.ros.org/) ziyaret edebilirsiniz.
Comments
(0)Loading comments...