오픈소스 프로젝트인 Open-RMF의 rmf-web를 활용한 Python → Java 전환 프로젝트
PostgreSQL,Spring Cloud Gateway,api-java-server
docker-compose uprmf-web실행
docker exec -it innovation-rmf-web /bin/bash
pnpm start:reactROS Mock Server실행
docker exec -it innovation-mock-server /bin/bash
python3 src/mock_server/mock_server/websocket_client.py- 웹소켓 메시지(
fleet_state,task_state,task_log) 전송 /mock/dummy요청/building_map이벤트 발행 요청Quartz스케쥴러에door_state이벤트 발행Job추가
| 정승철 @middlefitting |
김예건 @dawnpoems |
박정우 @yhames |
|---|
JavaSpringROSMySQLDocker
WebSocketSocket.ioReactiveX
PythonTypescriptReact
branch는main,dev,feature로 구분합니다.issue및branch생성WBS작업 목록을milestone으로 등록issue생성하고milestone과 연결된 상세 내용 및 담당자 설정- 생성된
issue에서branch생성 branchissue에서 자동으로 생성되는 것을 사용
feature작업시 Conventional Commit 적용- 작업 완료된
feature는dev로pull requestmain,dev에는push지양
mergesquash merge사용commit message는#<issue 번호>-<issue 제목> (#<pr 번호>)형식 준수
- 전체 프로젝트 구조
.
├── api-server-java
├── database
├── documents
│ ├── 01 분석
│ ├── 02 설계
│ ├── 03 개발
│ └── 04 테스트
├── rmf-api-gateway
├── rmf-web
│ ├── docker
│ ├── packages
│ │ ├── api-client
│ │ ├── api-server
│ │ ├── dashboard
│ │ ├── dashboard-e2e
│ │ ├── react-components
│ │ ├── rmf-auth
│ │ ├── rmf-models
│ │ └── ros-translator
│ ├── pipenv-install
│ └── scripts
└── src
├── mock_server
│ ├── bags
│ │ └── rosbag2_2024_03_26-06_07_58
│ ├── dummy
│ ├── launch
│ ├── mock_server
│ ├── resource
│ └── test
├── rmf_api_msgs
├── rmf_building_map_msgs
├── rmf_internal_msgs
└── rmf_visualization_msgs
api-server-java프로젝트 구조
api-server-java
└── src
├── main
│ ├── java
│ │ └── com
│ │ └── rmf
│ │ └── apiserverjava
│ │ ├── baseentity
│ │ ├── config
│ │ ├── controller
│ │ ├── dto
│ │ ├── entity
│ │ ├── global
│ │ │ ├── annotation
│ │ │ ├── constant
│ │ │ ├── converter
│ │ │ ├── exception
│ │ │ ├── parser
│ │ │ └── utils
│ │ ├── jobs
│ │ ├── mock
│ │ ├── repository
│ │ ├── rmfapi
│ │ ├── rosmsgs
│ │ ├── rxjava
│ │ │ ├── bookkeepers
│ │ │ ├── eventbus
│ │ │ ├── eventconsumer
│ │ │ └── watchdog
│ │ ├── security
│ │ ├── service
│ │ └── websocket
│ └── resources
│ └── door_dummy
└── test
└── java
└── com
└── rmf
└── apiserverjava
├── config
├── entity
├── global
├── integration
├── repository
└── service
- Java 전환 방향성
| 구분 | Python | Java |
|---|---|---|
| Framework | Uvicorn FastAPI Pydantic |
Spring Boot |
| Protocol | WebSocket socket.io |
WebSocket socket.io |
| ORM | Tortoise | JPA |
| ReactiveX | RxPy | RxJava |
| Database | SQLite | PosgreSQL |
- 개발 범위
| 구분 | 설명 |
|---|---|
| REST API | API Client에서 요청하는 REST API 구현 |
| WebSocket | 리액티브 프로그래밍으로 Fleet Adapter에서 전달하는 WebSocket 데이터 처리 기능 구현 |
| socket.io | API Client에서 구독하는 Socket.io API 구현 |
| 로그인 | DB, REST API, 클라이언트 개발 및 인증과 인가 처리 |
| (ROS Mocking) | RMF Core와 연결된 기능의 Mocking으로 ROS 의존성 제거 |
| (사용자 관리) | 사용자 추가 및 정보 변경 기능 개발 |
- 개발 방식 구조도
[로봇서비스 API 고도화] 01 Java API 모듈 구조도.pdf
[로봇서비스 API 고도화] 02 데이터 플로우 다이어그램.pdf
[로봇서비스 API 고도화] 04 FE-화면설계-와이어프레임.pdf
[로봇서비스 API 고도화] 05 DB 물리 설계서.xlsx
개발 범위에 대한 테스트 시나리오 기반 통합 테스트 작성
[로봇서비스 API 고도화] 02 테스트 시나리오 기반 통합테스트 결과서.pdf
비즈니스 로직이 존재하는 Service, Utils, Entity 계층에 메서드 단위의 테스트 코드 작성








