본문 바로가기

ROS2

[두산로보틱스] AMR 관제 시스템 구축 프로젝트

012345678910111213

 

 

 

 

 

AMR 기반 방범 시스템 개발

프로젝트 개요: 보안 카메라와 자율주행 AMR을 활용한 무인 방범 시스템 구축. 실시간 모니터링과 객체 추적 기능을 통합하여 보안 효율성을 극대화.

 

핵심 기능:

  • 데이터베이스 관리: SQLite3를 활용하여 객체 탐지 기록, 교도소 상태 정보 저장 및 통계 생성. 웹 인터페이스를 통해 실시간으로 데이터를 확인하고 분석 가능.
  • 교도소 상태 표시: Flask 웹 페이지에서 교도소 비상 상황 및 정상 상태를 직관적으로 표시. 사용자 요청에 따라 상태 변경과 명령 센터 통신 지원.
  • 객체 인식 및 추적: YOLOv8 기반 객체 탐지와 추적 기능을 통해 의심스러운 객체를 실시간으로 감지하고 추적.

시스템 아키텍처:

  • ROS2: AMR의 실시간 데이터 처리 및 자율주행 지원.
  • Flask: 사용자 인터페이스 제공, 교도소 상태 표시 및 데이터 관리.
  • SQLite: 탐지 기록 및 상태 데이터 저장.
  • YOLOv8: 객체 탐지 및 경로 추적 모델.

문제 해결:

  1. 데이터 통합: 객체 탐지 데이터를 SQLite로 통합 저장하여 상태 추적과 분석의 용이성 확보.
  2. 교도소 상태 표시: 비상 상태 알림과 상태 변경 기능을 Flask 기반 웹 인터페이스에 통합.
  3. 객체 추적 최적화: YOLOv8의 정확도를 높이기 위해 데이터셋 보강 및 전처리 시행.

기술 스택:

  • Python, C++
  • ROS2 Humble, Flask, SQLite, OpenCV
  • 터틀봇3 버거, YOLOv8

트래킹 로직 코드: TurtleBot의 객체 추적 기능은 YOLO 모델과 연계하여 실시간으로 감지된 객체를 추적합니다. 주요 동작은 다음과 같습니다:

  • 목표 상태 수신: 명령 센터에서 목표 이동 상태(Goal) 또는 추적 상태(Tracking) 신호를 Bool 메시지로 수신.
  • 객체 감지: YOLOv8 모델을 사용하여 프레임 내 객체를 탐지하고, 신뢰도가 높은 객체의 위치 정보를 추출.
  • 로봇 제어: 감지된 객체의 위치를 기반으로 선속도와 각속도를 계산하여 TurtleBot의 이동 경로를 실시간으로 조정.
  • 상태 피드백: 객체 감지 상태와 관련된 정보를 퍼블리싱하여 시스템의 다른 노드와 통신.
# 예시: 로봇 제어
    def control_turtlebot(self, x1, y1, x2, y2, frame_shape):
        twist = Twist()
        if x1 is not None:
            image_center_x = frame_shape[1] / 2
            object_center_x = (x1 + x2) / 2
            error_x = object_center_x - image_center_x
            angular_vel = -0.002 * error_x
            twist.angular.z = angular_vel
        else:
            twist.angular.z = 0.5  # 객체 미감지 시 회전
        self.cmd_vel_publisher.publish(twist)

배운 점:

  • 협업: 시스템 아키텍처 설계와 개발 과정을 통해 팀원들과 명확한 역할 분담과 소통의 중요성을 배움.
  • 문제 해결: 데이터 지연 및 객체 추적 정확도 문제를 해결하며 기술적 한계를 극복하는 방법을 익힘.
  • 기술 심화: Flask와 ROS2의 연계 및 YOLO 모델 최적화를 통해 실무적인 개발 능력을 향상시킴.
  • 프로젝트 관리: 데이터 흐름과 시스템 상태를 통합적으로 관리하며 효과적인 프로젝트 진행 방법을 학습.
  • 프로젝트 개요: 보안 카메라와 자율주행 AMR을 활용한 무인 방범 시스템 구축. 실시간 모니터링과 객체 추적 기능을 통합하여 보안 효율성을 극대화.