코딩 및 기타

[isaac sim] ROS2 tutorials 8

정지홍 2026. 3. 5. 13:02

https://docs.isaacsim.omniverse.nvidia.com/5.1.0/ros2_tutorials/tutorial_ros2_ackermann_controller.html

 

ROS 2 Ackermann Controller — Isaac Sim Documentation

ros2 run isaac_tutorials ros2_ackermann_publisher.py Verify that the Leatherback car moves similarly to the one below:

docs.isaacsim.omniverse.nvidia.com

 

1. create -> environments -> flat grid를 추가한다.

2. content browser에서 leatherback을 추가...

  • Isaac Sim > ROBOTS > NVIDIA > Leatherback 

3.  추가한 로봇에서 Transform Property에서 Translate의 모든 값(Translate components)을 0으로 만들어 원점에 위치하게 함.

 

 

4. action graph를 구성한다.

  • on playback tick : 매 시뮬레이션 프레임마다 다른 그래프 노드 실행
  • Ros2 context : 환경변수 ROS_DOMAIN_ID를 사용해서 context생성.
  • Ackermann Controller : 각 바퀴의 조향 각도와 바퀴 속도를 계산.
  • Ros2 subscribe ackermann drive : ackermann 주행명령을 subscribe한다.
  • Ros2 QoS Profile : QoS 프로파일 생성
  • Articulation Controller : Leatherback의 steering joints제어
  • Articulation Controller_01(아래꺼) : Leatherback의 바퀴 조인트 제어 

 

 

 

5. Articulation Controller의 property수정

  • target prim에서 leatherback을 추가. ( leatherback 장수거북? )
  • jointNames에 아래 2개를 추가. (Knuckle 관절)
    • Knuckle_Upright_Front_왼/오 ==> 이거는 앞바퀴 방향을 꺾는 joint이다.
      이것의 각도를 바꾸면 앞바퀴가 좌/우로 돌아간다.
    • Kunckle_upright로 시작하는거는 "핸들 축"으로 생각하면 됨. 즉, 조향(방향꺾는) 조인트의 이름이다. ( wheel로 시작한다면, 바퀴를 굴리는 회전 조인트 이름)

 

 

6. articulation_controller_01의 property수정

  • targetPrim에서 / leatherback추가
  • jointNames에 아래 4개를 추가 
    • Front와 near은 각각 앞/뒤를 의미.
    • 앞바퀴
      • wheel_knuckle_front_좌/우   => 앞바퀴는 "knuckle(위의 조향부품)"에 붙어서 회전함.
    • 뒷바퀴
      • wheel_upright_rear_좌/우 ==> 뒷바퀴는 뼈대에 직접 붙어서 회전함. 그래서 upright라고 함.

 

 

7. ros2 subscribe ackermann drive에서 input topic이 ackermann_cmd인지 확인 

 

 

 

8. ackermann controller노드의 property탭에서 입력값을 아래 표처럼 설정 

 

 

 

9. ros2 run isaac_tutorials ros2_ackermann_publisher.py 입력하면 움직일 거임

 

 


 

ackermann 키보드로 움직이기

 

1. Isaac Sim > Sample > ROS2 > Scenario > leatherback_ackermann을 열어준다

 

 

2. play를 누르고 아래 명령어 입력

ros2 launch cmdvel_to_ackermann cmdvel_to_ackermann.launch.py acceleration:=0.5 steering_velocity:=0.5
  • publish_period_ms (기본값=20): publish 주기 dt (ms)
  • track_width (기본값=0.2): 바퀴 간 거리(휠 분리 거리) (m)
  • acceleration (기본값=0.0): 가속도. 0이면 가능한 한 빨리 속도 변경 (m/s²)
  • steering_velocity (기본값=0.0): 조향각 변화 속도. 0이면 가능한 한 빨리 각도 변경 (rad/s)

 

 

3. 다른 터미널에서 아래 명령어 입력하면 조작 가능

ros2 run teleop_twist_keyboard teleop_twist_keyboard

'코딩 및 기타' 카테고리의 다른 글

[isaac sim] ROS 2 Navigation  (0) 2026.03.10
[isaac sim] ROS2 tutorials 9  (1) 2026.03.10
[isaac sim] ROS2 tutorials 7  (0) 2026.03.04
[isaac sim] ROS2 tutorials 6  (0) 2026.03.03
[tello]  (0) 2026.03.03