사무실 안내·순찰 로봇 시스템 아키텍처 및 소프트웨어 설계서 작성 예시

1. 문서 개요

본 문서는 터틀봇3 버거(TurtleBot3 Burger)를 활용하여 사무실 안내, 심부름, 입구 감시, 야간 순찰, 이상 징후 감지, 원격 제어 기능을 수행하는 서비스 로봇의 시스템 아키텍처와 소프트웨어 구조를 정의한다.

로봇의 전체 운용 상태는 중앙 상태 관리 노드에서 관리하며, 비상정지와 충돌 방지 기능은 일반 임무 기능과 독립적으로 동작하도록 설계한다.

2. 시스템 목표

본 시스템의 주요 목표는 다음과 같다.

  1. 사무실 입구에서 사람을 감지하고 인사와 공지사항을 안내한다.
  2. 지정된 장소까지 방문자를 안내한다.
  3. 관리자의 요청에 따라 간단한 심부름 임무를 수행한다.
  4. 야간에 지정된 경로를 반복 순찰한다.
  5. 순찰 중 사람, 움직임, 화재 의심 상황과 장애물을 감지한다.
  6. 이상 상황이 발생하면 사진 또는 영상을 저장한다.
  7. 판단이 어려운 상황은 관리자에게 확인을 요청한다.
  8. 관리자가 원격으로 로봇의 영상과 상태를 확인할 수 있도록 한다.
  9. 필요할 경우 관리자가 로봇을 원격 조종할 수 있도록 한다.
  10. 배터리 부족, 통신 단절, 장애물 접근과 비상정지 상황에서 로봇을 안전하게 정지시킨다.
  11. 임무 수행 결과와 야간 순찰 결과를 로그와 보고서 형태로 저장한다.

3. 시스템 운용 환경

터틀봇3 버거는 일반적인 실내 사무실 환경에서 운용한다.

주요 운용 공간은 다음과 같다.

  • 사무실 입구
  • 복도
  • 회의실
  • 직원 좌석 구역
  • 휴게실
  • 물품 보관 장소
  • 충전 위치
  • 관리자 지정 순찰 지점

로봇은 평탄한 실내 바닥에서 운용하며, 엘리베이터와 계단은 기본 운용 범위에서 제외한다. 유리문, 낮은 장애물, 전선, 이동식 의자와 같은 환경 요소는 별도의 안전 검토 대상으로 관리한다.

4. 전체 시스템 구성

본 시스템은 다음 세 개의 계층으로 구성한다.

4.1 하드웨어 계층

하드웨어 계층은 로봇의 이동, 센서 입력, 사용자 인터페이스, 통신과 전원 공급을 담당한다.

주요 구성요소는 다음과 같다.

  • 터틀봇3 버거 모바일 베이스
  • 다이나믹셀 구동 모터
  • OpenCR 제어 보드
  • 휠 엔코더
  • 2D LiDAR
  • RGB 카메라
  • 근접 또는 거리 센서
  • 마이크
  • 스피커
  • 디스플레이 또는 태블릿
  • 온보드 컴퓨터
  • 무선 네트워크 장치
  • 배터리
  • 충전 장치 또는 충전 위치
  • 비상정지 스위치

4.2 ROS 2 미들웨어 계층

ROS 2 미들웨어 계층은 각 기능 노드 사이의 데이터 통신을 담당한다.

다음 통신 방식을 사용한다.

  • Topic: 센서 데이터, 상태 정보와 지속적으로 갱신되는 데이터 전달
  • Service: 즉시 처리되는 요청과 응답
  • Action: 이동, 순찰, 안내와 같이 시간이 필요한 임무 수행
  • Parameter: 노드 설정값 관리
  • TF: 로봇 좌표계와 센서 좌표계 관리
  • rosbag: 센서 데이터와 임무 데이터 기록

4.3 응용 소프트웨어 계층

응용 소프트웨어 계층은 안내, 순찰, 이상 감지, 원격 제어와 안전 관리 기능을 담당한다.

주요 응용 기능은 다음과 같다.

  • 이동 및 위치 추정
  • 사람 감지
  • 입구 감시
  • 음성 및 화면 안내
  • 임무 상태 관리
  • 방문자 안내
  • 심부름 수행
  • 야간 순찰
  • 이상 징후 감지
  • 사진과 영상 저장
  • 관리자 확인 요청
  • 원격 모니터링
  • 원격 제어
  • 로그 저장
  • 보고서 생성
  • 안전 관리

5. 하드웨어 구성

5.1 모바일 로봇 플랫폼

본 시스템의 기본 플랫폼은 터틀봇3 버거이다.

터틀봇3 버거는 좌우 바퀴의 회전속도 차이를 이용하여 이동하는 차동구동 방식의 모바일 로봇이다.

로봇의 이동 명령은 일반적으로 선속도와 각속도로 구성한다.

  • 선속도: 전진 및 후진 속도
  • 각속도: 좌회전 및 우회전 속도

차동구동 방식은 구조가 단순하고 제어가 쉬우며, 좁은 실내 공간에서 제자리 회전이 가능하다는 장점이 있다.

5.2 모터와 모터 드라이버

터틀봇3 버거는 좌우 구동을 위해 다이나믹셀 모터를 사용한다.

주요 역할은 다음과 같다.

  • 좌측 바퀴 구동
  • 우측 바퀴 구동
  • 바퀴 회전속도 제어
  • 바퀴 위치 정보 제공
  • 모터 상태와 오류 정보 제공

OpenCR 보드는 온보드 컴퓨터에서 전달된 속도 명령을 받아 좌우 모터를 제어한다.

상위 제어 소프트웨어는 /cmd_vel 형태의 속도 명령을 전달하고, 하위 구동 시스템은 이를 좌우 바퀴 속도로 변환한다.

5.3 OpenCR 제어 보드

OpenCR은 터틀봇3의 하위 제어를 담당한다.

주요 역할은 다음과 같다.

  • 다이나믹셀 모터 제어
  • 휠 엔코더 데이터 수집
  • 관성 센서 데이터 처리
  • 배터리 상태 확인
  • 온보드 컴퓨터와의 직렬 통신
  • 로봇 이동 명령 처리
  • 기본 오도메트리 계산 지원

상위 ROS 2 노드는 OpenCR을 직접 제어하기보다 터틀봇3 구동 패키지를 통해 명령과 상태를 주고받는다.

5.4 휠 엔코더

휠 엔코더는 좌우 바퀴의 회전량을 측정한다.

엔코더 데이터는 다음 용도로 사용한다.

  • 로봇 이동 거리 계산
  • 로봇 회전각 계산
  • 오도메트리 생성
  • 위치 추정 보조
  • 바퀴 미끄러짐과 구동 이상 확인

