●7강
https://www.youtube.com/watch?v=iGdQHi_wL1Y&list=PLRG6WP3c31_VIFtFAxSke2NG_DumVZPgw&index=7

●Keyword
-roslaunch
●Study
7강 마지막엔 여러개의 노드를 한번에 실행 시킬 수 있는 명령어인 roslaunch를 배웠다.
roslaunch는 확장자 .launch 파일을 바탕으로 실행되는데 이 파일 또한 packge.xml파일과 같은 XML기반으로 작성된다.
<node pkg="패키지명" type="노드명" name="노드name"/>
*위에 그대로 작성하면 되고 type에는 소스코드상에서 정한 그 노드의 진짜 이름을 넣고 name에는 launch로 실행시킬 때의 노드 이름을 임의로 넣으면 된다.
예를 들어
<node pkg="패키지명" type="노드A" name="노드ㄱ"/>
<node pkg="패키지명" type="노드A" name="노드ㄴ"/>
이렇게 넣으면 노드A가 노드ㄱ, 노드ㄴ으로 2개 실행된다.
한편 rosrun으로 노드A를 2번 실행시키면 먼저 실행시킨 노드는 꺼진다.
$roslaunch 패키지명 launch파일명 --screen
*작성한 launch파일을 바탕으로 노드들을 실행시킬 수 있다.
한편 launch로 실행시킨 node는 각각 실행했을 때 처럼 터미널 창이 떠서 rosinfo로 출력되는 메시지를 확인할 수 없다.
그래서 --screen을 붙여주면 roslaunch를 실행시킨 터미널에 노드간에 주고 받는 topic이 전부 보이게 된다.
+)그럼 만약 앞에서 만든 topic publisher, subscriber 2쌍을 만들어 각각이 topic을 주고 받게 하려고
<node pkg="ros_tutorial_topic" type="topic_publisher" name="pub1"/>
<node pkg="ros_tutorial_topic" type="topic_subscriber" name="sub1"/>
<node pkg="ros_tutorial_topic" type="topic_publisher" name="pub2"/>
<node pkg="ros_tutorial_topic" type="topic_subscriber" name="sub2"/>
이렇게 작성하면 어떻게 될까?

노드의 실행상의 이름만 바뀌었기에 topic은 위와 같이 다른 그룹으로도 보내진다.
이때는 노드를 그룹으로 묶어주는 group tag를 추가해주면 된다.
<group ns="그룹명">
~
</group>
<group ns="group1">
<node pkg="ros_tutorials_topic" type="topic_publisher" name="pub1"/>
<node pkg="ros_tutorials_topic" type="topic_subscriber" name="sub1"/>
</group>
<group ns="group2">
<node pkg="ros_tutorials_topic" type="topic_publisher" name="pub2"/>
<node pkg="ros_tutorials_topic" type="topic_subscriber" name="sub2"/>
</group>
이렇게하면 pub-sub의 각 쌍이 다른 그룹으로 분리되어 topic도 그룹을 넘어서 보내지지 않는다.

이외에도 다른 태그가 많다.
강의에선 c++로 launch를 실습했으니 파이썬으로도 한번 실습을 해보았다.

아주 잘 작동한다.
*참고로 python으로 launch를 할 때 .launch에서 노드명에 꼭 .py를 붙여줘야 한다. 이거 까먹어서 10분정도 헤맸다...
'팀 프로젝트' 카테고리의 다른 글
| C-2345 자세 제어 4족보행 로봇 #9 (ROS 9강-임베디드 시스템, rosserial 실습) (0) | 2021.08.23 |
|---|---|
| C-2345 자세 제어 4족보행 로봇 #8 (ROS 8강-카메라 캘리브레이션 실습) (0) | 2021.08.21 |
| C-2345 자세 제어 4족보행 로봇 #6 (ROS 7강-2 Python으로 topic, service) (0) | 2021.08.20 |
| C-2345 자세 제어 4족보행 로봇 #5 (ROS 7강-1 C++로 topic, service, parameter ) (0) | 2021.08.18 |
| C-2345 자세 제어 4족보행 로봇 #4 (ROS 5,6강-Rviz, RQT, Gazebo) (0) | 2021.08.13 |