Skip to content

ydy87/ssafy-wab-pjt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

SEBAR 프로젝트 명세서

1. 프로젝트 개요

프로젝트명: SEBAR - 로봇 균형 유지 및 원격 제어 시스템
기한: 2025년 3월 25일 (화)
기술 스택: Vue.js, Express.js, WebSocket, Raspberry Pi, Chart.js, ROS2

본 프로젝트는 로봇의 균형을 유지하고 원격으로 제어할 수 있는 대시보드를 개발하는 것을 목표로 합니다.
사용자는 웹 인터페이스를 통해 로봇의 동작 모드를 변경하고, 센서 데이터를 시각화하여 실시간으로 로봇의 상태를 모니터링할 수 있습니다.

2. 기대 효과

  • 로봇의 균형 유지 및 제어 알고리즘을 UI와 연계하여 시각적으로 확인 가능
  • 실시간 데이터 스트리밍을 통한 로봇 상태 모니터링 시스템 구현
  • 웹 기반 인터페이스를 통한 원격 제어 기능 제공
  • ROS2 기반의 로봇 시스템과 웹 UI 연동

3. 주요 기능

3.1 로봇 균형 유지 모드

  • 기능 설명: 로봇의 균형을 유지하는 모드 활성화
  • 기능 상세:
    • 사용자가 UI에서 Balancing Mode를 선택하면 로봇이 2륜으로 변환하며 균형을 유지하도록 동작
    • WebSocket을 통해 실시간으로 모드 변경 신호를 로봇에 전송

3.2 원격 주행 모드

  • 기능 설명: 사용자가 UI에서 로봇을 원격으로 조작
  • 기능 상세:
    • 사용자가 UI에서 Creeping Mode를 선택하면 로봇이 6륜으로 변환하며 안정적으로 주행하도록 동작
    • 실시간 WebSocket 통신을 이용하여 조작 명령 전달

3.3 실시간 센서 데이터 시각화

  • 기능 설명: 로봇의 센서 데이터를 실시간으로 UI에 표시
  • 기능 상세:
    • IMU 센서 데이터를 가져와 Roll, Pitch, Yaw 값을 Radar Chart로 시각화
    • 카메라 데이터를 가져와 목표와의 거리를 Line Chart로 시각화
    • WebSocket을 활용하여 실시간 데이터 스트리밍

3.4 시스템 로그 기록

  • 기능 설명: 로봇의 동작 로그를 UI에서 확인 가능
  • 기능 상세:
    • MySQL 기반 로그 데이터를 웹 UI에서 출력
    • Save Log 버튼을 통해 로그를 저장하고 조회 가능

4. 데이터 모델

4.1 로봇 상태 데이터 구조 (JSON)

{
  "mode": "balancing",
  "speed": 15,
  "stability": 20,
  "timestamp": "2025-03-20 07:40:17"
}

4.2 로그 데이터 테이블 (MySQL)

+----+-----------+-------+-----------+---------------------+
| id | mode      | speed | stability | timestamp           |
+----+-----------+-------+-----------+---------------------+
|  6 | Balancing |    22 |         2 | 2025-03-20 07:40:17 |
|  5 | Creeping  |    15 |        50 | 2025-03-20 06:54:28 |
|  4 | Balancing |    15 |        50 | 2025-03-20 06:54:22 |
|  3 | Balancing |    22 |        25 | 2025-03-20 06:47:41 |
|  2 | Creeping  |    28 |       100 | 2025-03-20 06:39:07 |
|  1 | Balancing |    22 |        75 | 2025-03-20 06:34:28 |
+----+-----------+-------+-----------+---------------------+

5. API 명세

5.1 로봇 상태 조회 API

  • Endpoint: GET /api/robot/status
  • Response:
{
  "mode": "balancing",
  "speed": 15,
  "stability": 20,
  "timestamp": "2025-03-20 07:40:17"
}

5.2 모드 변경 API

  • Endpoint: POST /api/robot/mode
  • Request:
{
  "mode": "creeping"
}
  • Response:
{
  "message": "Mode updated successfully",
  "status": "success"
}

6. 시스템 아키텍처

  • 프론트엔드: Vue.js 기반 대시보드 UI (로봇 상태 모니터링 및 제어 기능 포함)
  • 백엔드: Express.js 기반 API 서버 + WebSocket을 이용한 실시간 통신
  • 데이터베이스: MySQL을 활용한 실시간 로그 저장 및 조회 기능 제공
  • 하드웨어: Raspberry Pi (로봇 제어 및 센서 데이터 처리)
  • 통신 프로토콜:
    • Raspberry Pi ↔ 웹 서버: WebSocket 통신
    • 웹 서버 ↔ DB: REST API + MySQL
    • Raspberry Pi ↔ IMU 센서: I2C 통신
    • Raspberry Pi ↔ 로봇 구동부: PWM 및 GPIO 제어
    • ROS2 기반 로봇 시스템과 WebSocket 연동

7. 프로젝트 진행 과정

✅ 2025-03-19

  • start, stop 버튼 구현 → WebSocket 연결/해제 동작 확인
  • 좌측 패널 (모드 선택, 속도 조절) UI 및 기능 구현
  • Reset 버튼 추가 및 초기화 기능 구현
  • Save Log 기능 미완 (이후 구현 예정)

✅ 2025-03-20

  • Save Log 기능 구현 → MySQL 데이터 저장 및 조회
  • Show Data 기능 구현 → 가장 최근 데이터 UI에 출력
  • Radar Chart, Line Chart 등 데이터 시각화 개선
  • 프로젝트 UI 전체적인 디자인 및 CSS 최적화

✅ 2025-03-21

  • Raspberry Pi GUI 설정 변경 및 MPU6050 센서 연결
  • MPU6050 데이터를 오일러 각(Pitch, Roll, Yaw)으로 변환
  • Yaw 값 드리프트 문제 해결 → 일정 범위 이상 편차 발생 시 자동 보정
  • Distance(목표 거리) 난수 발생 로직 추가 → WebSocket 전송
  • 라즈베리파이에서 WebSocket을 통한 실시간 데이터 송신 적용

✅ 2025-03-21

  • nginx를 사용하여 프로젝트 배포

8. 결론 및 향후 개선 사항

✅ 현재까지 완료된 사항:

  • SEBAR 프로젝트의 핵심 UI 및 로봇 제어 인터페이스 개발 완료
  • WebSocket을 활용한 실시간 센서 데이터 스트리밍 구축
  • MySQL 기반의 로봇 상태 저장 및 조회 기능 구현
  • Vue.js 기반 대시보드 최적화 및 시각적 데이터 개선

🔍 향후 개선할 사항:

  • ROS2와의 연동 최적화 (현재 WebSocket을 활용한 UI 연동)
  • Yaw Drift 문제의 추가적인 보정 방법 연구
  • 실제 로봇 테스트 및 보정 알고리즘 추가

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published