이 프로젝트는 TurtleBot3 Burger 사방에 카메라를 장착하여 다양한 방향에서의 시각 정보를 활용하여 강화학습 시뮬레이션 환경을 구성합니다.
Gazebo 기반 autorace 맵을 사용하며 주차에 대한 강화학습을 진행 할 예정압니다.
turtlebot3_gazebogazebo_rosimage_transport- `tf2_ros
sensor_msgs
- 다중 카메라 입력:
rear,left,right카메라 이미지 토픽 구독 - 라인 검출(노란선/흰선): ROI 하단 80%에서 색상 기반 필터링 및 비율 산출
- 주차 가능 구역 검출: ROI 사각형 컨투어 면적 비율 ≥ 40% 시 True
- 강화학습 환경/에이전트 분리:
dqn_environment↔dqn_agent - 충돌 판정: 충돌 센서 추가 및 충돌 토픽 구독
- 학습 로깅/가시화: 스텝 로그 가독성 개선 및 결과 분석 스크립트(
result_analysis/)
- turtlebot3 gazebo 환경 가져오기
- turtlebot3 gazebo 실행 테스트 완료
- turtlebot3 burgur rear camera 추가 및 TF 프레임 설정
- rear/image_raw, rear/camera_info 토픽 발행 확인
- rear_camera_link 기준 pose 및 카메라 각도 튜닝
- 맵 주차장 이미지, 크기 변경
- 주차장에 차량을 대신할 블록 설치
- autorace 맵에서 rear camera 작동 테스트 완료
- machine learning 환경 가져오기
- dqn 파일 일부 실행 테스트 진행
- left, right camear 추가 및 TF 프레임 설정
- left_camera/image_raw, left_camera/camera_info 토픽 발행 확인 (right_camera 또한 동일)
- left_camera_link 기준 pose 및 카메라 각도 튜닝 (right_camera 또한 동일)
- 노란선 필터링을 위한 초기 Line Detector 노드 테스트 진행
- ROI 설정을 통한 아래 화면의 80% 사용 범위 설정
- 노란선 비율 0.6 이상일 시 노란선 인식 토픽 발행 (서비스 서버로 수정 예정)
브랜치:
main/rear_camera_parking_detector
- ROI(Region of Interest) 설정을 통해 화면 하단 80% 영역만 사용
- 노란선과 흰색 이진화 이미지 생성
- 주차 구역 검출을 위한 Parking Zone Detector 노드 구현
- ROI 내에서 사각형(4변) 컨투어 중, 넓이가 전체 ROI의 40% 이상일 경우 "주차 가능 구역"으로 판별
- 결과에 따라 주차 가능 구역이면 True, 아니면 False를 /parking_zone_detected 토픽(std_msgs/Bool)으로 발행
- OpenCV를 통한 검출 결과 시각화 지원(디버깅용)
브랜치:
main/parking_area_detect
- main에 병합 완료
- 주차구역 감지 전까지 직진 수행
- 차량 충돌센서 추가
- 학습 실패조건 충돌 방식 : odom을 이용한 차량속도와 cmd_vel의 차이 -> 충돌 센서 입력값
- reward방식 수정
- environment step 로그 가시성 개편하
- 초기화시 차량 흔들림 수정 (2번 초기화)
- 충돌 시 초기화 문제 수정
브랜치:
main/test_of_train
- Gazebo 시뮬레이션 실행을 위한 launch 파일 추가
- sdf 모델 중복 입력 삭제 및 collision box 색상 디버그
- logger / parking_sub_callback 정리
- reset 동작 및 crash 처리 코드 개선
브랜치: 'main/startline_ML'
- train_test 브랜치 및 startline_ML 브랜치 병합
- rear_env / keep_straight 브랜치 기능 통합
- README 다수 업데이트
- 불필요 파일/코드 정리
- 리팩토링 마무리 및 충돌 대응 최적화
- reward 수정
- reward 대폭 수정
- 학습량 증가
- OS: Ubuntu 22.04 LTS 권장
- ROS 2: Humble Hawksbill
- Simulator: Gazebo Classic
- Python: 3.10+
- 패키지:
turtlebot3_gazebo,gazebo_ros,image_transport,tf2_ros,sensor_msgs, OpenCV 등
# bashrc
function MLmaplaunch() {
cd ~/auto_parking
. install/setup.bash
ros2 launch turtlebot3_dqn gazebo.launch.py
}
# Launch Gazebo with gazebo_init, rear camera, right camera
MLmaplaunch
# Run environment node
ros2 run turtlebot3_dqn dqn_environment
# Run agent node
ros2 run turtlebot3_dqn dqn_agent- 성공: 성공 점수 + ROI 기반 성공 점수 + 거리/각도 점수
- 실패(충돌/스텝초과): 거리/각도 점수 − (충돌/초과 패널티)
- 진행중: 얇은 shaping 중심(진행도 − 이동 소패널티)
