KG_KAIROS/리눅스

🤖[ROS2] Publisher와 Subscriber, Client와 Server의 연결 이해하기

projectlim 2024. 9. 24. 16:12
728x90
반응형
SMALL

안녕하세요!!

오늘은 ROS의 기본인 Pub과 Sub을 통한 노드간 연결을 공부하고자 합니다.

ROS의 장점이 오픈소스가 다양하다고 한적이 있는데요

그중 다양한 라이센스에서 주로 긁어 오더라도 MIT라이센스를 긁어 와야합니다.

 

🤖 ROS의 기본 개념 및 노드 간 연결 공부하기

오늘은 ROS의 핵심 개념인 **Publisher(발행자)**와 **Subscriber(구독자)**를 통해 노드 간의 연결을 살펴보고, 오픈소스 라이선스의 비교도 해볼 거예요! 다양한 예시와 함께 ROS의 주요 개념을 쉽게 풀어보겠습니다. 🌟


🧩 ROS의 주요 개념

  1. Publisher (발행자)
    특정 주제(topic)에 메시지를 발행하는 노드입니다.
    📌 예시: 로봇의 카메라 노드가 이미지 데이터를 발행.
  2. Subscriber (구독자)
    특정 주제를 구독하여 메시지를 수신하는 노드입니다.
    📌 예시: 이미지 처리 노드가 카메라 데이터를 구독하여 처리.
  3. Node (노드)
    ROS에서 실행되는 독립적인 프로세스로, 특정 작업을 처리하는 하나의 유닛입니다.
    📌 예시: 센서 데이터 수집 노드, 모터 제어 노드.
  4. Topic (주제)
    노드 간 비동기식 메시지 통신을 위한 채널입니다.
    📌 예시: /camera/image_raw (카메라 이미지 데이터), /cmd_vel (속도 명령).
  5. Service (서비스)
    동기식 요청-응답을 위한 인터페이스입니다.
    📌 예시: /compute_path (경로 계산), /set_led (LED 상태 설정).

🛠️ 오픈소스 라이선스 비교: GPL vs MIT

오픈소스 라이선스를 고를 때 GPLMIT 라이선스의 차이를 알고 있어야 해요. 두 라이선스 모두 유명하지만, 각각의 특징이 다르니 비교해보겠습니다! 🤔

  • GPL (GNU General Public License)
    • 📂 소스 코드 공개 의무: 소프트웨어를 배포할 때 수정된 소스 코드도 공개해야 합니다.
    • 🔄 파생 작업 규칙: 파생 작업도 GPL 라이선스를 따라야 합니다.
    • 🎯 사용 예: 리눅스 커널, Git, MySQL
  • MIT License
    • 🚫 소스 코드 공개 의무 없음: 소스 코드를 공개할 필요 없이 자유롭게 수정 및 배포할 수 있습니다.
    • 🛠️ 유연성: 상업적 사용에도 제한이 없고 자유롭게 사용할 수 있습니다.
    • 🎯 사용 예: jQuery, Rails, X 윈도 시스템

⚖️ 라이선스 선택 TIP

MIT 라이선스는 자유롭게 수정하고 상업적 목적으로도 사용이 가능해서 ROS 프로젝트에서 많이 사용되는 라이선스입니다. GPL은 소스 코드 공개 의무가 있기 때문에 상업적인 프로젝트에서는 신중해야 할 수 있어요! 😊


🚀 결론

ROS는 오픈소스의 유연성을 최대한 활용할 수 있는 플랫폼입니다. Pub/Sub을 통해 노드 간의 데이터를 효과적으로 연결하고, 각 라이선스의 특성을 잘 이해하여 프로젝트에 맞는 선택을 하는 것이 중요합니다.

여러분이 ROS를 더 잘 활용할 수 있도록 계속해서 좋은 정보들 공유할게요! 질문이나 추가적으로 필요한 내용이 있으면 언제든지 댓글 남겨주세요! ✨😊

 
관련실습을 진행하면.

https://docs.ros.org/en/humble/Tutorials/Beginner-Client-Libraries/Writing-A-Simple-Py-Publisher-And-Subscriber.html

 

Writing a simple publisher and subscriber (Python) — ROS 2 Documentation: Humble documentation

Navigate into ros2_ws/src/py_pubsub/py_pubsub. Recall that this directory is a Python package with the same name as the ROS 2 package it’s nested in. Now there will be a new file named publisher_member_function.py adjacent to __init__.py. Open the file u

docs.ros.org

여기에 모든 자료가 있습니다!!

Document니까 확인 해주세용!

publisher와 subscriber 연결확인

Hello world가 출력되는걸 볼수 있습니다.

계산도 가능합니다!!

두개의 수를 입력하면서 연산처리까지 갖추었습니다.

노드간 통신의 기본으로 언제부터 연결 됐는지도 직관적으로 확인할 수 있겠죠?

728x90
반응형
LIST