프로젝트명: SEBAR - 로봇 균형 유지 및 원격 제어 시스템
기한: 2025년 3월 25일 (화)
기술 스택: Vue.js, Express.js, WebSocket, Raspberry Pi, Chart.js, ROS2
본 프로젝트는 로봇의 균형을 유지하고 원격으로 제어할 수 있는 대시보드를 개발하는 것을 목표로 합니다.
사용자는 웹 인터페이스를 통해 로봇의 동작 모드를 변경하고, 센서 데이터를 시각화하여 실시간으로 로봇의 상태를 모니터링할 수 있습니다.
- 로봇의 균형 유지 및 제어 알고리즘을 UI와 연계하여 시각적으로 확인 가능
- 실시간 데이터 스트리밍을 통한 로봇 상태 모니터링 시스템 구현
- 웹 기반 인터페이스를 통한 원격 제어 기능 제공
- ROS2 기반의 로봇 시스템과 웹 UI 연동
- 기능 설명: 로봇의 균형을 유지하는 모드 활성화
- 기능 상세:
- 사용자가 UI에서
Balancing Mode
를 선택하면 로봇이 2륜으로 변환하며 균형을 유지하도록 동작 - WebSocket을 통해 실시간으로 모드 변경 신호를 로봇에 전송
- 사용자가 UI에서
- 기능 설명: 사용자가 UI에서 로봇을 원격으로 조작
- 기능 상세:
- 사용자가 UI에서
Creeping Mode
를 선택하면 로봇이 6륜으로 변환하며 안정적으로 주행하도록 동작 - 실시간 WebSocket 통신을 이용하여 조작 명령 전달
- 사용자가 UI에서
- 기능 설명: 로봇의 센서 데이터를 실시간으로 UI에 표시
- 기능 상세:
- IMU 센서 데이터를 가져와 Roll, Pitch, Yaw 값을 Radar Chart로 시각화
- 카메라 데이터를 가져와 목표와의 거리를 Line Chart로 시각화
- WebSocket을 활용하여 실시간 데이터 스트리밍
- 기능 설명: 로봇의 동작 로그를 UI에서 확인 가능
- 기능 상세:
- MySQL 기반 로그 데이터를 웹 UI에서 출력
Save Log
버튼을 통해 로그를 저장하고 조회 가능
+-----------+-------------+------+-----+-------------------+-------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+-------------------+-------------------+
| id | int | NO | PRI | NULL | auto_increment |
| mode | varchar(50) | YES | | NULL | |
| speed | int | YES | | NULL | |
| stability | int | YES | | NULL | |
| timestamp | datetime | YES | | CURRENT_TIMESTAMP | DEFAULT_GENERATED |
+-----------+-------------+------+-----+-------------------+-------------------+
{
"mode": "balancing",
"speed": 15,
"stability": 20,
"timestamp": "2025-03-20 07:40:17"
}
+----+-----------+-------+-----------+---------------------+
| 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 |
+----+-----------+-------+-----------+---------------------+
- 프론트엔드: 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 연동
start
,stop
버튼 구현 → WebSocket 연결/해제 동작 확인- 좌측 패널 (모드 선택, 속도 조절) UI 및 기능 구현
Reset
버튼 추가 및 초기화 기능 구현Save Log
기능 미완 (이후 구현 예정)
Save Log
기능 구현 → MySQL 데이터 저장 및 조회Show Data
기능 구현 → 가장 최근 데이터 UI에 출력- Radar Chart, Line Chart 등 데이터 시각화 개선
- 프로젝트 UI 전체적인 디자인 및 CSS 최적화
- Raspberry Pi GUI 설정 변경 및 MPU6050 센서 연결
- MPU6050 데이터를 오일러 각(Pitch, Roll, Yaw)으로 변환
- Yaw 값 드리프트 문제 해결 → 일정 범위 이상 편차 발생 시 자동 보정
- Distance(목표 거리) 난수 발생 로직 추가 → WebSocket 전송
- 라즈베리파이에서 WebSocket을 통한 실시간 데이터 송신 적용
- nginx를 사용하여 프로젝트 배포
- SEBAR 프로젝트의 핵심 UI 및 로봇 제어 인터페이스 개발 완료
- WebSocket을 활용한 실시간 센서 데이터 스트리밍 구축
- MySQL 기반의 로봇 상태 저장 및 조회 기능 구현
- Vue.js 기반 대시보드 최적화 및 시각적 데이터 개선
- ROS2와의 연동 최적화 (현재 WebSocket을 활용한 UI 연동)
- Yaw Drift 문제의 추가적인 보정 방법 연구
- 실제 로봇 테스트 및 보정 알고리즘 추가