엔코더만 사용할 경우 바퀴 미끄러짐과 누적 오차가 발생할 수 있으므로, LiDAR 기반 위치 추정 결과와 함께 사용한다.

5.5 2D LiDAR

터틀봇3 버거에 장착된 2D LiDAR는 주변 장애물까지의 거리 정보를 제공한다.

LiDAR 데이터는 일반적으로 /scan 토픽으로 발행한다.

주요 사용 목적은 다음과 같다.

  • 실내 지도 작성
  • 현재 위치 추정
  • 장애물 감지
  • 전역 경로 생성
  • 지역 경로 생성
  • 충돌 회피
  • 순찰 경로 안전성 확인

LiDAR는 로봇의 핵심 자율주행 센서이므로 설치 위치와 센서 좌표계를 정확하게 설정해야 한다.

5.6 RGB 카메라

터틀봇3 버거의 기본 구성에는 사무실 서비스에 필요한 RGB 카메라가 포함되지 않을 수 있으므로 USB 카메라 또는 ROS 2 지원 RGB 카메라를 추가한다.

카메라의 주요 역할은 다음과 같다.

  • 사람 감지
  • 입구 방문자 확인
  • 순찰 영상 확인
  • 이상 상황 사진 촬영
  • 관리자 원격 모니터링
  • 방문자 안내 화면 제공
  • 증거 영상 저장

카메라는 로봇 전면의 진행 방향을 향하도록 설치한다. 사람의 얼굴과 상체를 확인할 수 있도록 적절한 높이와 각도를 확보한다.

5.7 근접 또는 거리 센서

2D LiDAR가 감지하지 못하는 낮은 장애물이나 로봇 본체 가까이의 물체를 감지하기 위해 적외선, 초음파 또는 ToF 거리 센서를 추가할 수 있다.

주요 역할은 다음과 같다.

  • 로봇 전면 근거리 장애물 감지
  • 낮은 물체 감지
  • 충돌 직전 안전정지
  • 충전 위치 접근 확인
  • 사람과의 최소 안전거리 유지

근접 센서는 선택 구성요소이지만 사무실에서 실제 로봇을 운용할 경우 추가하는 것이 바람직하다.

5.8 마이크와 스피커

터틀봇3 버거의 기본 구성에는 음성 입출력 장치가 포함되지 않으므로 USB 마이크와 USB 또는 블루투스 스피커를 추가한다.

마이크의 주요 역할은 다음과 같다.

  • 방문자 음성 명령 입력
  • 관리자 호출 명령 입력
  • 간단한 질의 응답
  • 주변 소음 또는 비정상 소리 감지

스피커의 주요 역할은 다음과 같다.

  • 방문자 인사
  • 공지사항 전달
  • 이동 안내
  • 경고 메시지 출력
  • 배터리 부족 알림
  • 비상 상황 안내

4주 프로젝트에서는 자유 대화형 음성 인식보다 정해진 명령어 중심으로 구현하는 것이 적절하다.

5.9 디스플레이 또는 태블릿

방문자에게 안내 정보와 로봇 상태를 보여주기 위해 소형 디스플레이 또는 태블릿을 추가할 수 있다.

표시 정보는 다음과 같다.

  • 인사 문구
  • 사무실 공지사항
  • 목적지 선택 화면
  • 방문 대상자 선택 화면
  • 로봇 현재 상태
  • 이동 중 안내
  • 방문 메모 입력
  • 긴급 연락 안내
  • 관리자 연결 상태

태블릿을 사용하는 경우 웹 기반 사용자 인터페이스를 구성하면 개발 시간을 줄일 수 있다.

5.10 온보드 컴퓨터

온보드 컴퓨터는 ROS 2 노드와 자율주행 소프트웨어를 실행한다.

주요 역할은 다음과 같다.

  • ROS 2 실행
  • 터틀봇3 구동 드라이버 실행
  • SLAM과 위치 추정
  • Nav2 실행
  • 카메라 데이터 처리
  • 사람 감지
  • 임무 상태 관리
  • 로그와 영상 저장
  • 원격 서버와 통신

프로젝트의 연산량이 크지 않은 경우 라즈베리파이급 보드를 사용할 수 있다. 사람 감지, 영상 분석과 인공지능 추론을 동시에 수행할 경우 별도의 고성능 컴퓨터를 사용하거나 외부 서버에서 영상 처리를 수행할 수 있다.

5.11 무선 네트워크 장치

로봇과 관리자 컴퓨터는 무선 네트워크로 연결한다.

무선 네트워크는 다음 데이터 전달에 사용한다.

  • 로봇 상태 정보
  • 실시간 카메라 영상
  • 관리자 요청과 응답
  • 원격 속도 명령
  • 지도와 위치 정보
  • 순찰 결과
  • 사진과 영상 파일
  • 로그 파일

통신이 끊어진 경우에도 로봇이 즉시 위험한 동작을 수행하지 않도록 독립적인 통신 단절 감시 기능을 구성한다.

5.12 배터리와 충전 위치

터틀봇3 버거의 배터리 상태는 주기적으로 감시한다.

배터리 상태는 다음 단계로 구분한다.

  • 정상
  • 주의
  • 충전 필요
  • 위험
  • 전원 종료 필요

배터리가 충전 필요 수준에 도달하면 현재 임무를 안전하게 종료하고 지정된 홈 위치로 복귀한다.

기본 프로젝트에서는 자동 도킹 대신 지정된 충전 위치까지 복귀한 뒤 사용자가 충전기를 연결하는 방식으로 구성할 수 있다. 자동 충전 기능이 필요한 경우 충전 도킹 스테이션, 접점 구조와 정밀 도킹 센서를 별도로 개발해야 한다.

5.13 비상정지 스위치

실제 로봇 운용 시 물리적인 비상정지 스위치를 추가하는 것이 바람직하다.

비상정지 스위치가 눌리면 다음 동작을 수행한다.

  1. 현재 이동 명령을 무효화한다.
  2. 선속도와 각속도를 0으로 설정한다.
  3. 상태를 EMERGENCY_STOP으로 변경한다.
  4. 새로운 이동 임무를 거부한다.
  5. 관리자 화면에 비상정지 상태를 표시한다.
  6. 비상정지 해제 후 명시적인 복구 명령을 기다린다.

6. 소프트웨어 구성

6.1 운영체제와 ROS 2

온보드 컴퓨터에는 Ubuntu와 ROS 2를 설치한다.

