딥 강화학습 기반의 로봇 그리핑
통합 커리큘럼 학습(curriculum learning) 기반의 그리퍼 환경으로 로봇 모델을 훈련합니다. 다양한 인식 레이어 깊이(depth), RGB-D를 선택할 수 있습니다. SAC, BDQ, DQN 알고리즘을 사용하여 사전 훈련된 모델을 실행합니다. 훈련된 알고리즘을 다양한 장면과 도메인에서 테스트할 수 있습니다.
석사 학위 논문 PDF
전제 조건 (CPU)
Anaconda를 설치하고 깨끗한 conda 환경을 시작합니다.
conda create -n grasp_env python=3.6
conda activate grasp_env
`python manipulation_main/training/train_stable_baselines.py train --config config/gripper_grasp.yaml --algo SAC --model_dir trained_models/SAC_full --timestep 100000 -v``
전제 조건 (GPU)
conda create -n grasp_env python=3.6
conda activate grasp_env
conda install -c conda-forge cudatoolkit=10.0 cudnn=7.6.5
...
[setup.py](setup.py) 파일에서 다음을 변경합니다:
'tensorflow==1.14.0',
로
'tensorflow_gpu==1.14.0',
설치 (Installation)
의존성을 설치하기 위해 pip를 사용합니다.
GPU를 사용하는 경우 다음 명령어로 성공 여부를 확인할 수 있습니다:
´´´ python -c "import tensorflow as tf; print(tf.config.experimental.list_physical_devices('GPU'))" ´´´
모델 실행 (Run Models)
train_stable_baselines 스크립트는 모델을 실행하고 훈련하는 기능을 제공합니다.
모델을 실행하기 위해 *'manipulation_main/training/train_stable_baselines.py'*는 다음 인수를 받습니다:
--model - 훈련된 모델 파일 예: trained_models/SAC_full_depth_1mbuffer/best_model/best_model.zip
-t - 테스트 데이터셋을 사용합니다 (제공되지 않으면 훈련 데이터셋에서 실행됨)
-v - 모델 시각화 (이 옵션 없이 더 빠름)
-s - 확률적(stochastic) 모델 실행 (결정론적(deterministic)이 아닐 경우)
실행 기능(running functionality)을 사용하려면 run 하위 파서를 스크립트에 전달해야 합니다.
python manipulation_main/training/train_stable_baselines.py run --model trained_models/SAC_full_depth_1mbuffer/best_model/best_model.zip -v -t
모델 훈련 (Train models)
모델을 학습시키려면 'manipulation_main/training/train_stable_baselines.py' 스크립트가 다음 인수를 사용합니다.
- --config - 설정 파일 (예: 'config/simplified_object_picking.yaml' 또는 'config/gripper_grasp.yaml')
- --algo - 사용할 알고리즘 (예: BDQ, DQN, SAC, TRPO)
- --model_dir - 학습된 모델 로그와 검증 세트에서 가장 성능이 좋은 모델을 저장할 폴더 이름.
- -sh - 형태 기반 보상 함수 사용 (Full Environment 버전에서만 의미 있음)
- -v - 모델 시각화
학습 기능을 사용하려면 train 서브 파서(sub-parser)를 스크립트에 전달해야 합니다.
python manipulation_main/training/train_stable_baselines.py train --config config/gripper_grasp.yaml --algo SAC --model_dir trained_models/SAC_full --timestep 100000 -v
테스트 실행하기 (Running the tests)
gripperEnv 관련 테스트를 실행하려면 다음을 사용합니다.
- 도메인 및 장면 전이 (Domain and Scene Transfer)
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/testtraining.jpg" width="75%">
- 다양한 인식 계층 (Different Perception Layers)
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/NewPerception.png" width="75%">
-
제거 연구 (Ablation Studies)
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/ablation/SAC_performance_shaped_reward_vs_sparse_reward.png" width="45%">
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/ablation/SAC_performance_wo_actuator_width.png" width="45%">
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/ablation/SAC_performance_wo_curriculum_strategy.png" width="45%">
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/ablation/SAC_performance_wo_normalization.png" width="45%">
-
학습 환경 (Training Environment)
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/trainingEnv.gif" width="50%">
-
도메인 전이 성능 (Domain transfer performance)
⚠️ [IMG:N] 형식 토큰은 이미지 placeholder 입니다. 번역하지 말고 원래 위치에 그대로 유지하세요.
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/SACGripperEnvRes.png">
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/GripperEnv.gif" width="45%">
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/SACKukaEnv.png">
<img src="https://raw.githubusercontent.com/BarisYazici/masters_thesis/master/figures/kukaGif.gif" width="45%">
저자 (Authors)
프로젝트 인용 (Citing the Project)
마스터스 논문을 인용하려면:
@MastersThesis{Yazici2020,
author = {Yazici Baris},
title = {{Branch Dueling Deep Q-Networks for Robotics Applications}},
...
라이선스 (License)
본 프로젝트는 MIT License 하에 라이선스가 부여되었으며, 자세한 내용은 LICENSE.md 파일을 참조하십시오.
감사의 글 (Acknowledgments)