카테고리 없음

📂 Isaac Sim 5.1.0 & ROS 2 Jazzy AMR 프로젝트 가이드

AI를 활용한 지식 정보화 2026. 1. 31. 13:15

1. ROS 2 워크스페이스 및 패키지 생성

가장 먼저 터미널에서 프로젝트 구조를 만듭니다.

# 1. 워크스페이스 생성
mkdir -p ~/isaac_jazzy_amr_ws/src
cd ~/isaac_jazzy_amr_ws/src

# 2. 패키지 생성 (의존성 포함)
ros2 pkg create --build-type ament_python amr_controller --dependencies rclpy geometry_msgs sensor_msgs

# 3. 소스 폴더로 이동
cd amr_controller/amr_controller

2. 패키지 파일 구성 (File Structure)

패키지의 핵심 파일 설정 내용입니다.

① package.xml

의존성 라이브러리가 명시되어야 합니다.

<?xml version="1.0"?>
http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format3>
  <name>amr_controller</name>
  <version>0.0.0</version>
  <description>Isaac Sim 5.1.0 AMR Teleop with Pro-Con</description>
  <maintainer email="user@todo.todo">user</maintainer>
  <license>Apache License 2.0</license>

  <depend>rclpy</depend>
  <depend>geometry_msgs</depend>
  <depend>sensor_msgs</depend>

  <test_depend>ament_copyright</test_depend>
  <test_depend>ament_flake8</test_depend>
  <test_depend>ament_pep257</test_depend>
  <test_depend>python3-pytest</test_depend>

  <export>
    <build_type>ament_python</build_type>
  </export>
</package>

② setup.py

노드를 실행할 수 있도록 진입점(entry_point)을 설정합니다.

from setuptools import find_packages, setup

package_name = 'amr_controller'

setup(
    name=package_name,
    version='0.0.0',
    packages=find_packages(exclude=['test']),
    data_files=[
        ('share/ament_index/resource_index/packages',
            ['resource/' + package_name]),
        ('share/' + package_name, ['package.xml']),
    ],
    install_requires=['setuptools'],
    zip_safe=True,
    maintainer='user',
    maintainer_email='user@todo.todo',
    description='Isaac Sim 5.1.0 AMR Teleop',
    license='Apache License 2.0',
    tests_require=['pytest'],
    entry_points={
        'console_scripts': [
            'amr_control_510 = amr_controller.amr_control_510:main'
        ],
    },
)

③ amr_control_510.py (핵심 로직)

~/isaac_jazzy_amr_ws/src/amr_controller/amr_controller/amr_control_510.py 경로에 생성합니다.

#!/usr/bin/env python3
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import Joy
from geometry_msgs.msg import Twist

class IsaacAMRTeleop(Node):
    def __init__(self):
        super().__init__('isaac_amr_teleop')
        self.joy_sub = self.create_subscription(Joy, 'joy', self.joy_callback, 10)
        self.cmd_pub = self.create_publisher(Twist, '/cmd_vel', 10)
        self.get_logger().info("AMR 제어 노드 가동: L-Stick(전후), R-Stick(좌우)")

    def joy_callback(self, joy_msg):
        twist = Twist()
        # 프로콘 매핑: L-스틱 상하(axes[1]), R-스틱 좌우(axes[3])
        twist.linear.x = joy_msg.axes[1] * 1.0  # 선속도
        twist.angular.z = joy_msg.axes[3] * 1.5 # 각속도
        self.cmd_pub.publish(twist)

def main(args=None):
    rclpy.init(args=args)
    node = IsaacAMRTeleop()
    try:
        rclpy.spin(node)
    except KeyboardInterrupt:
        pass
    finally:
        node.destroy_node()
        rclpy.shutdown()

3. Isaac Sim 5.1.0 액션 그래프 설정 (Action Graph)

이 단계는 Isaac Sim GUI 내에서 수행합니다.

 

 

 ** 첨부파일은 Isaac sim 실행 후 Open하여 바로 실행하면 된다.

amr_test.usd
0.01MB

  1. 로봇 추가: Content Browser -> Isaac/Robots/Carter/nova_carter.usd 배치.
  2. 그래프 생성: Window > Graph Editors > Action Graph 클릭 후 New Action Graph.
  3. 노드 연결:
    • On Playback Tick: 실행 시작점.
    • ROS2 Subscribe Twist: /cmd_vel 구독.
    • Break 3-Vector (2개):
      • Linear Velocity → X 값 추출 (Double 타입으로 변환).
      • Angular Velocity → Z 값 추출 (Double 타입으로 변환).
    • Differential Controller: Desired Linear Velocity(X), Desired Angular Velocity(Z) 연결.
    • Articulation Controller: robotPath를 /World/Carter로 지정.

Action Graph 구성 화면


4. 빌드 및 실행 절차

단계 1: ROS 2 워크스페이스 빌드

cd ~/isaac_jazzy_amr_ws
colcon build --symlink-install
source install/setup.bash

단계 2: 시스템 구동 (3개 터미널)

  • 터미널 1 (Joy Driver): ros2 run joy joy_node
  • 터미널 2 (Controller): ros2 run amr_controller amr_control_510
  • Isaac Sim 실행 후: Play 버튼 클릭.

참고. Isaac sim 실행 및 ROS2 Jazzy 실행 환경 변수 설정 (.bashrc)

Isaac sim의 내부 Python 라이브러리와 ROS 2 Jazzy가 충돌하지 않도록 경로를 지정해야 합니다.

nano ~/.bashrc

 

파일 끝에 아래 내용을 추가하세요:

# ROS 2 Jazzy 환경 로드
source /opt/ros/jazzy/setup.bash

# 아이작 심 경로 설정
export ISAAC_SIM_PATH=$HOME/.local/share/ov/pkg/isaac-sim-5.1.0  # Isaacsim 설치 경로
alias isaac_sim='$ISAAC_SIM_PATH/isaac-sim.sh'

# 아이작 심 내부 파이썬 사용을 위한 별칭 (선택 사항)
alias isaac_python='$ISAAC_SIM_PATH/python.sh'

 

저장 후 적용:

source ~/.bashrc

5. 핵심 주의사항 (최종 체크리스트)

  • 타입 불일치: Twist 메시지의 Vector3를 Double로 변환하지 않으면 5.1.0에서는 선이 연결되지 않습니다.
    반드시 Break 3-Vector 노드를 사용하세요.
  • 물리 활성화: 로봇(/World/Carter)의 Articulation Root 속성이 켜져 있어야 물리 명령을 듣습니다.
  • 바퀴 파라미터: Differential Controller 노드에서 Wheel Radius와 Wheel Distance가 실제 로봇 크기(예: 0.1, 0.5)로 설정되어야 합니다. 0이면 움직이지 않습니다.

GITHUB : https://github.com/goooodday/isaac_jazzy_amr_ws.git