ROS 2는 다음 기능을 담당한다.

  • 센서 데이터 전달
  • 노드 간 명령 전달
  • 서비스 요청과 응답
  • 이동 임무 실행
  • 상태 정보 공유
  • 좌표계 관리
  • 로그 기록
  • 원격 컴퓨터 연결

모든 개발 컴퓨터와 로봇 컴퓨터는 동일하거나 호환되는 ROS 2 배포판을 사용한다.

6.2 터틀봇3 구동 드라이버

터틀봇3 구동 드라이버는 온보드 컴퓨터와 OpenCR 사이의 통신을 담당한다.

주요 기능은 다음과 같다.

  • 속도 명령 전달
  • 오도메트리 발행
  • 조인트 상태 발행
  • 센서 상태 발행
  • TF 발행
  • 모터 상태 관리

응용 노드는 다이나믹셀 모터를 직접 제어하지 않고 표준 속도 명령과 터틀봇3 드라이버 인터페이스를 사용한다.

6.3 SLAM 패키지

SLAM 패키지는 LiDAR 데이터와 오도메트리를 이용하여 사무실 지도를 작성한다.

지도 작성 단계에서는 사용자가 로봇을 원격 조작하여 다음 공간을 이동한다.

  • 입구
  • 복도
  • 회의실
  • 직원 좌석 구역
  • 휴게실
  • 충전 위치
  • 순찰 지점

생성된 지도는 파일로 저장하고, 실제 서비스 운용에서는 저장된 지도를 사용한다.

6.4 위치 추정 패키지

위치 추정 패키지는 저장된 지도, LiDAR 데이터와 오도메트리를 이용하여 로봇의 현재 위치를 계산한다.

위치 추정 결과는 다음 기능에서 사용한다.

  • 목적지 이동
  • 순찰 지점 이동
  • 홈 위치 복귀
  • 이상 상황 발생 위치 기록
  • 관리자 화면 위치 표시
  • 방문자 안내 진행 상황 표시

초기 위치를 알 수 없는 경우 관리자가 초기 위치를 지정하거나 정해진 시작 위치에서 로봇을 운용한다.

6.5 Nav2

Nav2는 터틀봇3 버거의 자율주행을 담당한다.

주요 기능은 다음과 같다.

  • 목적지 경로 생성
  • 장애물 회피
  • 경로 추종
  • 이동 중 재계획
  • 목적지 도착 판단
  • 이동 실패 처리
  • 홈 위치 복귀
  • 순찰 지점 연속 이동

이름 기반 목적지는 실제 좌표로 변환하여 Nav2에 전달한다.

예시는 다음과 같다.

  • entrance: 사무실 입구
  • meeting_room: 회의실
  • manager_desk: 관리자 자리
  • lounge: 휴게실
  • storage: 물품 보관 장소
  • home: 대기 또는 충전 위치

6.6 카메라 드라이버

카메라 드라이버는 RGB 영상을 ROS 2 이미지 토픽으로 발행한다.

주요 출력은 다음과 같다.

  • 원본 영상
  • 카메라 정보
  • 압축 영상
  • 촬영 시간
  • 프레임 식별 정보

카메라 영상은 사람 감지, 증거 저장과 원격 모니터링 노드에서 사용한다.

6.7 사람 감지 노드

사람 감지 노드는 카메라 영상에서 사람을 탐지한다.

주요 출력 정보는 다음과 같다.

  • 사람 감지 여부
  • 감지 인원 수
  • 영상 내 사람 위치
  • 감지 신뢰도
  • 감지 시간
  • 감지된 로봇 위치

입구 감시에서는 일정 시간 이상 감지된 사람만 방문자로 판단하여 순간적인 오검출을 줄인다.

6.8 임무 상태 관리 노드

임무 상태 관리 노드는 로봇의 전체 운용 모드와 상태 전환을 관리한다.

주요 역할은 다음과 같다.

  • 현재 상태 관리
  • 상태 전환 조건 확인
  • 임무 우선순위 관리
  • 중복 임무 방지
  • 원격 제어 권한 관리
  • 비상정지 상태 관리
  • 노드 상태 확인
  • 오류 복구 절차 실행

모든 주요 임무는 상태 관리 노드의 승인을 받은 후 실행한다.

6.9 순찰 관리 노드

순찰 관리 노드는 지정된 순찰 지점과 순찰 순서를 관리한다.

주요 기능은 다음과 같다.

  • 순찰 경로 불러오기
  • 순찰 시작과 종료
  • 순찰 지점 순차 이동
  • 반복 순찰
  • 지점별 대기
  • 카메라 촬영 요청
  • 이상 감지 노드 활성화
  • 이동 실패 지점 기록
  • 순찰 완료 결과 전달

6.10 이상 감지 노드

이상 감지 노드는 야간 순찰 중 발생할 수 있는 비정상 상황을 감지한다.

4주 프로젝트에서 구현 가능한 이상 상황은 다음과 같다.

  • 야간 사람 감지
  • 금지 구역 움직임 감지
  • 특정 위치 장시간 점유
  • 통로 장애물 발생
  • 연기 또는 불꽃 의심 영상
  • 비정상적으로 가까운 장애물
  • 로봇 이동 불가 상태

화재 감지는 실제 화재 확정 기능이 아니라 화재 의심 이벤트를 생성하는 수준으로 제한한다. 최종 판단은 관리자에게 요청한다.

6.11 사진 및 영상 저장 노드

사진 및 영상 저장 노드는 이상 상황과 주요 임무 수행 시점의 증거 자료를 저장한다.

저장 항목은 다음과 같다.

  • 사진 파일
  • 짧은 영상 파일
  • 촬영 시간
  • 로봇 위치
  • 임무 식별번호
  • 이벤트 종류
  • 감지 신뢰도
  • 관리자 판단 결과

파일명은 시간과 이벤트 종류를 포함하도록 구성한다.

예시는 다음과 같다.

2026-07-18_221530_person_detected_patrol_point_03.jpg

6.12 관리자 요청 노드

관리자 요청 노드는 자동으로 판단하기 어려운 상황에서 관리자에게 확인을 요청한다.

관리자에게 제공하는 정보는 다음과 같다.

  • 이벤트 종류
  • 발생 시간
  • 로봇 위치
  • 촬영 사진
  • 짧은 영상
  • 감지 신뢰도
  • 현재 로봇 상태
  • 선택 가능한 대응 명령

관리자가 선택할 수 있는 명령은 다음과 같다.

  • 정상으로 처리
  • 다시 확인
  • 경고 방송 실행
  • 해당 위치에서 대기
  • 순찰 계속
  • 원격 제어 시작
  • 홈 위치 복귀
  • 비상정지

6.13 원격 모니터링 및 제어 노드

원격 모니터링 및 제어 노드는 관리자 컴퓨터와 로봇을 연결한다.

