ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ROS] 기본개념
    Engineer/Robotic 2016. 4. 14. 22:01



    안녕하세요.꿈꾸는 개발자 몽키준 입니다.


    이번에는 ROS에서 사용되는 기본 개념들에 대해 알아보려고 하는데요.

    해당 내용은 ROS  tutorials[1] 과  오로카 오프라인 모임 중 하나인 #아스라다 팀에서 배운 내용[2]을 바탕으로 정리하였으며 더 자세한 내용은 아래 reference를 참고해주세요.


    Created Data : 2016.04.14

    Last Updated : 2016.04.18


    1. 노드(NODE)

       노드란 최소 기능을 수행하는 프로세스를 말하며, 로봇은 여러개의 노드를 수행하게 된다. 각 노드 간에는 Topic 이나 service 를 이용하여 메세지를 통해 서로 통신을 하게 된다.


    1-1 Node Tool

    rosnode 는 CLT(Command Line Tool) 중 하나로, 실행 중인 노드의 정보를 표시하는 커멘드이다. 


    1-2 Command-Line Remapping Arguemnt

    Node 내에 존재하는 ROS name 은 Command-Line 상에서 Remapping 이 가능하다. 즉, Command-Line 에서 다양한 설정을 가진 동일한 Node 를 실행시킬 수 있다. syntax name:=new_name 형식으로 인수(Argument) 리매핑을 통해 노드 간에 전달이 가능하다.

    ex) rosrun rospy_tutorials talker chatter:=/wg/chatter


    1-3 Pushing down

    환경 변수 ROS_NAMESPACE를 이용하여 실행되는 노드의 namespace 를 변경할 수 있는데 이런 효과를 Child node 에 Pushing down 한다고 한다.


    1-4 노드 파라미터 할당

    Private parameter를 Command-Line 에서 Singleunderscore, '_' 를 가지고 직접 할당할 수 있다.

    rosrun rospy_tutorials talker _param:=1.0


    1-5 스페셜 키(Special Keys)

    __name

    노드의 이름을 위한 예약어로 노드의 실제 이름을 알고 있지 않더라도 노드 이름 리매핑과 같은 명령을 수행할 수 있다.

    __log

    노드의 로그 파일의 위치를 지정할 수 있는 예약어이지만 실제 사용은 제한적이다. 주로 roslaunch 와 같은 ROS 툴에서 사용된다.(Not encouraged)

    __ip & __hostname

    ROS_IP 와 ROS_HOSTNAME을 지칭하는 예약어로 환경 변수 설정과 같은 특별한 경우에만 사용된다.(Not encouraged)

    __master :

    ROS_MASTER 를 지칭하는 예약어로 환경 변수 설정과 같은 특별한 경우에만 사용된다.(Not encouraged)

    __ns

    ROS_NAMESPACE를 지칭하는 예약어로 환경 변수 설정과 같은 특별한 경우에만 사용된다.(Not encouraged)


    2. 메세지(Messages)

    노드간에 주고 받는 데이터 포맷을 의미하는 용어로 integer, float, boolean 과 같은 데이터 타입을 가지고 있다. 


    2-1 msg

    위치 : ~/catkin_ws/src/[package]/msg

     int64 num


    2-2 srv

    위치 : ~/catkin_ws/src/[package]/srv

    int64 A            <--- input

    int64 B

    ---

    int64 result       <--- output


    2-3 rosmsg

    Command line tool 로 msg 정보를 보여준다.

     $> rosmsg --show [package_name]



    3. 토픽(Topic)

    1:1, 1:N, N:N 노드간에 메세지를 주고받는 단방향 통신으로 발행자(Publisher) 와 Subscriber 로 구성된다. 이때 roscore는 새로 등록되는 Publisher 또는 Subscriber 를 이미 등록되어 실행되고 있는 노드들에게 알려주는 역할만 수행하며 실제 메세지는 노드간(Publisher/Subscriber) 간에 통신이 이뤄진다.


    4. 서비스

    1:1 또는 1:N 노드간에 메세지를 주고받는 양방향 통신으로 데이터를 요청하는 Client 와 이를 수행하는 서버로 구성된다.







    - reference -

    [1] ros tutorial

    [2] ros 강의 by 표윤석님

    [3] roscpp api


    'Engineer > Robotic' 카테고리의 다른 글

    [ROS] install roscore  (0) 2016.09.22
    [ROS] run node with gdb  (0) 2016.08.23
    [ROS] 노드 리매핑  (0) 2016.06.01
    [ROS] catkin 빌드 후 패키지를 못찾는 문제  (2) 2016.05.31
    [ROS] 시작하며...  (0) 2015.12.21

    댓글

Designed by Tistory.