๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋กœ๋ณดํ‹ฑ์Šค

Isaac Sim์—์„œ Nav2๋กœ ์ž์œจ์ฃผํ–‰ ํ…Œ์ŠคํŠธ

728x90

๋ชฉ์ฐจ

    https://docs.nav2.org/getting_started/index.html#installation

     

    Nav2 Getting Started

    Installation

    1. ROS 2 ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง€ ์„ค์น˜

    2. Nav2 ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ ( <ros2-distro>๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ROS 2 ๋ฐฐํฌํŒ์— ๋งž๊ฒŒ ๊ต์ฒดํ•˜๋ฉด ๋œ๋‹ค. ์˜ˆ - foxy, humble ๋“ฑ )

    sudo apt install ros-<ros2-distro>-navigation2 sudo apt install ros-<ros2-distro>-nav2-bringup

     

    3. Gazebo์šฉ Turtlebot ํŒจํ‚ค์ง€ ์„ค์น˜

    ๐Ÿ’กGazebo๋ž€?
    ๋กœ๋ด‡ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ์˜คํ”ˆ ์†Œ์Šค ์†Œํ”„ํŠธ์›จ์–ด. ์‹ค์ œ ๋กœ๋ด‡ ํ•˜๋“œ์›จ์–ด ์—†์ด๋„ ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ ๋กœ๋ด‡์˜ ์›€์ง์ž„, ์„ผ์„œ, ํ™˜๊ฒฝ ์ƒํ˜ธ์ž‘์šฉ ๋“ฑ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

    Gazebo์˜ ์ฃผ์š” ํŠน์ง•

    - ๋ฌผ๋ฆฌ ์—”์ง„ (Physics Engine)
    - 3D ์‹œ๊ฐํ™”์„ผ์„œ
    - ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    - ROS์™€์˜ ํ†ตํ•ฉ (ROS Integration)
    - ๋ฉ€ํ‹ฐ๋กœ๋ด‡ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ (Multi-Robot Simulation) 
    • Jazzy ์ด์ƒ ๋ฒ„์ „ (ROS 2 Humble, Iron ๋“ฑ) ์—์„œ๋Š”  Gazebo Modern์šฉ Turtlebot 3 ๋ฐ 4 ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ ( nav2_bringup ๋ช…๋ น์–ด์™€ ํ•จ๊ป˜ ์ž๋™์œผ๋กœ ์„ค์น˜ )
    • sudo apt install ros-<ros2-distro>-nav2-minimal-tb*

    Iron ๋ฐ ์ด์ „ ๋ฒ„์ „ ์˜ ๊ฒฝ์šฐ Gazebo Classic์šฉ Turtlebot 3 ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜

    sudo apt install ros-humble-nav2-minimal-tb*
    
    sudo apt install ros-humble-turtlebot3-gazebo

     

    Running the Example

     

    1. GUI ํ™˜๊ฒฝ์—์„œ ํ„ฐ๋ฏธ๋„์„ ์—ฐ๋‹ค.

    2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • (Iron ์ดํ•˜ ๋ฒ„์ „์˜ ๊ฒฝ์šฐ)

    source /opt/ros/<ros2-distro>/setup.bash export TURTLEBOT3_MODEL=waffle # Iron and older only with Gazebo Classic export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/humble/share/turtlebot3_gazebo/models # Iron and older only with Gazebo Classic

     

    3. Nav2 ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹คํ–‰

    ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False
    • ์ด ๋ช…๋ น์–ด๋Š” Nav2์˜ AMCL localizer์™€ ํ•จ๊ป˜ TurtleBot3๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    • Gazebo์™€ RViz๋„ ์ž๋™์œผ๋กœ ์‹คํ–‰

    ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ERROR ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. gazebo_ros ํŒจํ‚ค์ง€, gzclient ํŒŒ์ผ์ด ์—†๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. 

     

     

    ํ•ด๊ฒฐ์ฑ…

     

    ์ฒ˜์Œ์—๋Š” ROS 2 Humble ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด Jazzy ์ด์ƒ ๋ฒ„์ „ ์ง€์นจ๊ณผ ํ˜ธํ™˜์ด ๋˜๋Š” ์ค„ ์•Œ์•˜๋Š”๋ฐ ์•Œ๊ณ ๋ณด๋‹ˆ Iron ์ง€์นจ์„ ๋”ฐ๋ผ์•ผํ–ˆ๋‹ค.

    ๋”ฐ๋ผ์„œ ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ๋‹ค์‹œ ์„ค์น˜ํ•ด์ค€๋‹ค.

    sudo apt install ros-humble-turtlebot3-gazebo

     

    ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹œ์ž‘๋˜๋ฉด RViz์™€ Gazebo ๋‘ ๊ฐœ์˜ GUI๊ฐ€ ์—ด๋ฆฐ๋‹ค.

    • RViz: ๋กœ๋ด‡ ์ƒํƒœ, ์„ผ์„œ ๋ฐ์ดํ„ฐ, ์ง€๋„ ๋“ฑ์„ ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ
    • Gazebo: ๋กœ๋ด‡์˜ ๋ฌผ๋ฆฌ์  ๋™์ž‘์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๋Š” ํ™˜๊ฒฝ

     

     

     

    ๋งŒ์•ฝ RViz๊ฐ€ ์ž๋™์œผ๋กœ ์‹œ์ž‘๋˜์ง€ ์•Š๊ฑฐ๋‚˜, "Startup" ๋ฒ„ํŠผ์ด ๋ณด์ธ๋‹ค๋ฉด, RViz์˜ ์™ผ์ชฝ ํ•˜๋‹จ์— ์žˆ๋Š” "Startup" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์•ผ Nav2๊ฐ€ ํ™œ์„ฑํ™”๋œ๋‹ค.

     

    ์ดํ›„ ๋กœ๋ด‡ ์ƒํƒœ๊ฐ€ "Active"๋กœ ๋ณ€๊ฒฝ๋˜๋ฉฐ, ์ง€๋„(Map)๊ฐ€ ๋‚˜ํƒ€๋‚จ

    Navigating

    ์ดˆ๊ธฐ ์œ„์น˜ ์„ค์ • (2D Pose Estimate)

    Gazebo์—์„œ ๋กœ๋ด‡์˜ ์ดˆ๊ธฐ ์œ„์น˜๋ฅผ ํ™•์ธํ•œ ํ›„, RViz์—์„œ ํ•ด๋‹น ์œ„์น˜๋ฅผ 2D Pose Estimate ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด ์„ค์ •.

    ํ™•์ธํ•œ Gazebo ์œ„์น˜(X, Y, ๋ฐฉํ–ฅ(Yaw))๋ฅผ ๋Œ€๋žต์ ์œผ๋กœ ๊ธฐ์–ต RViz์—์„œ "2D Pose Estimate" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ , ์ง€๋„์˜ ์›ํ•˜๋Š” ์œ„์น˜๋ฅผ ํด๋ฆญํ•˜๋ฉด ํด๋ฆญ ์œ„์น˜๊ฐ€ ๋กœ๋ด‡์˜ ์‹œ์ž‘ ์œ„์น˜๊ฐ€ ๋œ๋‹ค.

     

    Nav2 ํ™œ์„ฑํ™” ํ™•์ธ

    ์ดˆ๊ธฐ ์œ„์น˜ ์„ค์ •์„ ์™„๋ฃŒํ•˜๋ฉด RViz์—์„œ ๋กœ๋ด‡๊ณผ Particle Cloud(๋กœ๋ด‡ ์œ„์น˜ ์ถ”์ • ํด๋ผ์šฐ๋“œ)๋ฅผ ํ™•์ธ

    • RViz์—์„œ Transform ๋ฐ Costmap(๋กœ๋ด‡์˜ ์ด๋™ ๊ฒฝ๋กœ์™€ ์žฅ์• ๋ฌผ ์ •๋ณด๋ฅผ ํฌํ•จํ•œ ๋งต) ์ •๋ณด๋ฅผ ํ™•์ธ
    • ๋กœ๋ด‡์˜ ์ƒํƒœ์™€ ์ฃผ๋ณ€ ํ™˜๊ฒฝ์ด RViz์—์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธ

    ๋ชฉํ‘œ ์ง€์  ์„ค์ • (Navigation Goal ์„ค์ •)

    • ๋ชฉํ‘œ ์ง€์ ์„ ์„ค์ •ํ•˜๋ ค๋ฉด, RViz์—์„œ "Navigation2 Goal" ๋ฒ„ํŠผ์„ ํด๋ฆญ
    • ๊ทธ๋Ÿฐ ๋‹ค์Œ, ์ง€๋„์—์„œ ์›ํ•˜๋Š” ๋ชฉํ‘œ ์ง€์  ์œ„์น˜๋ฅผ ํด๋ฆญํ•˜์—ฌ ๋กœ๋ด‡์ด ๊ทธ ์ง€์ ์œผ๋กœ ์ด๋™ํ•˜๋„๋ก ์„ค์ •
    • ๋ชฉํ‘œ ์ง€์ ์ด ์„ค์ •๋˜๋ฉด Nav2์˜ ํ–‰๋™ ํŠธ๋ฆฌ (Behavior Tree)์™€ ์•ก์…˜ ์„œ๋ฒ„๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ๋กœ๋ด‡์€ ์„ค์ •๋œ ๋ชฉํ‘œ ์ง€์ ์œผ๋กœ ์ด๋™์„ ์‹œ์ž‘

     

     

    [๊ฒฐ๊ณผ]

    ์ด๋™์ „ → ์ด๋™ํ›„

    ROS2 ๋‚ด๋น„๊ฒŒ์ด์…˜

    ํ•„์ˆ˜ ์กฐ๊ฑด

    • ์ด ROS2 ํƒ์ƒ‰ ์ƒ˜ํ”Œ์€ ROS2 Foxy์™€ Humble์—์„œ๋งŒ ์ง€์›
    • ์ด ์ƒ˜ํ”Œ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด Nav2 ํ”„๋กœ์ ํŠธ๊ฐ€ ํ•„์š”.
    • ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ๊ด€๋ฆฌ์žomni.isaac.ros2_bridge ์ฐฝ ์—์„œ ์ฐฝ > ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์œผ๋กœ ์ด๋™ํ•˜์—ฌ ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ํ™œ์„ฑํ™”
    • ์ด ํŠœํ† ๋ฆฌ์–ผ์—๋Š” Omniverse Isaac Sim ๋‹ค์šด๋กœ๋“œ์˜ ์ผ๋ถ€๋กœ ์ œ๊ณต๋˜๋Š” carter_navigation, iw_hub_navigation๋ฐ ROS2 ํŒจํ‚ค์ง€๊ฐ€ ํ•„์š”
      • humble_ws ๋‚ด์— ํ•„์š”ํ•œ ์‹คํ–‰ ํŒŒ์ผ, ํƒ์ƒ‰ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ๋กœ๋ด‡ ๋ชจ๋ธ์ด ํฌํ•จ
    • ROS2 workspace environment ์„ค์ • ํ™•์ธํ•˜๊ธฐ
      • ์ž‘์—…๊ณต๊ฐ„ ์„ค์ •
      • cd humble_ws source install/local_setup.bash

    Nav2 ์„ค์ •

    ์ด ๋ธ”๋ก ๋‹ค์ด์–ด๊ทธ๋žจ์€ Nav2์— ํ•„์š”ํ•œ ROS2 ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

    ROS2 Topic  ROS2 Message Type
    /tf tf2_msgs/TFMessage
    /odom nav_msgs/Odometry
    /map nav_msgs/OccupancyGrid
    /point_cloud sensor_msgs/PointCloud
    /scan sensor_msgs/LaserScan (published by an external pointcloud_to_laserscan node)

    Occupancy Map

    Occupancy Map Generator

    ์žฅ๋ฉด(Scene)์˜ ํŠน์ • ๋†’์ด์—์„œ ์ด ์ง€์—ญ์ด ์ ์œ ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ด์ง„ ํ˜•์‹์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ์ ์œ  ๋งต์„ ์ƒ์„ฑํ•œ๋‹ค.

    • ์ƒ๋‹จ ๋ฉ”๋‰ด ๋ฐ”์—์„œ Isaac Utils > Occupancy Map์„ ํด๋ฆญํ•˜์—ฌ ์ ์œ  ๋งต ํ™•์žฅ์— ์ ‘๊ทผ
    • Extension Manager์—์„œ omni.isaac.occupancy_map์ด ํ™œ์„ฑํ™”๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ

    ์ฃผ์š” ์ž‘๋™ ๊ทœ์น™ ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

    1. ์ถฉ๋Œ ํ™œ์„ฑํ™” ํ•„์ˆ˜ : ๋ชจ๋“  ๊ธฐํ•˜ํ•™์  ๊ตฌ์กฐ(Geometry)๋Š” Collisions Enabled ์ƒํƒœ์—ฌ์•ผ ์ ์œ  ๋งต ์ƒ์„ฑ๊ธฐ์—์„œ ๊ฐ์ง€
    2. ์‹œ์ž‘ ์œ„์น˜(Start Location) ํ™•์ธ : ์ ์œ  ๋งต์˜ ์‹œ์ž‘ ์œ„์น˜๋Š” ์ ์œ ๋˜์–ด ์žˆ์–ด์„œ๋Š” ์•ˆ๋œ๋‹ค. ๋ฌผ๋ฆฌ ๋ฉ”์‰ฌ ํ™•์ธ์„ ์œ„ํ•ด์„œ๋Š” ๋ทฐํฌํŠธ ์ฐฝ์—์„œ Show/Hide (๋ˆˆ ์•„์ด์ฝ˜) → Show By Type > Physics Mesh > All์„ ์„ ํƒํ•˜์—ฌ ๋ฌผ๋ฆฌ ๊ธฐํ•˜ํ•™์„ ์‹œ๊ฐํ™”

    Occupancy Map window

    Occupancy Map Generator UI ์ฃผ์š” ํ•ญ๋ชฉ

    • Origin (์›์ ) : An open location inside of the area you wish to map
    • Lower/Upper Bound (ํ•˜ํ•œ/์ƒํ•œ ๊ฒฝ๊ณ„)
      • ์ด ๊ฒฝ๊ณ„๋ฅผ ๋ฒ—์–ด๋‚œ ์˜์—ญ์€ ๋งตํ•‘๋˜์ง€ ์•Š๋Š”๋‹ค.
      • ์ตœ๋Œ€ ๊ฒฝ๊ณ„๋ฅผ ์„ค์ •ํ•˜์ง€๋งŒ ์‹ค์ œ ๋งตํ•‘๋œ ์˜์—ญ์€ ์„ ํƒ๋œ Prim ๋ฐ ์„ค์ • ๊ฐ’์— ๋”ฐ๋ผ ์ž‘์„ ์ˆ˜ ์žˆ๋‹ค.
    • Positioning (์œ„์น˜ ์ง€์ •)
      • CENTER TO SELECTION: ์„ ํƒ๋œ Prim ๋˜๋Š” Prims์˜ ์ค‘์‹ฌ์œผ๋กœ ์›์ ์„ ์ด๋™
      • BOUND SELECTION: ์„ ํƒ๋œ Prim ๋˜๋Š” Prims๋ฅผ ํฌํ•จํ•˜๋„๋ก ๊ฒฝ๊ณ„๋ฅผ ์—…๋ฐ์ดํŠธ
    • Cell Size (์…€ ํฌ๊ธฐ)
      • ์ตœ์ข… ์ด๋ฏธ์ง€์˜ ๊ฐ ํ”ฝ์…€์ด ๋‚˜ํƒ€๋‚ด๋Š” ์‹ค์ œ ๊ฑฐ๋ฆฌ(๋ฏธํ„ฐ)
      • ๊ฐ’์ด ์ž‘์„์ˆ˜๋ก ๋” ์ •๋ฐ€ํ•œ ๋งต์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
    • Occupancy Map (์ ์œ  ๋งต ์ƒ์„ฑ)
      • CALCULATE: ์ ์œ  ๋งต์„ ๊ณ„์‚ฐ
      • VISUALIZE IMAGE: ๊ณ„์‚ฐ๋œ ๋งต์„ ๋ฏธ๋ฆฌ ๋ณด๊ณ  ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ ์ฐฝ์„ ์—ฐ๋‹ค.
    • Use PhysX Collision Geometry (PhysX ์ถฉ๋Œ ๊ธฐํ•˜ํ•™ ์‚ฌ์šฉ)
      • True(๊ธฐ๋ณธ๊ฐ’): PhysX ๊ธฐ๋ฐ˜ ๋ผ์ด๋‹ค๊ฐ€ ํ˜„์žฌ ์ถฉ๋Œ ๊ธฐํ•˜ํ•™์„ ์‚ฌ์šฉํ•˜์—ฌ ๋งต์„ ์ƒ์„ฑ
      • False: ์ถฉ๋Œ ๊ธฐํ•˜ํ•™์„ ์ผ์‹œ์ ์œผ๋กœ ์ œ๊ฑฐํ•˜๊ณ  RTX ๋ผ์ด๋‹ค๊ฐ€ ์›๋ž˜ ์‚ผ๊ฐํ˜• ๋ฉ”์‰ฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋งต์„ ์ƒ์„ฑ

    ์‹œ๊ฐํ™” ์ฐฝ

    • ์ ์œ ๋œ ์ƒ‰์ƒ : "์ ์œ ๋œ" ๊ณต๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์„ ํƒ๋œ ์ƒ‰์ƒ
    • ์ž์œ ๊ณต๊ฐ„ ์ƒ‰์ƒ : ๋น„์ ์œ  ๊ณต๊ฐ„(๋กœ๋ด‡์ด ์ด๋™ ๊ฐ€๋Šฅํ•œ ๊ณต๊ฐ„)์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์„ ํƒ๋œ ์ƒ‰์ƒ
    • ์•Œ ์ˆ˜ ์—†๋Š” ์ƒ‰์ƒ : ์ค‘๊ฐ„ ๊ณต๊ฐ„์ด๋‚˜ "์•Œ ์ˆ˜ ์—†๋Š”" ๊ณต๊ฐ„์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์„ ํƒ๋œ ์ƒ‰์ƒ
    • ์ด๋ฏธ์ง€ ํšŒ์ „ : ์ด๋ฏธ์ง€ ๊ณต๊ฐ„์˜ ์ขŒํ‘œ๋ฅผ ํšŒ์ „ .์˜ˆ๋ฅผ ๋“ค์–ด, 180º๋กœ ์„ค์ •ํ•˜๋ฉด ROS ์ขŒํ‘œ๊ณ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ ์œ  ๋งต์˜ ๋ฐฉํ–ฅ์ด ์†Œ์Šค(Stage)์˜ ์›๋ž˜ ๋ฐฉํ–ฅ๊ณผ ์ผ์น˜ํ•˜๊ฒŒ ์กฐ์ •
    • ์ขŒํ‘œ ์œ ํ˜• : ์ •๋ณด ์ฐฝ์—์„œ ์ถœ๋ ฅ ํ˜•์‹์„ ๊ฒฐ์ •.
      • Stage Space Coordinates: Stage ๊ณต๊ฐ„์˜ ์ขŒํ‘œ๋ฅผ ๋ฐ˜ํ™˜
      • ROS Occupancy Map Parameters File: ROS ์ ์œ  ๋งต์—์„œ ํ•„์š”ํ•œ YAML ํ˜•์‹์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
    • ์ด๋ฏธ์ง€ ๋‹ค์‹œ ์ƒ์„ฑ : ์Šคํ…Œ์ด์ง€๋ฅผ ๋ณ€๊ฒฝํ•œ ๊ฒฝ์šฐ ์ด๋ฏธ์ง€์™€ ์ •๋ณด ์ฐฝ์„ ๋‹ค์‹œ ์ƒ์„ฑ
    • ์ด๋ฏธ์ง€ ์ €์žฅ : ์ด๋ฏธ์ง€๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํŒŒ์ผ ์„ ํƒ๊ธฐ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์—ผ

    ์ ์œ  ๋งต ์ƒ์„ฑ ์ ˆ์ฐจ

    1.์‹œ๋‚˜๋ฆฌ์˜ค ๋กœ๋“œ

    Isaac Examples -> ROS2 -> Navigation -> Carter Navigation ๊ฒฝ๋กœ๋กœ ์ด๋™ํ•˜์—ฌ Nova Carter ๋กœ๋ด‡์ด ์žˆ๋Š” ์ฐฝ๊ณ  ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๋กœ๋“œ

     

    2. ์นด๋ฉ”๋ผ ์„ค์ •

    ๋ทฐํฌํŠธ ์ขŒ์ƒ๋‹จ์—์„œ Camera๋ฅผ ํด๋ฆญํ•˜๊ณ  Top ๋ทฐ๋ฅผ ์„ ํƒ

     

    3.Occupancy Map Extension ์—ด๊ธฐ

    ์ƒ๋‹จ ๋ฉ”๋‰ด์—์„œ Isaac Utils -> Occupancy Map์„ ํด๋ฆญํ•˜์—ฌ ์ ์œ  ๋งต ํ™•์žฅ์„ ์—ผ

     

    4. ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค์ •

    • Origin: X: 0.0, Y: 0.0, Z: 0.0์œผ๋กœ ์„ค์ •
    • Lower Bound: Z: 0.1๋กœ ์„ค์ •
    • Upper Bound: Z: 0.62๋กœ ์„ค์ •. (์ด๋Š” Lidar์˜ ์ง€๋ฉด๊ณผ์˜ ์ˆ˜์ง ๊ฑฐ๋ฆฌ์™€ ์ผ์น˜ํ•˜๋„๋ก ์„ค์ •ํ•œ ๊ฐ’.)

    5. Prim ์„ ํƒ ๋ฐ ๊ฒฝ๊ณ„ ์—…๋ฐ์ดํŠธ

    Stage์—์„œ warehouse_with_forklifts Prim์„ ์„ ํƒ

    ์ ์œ  ๋งต ํ™•์žฅ์—์„œ BOUND SELECTION ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์„ ํƒ๋œ Prim์— ๋งž๊ฒŒ ๊ฒฝ๊ณ„๋ฅผ ์—…๋ฐ์ดํŠธ

     

     

    6. Nova Carter Prim ์ œ๊ฑฐ

    ์ ์œ  ๋งต ์ƒ์„ฑ์— ๋ฐฉํ•ด๋˜์ง€ ์•Š๋„๋ก Nova_Carter_ROS Prim์„ Stage์—์„œ ์ œ๊ฑฐ

     

    7. ์ ์œ  ๋งต ๊ณ„์‚ฐ ๋ฐ ์‹œ๊ฐํ™”

    CALCULATE ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ ์œ  ๋งต์„ ๊ณ„์‚ฐ

    VISUALIZE IMAGE ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์‹œ๊ฐํ™” ํŒ์—…์„ ์—ผ

     

     

     

    8. ์ด๋ฏธ์ง€ ํšŒ์ „ ๋ฐ ์ขŒํ‘œ ํ˜•์‹ ์„ค์ •

    • Rotate Image: 180๋„ ์„ค์ • (ROS ์นด๋ฉ”๋ผ ์ขŒํ‘œ๊ณ„์™€ Isaac Sim ์นด๋ฉ”๋ผ ์ขŒํ‘œ๊ณ„ ๊ฐ„ ์ฐจ์ด๋ฅผ ๋ณด์ •.)
    • Coordinate Type: ROS Occupancy Map Parameters File (YAML)์„ ์„ ํƒ.

    9. ์ด๋ฏธ์ง€ ์žฌ์ƒ์„ฑ

    RE-GENERATE IMAGE ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์„ค์ •๋œ ์ขŒํ‘œ์™€ ํšŒ์ „์— ๋งž๊ฒŒ ์ด๋ฏธ์ง€๋ฅผ ์žฌ์ƒ์„ฑ.

     

    10. YAML ํŒŒ์ผ ์ƒ์„ฑ

    ์ ์œ  ๋งต ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ carter_navigation/maps/carter_warehouse_navigation.yaml ํŒŒ์ผ๋กœ ์ €์žฅ.

    image: carter_warehouse_navigation.png
    resolution: 0.05
    origin: [-11.975, -17.975, 0.0000]
    negate: 0
    occupied_thresh: 0.65
    free_thresh: 0.196
    

     

    ๋ณต์‚ฌํ•œ ๋‚ด์šฉ์„ YAML ํŒŒ์ผ์— ๋ถ™์—ฌ๋„ฃ์Œ.

     

    11. ์ด๋ฏธ์ง€ ์ €์žฅ

     

    Save Image ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ carter_navigation/maps/carter_warehouse_navigation.png๋กœ ์ €์žฅ

     

     

     

     

    ๋‹ค์Œ์€ Nav2๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Nova Carter ๋กœ๋ด‡์„ ์ž‘์€ ์ฐฝ๊ณ  ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ํ•˜๋Š” ์ ˆ์ฐจ์ด๋‹ค.

    Nav2 ์‹คํ–‰

    Nav2 with Nova Carter in Small Warehouse
    1. ๋ฉ”๋‰ด์—์„œ Isaac Examples -> ROS2 -> Navigation -> Carter Navigation์„ ์„ ํƒํ•˜์—ฌ ์ฐฝ๊ณ  ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ™˜๊ฒฝ๊ณผ Nova Carter ๋กœ๋ด‡์„ ๋กœ๋“œ
    2. Play ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์‹œ์ž‘
    3. Isaac Sim์ด ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ์—์„œ ์ƒˆ ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ด๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Nav2๋ฅผ ์‹œ์ž‘
      • ์ด ๋ช…๋ น์–ด๋Š” RViz2๋ฅผ ์—ด๊ณ  ์ ์œ  ๋งต(Occupancy Map)์„ ๋กœ๋“œ
      • RViz2๊ฐ€ ์‹คํ–‰๋˜๋ฉด ์ ์œ  ๋งต์ด ์ž๋™์œผ๋กœ ๋กœ๋“œ
    4. ros2 launch carter_navigation carter_navigation.launch.py
    5. ๋กœ๋ด‡์˜ ์ดˆ๊ธฐ ์œ„์น˜๋Š” carter_navigation_params.yaml์— ์ •์˜๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋ณดํ†ต ์ถ”๊ฐ€ ์„ค์ • ์—†์ด ์ž๋™์œผ๋กœ ๋กœ๋ด‡์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋กœ์ปฌ๋ผ์ด์ฆˆ๋œ๋‹ค. ๋งŒ์•ฝ ์š”๊ตฌ๋œ๋‹ค๋ฉด RViz2์—์„œ 2D Pose Estimate ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์ดˆ๊ธฐํ™”
    6. Navigation2 Goal ๋กœ ์›ํ•˜๋Š” ๋ชฉ์ ์ง€ ์„ ํƒ
    7. Nav2๊ฐ€ ๊ฒฝ๋กœ๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ๋กœ๋ด‡์ด ์„ค์ •๋œ ๋ชฉํ‘œ ์ง€์ ์œผ๋กœ ์ด๋™ํ•˜๊ธฐ ์‹œ์ž‘

    ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

     

    discarding message because the queue is full ๋ฉ”์‹œ์ง€

     

    discarding message because the queue is full ๋ฉ”์‹œ์ง€

    ROS2 ํ† ํ”ฝ์—์„œ ๋ฐ์ดํ„ฐ์˜ ํผ๋ธ”๋ฆฌ์…”์™€ ์„œ๋ธŒ์Šคํฌ๋ผ์ด๋ฒ„ ๊ฐ„ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋งž์ง€ ์•Š์•„์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ. ์ด ๋ฌธ์ œ๋Š” ํŠนํžˆ ๋ผ์ด๋‹ค(LiDAR)์™€ ๊ฐ™์€ ๊ณ ์†์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์„ผ์„œ์—์„œ ํ”ํžˆ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

     

    ํ•ด๊ฒฐ

    CPU, RAM, ๋„คํŠธ์›Œํฌ ๋“ฑ์˜ ์‹œ์Šคํ…œ ๋ฆฌ์†Œ์Šค ๋ถ€์กฑ์ธ ๊ฒƒ ๊ฐ™์•„์„œ

    ์‰ฌ์—ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋‹ˆ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.

     

    [์ตœ์ข… ๊ฒฐ๊ณผ]

    Nav2๊ฐ€ ๊ถค์ ์„ ์ƒ์„ฑํ•˜๊ณ  ๋กœ๋ด‡์ด ๋ชฉ์ ์ง€๋ฅผ ํ–ฅํ•ด ์ด๋™ํ•˜๋Š” ๋ชจ์Šต

     

     

     

    '๋กœ๋ณดํ‹ฑ์Šค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    Installing ROS2 humble [Ubuntu 22.04]  (0) 2025.01.08
    Running Isaac Lab in the Cloud  (0) 2025.01.08