Unity 검색

Made with Unity: 로봇 디지털 트윈 제작 및 훈련

2021년 10월 11일 산업 분야 | 8 분 소요
kitchen digital twin with a robot on a dining table
kitchen digital twin with a robot on a dining table
공유

Is this article helpful for you?

Thank you for your feedback!

Made with Unity: AI 시리즈에서는 유니티의 인공 지능 제품으로 제작한 다양한 Unity 프로젝트를 소개합니다. 이번 예제에서는 OpenCV Spatial AI 대회의 최근 출품작을 다룹니다. 해당 대회는 인상적인 예제들을 통해 Unity의 로보틱스와 컴퓨터 비전, 강화 학습, 그리고 증강 현실 기능을 선보입니다.

유니티는 세계적인 수준의 실시간 3D 엔진 개발사입니다. 전통적으로 유니티는 게임 개발자들을 지원하는 엔진과 툴을 제작해 왔지만, AI@Unity 그룹에서는 머신러닝, 컴퓨터 비전, 로보틱스와 같은 분야를 중심으로 툴을 제작하여 게임 이외, 특히 인공 지능과 실시간 3D 환경에 의존하는 애플리케이션을 지원하고 있습니다. 

Gerard Espona와 Kauda 팀의 대회 출품작에는 여러 예제에 걸쳐 유니티의 다양한 AI 툴과 패키지가 사용되었습니다. 팀은 컴퓨터 비전 모델을 훈련하기 위해 유니티의 Perception 패키지를 사용했으며, ML-Agents 툴킷을 사용하여 머신러닝 모델을 훈련하고 로봇 팔을 시뮬레이션했습니다. 유니티는 Gerard와의 인터뷰를 통해 이번 프로젝트를 제작한 계기를 알아보았습니다. 이번 포스팅을 읽고 Gerard가 Unity와 실제 세계에서 해당 프로젝트를 구현한 방법을 자세히 알아보세요.

OpenCV 프로젝트

Made with unity logo with updated cube

Kauda 팀이라는 이름은 어디에서 착안했나요?

Kauda 팀에는 Giovanni Lerda와 제가 속해 있으며, Giovanni가 만든 Kauda에서 팀 이름을 따왔습니다. Kauda는 3D 프린팅이 가능한 데스크톱 크기의 무료 오픈 소스 5축 로봇 팔입니다. Kauda는 누구나 만들 수 있는 훌륭한 데스크톱 로봇 팔로, Kauda를 사용하여 이번 프로젝트를 원격으로 공동 작업할 수 있었습니다.

Robotic arm

Unity에서 어떻게 Kauda의 디지털 트윈을 만들었나요?

Kauda의 디지털 트윈을 구동하는 Unity 애플리케이션인 Kauda Studio를 개발했습니다. 이는 역운동학(IK) 컨트롤과 실물 Kauda에 대한 USB/블루투스 연결을 지원하여 정확한 Kauda 시뮬레이션과 기능을 제공하며, 여러 대의 OpenCV OAK-D 카메라도 지원할 수 있습니다.

OAK-D 카메라가 무엇이며, 어떻게 Unity와 같이 사용했나요?

Intel MyriadX VPU 기반의 온보드 프로세싱을 갖춘 OAK-D 카메라는 스테레오 뎁스 카메라 두 대와 4K 컬러 카메라 한 대를 결합한 것으로, 다양한 기능을 자동으로 처리합니다. 대회에 참여하는 과정에서 OAK 기기용 Unity 플러그인을 제작했으며, Unity로 디지털 트윈도 만들고 싶었습니다. OAK-D Unity 디지털 트윈은 가상 3D 카메라에 합성 데이터 수집에 사용될 수 있는 정확한 시뮬레이션을 제공했으며, 실제 기기의 파이프라인에도 가상 이미지를 제공했습니다. 가상 OAK-D 카메라로 커스텀 아이템을 훈련하기 위해 필요한 합성 데이터는 Unity Perception 패키지를 사용하여 수집할 수 있었습니다.

Grey background with 3D models of equipment
OAK-D 카메라의 Unity 모델

Unity로 디지털 트윈을 만드는 것이 왜 중요했나요?

디지털 트윈이 있어서 Kauda에 추가 기능을 활성화할 수 있었습니다. Unity의 증강 현실(AR) 기능을 사용하면 현실에서 가상 로봇과 상호 작용하는 것도 가능합니다. 이를 활용하면 로봇 없이도 로봇을 유지 보수하는 방법을 배울 수 있습니다. 아울러 로봇의 정확한 가상 표현이 있기에 코드를 작성하지 않고도 순차적인 작업을 프로그래밍할 수 있습니다.

디지털 트윈 덕분에 RL(강화 학습) 훈련을 수행할 수 있었습니다. RL은 시간이 많이 걸리는 과정으로, 지극히 단순한 예제가 아닌 이상 언제나 시뮬레이션이 필요합니다. Unity로 제작한 Kauda에 ML-Agents 툴킷을 사용하여 제어를 위한 RL 훈련을 수행했습니다.

또한 Unity에서 로봇을 복제하고 로봇 영역 안에 있는 사람의 위치를 카메라로 측정하여, 사람과 기계 사이의 협업과 안전 절차를 테스트했습니다. 오류가 발생하면 사람이 다칠 수도 있는 대형 로봇에 이 기능을 활용할 수 있습니다. 시뮬레이션 환경을 이용하면 이와 같은 시나리오를 안전하게 테스트할 수 있습니다.