모니터링 항목은 다음과 같다.

  • 실시간 카메라 영상
  • 현재 지도
  • 로봇 위치
  • 배터리 상태
  • 현재 운용 상태
  • 현재 임무
  • 최근 이벤트
  • 통신 상태
  • 오류 상태

원격 제어 기능은 다음과 같다.

  • 전진
  • 후진
  • 좌회전
  • 우회전
  • 정지
  • 원격 제어 종료
  • 자율주행 복귀

원격 제어가 시작되면 자율주행 속도 명령을 차단하고 관리자 속도 명령만 허용한다.

6.14 방문자 서비스 노드

방문자 서비스 노드는 사무실을 방문한 사람에게 안내 기능을 제공한다.

주요 기능은 다음과 같다.

  • 방문 목적 선택
  • 방문 대상자 선택
  • 방문자 이름 입력
  • 방문 메모 입력
  • 대기 안내
  • 목적지 안내
  • 담당자 호출
  • 방문 완료 처리

개인정보를 저장할 경우 저장 기간, 접근 권한과 삭제 정책을 별도로 정의해야 한다.

6.15 보고서 생성 노드

보고서 생성 노드는 순찰과 임무 수행 결과를 요약한다.

보고서 항목은 다음과 같다.

  • 보고서 생성 시간
  • 순찰 시작 시간
  • 순찰 종료 시간
  • 방문한 순찰 지점
  • 이동 실패 지점
  • 감지된 사람 수
  • 이상 이벤트 수
  • 관리자 확인 요청 수
  • 저장된 사진과 영상 수
  • 배터리 변화
  • 통신 단절 여부
  • 비상정지 발생 여부
  • 주요 오류
  • 최종 결과

보고서는 JSON, CSV 또는 HTML 형식으로 생성할 수 있다.

6.16 안전 관리 노드

안전 관리 노드는 일반 임무 노드와 독립적으로 로봇의 안전 상태를 감시한다.

주요 감시 항목은 다음과 같다.

  • 비상정지 버튼
  • 전방 최소 장애물 거리
  • 원격 제어 통신 상태
  • 구동 드라이버 상태
  • 모터 오류
  • 배터리 위험 수준
  • 상태 관리 노드 응답 여부
  • 속도 명령 지속 시간
  • 센서 데이터 수신 여부

위험 상황이 감지되면 다른 임무보다 높은 우선순위로 정지 명령을 발행한다.

7. 기능 아키텍처

사무실 서비스 로봇의 기능 아키텍처는 다음과 같이 구성한다.

사무실 서비스 로봇
├── 이동 및 위치 추정 시스템
│   ├── 터틀봇3 구동 제어
│   ├── 오도메트리
│   ├── 지도 작성
│   ├── 위치 추정
│   ├── 경로 계획
│   └── 장애물 회피
├── 입구 감시 시스템
│   ├── 카메라 영상 입력
│   ├── 사람 감지
│   ├── 인원 수 계산
│   └── 방문자 이벤트 생성
├── 인사 및 공지 안내 시스템
│   ├── 인사 문구 출력
│   ├── 공지사항 출력
│   ├── 음성 안내
│   └── 화면 안내
├── 임무 및 상태 관리 시스템
│   ├── 전체 상태 관리
│   ├── 임무 우선순위 관리
│   ├── 상태 전환
│   └── 오류 복구
├── 야간 순찰 시스템
│   ├── 순찰 경로 관리
│   ├── 순찰 지점 이동
│   ├── 반복 순찰
│   └── 순찰 결과 저장
├── 이상 징후 감지 시스템
│   ├── 야간 사람 감지
│   ├── 움직임 감지
│   ├── 화재 의심 감지
│   ├── 장애물 감지
│   └── 이동 불가 감지
├── 사진·영상 증거 저장 시스템
│   ├── 사진 촬영
│   ├── 영상 녹화
│   ├── 이벤트 정보 저장
│   └── 파일 관리
├── 관리자 판단 요청 시스템
│   ├── 이벤트 알림
│   ├── 사진 전송
│   ├── 영상 전송
│   └── 관리자 응답 처리
├── 원격 모니터링·제어 시스템
│   ├── 실시간 영상
│   ├── 로봇 상태 표시
│   ├── 지도와 위치 표시
│   └── 원격 속도 제어
├── 심부름 및 방문자 안내 시스템
│   ├── 호출 접수
│   ├── 목적지 이동
│   ├── 방문자 안내
│   └── 임무 완료 처리
├── 방문자 메모 시스템
│   ├── 방문자 정보 입력
│   ├── 방문 목적 입력
│   ├── 담당자 선택
│   └── 방문 기록 저장
├── 로그 및 보고서 시스템
│   ├── 상태 로그
│   ├── 임무 로그
│   ├── 오류 로그
│   ├── 순찰 기록
│   └── 보고서 생성
└── 안전 관리 시스템
    ├── 비상정지
    ├── 충돌 방지
    ├── 통신 단절 감시
    ├── 배터리 감시
    └── 안전정지

8. ROS 2 노드 구성

노드명주요 역할
robot_state_manager전체 운용 모드, 임무 우선순위와 상태 전환 관리
entrance_monitor입구 사람 감지, 인원 수 계산과 방문자 이벤트 생성
greeting_manager인사, 공지사항, 격려 문구와 경고 안내 출력
navigation_manager이름 기반 목적지를 좌표로 변환하고 Nav2 이동 관리
patrol_manager순찰 지점, 순찰 순서, 반복 순찰과 순찰 결과 관리
anomaly_monitor침입, 움직임, 화재 의심과 이동 불가 이벤트 생성
evidence_recorder이벤트 발생 시 사진과 영상 저장
admin_request_manager관리자 확인 요청 전송과 관리자 응답 처리
remote_control_bridge원격 영상, 상태 정보와 원격 속도 명령 연결
task_dispatcher호출, 심부름과 방문자 안내 임무 접수 및 분배
visitor_service방문자 안내, 담당자 선택과 방문 메모 처리
report_generator야간 순찰과 임무 수행 결과 요약
battery_monitor배터리 전압, 잔량과 충전 필요 상태 감시
safety_manager비상정지, 통신 단절, 장애물과 안전정지 관리
camera_driverRGB 카메라 영상 발행
person_detector카메라 영상 기반 사람 감지
audio_manager음성 파일, 안내 방송과 경고음 출력
display_manager태블릿 또는 디스플레이 화면 관리
system_monitor주요 ROS 2 노드의 실행 상태와 응답 여부 확인

9. 주요 ROS 2 인터페이스

9.1 주요 토픽

