Object Pose Estimation Demo
License
이 튜토리얼에서는 Unity 환경에서 UR3 로봇 팔을 사용하여 자세 추정(pose estimation)을 수행하는 데 필요한 단계를 안내합니다. 이 과정을 통해 ROS를 Unity와 통합하고, URDF 모델을 가져오며, 레이블링된 학습 데이터(labeled training data)를 수집하고, 딥러닝 모델을 학습 및 배포하는 경험을 쌓게 됩니다. 이 튜토리얼이 끝날 무렵에는 컴퓨터 비전(computer vision)을 사용하여 로봇이 집는 객체를 인식하며 Unity에서 로봇 팔로 피킹-앤-플레이스(pick-and-place)를 수행할 수 있게 될 것입니다.
튜토리얼 건너뛰고 전체 데모 실행하기: Quick Demo 확인.
튜토리얼 건너뛰고 딥러닝 모델 학습 데이터 수집에 집중하기: Quick Data-Collection Demo 확인.
참고: 이 프로젝트는 Python 3과 ROS Noetic으로 개발되었습니다.
목차 (Table of Contents)
<img src="https://raw.githubusercontent.com/Unity-Technologies/Robotics-Object-Pose-Estimation/HEAD/Documentation/Images/0_scene.png" width=400 />
이 부분에서는 Unity Editor 다운로드 및 설치, 기본적인 Unity 장면 설정, 그리고 로봇을 가져오는 과정을 포함합니다. 우리는 URDF Importer 패키지를 사용하여 UR3 로봇 팔을 가져올 것입니다.
<img src="https://raw.githubusercontent.com/Unity-Technologies/Robotics-Object-Pose-Estimation/HEAD/Documentation/Images/0_data_collection_environment.png" width=400/>
이 부분에서는 Unity Computer Vision Perception Package을 사용하여 데이터 수집 환경을 설정하는 방법을 다룹니다. Perception Package의 Randomizers를 활용하여 장면의 다양한 측면을 무작위화(randomize)함으로써 훈련 데이터에 다양성을 부여하는 방법을 배울 수 있습니다.
Randomizers에 대해 더 자세히 알아보고 이 장면에 도메인 랜덤화(domain randomization)를 더욱 철저하게 적용하려면, 독자를 위한 추가 연습 자료 here를 확인해 보세요.
<img src="https://raw.githubusercontent.com/Unity-Technologies/Robotics-Object-Pose-Estimation/HEAD/Documentation/Images/0_json_environment.png" width=400/>
이 파트에서는 Perception Package를 사용하여 데이터 수집을 수행하고, 그 데이터를 이용해 딥러닝(deep learning) 모델을 훈련하는 과정을 포함합니다. 훈련 단계에는 시간이 다소 걸릴 수 있습니다. 원한다면 사전 훈련된 모델(pre-trained model)을 사용함으로써 이 단계를 건너뛸 수도 있습니다.
사전 훈련된 포즈 추정(pose estimation) 모델을 사용하여 시뮬레이션에서 그리핑(grasping)의 성공 여부를 측정하기 위해, 우리는 100회의 실험을 진행했으며 다음과 같은 결과를 얻었습니다:
| Success | Failures | Percent Success |
|---|
| Without occlusion | 82 | 5 | 94 |
| ... | | | |
참고: 위의 실험 데이터는 Unity 2020.2.1f1에서 수집되었습니다.
<img src="https://raw.githubusercontent.com/Unity-Technologies/Robotics-Object-Pose-Estimation/HEAD/Documentation/Gifs/0_demo.gif" width=400/>
이 부분에는 MoveIt을 사용하여 픽앤플레이스(pick-and-place) 작업을 실행하는 데 필요한 준비 및 설정이 포함됩니다. 여기서는 큐브의 자세가 학습된 딥러닝 모델에 의해 예측됩니다. 다루는 단계는 다음과 같습니다:
- ROS에서 모션 플래닝 서비스 생성 및 호출
- 장면에서 캡처한 RGB 이미지를 ROS Pose Estimation 노드로 전송하여 추론 수행
- 파이썬 스크립트를 사용하여 학습된 딥러닝 모델에 대한 추론 실행
- 계산된 궤적을 기반으로 Unity Articulation Body 이동
- 물체를 성공적으로 잡고 놓기 위해 그리핑 도구 제어.
지원 (Support)
Unity Robotics 패키지 설치 또는 로봇 공학 프로젝트를 가장 잘 설정하고 통합하는 방법에 대한 질문이나 토론이 있으시면, Unity Robotics 포럼에 새 스레드를 생성하고 가능한 한 많은 세부 정보를 포함시켜 주십시오.
기능 요청(feature requests), 버그 또는 기타 문제의 경우, 제공된 템플릿을 사용하여 GitHub 이슈를 제출해 주시면 Robotics 팀에서 가능한 한 빨리 조사할 것입니다.
다른 질문이나 피드백이 있는 경우, [email protected]의 Robotics 팀에 직접 문의하십시오.
Unity Robotics 관련 추가 정보 (More from Unity Robotics)
Unity에서 로봇 공학 시뮬레이션에 대한 더 많은 튜토리얼, 도구 및 정보를 원하시면 Robotics Hub를 방문하십시오!
라이선스 (License)
Apache License 2.0