ROS Node (Topic, Service, Action)통신방식: -
ROS(Robot Operating System)의 통신 방식을 5살 아이에게 설명하듯이 쉽게 풀어보겠습니다!
ROS를 우체국으로 생각해보세요 📮
ROS는 로봇의 여러 부분들이 서로 대화할 수 있게 해주는 우체국 같은 시스템입니다.
1. Topic (토픽) - 방송국 📻
"라디오 방송"처럼 생각해보세요!
- 방송국(Publisher): 뉴스를 계속 방송합니다
- 청취자(Subscriber): 원하는 채널에 맞춰서 듣습니다
- 특징: 방송국은 누가 듣는지 모르고, 그냥 계속 방송해요
예시:
- 로봇의 카메라가 "여기 장애물 있어요!" 하고 계속 방송
- 움직임 담당 부분이 그 방송을 듣고 "아, 피해가야겠네!"
카메라 → [장애물 정보] → 움직임 제어
센서 → [온도 데이터] → 화면 표시
2. Service (서비스) - 전화 통화 ☎️
"전화로 질문하고 답받기"같아요!
- 질문자(Client): "지금 몇 시야?" 라고 전화해서 물어봄
- 답변자(Server): "3시 30분이야!" 라고 정확히 답해줌
- 특징: 질문하면 반드시 답이 와야 해요. 일회성이에요.
예시:
- 로봇: "현재 배터리 몇 퍼센트야?"
- 배터리 관리자: "75%야!"
- 로봇: "고마워!" (통화 끝)
로봇 → "배터리 상태?" → 배터리 시스템
로봇 ← "75% 남음" ← 배터리 시스템
3. Action (액션) - 택배 주문 📦
"택배 주문하고 배송 추적하기"같아요!
- 주문자(Client): "이 물건을 저기로 옮겨줘" 라고 주문
- 배송자(Server): 일을 시작하고 중간중간 "지금 50% 했어요" 라고 알려줌
- 특징: 시간이 오래 걸리는 일이고, 중간에 취소도 가능해요
예시:
- 로봇에게 "거실에서 부엌으로 가줘" 명령
- 로봇이 가면서 계속 알려줌: "10% 완료", "50% 완료", "도착!"
- 중간에 "그만해!" 하면 멈출 수 있어요
명령: "거실→부엌 이동"
진행상황: 10% → 30% → 70% → 100% 완료!
(중간에 취소 가능)
언제 뭘 사용할까요? 🤔
Topic 사용:
- 센서 데이터 (온도, 거리 등)
- 계속 업데이트되는 정보
- "방송"하듯 여러곳에 알려야 할 때
Service 사용:
- 간단한 질문-답변
- 즉시 결과가 나오는 작업
- "지금 상태가 어때?" 같은 질문
Action 사용:
- 시간이 오래 걸리는 작업
- 진행상황을 알고 싶은 일
- 중간에 멈출 수 있어야 하는 일
쉽게 기억하는 방법:
- Topic = 라디오 📻 (계속 방송)
- Service = 전화 ☎️ (질문하고 답받기)
- Action = 택배 📦 (주문하고 배송추적)
이렇게 세 가지 방식으로 로봇의 여러 부분들이 서로 협력해서 일을 처리하는 거예요!
ROS 2 노드간 데이터 통신을 5살 아이에게 설명하듯이 쉽게 풀어보겠습니다!
ROS 2를 놀이터로 생각해보세요! 🏰
ROS 2에서 각 노드는 놀이터에서 노는 친구들 같아요. 친구들이 서로 대화하는 방법들을 알아볼까요?
1. Topic Communication - 확성기 📢
"놀이터에서 확성기로 외치기"같아요!
- 외치는 친구(Publisher): "지금 비가 와요!" 하고 큰 소리로 외쳐요
- 듣는 친구들(Subscribers): 관심 있는 친구들만 들어요
- 특징: 누가 듣는지 몰라도 계속 외쳐요. 일방통행이에요!
예시:
카메라 노드: "빨간 공을 봤어요!" (계속 외침)
↓
로봇팔 노드: "아, 빨간 공이구나!" (듣고 반응)
화면 노드: "빨간 공 표시해야지!" (듣고 반응)
2. Service Communication - 질문하고 답하기 🙋♀️
"친구에게 직접 질문하기"같아요!
- 질문하는 친구(Client): "지금 시간이 몇 시야?" 라고 물어봐요
- 답하는 친구(Server): "3시야!" 라고 정확히 답해줘요
- 특징: 질문하면 답이 올 때까지 기다려요. 일대일 대화!
예시:
내비게이션 노드: "목표지점까지 경로 계산해줘!"
↓
경로계획 노드: "계산 중..."
↓
경로계획 노드: "여기로 가세요!" (경로 정보 전달)
3. Action Communication - 심부름 맡기기 📦
"친구에게 오래 걸리는 심부름 부탁하기"같아요!
- 부탁하는 친구(Client): "저기 공 가져다줘!" 라고 부탁
- 심부름하는 친구(Server): "알겠어! 지금 50% 했어!" 중간중간 알려줌
- 특징: 시간이 오래 걸리고, 중간에 "그만해도 돼!" 할 수 있어요
예시:
명령: "부엌까지 물병 가져와줘!"
로봇: "출발!" → "30% 완료" → "물병 찾았어!" → "70% 완료" → "도착!"
(중간에 "취소!" 하면 멈춤)
ROS 2만의 특별한 점들! ✨
1. QoS (Quality of Service) - 메시지 배달 방식 📬
택배 배달 방식 선택하기 같아요!
- RELIABLE: "중요한 선물이니까 꼭 전달해줘!" (등기우편)
- BEST_EFFORT: "전달되면 좋고 안되면 말고~" (일반우편)
- DURABILITY: "늦게 온 친구도 볼 수 있게 게시판에 붙여둬!" (게시판)
2. DDS 미들웨어 - 우체국 시스템 🏢
놀이터에 우체국이 생긴 것 같아요!
- 친구들끼리 편지를 더 안전하고 빠르게 주고받을 수 있어요
- 먼 곳에 있는 친구들과도 대화할 수 있어요 (네트워크를 통해)
- 여러 우체국(다른 컴퓨터)과도 연결돼요!
3. Discovery - 새 친구 찾기 🔍
놀이터에 새 친구가 오면 자동으로 알아차려요!
새 노드: "안녕! 나는 카메라야!"
다른 노드들: "어? 새 친구네! 반가워!"
자동으로 친구 등록 완료! 🤝
언제 뭘 사용할까요? 🤔
Topic 사용 📻:
- 센서 데이터 (온도, 거리측정 등)
- 계속 업데이트되는 정보
- 여러 노드가 같은 정보를 필요로 할 때
Service 사용 ☎️:
- 간단한 계산 요청
- 현재 상태 확인
- 즉시 답이 나오는 일
Action 사용 ⏰:
- 로봇 이동하기
- 물건 집기
- 시간이 오래 걸리는 복잡한 작업
쉽게 기억하기! 🧠
놀이터 친구들 대화법:
- Topic = 확성기 📢 (모두에게 알리기)
- Service = 질문-답변 🙋♀️ (일대일 대화)
- Action = 심부름 📦 (오래 걸리는 일 맡기기)
ROS 2 특별함:
- 더 안전한 우체국 시스템 (DDS)
- 배달 방식 선택 가능 (QoS)
- 새 친구 자동 발견 (Discovery)
이렇게 ROS 2의 노드들이 서로 협력해서 로봇을 똑똑하게 만드는 거예요! 🤖✨
§ ROS 패키지 목록
• https://index.ros.org/packages/
§ ROS 기반 로봇 패키지
• https://robots.ros.org/
§ ROS 센서 패키지
• https://wiki.ros.org/Sensors
§ ROS 모터 패키지
• https://wiki.ros.org/Motor%20Controller%20Drivers
댓글 없음:
댓글 쓰기