토픽명메시지 또는 데이터설명
/cmd_vel선속도, 각속도터틀봇3 이동 명령
/odom오도메트리엔코더 기반 로봇 이동 정보
/scanLaserScan2D LiDAR 거리 데이터
/camera/image_rawImageRGB 카메라 원본 영상
/camera/image_compressedCompressedImage원격 전송용 압축 영상
/person_detection사용자 정의 메시지사람 감지 결과
/robot_state문자열 또는 사용자 정의 메시지현재 로봇 운용 상태
/battery_stateBatteryState배터리 상태
/safety_event사용자 정의 메시지안전 관련 이벤트
/anomaly_event사용자 정의 메시지이상 징후 감지 이벤트
/mission_status사용자 정의 메시지현재 임무 진행 상태
/patrol_status사용자 정의 메시지순찰 진행 상태
/admin_response사용자 정의 메시지관리자 판단 결과
/emergency_stopBool비상정지 상태
/diagnostics진단 정보센서와 노드 상태

9.2 주요 서비스

서비스명기능
/start_patrol야간 순찰 시작
/stop_patrol순찰 중지
/start_greeting인사와 안내 실행
/save_evidence사진 또는 영상 저장
/request_admin_decision관리자 판단 요청
/set_robot_state로봇 상태 변경 요청
/cancel_current_task현재 임무 취소
/return_home홈 위치 복귀
/clear_emergency비상정지 상태 복구
/generate_report순찰 또는 임무 보고서 생성

9.3 주요 액션

액션명기능
/navigate_to_pose지정 좌표까지 이동
/navigate_to_named_location이름 기반 목적지까지 이동
/execute_patrol여러 순찰 지점을 순차 이동
/guide_visitor방문자를 지정 장소까지 안내
/execute_errand지정된 심부름 임무 수행
/return_to_home대기 또는 충전 위치로 복귀

10. 좌표계 구성

터틀봇3 버거의 기본 좌표계는 다음과 같이 구성한다.

map
└── odom
    └── base_footprint
        └── base_link
            ├── base_scan
            ├── camera_link
            ├── imu_link
            └── proximity_sensor_link

각 좌표계의 역할은 다음과 같다.

  • map: 저장된 실내 지도를 기준으로 하는 전역 좌표계
  • odom: 오도메트리 기준 좌표계
  • base_footprint: 바닥면 기준 로봇 중심 좌표계
  • base_link: 로봇 본체 기준 좌표계
  • base_scan: LiDAR 센서 좌표계
  • camera_link: RGB 카메라 좌표계
  • imu_link: 관성 센서 좌표계
  • proximity_sensor_link: 추가 거리 센서 좌표계

카메라와 추가 센서를 장착한 경우 실제 설치 위치를 측정하여 정적 TF를 설정한다.

11. 상태 머신 설계

로봇의 전체 운용은 robot_state_manager가 관리하는 상태 머신으로 구성한다.

11.1 상태 정의

상태설명
STARTUP시스템 시작, 장치와 노드 초기화
STANDBY홈 위치에서 임무 대기
GREETING사람에게 인사와 공지사항 안내
GUIDING방문자를 지정 목적지까지 안내
ERRAND관리자 또는 직원의 심부름 임무 수행
PATROL지정된 순찰 경로를 반복 이동
ANOMALY_CHECK감지된 이상 상황을 재확인
WAIT_ADMIN관리자 판단 결과 대기
REMOTE_CONTROL관리자가 원격으로 로봇을 제어
RETURN_HOME대기 또는 충전 위치로 복귀
CHARGING충전 대기 또는 충전 중
EMERGENCY_STOP비상정지 상태
ERROR복구가 필요한 시스템 오류 상태

11.2 기본 상태 전환

STARTUP
  ↓
STANDBY
  ├── 사람 감지 ──→ GREETING ──→ STANDBY
  ├── 심부름 호출 ──→ ERRAND ──→ STANDBY
  ├── 방문자 안내 요청 ──→ GUIDING ──→ STANDBY
  ├── 야간 순찰 시작 ──→ PATROL
  ├── 배터리 부족 ──→ RETURN_HOME ──→ CHARGING
  └── 시스템 오류 ──→ ERROR

11.3 순찰 상태 전환

PATROL
  ├── 이상 없음 ──→ 다음 순찰 지점
  ├── 순찰 완료 ──→ RETURN_HOME
  ├── 이상 감지 ──→ ANOMALY_CHECK
  ├── 배터리 부족 ──→ RETURN_HOME
  ├── 이동 실패 ──→ ANOMALY_CHECK
  └── 비상 상황 ──→ EMERGENCY_STOP

11.4 이상 상황 상태 전환

ANOMALY_CHECK
  ├── 오검출 ──→ PATROL
  ├── 이상 확정 ──→ 증거 저장 ──→ WAIT_ADMIN
  ├── 재촬영 필요 ──→ ANOMALY_CHECK
  └── 위험 상황 ──→ EMERGENCY_STOP

11.5 관리자 대기 상태 전환

WAIT_ADMIN
  ├── 정상 처리 ──→ PATROL
  ├── 재확인 요청 ──→ ANOMALY_CHECK
  ├── 경고 방송 ──→ 경고 실행 ──→ PATROL
  ├── 현장 대기 ──→ WAIT_ADMIN
  ├── 원격 제어 요청 ──→ REMOTE_CONTROL
  ├── 홈 복귀 요청 ──→ RETURN_HOME
  └── 비상정지 요청 ──→ EMERGENCY_STOP

11.6 원격 제어 상태 전환

REMOTE_CONTROL
  ├── 원격 제어 종료 ──→ STANDBY 또는 PATROL
  ├── 홈 복귀 요청 ──→ RETURN_HOME
  ├── 통신 단절 ──→ 안전정지
  └── 비상 상황 ──→ EMERGENCY_STOP

11.7 상태 우선순위

상태 우선순위는 다음과 같이 설정한다.

  1. EMERGENCY_STOP
  2. ERROR
  3. REMOTE_CONTROL
  4. ANOMALY_CHECK
  5. WAIT_ADMIN
  6. RETURN_HOME
  7. GUIDING
  8. ERRAND
  9. PATROL
  10. GREETING
  11. STANDBY

상위 우선순위 상태가 실행 중인 경우 하위 우선순위 임무는 시작하지 않는다.

12. 주요 동작 시나리오

