ROS2 이론 정리

Ros2 시작 전의 필요한 사전 지식(2)

dawon-project 2025. 4. 10. 00:11

API (Application programming Interface) : 응용 프로그램에서 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스

위의 그림과 같이 정해진 정보를 클라이언트가 전해주면 클라이언트가 원하는 기능을 접근할 프로그램에서 가져올 수 있다.

이런 클라이언트와 프로그램 사이의 다리 역할을 하는 것을 API라 한다.

 

API의 특징

  • 구현과 독립적으로 사양만 정의되어 있다.
  • API에 따라 접근 권한이 필요할 수 있다.
  • 말 그대로 인터페이스이기에 안에는 무엇이 들어있는지 알 수 없다.

Library : 응용 프로그램 개발을 위해 필요한 기능(함수)를 모아 놓은 소프트웨어

-> 구성 데이터, 문서, 도움말 자료, 메시지 틀, 미리 작성된 코드, 서브루틴(함수), 클래스, 값, 자료형 등이 포함될 수 있다.

 

Library의 특징

  • 독립성을 가진다
    -> 해당 라이브러리는 다른 라이브러리를 의지하지 않는다.
  • 응용 프로그램이 능동적으로 라이브러리를 사용
    -> 응용 프로그램이 필요할 때 라이브러리를 호출
  • 프로그래머가 어떠한 기능을 수행하기 위해 도움을 주는 필요한 것을 제공해주는 역할을 하는 것
  • 라이브러리는 재사용이 필요한 기능으로 반복적인 코드 작성을 없애기 위해 언제든지 필요한 곳에서 호출하여 사용할 수 있도록 class나 Function으로 만들어진다.
  • 프로그램을 만들때 기존에 만들어진 함수들을 재활용함으로써, 프로그램의 제작 시간과 노력을 줄일 수 있다. 그리고 필요한 함수만 호출하여 사용할 수 있다.
  • 독립성을 가지고, 응용 프로그램이 능동적으로 라이브러리를 사용한다.

 

Framework

  • 응용 프로그램이나 소프트웨어의 솔루션 개발을 수월하게 하기 위해 제공된 소프트웨어 환경
  • 특정 인프라나 환경에서 동작할 수 있도록 기반 시설을 담당해주는 것이 프레임워크의 역할

Framework의 특징

  • 응용 프로그램이 수동적으로 프레임워크에 의해 사용된다.
  • 뼈대나 기반 구조라는 뜻으로, 응용 프로그램이나 소프트웨어 구현을 수월하게 하기 위해 제공된 소프트웨어 환경
  • 프레임워크만으로 실행되지 않고, 기능을 추가해야하며, 프레임워크에 의존하여 개발해야 하고, 프레임워크가 정의한 규칙을 준수해야함
  • 프로그래밍을 진행할 때 필수적인 코드, 알고리즘 등과 같이 어느 정도 구조를 제공해주기 때문에 프레임 워크를 사용하는 프로그래머는 이 프레임워크 뼈대 위에서 코드를 작성하여 프로그램을 개발한다.
  • 프레임 워크는 완성된 제품이 아닌 완성된 제품을 만들기 위해 개발자를 도와주는 또는 기반이 되는 역할을 한다.
    -> 즉, 소프트웨어의 특정 문제를 해결하기 위해 상호 협력하는 클래스와 인터페이스의 집합

 

Framework vs Library

가장 큰 차이점은 이것 없이도 앱이 동작할 수 있느지 여부 즉, 응용 프로그램의 흐름 주도권을 누가 가지고 있는가?

  • 라이브러리 : 개발자가 코드를 컨트롤 즉, 개발자가 라이브러리를 호출한다.
  • 프레임 워크 : 개발자가 프레임워크의 규칙을 따라 코딩한다. 즉, 프레임워크가 개발자를 호출한다.

API와 Library 차이점

  • API : 컴포넌트를 사용하는 규약 및 호출을 위한 수단으로써 구현 로직이 필요없음
  • 라이브러리 : 컴포넌트 자체로써, 구현 로직이 존재

