일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Slam
- 자율주행
- Python
- 노트
- udacity
- Gazebo
- turtlebot3
- turtlesim
- Robotics program 교육
- 입문
- Subscriber
- 기초
- Localization
- launch
- TinySLAM
- 데브코스
- 패키지만들기
- 어렵네
- catkin빌드
- 튜토리얼
- Ros
- 가재보
- sudo
- navgation
- CNN
- 판단
- Publisher
- C++
- XML
- 공부
- Today
- Total
Tnote
ROS, launch 파일(.xml) 본문
launch 파일이란?
- 여러개의 노드를 한번에 실행 시킬 수 있는 파일
- 한 패키지의 launch 디렉토리에 존재함. (ex, .py 들은 src에 저장되는 거 처럼 .launch들은 launch에 저장)
- rosmater 실행 안해도 된다. (roscore)
launch 파일 실행 : roslaunch 패키지명 launch파일명; ex. roslaunch test_ws hector_mapping.launch
태그 : xml 을 구성하는 기본 단위, 어떤 설정이 붙은 키워드 같은 것으로 생각
(변수를 설정하고 싶으면 변수 설정과 관련된 태그를 사용해서 변수를 정의, 노드를 실행하고 싶으면 노드관련 태그를 사용해서 실행.... 와 같은 느낌)
* 태크는 반드시 열었으면 닫아줘야한다. />
@launch 태그 종류
<launch> : launch 시작과 끝
<node> : 노드 실행
<include> : launch 실행, 다른 패키지에 있어도 가능
<param> : 파라미터 설정
<rosparam> : 매개변수를 로드 및 덤프(node에 종속해서 사용)
<arg> : launch 파일 내 변수 설정
<env> : 환경 변수 설정 (경로, IP ..)
...
@ launch 태그 상세
* 옵션 설정 안할꺼면 (추가 옵션) 빼고 그냥 /> 하면 된다.
* 옵션인 만큼 필요할 때만 쓰면되고, 무조건 넣어야 하는 부분만 기재함
<launch> 태그
launch 파일의 시작과 끝을 나타내는 태그로 launch 파일을 구성하기 위한 양식으로 생각
<launch> ~ </launch>
<node> 태그
<node pkg="패키지명" type="실행할 노드명" name="실행 될 때 노드의 이름" (추가 옵션) />
output="screen" : launch 파일 실행한 터미널에 출력하는 설정
args="a" : 해당 노드에 a라는 인자를 전달하는 설정
<rosparam> 태그
서버에서 매개변수를 로드 or 덤프하기 위해 YAML 파일을 사용할 수 있도록 한다.
매개변수를 제거하는데 사용할 수도 있다.
아래는 사용예시이다.
<node ~>
<rosparam ~ />
</node>
* node를 단일로 쓸 때에는 <node ~ /> 으로 했다면,
종속시키기 위해서 <node ~> ~ </node> 로 할 것 (즉, 닫지말 것)
<include> 태그
<include file="실행할 launch파일명(경로까지)" (추가 옵션) />
다른 launch 파일(XML)을 가져올 수 있다.
<param> 태그
<param name="파라미터명" value="파라미터 값" (추가옵션)/>
* 사실 param 태크는 ros wiki 찾아보면 나오지만, 값도 선택사항인데,
안넣으면 binfile, textfile, command를 대신 필수로 넣어줘야 하므로 우리는 값을 쓰기 때문에 일단 넣음.
+ param를 전역으로 설정할 때에는 아래 2번째 줄 형식으로 하면된다. 그러나, param를 지역으로 설정할 때에는 해당 종속시키고픈 node 끝에 /를 닫지말고 3번째 줄과 같이 param를 다 쓰고 node 닫는 태그를 사용할 것.
<arg> 태그
<arg name="변수 이름" (추가옵션)/>
default="기본값"
value="넣고싶은 값", (단 default와 value는 같이 쓸 수 없다.)
doc="변수 설명", 터미널에 --ros-args 하면 설명이 뜬다 help처럼
+주석 : <!-- 내용 --> // 주석안에 -- 쓰면 오류나므로 조심할 것.
@ xml 예시
1
2
3
4
5
6
7
8
9
|
<launch>
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" />
<node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" />
<node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />
<param name="robot_description" command="$(find xacro)/xacro $(find ta_lab6)/urdf/racecar_2.xacro"/>
<node pkg="rviz" type="rviz" name="rviz" args="-d $(find wecar)/rviz/gmapping_slam.rviz"/>
</launch>
|
cs |
흐름 정리
slam_gmapping 실행 > joint_state_publisher 실행 > robot_state_publisher 실행 > 파라미터 정의 > rviz 실행
코드 설명
1 launch 파일 시작
2 node 실행 ("gmapping" 패키지의 "slam_gmapping" 노드를 "slam_gmapping" 이름으로 실행) // 4, 5도 같은 양상
6 파라미터 정의 ("robot_description" 매개변수에 "$(find ... .xacro"의 출력이 string 형태로 파라미터 저장)
7 2번과 동일하지만, "rviz" 노드에 "-d $(find we.....rviz" 인자 전달 옵션 추가
8 launch 파일 종료
[ xacro 파일 ]
일단 명령어를 기존보다 쉽게 작성한 파일이라고 정도 알고있을 것. (현재 우리가 가진 xacro 파일을 열어보면 수많은 파라미터 값들이 xacro:: 형태로 저장되 있는걸 볼 수 있음)
+22.03.01 추가
syntax error로 '<', '/>', ',' 과 같은 기호의 문제라고 한다.
해당 XML launch 파일을 보니 태그의 모든 속성을 공백이 아닌 ,로 연결했다. (주의)
'ROS' 카테고리의 다른 글
ROS, turtlebot3(가재보, 시뮬레이터)를 활용한 slam, navigation 실습 (0) | 2022.02.24 |
---|---|
ROS, hector_slam (0) | 2022.02.21 |
ROS, turtlesim 활용해 python 기초 코딩 (0) | 2022.02.06 |
ROS, 패키지 만들기, catkin 빌드하기 (0) | 2022.02.05 |
ROS, turtlesim을 활용한 데이터 이동 확인 (0) | 2022.02.04 |