12.1 입구 방문자 인사

  1. 로봇은 입구 근처의 대기 위치에서 STANDBY 상태를 유지한다.
  2. entrance_monitor가 카메라 영상을 분석한다.
  3. 사람이 일정 시간 이상 감지되면 방문자 이벤트를 생성한다.
  4. robot_state_manager가 현재 상태를 확인한다.
  5. 다른 임무가 없으면 상태를 GREETING으로 변경한다.
  6. greeting_manager가 인사 음성을 출력한다.
  7. display_manager가 방문 목적 선택 화면을 표시한다.
  8. 안내가 종료되면 상태를 STANDBY로 변경한다.

12.2 방문자 목적지 안내

  1. 방문자가 태블릿에서 방문 대상자를 선택한다.
  2. visitor_service가 대상자의 목적지 이름을 확인한다.
  3. task_dispatcher가 안내 임무를 생성한다.
  4. robot_state_manager가 상태를 GUIDING으로 변경한다.
  5. navigation_manager가 목적지 이름을 지도 좌표로 변환한다.
  6. Nav2를 사용하여 목적지까지 이동한다.
  7. 이동 중 스피커와 화면으로 안내 상태를 출력한다.
  8. 목적지에 도착하면 도착 안내를 실행한다.
  9. 방문자 메모가 있으면 저장한다.
  10. 로봇은 홈 위치로 복귀하거나 STANDBY 상태로 전환한다.

12.3 심부름 임무

  1. 관리자 또는 직원이 심부름 임무를 요청한다.
  2. task_dispatcher가 출발지와 목적지를 확인한다.
  3. robot_state_manager가 현재 상태와 임무 우선순위를 확인한다.
  4. 실행 가능한 경우 상태를 ERRAND로 변경한다.
  5. 로봇이 지정된 위치로 이동한다.
  6. 물품 전달 또는 수령 확인을 수행한다.
  7. 임무 결과를 기록한다.
  8. 로봇은 홈 위치로 복귀한다.
  9. 상태를 STANDBY로 변경한다.

터틀봇3 버거에는 기본 물품 적재 장치가 없으므로, 심부름 기능을 구현은 행동만 진행하는 것으로 대체할 수 있다.

12.4 야간 순찰

  1. 관리자가 순찰을 시작하거나 예약 시간이 된다.
  2. robot_state_manager가 상태를 PATROL로 변경한다.
  3. patrol_manager가 순찰 지점 목록을 불러온다.
  4. navigation_manager가 첫 번째 순찰 지점으로 이동한다.
  5. 목적지 도착 후 카메라 영상을 확인한다.
  6. 이상이 없으면 다음 순찰 지점으로 이동한다.
  7. 이상이 감지되면 상태를 ANOMALY_CHECK로 변경한다.
  8. 모든 순찰 지점을 방문하면 순찰 결과를 저장한다.
  9. report_generator가 순찰 보고서를 생성한다.
  10. 로봇은 홈 위치로 복귀한다.

12.5 이상 상황 확인

  1. anomaly_monitor가 이상 의심 이벤트를 생성한다.
  2. 로봇은 현재 위치에서 정지한다.
  3. evidence_recorder가 사진을 저장한다.
  4. 필요한 경우 짧은 영상을 추가로 저장한다.
  5. 동일 위치에서 다시 사람 또는 움직임을 확인한다.
  6. 오검출로 판단되면 순찰을 계속한다.
  7. 이상 가능성이 높으면 관리자에게 판단을 요청한다.
  8. 상태를 WAIT_ADMIN으로 변경한다.
  9. 관리자 응답에 따라 순찰, 재확인, 경고 또는 원격 제어를 수행한다.

12.6 배터리 부족

  1. battery_monitor가 배터리 잔량을 주기적으로 확인한다.
  2. 배터리가 주의 수준이면 관리자 화면에 경고를 표시한다.
  3. 배터리가 충전 필요 수준이면 새로운 임무를 받지 않는다.
  4. 현재 임무를 안전하게 종료한다.
  5. 상태를 RETURN_HOME으로 변경한다.
  6. 홈 또는 충전 위치로 이동한다.
  7. 상태를 CHARGING으로 변경한다.
  8. 배터리가 위험 수준이면 이동을 중단하고 관리자에게 알린다.

12.7 비상정지

  1. 비상정지 버튼, 위험거리 장애물 또는 중대한 구동 오류가 감지된다.
  2. safety_manager가 즉시 정지 명령을 발행한다.
  3. 현재 자율주행 목표를 취소한다.
  4. 상태를 EMERGENCY_STOP으로 변경한다.
  5. 모든 이동 임무 요청을 거부한다.
  6. 관리자 화면에 원인과 발생 시간을 표시한다.
  7. 비상 원인이 제거된 후 관리자가 복구 명령을 실행한다.
  8. 안전 상태를 다시 검사한다.
  9. 이상이 없으면 STANDBY 또는 RETURN_HOME 상태로 전환한다.

13. 데이터 흐름

13.1 자율주행 데이터 흐름

휠 엔코더 ──→ 터틀봇3 드라이버 ──→ 오도메트리
2D LiDAR ──→ /scan ──→ 위치 추정 및 Nav2
저장 지도 ──→ 위치 추정 ──→ 현재 로봇 위치
목적지 좌표 ──→ Nav2 ──→ /cmd_vel
/cmd_vel ──→ OpenCR ──→ 다이나믹셀 모터

13.2 사람 감지 데이터 흐름

RGB 카메라
  ↓
카메라 드라이버
  ↓
사람 감지 노드
  ↓
입구 감시 노드
  ↓
방문자 이벤트
  ↓
상태 관리 노드
  ↓
인사 또는 방문자 안내

13.3 이상 상황 데이터 흐름

카메라 영상 + LiDAR + 로봇 상태
  ↓
이상 감지 노드
  ↓
이상 이벤트
  ├──→ 상태 관리 노드
  ├──→ 사진·영상 저장 노드
  └──→ 관리자 요청 노드
              ↓
        관리자 응답
              ↓
        상태 관리 노드

13.4 안전 데이터 흐름

비상정지 버튼
근접 센서
LiDAR 최소 거리
배터리 상태
통신 상태
구동 오류
  ↓
safety_manager
  ↓
정지 명령
  ├──→ /cmd_vel
  ├──→ Nav2 목표 취소
  ├──→ robot_state_manager
  └──→ 관리자 알림

14. 주요 설계 결정

14.1 기능별 ROS 2 노드 분리

안내, 순찰, 이상 감지, 증거 저장, 원격 제어와 안전 기능을 별도의 ROS 2 노드로 분리한다.

이 구조의 장점은 다음과 같다.

  • 팀원별 병렬 개발이 가능하다.
  • 기능 단위의 시험이 쉽다.
  • 한 노드의 오류가 전체 시스템에 미치는 영향을 줄일 수 있다.
  • 기능 변경 시 수정 범위를 줄일 수 있다.
  • 필요한 기능만 선택적으로 실행할 수 있다.
  • 향후 센서와 기능을 추가하기 쉽다.