HTTP와 HTTPS

  • HTTP(Hypertext Transfer Protocol) : 클라이언트와 서버 간 통신을 위한 통신 규칙 세트 또는 프로토콜
  • HTTPS(Hypertext Transfer Protocol Secure) : HTTP의 확장 버전으로, 브라우저와 서버가 데이터를 전송하기 전에 안전하고, 암호화된 연결을 설정하는 프로토콜

 

컴파일러(소스코드 -> Build -> 실행파일)

  • 소스코드 : 컴퓨터 소프트웨어(프로그램)의 제작에 사용되는 설계도
    -> 당장 컴퓨터에 입력만 하면 진짜로 프로그램을 완성할 수 있는 매우 세밀하고 구체적으로 짜인 설계도
    -> 순서도 : 개념만 나타낸 추상적인 설계도
  • Build : 우리가 만든 소스코드를 컴퓨터가 이해할 수 있는 언어인 기계어로 번역하는 과정
    -> 컴퓨터에서 실행 가능한 파일로 만드는 과정
  • 컴파일러 : 전체 소스 코드를 한 번에 기계어 코드로 번역한 후, 실행 가능한 파일로 만들어 주는 것
    -> 실행 속도가 빠름
  • 인터프리터(Interpreter) : 코드를 한 줄씩 읽고 그때그때 바로 실행
    -> 실행 파일을 만들지 않고, 인터프리터가 직접 읽으면서 수행
    -> 코드를 실행할 때마다 해석하면서 동작
    -> 실행 속도 느림

XML(Extensible Markup Language(XML)

  • 데이터를 정의하는 규칙을 제공하는 마크업 언어
  • 공유 가능한 방식으로 데이터를 정의하고 저장하는 것
  • XML은 ROS의 패키지 빌드 및 의존성 관리를 해준다.

 

네트워크 관련 개념

  • 노드 : 네트워크의 기본 요소인 지역 네트워크에 연결된 컴퓨터와 그 안에 속한 장비들을 통틀어 하나의 노드라 함
  • 허브(Hub) : 컴퓨터와 컴퓨터 사이 즉, 네트워크 장비와 장비를 연결해주는 기능을 수행하는 장비
  • 모뎀(MOdulator and DEModulator) : 신호를 변조하여 송신하고, 수신측에서 원래의 신호로 복구하기 위해 복조하는 장치
  • 네트워크 : 컴퓨터들 간의 데이터를 주고 받기 위한 통신 규칙
  • Client : 정보를 요청하는 컴퓨터
  • Server : 요청하는 것을 받아서 응답
  • IP : 각각의 컴퓨터의 고유 ID
  • 도메인 : 서버에 접속하기 위한 주소
  • URL : 서버에 접속하기 위한 주소(프로토콜 + 도메인 + 경로)
  • DNS : IP를 별칭, 도메인으로 바꿔서 검색한 것을 IP로 바꿔줌
  • 소켓(Socket) : 컴퓨터 간의 데이터 전송을 위한 인터페이스
    -> 떨어져있는 두 호스트를 연결하는 도구
    • Socket의 종류
      • TCP
      • UDP

  • 인터넷에 장치를 붙일때 필요한 4가지
    • IP 주소
    • Subnet mask
    • gate way -> 지나가는 통로, 끝까지 가봐야 연결 확인 가능
    • DNS Server -> 옵션

 

OSI7 Layer : 서로 다른 시스템 간의 통신을 원활하게 하기 위한 표준 모델로, 각 레이어가 독립적으로 작동하며, 데이터 전송과정에서 다양한 작업을 수행

 

RS-232C

  • 직렬 통신 중 하나로 1:1 통신이며 1:N의 통신은 되지 않는다.
  • 단방향 통신이며 노이즈에 강하고 간단한 통신 방식이기에 현재도 산업용 기기에서 데이터 교환하는 방식으로 쓰임

 

RS-485

  • 먼 거리에서 데이터를 전송해야 하는 장치 간의 통신 중 하나인 직렬 통신의 종류
  • 하나의 버스에 최대 32개의 송신기와 32개의 수신기를 연결할 수 있고, 여러 장치를 연결하여 네트워크를 구성
    -> 장거리 통신 가능