ROS2 Nav2 Rehberi
E
emin

Posted on Feb 3

Available in:

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)
Top commentsNewest first

0/3000 • Press Ctrl + Enter to submit

Loading comments...

ROS2 Nav2 Rehberi | SourceDev