단, 지나치게 많은 노드로 분리하면 통신 구조가 복잡해질 수 있으므로 4주 프로젝트에서는 명확하게 독립된 기능만 별도 노드로 구성한다.

14.2 상태 머신 중심 임무 관리

모든 주요 임무 전환은 robot_state_manager가 관리한다.

상태 머신을 사용하면 다음과 같은 충돌을 방지할 수 있다.

  • 인사 중 순찰 시작
  • 방문자 안내 중 심부름 임무 시작
  • 자율주행 중 원격 제어 시작
  • 비상정지 중 이동 명령 실행
  • 관리자 판단 대기 중 다음 순찰 시작
  • 충전 복귀 중 새로운 안내 임무 시작
  • 원격 제어 중 Nav2 속도 명령 실행

각 기능 노드는 상태 전환을 직접 수행하지 않고 상태 변경을 요청한다. 최종 상태 전환 여부는 robot_state_manager가 결정한다.

14.3 안전 기능 독립

safety_manager는 다른 임무 노드와 독립적으로 동작한다.

다음 이벤트가 발생하면 즉시 정지 명령을 발생시킨다.

  • 비상정지 버튼 입력
  • 원격 제어 통신 단절
  • 위험거리 이내 장애물
  • 구동 드라이버 오류
  • 모터 오류
  • 배터리 위험 수준
  • 속도 명령 이상
  • 주요 센서 데이터 단절
  • 상태 관리 노드 응답 중단

안전정지 명령은 일반 이동 명령보다 높은 우선순위를 가진다.

14.4 Nav2 기반 이동 기능 통합

안내, 심부름, 순찰과 홈 복귀 기능은 각각 별도의 이동 알고리즘을 구현하지 않는다.

모든 자율주행 기능은 Nav2를 공통으로 사용한다.

각 임무 노드는 목적지와 이동 조건만 결정하고 실제 경로 생성과 장애물 회피는 Nav2에 위임한다.

이 구조를 사용하면 다음 이점이 있다.

  • 이동 기능 중복 개발을 방지한다.
  • 검증된 경로 계획 기능을 사용할 수 있다.
  • 장애물 회피 기능을 공통으로 적용할 수 있다.
  • 목적지 이동 실패 처리를 일관되게 구성할 수 있다.

14.5 이름 기반 목적지 관리

서비스 로봇 임무에서는 좌표값보다 장소 이름을 사용하는 것이 편리하다.

목적지는 설정 파일에 다음과 같이 저장한다.

locations:
  entrance:
    x: 1.20
    y: 0.50
    yaw: 1.57

  meeting_room:
    x: 4.30
    y: 2.10
    yaw: 0.00

  manager_desk:
    x: 6.00
    y: 1.80
    yaw: 3.14

  home:
    x: 0.50
    y: 0.50
    yaw: 0.00

운영자는 좌표를 직접 입력하지 않고 meeting_room, manager_desk, home과 같은 이름으로 목적지를 선택한다.

14.6 증거 데이터와 일반 로그 분리

사진과 영상은 파일 저장소에 저장하고, 이벤트 정보와 파일 경로는 로그 또는 데이터베이스에 저장한다.

저장 구조 예시는 다음과 같다.

robot_data/
├── logs/
│   ├── system/
│   ├── mission/
│   ├── patrol/
│   └── safety/
├── evidence/
│   ├── images/
│   └── videos/
├── reports/
├── maps/
└── configuration/

영상 데이터를 일반 로그와 분리하면 저장 공간 관리와 파일 검색이 쉬워진다.

14.7 자동 판단과 관리자 판단 분리

사람 감지와 화재 의심 감지 결과만으로 실제 침입 또는 화재를 확정하지 않는다.

소프트웨어는 이상 가능성을 감지하고 증거를 제공하며, 최종 판단은 관리자에게 요청한다.

이 구조는 오검출로 인한 잘못된 경고와 불필요한 대응을 줄일 수 있다.

15. 속도 명령 우선순위 설계

여러 노드가 동시에 속도 명령을 발생시키지 않도록 속도 명령 우선순위를 관리한다.

권장 우선순위는 다음과 같다.

  1. 비상정지 명령
  2. 안전정지 명령
  3. 원격 제어 명령
  4. 자율주행 명령
  5. 시험용 수동 조작 명령

최종 /cmd_vel 출력은 하나의 속도 명령 선택 노드 또는 속도 명령 다중화 기능을 통해 생성한다.

비상정지 또는 안전정지 상태에서는 다른 모든 속도 명령을 무시하고 0 속도를 출력한다.

16. 오류 처리 설계

16.1 이동 실패

Nav2 이동이 실패하면 다음 순서로 처리한다.

  1. 현재 속도를 0으로 설정한다.
  2. 목적지 좌표가 유효한지 확인한다.
  3. 로봇 위치 추정 상태를 확인한다.
  4. 주변 장애물 상태를 확인한다.
  5. 경로를 다시 생성한다.
  6. 정해진 횟수만큼 이동을 재시도한다.
  7. 계속 실패하면 해당 임무를 중단한다.
  8. 오류 로그를 저장한다.
  9. 관리자에게 알린다.
  10. 가능하면 홈 위치로 복귀한다.

16.2 위치 추정 실패

위치 추정 신뢰도가 낮거나 위치가 크게 변하면 다음 동작을 수행한다.

  • 자율주행 정지
  • 현재 위치 재설정 요청
  • LiDAR와 오도메트리 상태 확인
  • 관리자 화면에 위치 추정 오류 표시
  • 원격 제어 모드 전환 허용
  • 초기 위치 재지정 후 자율주행 재개

16.3 카메라 오류

카메라 데이터가 일정 시간 이상 수신되지 않으면 다음 동작을 수행한다.

  • 사람 감지 기능 중지
  • 증거 촬영 기능 오류 표시
  • 관리자에게 카메라 오류 알림
  • 순찰을 계속할지 중지할지 정책에 따라 결정
  • 카메라 드라이버 재시작 시도

16.4 통신 단절

관리자 컴퓨터와 통신이 끊어진 경우 동작은 현재 상태에 따라 다르게 처리한다.

  • REMOTE_CONTROL: 즉시 정지
  • PATROL: 설정에 따라 순찰 중지 후 홈 복귀
  • GUIDING: 안전한 위치에서 정지
  • ERRAND: 안전한 위치에서 정지
  • STANDBY: 대기 유지
  • WAIT_ADMIN: 일정 시간 대기 후 홈 복귀

16.5 노드 비정상 종료

