Robotics/ROS

4. rosrun, roslaunch, launch

Dogun Kim 2025. 2. 10. 23:00

 앞 글에서 ROS는 각 프로세스인 Node들로 구성된다고 말하며, Node를 실행하는 방법에 대해 다뤘다. 이를 더 자세히 공부해보겠다.

 

  • Node를 실행하는 방법

1) 하나의 노드를 실행하는 rosrun

$ rosrun teleop_twist_keyboard teleop_twist_keyboard.py

하나의 노드 (.py)를 실행한다.

 

2) 여러개의 노드를 동시에 실행시키는 roslanch

$ roslaunch gcamp_gazebo gazebo_world.launch

rosmaster를 포함한 launch 파일에 존재하는 여러 가지의 노드들을 실행시킨다.

 

+ rosmaster만 구동하는 roscore 함수도 있었다.

 

 

 

  • launch file

roslaunch 함수를 통해 런치 파일 내 존재하는 노드들을 실행시킨다고 했다. 이 런치파일에 대해 알아볼 것이다.

이전 글에서 git clone했던 경로로 다시 가보자.

$ cd ~/gcamp_ws/src/gcamp_ros_basic/gcamp_gazebo
$ l
CMakeLists.txt  launch/  meshes/  package.xml  rviz/  urdf/  worlds/

다음과 같이 launch 파일들이 존재한다.

.xml

해당 런치 파일은 xml 라는 문법을 사용한다. 이에 대해 공부할 것이다.

 

  1. 태그 형식
    • 한 줄로 종료할 경우 / 사용
    • 여러 줄로 감쌀 경우 <tag> ... </tag> 형태
  2. xml
    복사편집
    <tag /> <tag (value)> ... </tag>
  3. 주요 태그
    • <launch> : launch 파일의 최상위 태그 (HTML의 <body>와 유사)
    • <include> : 다른 launch 파일을 포함
    • <node> : 특정 패키지의 노드를 실행
    • <arg> : 변수처럼 사용되는 argument 정의 및 활용
  4. arg 태그 예제
    • value를 지정하여 직접 값 할당 가능
    • default를 설정하면 값이 없을 경우 기본값 사용
  5. xml
    복사편집
    <arg name="test_arg" value="Hello"/> <arg name="test_arg2" default="0"/>
  6. 다른 launch 파일 포함 시 arg 활용
    • 포함된 launch 파일이 필요한 argument를 받을 수 있음
  7. xml
    복사편집
    <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="use_sim_time" value="true"/> <arg name="debug" value="false"/> <arg name="gui" value="true" /> </include>
  8. 주석 사용법
    • HTML과 동일한 <!-- ... --> 형태
    • --(하이픈 두 개)를 포함하면 오류 발생 가능
  9. xml
    복사편집
    <!-- 주석 내용 -->
  10. 다른 패키지의 launch 파일 참조
    • $(find <패키지명>)을 사용해 패키지 내 특정 파일 경로 탐색
  11. xml
    복사편집
    <include file="$(find gazebo_ros)/launch/empty_world.launch"/>
  12. Launch 파일 테스트
    • rosrun을 이용해 개별 노드 실행 후 launch 파일에서 활용하는 것이 좋음

'Robotics > ROS' 카테고리의 다른 글

3. roscore, rosmaster, rosnode  (0) 2025.02.10
2. Gazebo 환경과 사용법  (0) 2025.02.10
1. ROS란?, ROS 설치  (0) 2025.02.10