이번 프로젝트에서 ML-Agents 툴킷을 어떤 방식으로 활용했나요?

RL은 강력한 로보틱스용 프레임워크이며, Unity ML-Agents는 디지털 트윈이 복잡한 작업을 배우고 수행할 수 있도록 하는 뛰어난 툴킷이라고 생각합니다. 대회 기간이 짧았기 때문에, 목표는 간단한 RL '만지기' 과제를 구현하고 결과 모델을 변환하여 OAK-D 기기에서 추론을 실행하는 것이었습니다. 로봇은 ML-Agents를 통해 탐지된 3D 오브젝트를 동적으로 만지도록 IK 컨트롤을 사용하여 최적의 경로를 학습했습니다.

Unity ML agents training on digital twins

이를 위해 우선 Spatial Tiny YOLO를 사용하여 3D 오브젝트 탐지기를 구현했습니다. RL 모델(PPO)은 탐지 결과와 IK 컨트롤 포인트의 위치를 입력 관찰값으로 사용합니다. 출력 동작은 IK 컨트롤 포인트의 3축 이동이 담당합니다. 각 단계마다 작은 페널티를 주고 로봇이 오브젝트를 만질 때 큰 보상(1.0)을 주는 식으로 보상 시스템을 구성했습니다. 훈련 속도를 높이기 위해, 동시에 학습하는 다중 에이전트를 활용하여 실제 Spatial Tiny YOLO와 동일한 출력을 가진 가상의 Spatial Tiny YOLO를 개발했습니다.

모델의 훈련이 끝나면 OpenVino 툴킷을 통해 OpenVino IR 및 Myriad Blob 포맷으로 변환하여 OAK-D 기기에 모델을 로드하고 추론을 실행했습니다. 최종 파이프라인은 Spatial Tiny YOLO와 RL 모델입니다. Unity 플러그인 덕분에 Unity에서 ML-Agents와 OAK-D 에이전트를 사용하여 추론을 비교할 수 있었습니다.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

ML-Agents를 통한 훈련 및 호스트와 OAK-D 간의 추론 비교

합성 데이터가 이번 프로젝트에 어떤 도움이 되었나요?

파이프라인의 첫 단계는 3D 오브젝트 탐지기로, AI 기반 컴퓨터 비전과 로봇을 이용한 작업은 대부분 여기에서 시작합니다. 저희 팀은 미리 훈련시킨 Tiny YOLO v3 모델을 사용했으며 Unity Perception 패키지를 통해 커스텀 카테고리를 훈련할 수 있었습니다. 이를 통해 자동으로 실측 바운딩 박스 레이블링이 완료된 3D 모델의 대규모 합성 데이터 세트를 몇 분만에 생성할 수 있었습니다. 일반적으로 데이터 수집과 레이블링 과정은 수작업으로 이루어지며 상당히 오랜 시간이 걸립니다. 따라서 다양한 회전, 조명 조건, 텍스처 배리에이션 등의 여러 랜덤화 옵션을 사용하여 풍부한 데이터 세트를 생성할 수 있는 역량을 갖추게 된 것은 대단한 진척이라 할 수 있습니다.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

Perception 패키지를 이용한 합성 데이터의 생성과 통합

프로젝트 진행에 어려움은 없었나요?

가상 아이템과 실물 아이템을 동기화할 때 타이밍이 약간 어긋나는 경우가 있었습니다. 이 문제는 ROS를 사용하여 해결할 수 있을 거라 예상합니다. 이제 Unity에서 공식적으로 ROS를 지원하니 더 반가운 일입니다.

이 콘텐츠는 Targeting Cookies 카테고리를 수락해야만 동영상을 시청할 수 있도록 허용하는 타사 제공업체에서 호스팅합니다. 이러한 제공업체의 비디오를 보려면 쿠키 환경 설정에서 Targeting Cookies 카테고리를 수락하시기 바랍니다.

sim2real을 수행하는 최종 솔루션

더 알아보기

Gerard는 팀의 개발 과정을 기록한 동영상 목록을 공개했습니다. 여기에는 OpenCV 웨비나최종 대회 제출 영상을 비롯해 몇 가지 눈에 띄는 동영상이 포함되어 있습니다. Gerard는 또한 다른 개발자들에게 도움을 주기 위해 Github에 OAK-D Unity 플러그인을 릴리스했습니다.

유니티의 툴을 통해 이와 같은 프로젝트가 구현되는 것을 기쁘게 생각합니다. Unity 프로젝트에 AI를 탑재하려 한다면, 유니티에서 제공하는 다양한 예제와 튜토리얼을 참고하세요. Unity Perception 패키지를 사용하면 Unity에서 합성 데이터를 쉽게 수집할 수 있습니다. Unity Robotics Hub에 있는 튜토리얼과 패키지를 통해 ROS 통합 및 로보틱스 시뮬레이션을 시작하는 데 도움을 얻을 수 있습니다. ML-Agents 툴킷을 사용하면 이미 만들어진 다양한 환경에서 간편하게 강화 학습을 시작할 수 있습니다.

2021년 10월 11일 산업 분야 | 8 분 소요

Is this article helpful for you?

Thank you for your feedback!