리눅스/ROS

[ROS] 기본 용어 및 컨셉

시그널보내 2022. 2. 25. 12:34
Node

- 각 프로세스들을 Node의 단위로 관리

- 노드들끼리 데이터를 주고받기 위해서는 어떤 노드가 생겼고, id는 볓번이고 등의 정보가 공유되어야 함.

- 이를 관리해주는 것이 ROS Master

rosrun & roslaunch

Node를 실행시키는 방식

1) roslaunch : launch파일을 통해 한번에 여러개의 Node를 동시에 실행

roslaunch <package-name> <launch-file-name.launch>

2) rosrun : 단 하나의 Node를 실행

rosrun <package-name> <executable-file-name>

 

launch file

- .launch 파일은 xml형식으로 구성

1) line의 시작과 끝, 태그

<tag />

or 

<tag (value)>
...
</tag>

 

2. tag 종류

  • <launch> : launch 파일임을 알려주는 tag
  • <include> : launch 파일에서 다른 launch파일을 가져올 수 있음
<include file="$(arg dollar)$(arg path)/launch/robot_description.launch"/>
<include file="$(find gazebo_ros)/launch/empty_world.launch">
  • <node> : 단일 node를 추가하고자 하는 경우에 사용. 직접 만든 노드를 launch파일로 만들고자 할 때 사용
<node pkg="rviz" type="rviz" name="rviz" args="-d $(arg dollar)$(arg path)/rviz/tinybot.rviz"/>
  • <arg> : 프로그래밍 언어에서 변수를 설정하듯, 해당 파일 안에서 사용될 argument를 지정
# argument 설정
<arg name="test_arg" value="Hello"/>
<arg name="test_arg2" default="0"/>

# argument 사용
<arg name="package_name"  default="gcamp_gazebo" />
<arg name="path"   value="(find $(arg package_name))" />
  • $(find pkg) : 다른 패키지에 있는 파일을 가졍로 수 있음(단, launch file 안에 넣기 전에 rosrun을 통해 작동이상이 없는지 확인 필요)
<include file="$(find gazebo_ros)/launch/empty_world.launch">
<include file="$(find gazebo_ros)/launch/empty_world.launch">

3) 주석 <!-- -- >

 

 

 

Message(통신) 방식
  • Topic : 연속성을 가진 단방향 통신방법(Publisher -> Subscriber)이며 메시지(카메라 정보)가 전송된다. 1:1, 1:N, N:1, N:N통신도 가능 -> 센서데이터와 같이 일방적인 전송(90%비율로 많이 사용)
    • Publisher(노드) : 메시지를 보내는 주체
    • Subscriber(노드) : 메시지를 받는 주체
  • Service : 요청과 응답을 둘다 하는 일회성 양방향 통신(서버 <-> 클라이언트)
  • Action : 1) 액션 복표 전달 2) 액션피드백(중간결과)전달 3) 액션 결과 전달

ROS명령어
  • roscd(ros + cd) : 지정한 ros패키지의 디렉토리로 이동, ls, cp, ed와 같이 활용 가능
ROS 실행 명령어
  • roscore : 1) master(ros네임 서비스)  2) rosout(로그 기록)   3) parameter server(파라미터 관리)
  • rosrun : 노드 실행
  • roslaunch : 노드를 여러개 실행 및 실행 옵션 설정정
  • rosclean : ros 로그파일을 검사하거나 삭제
ROS 정보 명령어
  • rostopic : ros토익 정보 확인
  • rosservice : ros서비스 정보 확인
  • rosnode : ros 노드 정보 확인
  • rosparam : 파라미터 정보 확인, 수정
  • rosbag : 영상정보저장 및 재생
ROS melodic 명령어
  • melodic_create_pkg : 패키지 자동 생성
  • melodic_make : 멜로딕 빌드 시스템에 기반을 둔 빌드
  • melodic_eclipse : 멜로딕 빌드 시스테믕로 생성한 패키지를 이클립스에서 사용할 수 있게 변경
ROS 패키지 명령어
  • rospack : ros 패키지와 관련된 정보 보기
  • rosinstall : ros추가 패키지 설치

 

 

 

 

 

 

 

 

 

 

참고자료

http://wiki.ros.org/ROS/CommandLineTools

 

ROS/CommandLineTools - ROS Wiki

The following tools are built when a top-level make is called in $ROS_ROOT. They are installed to $ROS_ROOT/bin, which should have been added to your PATH variable as part of the installation process. If this is not the case, please follow the Installation

wiki.ros.org