DrawingProcess
드프 DrawingProcess
DrawingProcess
전체 방문자
오늘
어제
«   2025/06   »
일 월 화 수 목 금 토
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
  • 분류 전체보기 (967)
    • Profile & Branding (25)
      • Career (18)
    • IT Trends (254)
      • Conference, Faire (Experien.. (31)
      • News (187)
      • Youtube (19)
      • TED (8)
      • Web Page (2)
      • IT: Etc... (6)
    • Contents (97)
      • Book (66)
      • Lecture (31)
    • Project Process (94)
      • Ideation (0)
      • Study Report (34)
      • Challenge & Award (22)
      • 1Day1Process (5)
      • Making (5)
      • KRC-FTC (Team TC(5031, 5048.. (10)
      • GCP (GlobalCitizenProject) (15)
    • Study: ComputerScience(CS) (72)
      • CS: Basic (9)
      • CS: Database(SQL) (5)
      • CS: Network (14)
      • CS: OperatingSystem (3)
      • CS: Linux (39)
      • CS: Etc... (2)
    • Study: Software(SW) (95)
      • SW: Language (29)
      • SW: Algorithms (1)
      • SW: DataStructure & DesignP.. (1)
      • SW: Opensource (15)
      • SW: Error Bug Fix (43)
      • SW: Etc... (6)
    • Study: Artificial Intellige.. (149)
      • AI: Research (1)
      • AI: 2D Vision(Det, Seg, Tra.. (35)
      • AI: 3D Vision (70)
      • AI: MultiModal (3)
      • AI: SLAM (0)
      • AI: Light Weight(LW) (3)
      • AI: Data Pipeline (7)
      • AI: Machine Learning(ML) (1)
    • Study: Robotics(Robot) (33)
      • Robot: ROS(Robot Operating .. (9)
      • Robot: Positioning (8)
      • Robot: Planning & Control (7)
    • Study: DeveloperTools(DevTo.. (83)
      • DevTool: Git (12)
      • DevTool: CMake (13)
      • DevTool: NoSQL(Elastic, Mon.. (25)
      • DevTool: Container (17)
      • DevTool: IDE (11)
      • DevTool: CloudComputing (4)
    • 인생을 살면서 (64)
      • 나의 취미들 (7)
      • 나의 생각들 (42)
      • 여행을 떠나자~ (10)
      • 분기별 회고 (5)

개발자 명언

“ 매주 목요일마다 당신이 항상 하던대로 신발끈을 묶으면 신발이 폭발한다고 생각해보라.
컴퓨터를 사용할 때는 이런 일이 항상 일어나는데도 아무도 불평할 생각을 안 한다. ”

- Jef Raskin

맥의 아버지 - 애플컴퓨터의 매킨토시 프로젝트를 주도

인기 글

최근 글

최근 댓글

티스토리

hELLO · Designed By 정상우.
DrawingProcess

드프 DrawingProcess

Study: Robotics(Robot)/Robot: ROS(Robot Operating Sytem)

[ROS] Robot Operating System 개념 정리

2022. 6. 6. 16:30
반응형

ROS 란?

  • 로봇의 응용프로그램을 개발하기 위한 운영체제와 같은 로봇 소프트웨어 플렛폼.
    • 하드웨어 추상화
    • 하위 디바이스 제어
    • 센싱, 인식, 지도작성, 모션플래닝 등의 기능 구현
    • 프로세스 간의 메시지 파싱
    • 패키지 관리
    • 개발환경에 필요한 라이브러리와 다양한 개발 및 디버깅 도구 제공

Master 란?

  • 노드와 노드 사이의 연결과 메시지 통신을 위한 네임 서버와 같은 역할.
  • roscore가 실행명령어이며, 마스터를 실행하면 각 노드의 이름을 등록하고 필요에 따라 정보를 받을 수 있음.
  • 마스터 없이는 노드 간의 접속, 토픽과 서비스와 같은 메시지 통신을 할 수 없음.
  • 마스터는 마스터에 접속하는 슬레이브들과의 접속상태를 유지하지 않는 HTTP기반의 프로토콜인 XMLRPC를 이용하여 통신.
    즉, 슬레이브인 노드들이 필요할 때만 접속하여 자신의 정보를 등록하거나 다른 노드의 정보를 요청하여 수신받음.
  • ROS를 구동하면 마스터는 사용자가 정해놓은 ROS_MASTER_URI변수에 기재된 URI주소와 포트를 가짐.
    만약, 사용자가 설정해 놓지 않았다면 기본값으로 URI주소는 localhost를 사용하고 포트는 11311을 이용.

Node 란?

  • ROS에서 실행되는 최소 단위의 실행가능한 프로세서를 지칭.
    따라서 하나의 목적에 하나의 노드를 작성하길 권하며, 재사용이 쉽게 개발하기를 권함.
  • 노드는 구동과 함께 마스터에 노드 이름과 Publisher, Subscriber, Service Server, Service Client에서 사용하는 토픽 및 서비스 이름, 메시지 형태, URI 주소와 포트를 등록.
  • 이 정보를 기반으로 각 노드는 노드끼리 토픽과 서비스를 이용하여 메시지를 주고 받음.
  • 마스터와 통신할 때는 XMLRPC를 이용하며, 노드간의 통신에서는 XMLRPC나 TCPROS (TCP/IP)를 이용.
  • URI와 포트는 현재 노드가 실행중인 컴퓨터에 저장된 ROS_HOSTNAME이라는 환경변숫값을 URI 주소로 사용하며, 포트는 임의의 고윳값으로 설정됨.

Package 란?

  • ROS를 구성하는 기본 단위. 응용프로그램은 패키지 단위로 개발되며, 패키지는 최소한 하나 이상의 노드를 포함하거나 다른 패키지의 노드를 실행하기 위한 설정 파일들을 포함.
  • 더불어 각종 프로세스를 구동하기 위한 ROS의존성 라이브러리, 데이터셋, 설정 파일 등 패키지에 필요한 모든 파일을 포함.

Metapackage란?

  • 공통된 목적을 지닌 패키지들의 집합을 말함.
  • 예를 들어, Navigation의 메타패키지는 AMCL, DWA, EKF, map_server등 10여개의 패키지로 구성.

메시지란?

  • 노드는 메시지를 통해 노드 간의 데이터(int, float, point, bool , list 등)를 주고 받음.
  • 메시지를 이용한 통신방식으로는 TCPROS, UDPROS 방식 등이 있으며, 단방향 메시지 송수신 방식의 토픽과 양방향 메시지 요청/응답 방식의 서비스를 이용.

Topic 이란?

  • Topic은 "이야깃거리"이며, Publisher 노드가 하나의 이야깃거리에 대해서 Topic으로 마스터에 등록한 후, 이야깃거리에 대한 이야기를 메시지 형태로 퍼블리시함.
  • 이 이야깃거리를 수신받기를 원하는 Subscriber 노드는 마스터에 등록된 토픽의 이름에 해당하는 퍼블리셔 노드의 정보를 받음.
  • 이 정보를 기반으로 Subscriber 노드는 Publisher 노드와 직접 연결하여 메시지를 토픽으로 송수신함.
  • Publish와 Subscribe 개념의 토픽 통신방식은 비동기 방식이라 필요에 따라 데이터를 송수신하기에 훌륭한 방식이며, 한 번의 접속으로 지속적인 메시지를 송수신하기에 지속해서 메시지를 발송해야 하는 센서 데이터에 적합하며 많이 사용됨 (지속적 메시지 통신). 

Publish와 Publisher 란?

  • Publish: Topic의 내용에 해당하는 메시지 형태의 데이터를 송신하는 것.
  • Publisher: Publish를 수행하기 위해 Topic을 포함한 자신의 정보들을 마스터에 등록하고, Subscriber 노드에 메시지를 보냄.
    + 추가로 하나의 노드에서 복수로 선언할 수 있음.

Subscribe와 Subscriber 란?

  • Subscribe: Topic의 내용에 해당하는 메시지 형태의 데이터를 수신하는 것.
  • Subscriber: Subscribe를 수행하기 위해 Topic을 포함한 자신의 정보를 마스터에 등록하고, Subscribe하고자 하는 Topic을 Publish하는 Publisher 노드의 정보를 마스터로부터 받음.
    + 추가로 하나의 노드에서 복수로 선언할 수 있음.

Service 란?

  • Service 메시지 통신은 특정 목적의 작업에 해당되는 서비스를 요청(request)하는 서비스 클라이언트와 서비스 응답(reponse)을 담당하는 서비스 서버 간의 동기적 양방향 서비스 메시지 통신을 말함.
  • 서비스 요청과 응답이 완료되면 연결된 두 노드의 접속은 끊김 (일회성 메시지 통신).

Service Server 란?

  • Service server는 요청을 입력으로 받고 응답을 출력으로 하는 서비스 메시지 통신의 서버 역할.
  • 요청과 응답은 모두 메시지로 되어 있으며, 서비스 요청을 받으면 지정된 서비스를 수행한 다음에 그 결과를 서비스 클라이언트에 전달.

Service Client 란?

  • Service client는 요청을 출력으로 하고 응답을 입력으로 받는 서비스 메시지 통신의 클라이언트 역할.
  • 요청과 응답은 모두 메시지로 되어 있으며, 서비스 요청을 서비스 서버에 전달하고 그 결과값을 받음.

Action 란?

  • Action은 Service처럼 양방향을 요구하나 요청 처리 후 응답까지 오랜 시간이 걸리고 중간 결괏값이 필요한 경우에 사용되는 메시지 통신을 말함.
  • Action 메시지도 Service와 유사하게 요청과 응답에 해당하는 목표(goal)와 결과(result)가 있고, 중간 결괏값에 해당하는 피드백(feedback)이 추가됨.
  • 구성은 Action의 Goal를 정하는 Action Client와 목표에 맞추어 정해진 일을 수행하고 Action Feedback과 Result를 전달하는 Action Server로 구성되어, 이들간 비동기식 양방향 메시지 통신을 수행

Action Server 란?

  • Service server는 요청을 입력으로 받고 응답을 출력으로 하는 서비스 메시지 통신의 서버 역할.
  • 요청과 응답은 모두 메시지로 되어 있으며, 서비스 요청을 받으면 지정된 서비스를 수행한 다음에 그 결과를 서비스 클라이언트에 전달.

Action Client 란?

  • Service client는 요청을 출력으로 하고 응답을 입력으로 받는 서비스 메시지 통신의 클라이언트 역할.
  • 요청과 응답은 모두 메시지로 되어 있으며, 서비스 요청을 서비스 서버에 전달하고 그 결과값을 받음.

Parameter 란?

  • Parameter는 노드에서 사용되는 파라미터를 말하며, 흔히 윈도우 프로그램에서 *.ini 설정 파일과 유사함.
  • Parameter는 default로 설정값들이 지정되어 있고, 필요에 따라 외부에서 실시간으로 읽거나 쓸 수 있음.

Parameter Server란?

  • Parameter Server 패키지에서 파라미터를 사용할 때, 각 Parameter를 등록하는 서버를 말함.
  • Parameter Server는 마스터의 한 기능이기도 함.

Catkin 이란?

  • catkin은 ROS의 빌드 시스템이며, CMake를 ROS에 맞게 수정하여 ROS에 특화된 빌드 시스템.
  • 기본적으로 CMake(Cross Platform Make)를 이용하고 있어 패키지 폴더에 CMakeLists.txt라는 파일에 빌드 환경을 기술.
  • catkin을 이용하면 ROS와 관련된 빌드, 패키지 관리, 패키지 간의 의존관계 등을 편리하게 사용할 수 있음.
  • 현 시점에서 ROS를 사용한다면 rosbuild가 아닌 Catkin을 사용해야 함.

rosbuild 란?

  • rosbuild는 catkin 빌드 시스템 이전에 사용되었던 빌드시스템.
  • 만약 rosbuild 빌드 시스템을 사용한 이전 패키지를 사용해야만 한다면 rosbuild를 catkin으로 변경하여 사용하기를 추천.

roscore 이란?

  • ROS 마스터를 구동하는 명령어.
  • 같은 네트워크라면 다른 컴퓨터에서 실행해도 되지만, 같은 네트워크 에서 하나만 구동됨(멀티 roscore를 지원하는 경우를 제외).
  • ROS를 구동하면 사용자가 정해놓은 ROS_MASTER_URI 변수에 기재된 URI주소와 포트를 사용(default: localhost:11311).

rosrun 이란?

  • ROS 의 기본 실행 명령어이며, 패키지에서 하나의 노드를 실행하는데 사용.
  • 노드가 사용하는 URI 주소와 포트는 현재 노드가 실행 중인 컴퓨터에 저장된 ROS_HOSTNAME 환경 변숫값을 URI 주소로 사용하며, 포트는 임의의 고윳값으로 설정.

roslaunch 란?

  • rosrun은 하나의 노드를 실행하는 명령어라면 roslaunch는 여러 노드를 실행하는 개념.
  • 하나 이상의 노드를 실행시키는 것 외의 다른 기능은 노드를 실행할 때 패키지의 파라미터나 노드 이름 변경, 노드네임스페이스 설정, ROS_ROOT 및 ROS_PACKAGE_PATH 설정, 환경변수 변경 등 많은 옵션을 갖춘 노드 실행에 특화된 ROS 명령.
  • roslaunch는 *.launch 파일을 사용하여 실행노드에 대한 설정을 해주는데 이는 XML 태그 형태로 다양한 옵션을 제공.

bag 란?

  • ROS에서 주고받는 메시지의 데이터는 저장할 수 있는데 이때 사용되는 파일 포맷을 bag라고 하며 확장자 *.bag를 사용.
  • bag를 이용하여 메시지를 저장하고 필요할 때 이를 재생하여 이전 상황을 그대로 재현가능.
  • 예를 들어, 센서를 이용한 로봇 실험을 실행할 때, 센서값을 bag를 이용하여 저장해놓으면 그 당시의 실험값을 반복 사용가능.

repository 이란?

  • 공개된 패키지의 경우, 각 패키지의 위키(http://wiki.ros.org/ko)에 repository 명시.
  • repository는 패키지가 저장된 웹상의 URL 주소이며 svn, hg, git 등의 소스 관리 시스템을 이용하여 이슈, 개발, 내려받기 등 관리.

name 이란?

  • 노드, 파라미터, 토픽, 서비스에는 모두 name가 있음.
  • name는 마스터에 등록하고 각 노드의 파라미터, 토픽, 서비스를 사용할 때 이름을 기반으로 검색, 메시지를 전송함.
  • 또한 name는 실행할 때 변경할 수 있기 때문에 매우 유연하고, 같은 노드, 파라미터, 토픽, 서비스라고 하여도 다른 네임으로 중복하여 사용할 수 있음.
  • 이런 name의 사용으로 ROS는 큰 규모의 프로젝트, 복잡한 구조의 시스템에도 적합.

Client Library 란?

  • ROS는 사용되는 언어의 의존성을 낮추기 위해 Client Library로 각종 언어의 개발환경을 제공.
  • 주요한 Client Library로는 C++, python, Lisp 가 있으며, Java, Lua, .NET, EusLisp, R 등의 언어들을 사용할 수 있음.
  • 이를 위해 roscpp, rospy, roslisp, rosjava, roslua, roscs, roseus, PhaROS, rosR 등의 Client Library가 개발.

URI (Uniform Resource Identifier) 란?

  • 인터넷에 있는 자원을 나타내는 유일한 주소.
  • URI는 인터넷에서 요구되는 기본 조건으로 인터넷 프로토콜에서 식별자로 사용.

RPC (Remote Procedure Call) 란?

  • 멀리 떨어져(Remote) 있는 컴퓨터 상의 프로그램이 다른 컴퓨터 내에 있는 서브 프로그램(Procedure)을 불러내는 것.
  • 컴퓨터 프로그램이 다른 주소 공간에서 원격 제어를 위한 프로그래머의 세세한 코딩 없이 함수나 프로시저의 실행을 허용하는 기술로서 TCP/IP, IPX 등의 전송 프로토콜을 이용.

XMLRPC 란?

  • RPC 프로토콜의 일정으로서 인코딩 형식에서는 XML을 채택하고, 전송방식에서는 접속상태를 유지하지 않고 점검하지 않는 요청과 응답 방식의 HTTP 프로토콜을 사용.
반응형
저작자표시 비영리 변경금지 (새창열림)

'Study: Robotics(Robot) > Robot: ROS(Robot Operating Sytem)' 카테고리의 다른 글

[ROS] ROS URDF vs. Gazebo SDF: Link Pose, Joint Pose, Visual & Collision  (0) 2023.10.27
[ROS] ROS TF 좌표계 및 변환  (0) 2023.10.26
[ROS] ROS rosrun 실행파일 만들기(python, cpp)  (0) 2023.10.12
[ROS] ROS Docker Official Image, Docker Compose 파일  (0) 2023.05.03
[ROS] Why ROS2? (feat. ROS1 vs ROS2)  (0) 2022.11.30
    'Study: Robotics(Robot)/Robot: ROS(Robot Operating Sytem)' 카테고리의 다른 글
    • [ROS] ROS TF 좌표계 및 변환
    • [ROS] ROS rosrun 실행파일 만들기(python, cpp)
    • [ROS] ROS Docker Official Image, Docker Compose 파일
    • [ROS] Why ROS2? (feat. ROS1 vs ROS2)
    DrawingProcess
    DrawingProcess
    과정을 그리자!

    티스토리툴바