system_monitor는 주요 노드의 응답 상태를 주기적으로 확인한다.

필수 노드가 종료되면 다음과 같이 처리한다.

  • 구동 노드 종료: 즉시 안전정지
  • 상태 관리 노드 종료: 즉시 안전정지
  • 안전 관리 노드 종료: 임무 중지
  • 위치 추정 노드 종료: 자율주행 중지
  • 카메라 노드 종료: 영상 기능 중지 및 관리자 알림
  • 보고서 노드 종료: 임무는 유지하되 오류 로그 기록

17. 설정 파일 설계

하드코딩을 줄이기 위해 다음 정보를 YAML 또는 JSON 설정 파일로 관리한다.

  • 장소 이름과 좌표
  • 순찰 지점 목록
  • 순찰 반복 횟수
  • 지점별 대기 시간
  • 로봇 최대 선속도
  • 로봇 최대 각속도
  • 장애물 안전거리
  • 사람 감지 신뢰도
  • 사람 감지 유지 시간
  • 배터리 경고 수준
  • 배터리 복귀 수준
  • 배터리 위험 수준
  • 관리자 서버 주소
  • 사진과 영상 저장 경로
  • 보고서 저장 형식
  • 상태 전환 제한시간

설정 파일을 사용하면 코드를 수정하지 않고도 장소와 운용 조건을 변경할 수 있다.

18. 로그 설계

모든 주요 노드는 공통된 로그 형식을 사용한다.

권장 로그 항목은 다음과 같다.

  • 시간
  • 노드 이름
  • 로그 수준
  • 로봇 상태
  • 임무 식별번호
  • 이벤트 종류
  • 로봇 위치
  • 메시지
  • 오류 코드

로그 수준은 다음과 같이 구분한다.

  • DEBUG: 개발과 시험을 위한 상세 정보
  • INFO: 일반적인 상태와 임무 진행 정보
  • WARN: 즉시 중단할 필요는 없는 주의 상황
  • ERROR: 기능 수행이 실패한 상황
  • FATAL: 전체 시스템 안전에 영향을 주는 심각한 상황

19. 보고서 설계

야간 순찰 보고서는 다음 형식으로 구성한다.

19.1 기본 정보

  • 순찰 식별번호
  • 순찰 날짜
  • 순찰 시작 시간
  • 순찰 종료 시간
  • 전체 순찰 시간
  • 로봇 시작 위치
  • 로봇 종료 위치

19.2 순찰 결과

  • 계획된 순찰 지점 수
  • 방문 완료 지점 수
  • 방문 실패 지점 수
  • 재시도 횟수
  • 총 이동 거리
  • 평균 배터리 사용량

19.3 이상 감지 결과

  • 사람 감지 횟수
  • 움직임 감지 횟수
  • 장애물 감지 횟수
  • 화재 의심 횟수
  • 관리자 확인 요청 횟수
  • 관리자 정상 처리 횟수
  • 관리자 경고 처리 횟수
  • 원격 제어 전환 횟수

19.4 안전 결과

  • 비상정지 발생 여부
  • 통신 단절 발생 여부
  • 충돌 위험 감지 횟수
  • 구동 오류 발생 여부
  • 위치 추정 실패 여부
  • 배터리 위험 발생 여부

19.5 증거 자료

  • 저장된 사진 목록
  • 저장된 영상 목록
  • 이벤트별 파일 경로
  • 관리자 판단 결과

20. 보안 및 개인정보 보호

카메라와 방문자 정보를 사용하는 시스템이므로 다음 기준을 적용한다.

  • 관리자만 실시간 영상에 접근할 수 있도록 한다.
  • 원격 제어 기능은 인증된 사용자만 사용할 수 있도록 한다.
  • 방문자 메모는 필요한 정보만 저장한다.
  • 사진과 영상의 저장 기간을 정한다.
  • 오래된 영상은 자동으로 삭제한다.
  • 관리자 요청과 응답 기록을 저장한다.
  • 외부 네트워크에서 로봇에 직접 접근하지 못하도록 제한한다.
  • 기본 계정과 기본 비밀번호를 사용하지 않는다.
  • 원격 제어 명령과 일반 모니터링 권한을 분리한다.

21. 배포 구성

로봇 내부 실행 소프트웨어는 다음과 같이 그룹화한다.

21.1 기본 구동 그룹

  • 터틀봇3 구동 드라이버
  • OpenCR 통신
  • LiDAR 드라이버
  • 카메라 드라이버
  • TF
  • 오도메트리

21.2 자율주행 그룹

  • 지도 서버
  • 위치 추정
  • Nav2
  • navigation_manager
  • patrol_manager

21.3 서비스 기능 그룹

  • entrance_monitor
  • person_detector
  • greeting_manager
  • task_dispatcher
  • visitor_service
  • audio_manager
  • display_manager

21.4 관제 기능 그룹

  • admin_request_manager
  • remote_control_bridge
  • evidence_recorder
  • report_generator

21.5 시스템 관리 그룹

  • robot_state_manager
  • battery_monitor
  • safety_manager
  • system_monitor

각 그룹은 별도의 ROS 2 launch 파일로 구성하고, 전체 시스템 launch 파일에서 필요한 그룹을 포함하도록 한다.

22. 패키지 구성 예시

office_service_robot_ws/
└── src/
    ├── office_robot_bringup/
    │   ├── launch/
    │   ├── config/
    │   └── maps/
    ├── office_robot_interfaces/
    │   ├── msg/
    │   ├── srv/
    │   └── action/
    ├── office_robot_state_manager/
    ├── office_robot_navigation/
    ├── office_robot_patrol/
    ├── office_robot_perception/
    ├── office_robot_visitor_service/
    ├── office_robot_remote_control/
    ├── office_robot_evidence/
    ├── office_robot_report/
    ├── office_robot_safety/
    └── office_robot_ui/

패키지별 역할은 다음과 같다.

패키지명역할
office_robot_bringup전체 launch 파일, 설정 파일과 지도 관리
office_robot_interfaces사용자 정의 메시지, 서비스와 액션 정의
office_robot_state_manager전체 상태 머신과 임무 우선순위 관리
office_robot_navigation이름 기반 목적지와 Nav2 연동
office_robot_patrol순찰 경로와 반복 순찰 관리
office_robot_perception사람과 이상 징후 감지
office_robot_visitor_service방문자 안내와 방문 메모
office_robot_remote_control원격 영상과 원격 속도 제어
office_robot_evidence사진과 영상 저장
office_robot_report로그 요약과 보고서 생성
office_robot_safety비상정지, 통신 단절과 안전정지
office_robot_ui관리자 및 방문자 화면

작성 파일 견본 :

Leave a Comment