Unity 검색

Unity Robotics Visualizations 패키지 소개

2021년 10월 4일 엔진 & 플랫폼 | 16 분 소요
robot arm
robot arm
공유

Is this article helpful for you?

Thank you for your feedback!

Unity는 로보틱스 시뮬레이션의 내부 상태를 시각화하고 디버깅하는 툴킷을 갖추고 있으며, 올인원 ROS 시뮬레이션 및 시각화 툴로 사용할 수 있습니다.

로봇 공학자들은 시스템 내부에서 어떤 일이 발생하는지 파악하는 데 어려움을 겪습니다. 컴포넌트가 서로 복잡하게 연결된 네트워크에서 오작동이 발생하면 어떻게 오류의 원인을 파악할 수 있을까요? A 컴포넌트가 잘못된 데이터를 생성하는 것일까요, 아니면 B 컴포넌트의 프로세싱에 문제가 있을까요? 시스템을 순회하는 데이터를 시각화할 수 있는 능력은 매우 중요합니다.

이러한 취지에서 유니티는 Unity Robotics의 차기 릴리스를 공개하게 되었음을 기쁜 마음으로 전해드립니다. Robotics Visualizations 패키지는 ROS 메시지를 시각화하고 커스터마이즈하는 새로운 패키지입니다.

Unity Robotics 팀은 열심히 개발에 전념하여 픽 앤 플레이스(Pick-and-Place)와 오브젝트 포즈 추정(Object Pose Estimation) 등 여러 로보틱스 예제 프로젝트를 릴리스했습니다. 최근에는 Nav2-SLAM Example을 릴리스하여, 미지의 공간을 탐색하고 매핑하는 자율 로봇을 완전히 Unity로 시뮬레이션하여 시연했습니다.

Robotics Visualizations 패키지는 셰이프, 포즈, 포인트 클라우드, 이미지, 각종 센서 등 일반적인 ROS 메시지의 모든 유형에 커스터마이즈 가능한 시각화 라이브러리를 제공합니다. 기본적으로 ROS 트랜스폼 트리를 지원하며, 런타임 시 모든 ROS 주제에 대한 시각화를 활성화 및 비활성화하고 커스터마이즈할 수 있도록 지원합니다.

로봇의 고스트 카피를 표시하여 궤적 메시지 미리 보기

워크플로

다음은 간단하게 Robotics Visualizations 패키지를 사용하여 기존의 로보틱스 프로젝트에 시각화를 추가하는 방법입니다.

  1. 패키지 관리자를 사용하여 Robotics Visualizations 패키지를 Unity로 임포트합니다.
  2. DefaultVisualizationSuite 프리팹을 Unity 씬으로 드래그합니다.
  3. 플레이를 누르면 HUD(헤드업 디스플레이)에 새로운 버튼이 나타납니다. Topics 버튼을 누르면 ROS가 알고 있는 모든 주제의 목록이 표시됩니다.
  4. 시각화하려는 주제를 클릭합니다.
 The Topics menu operates similarly to rviz: clicking the radio button turns on visualization in the Unity Scene.
Topics 메뉴는 rviz와 유사하게 작동하며, 라디오 버튼을 클릭하면 Unity 씬에서 시각화가 활성화됩니다. 이 설정 툴은 트랜스폼, 매핑, LIDAR 포인트 클라우드, 계획된 경로 등과 같은 데이터의 오버레이를 제어합니다. 카메라 이미지와 같은 데이터도 시각화할 수 있습니다. 오른쪽은 Unity 씬에서 캡처한 Turtlebot 카메라 이미지를 시각화한 모습입니다.

원하는 시각화 유형으로 로봇 애플리케이션 디버깅

트랜스폼

트랜스폼은 로보틱스 시스템에서 좌표 프레임 간의 관계를 나타냅니다. 모든 데이터는 각기 다른 좌표 프레임에 생성됩니다. LIDAR 데이터는 LIDAR 프레임에, 카메라 데이터는 카메라 프레임에, 지도 데이터는 지도 프레임에 존재합니다. 이렇게 상이한 데이터 소스를 종합하려면 공통 참조 프레임이 필요합니다. 트랜스폼을 활용하면 프레임 간의 관계를 추적하여 이러한 작업을 더 쉽게 수행할 수 있습니다. 3D 컨텍스트에서 센서와 알고리즘을 사용하지 않고 로봇을 디버깅하기란 불가능에 가깝습니다. Robotics Visualizations 패키지를 사용하면, 이제 데이터를 Unity 씬 및 에셋과 함께 실시간으로 보고, 시뮬레이션된 데이터와 실제 데이터 사이를 매끄럽게 전환할 수 있습니다.

robot in factory
로봇 트랜스폼 시각화가 활성화되어, 데이터 오버레이와 디버깅을 실시간으로 수행할 수 있습니다.

로봇 지도

로봇 매핑은 까다롭습니다. 지도에 오류가 발생하거나, 로봇이 길을 잃을 수 있기 때문입니다. 주행 거리 측정 시스템이 바르게 조정되었나요? 최적화 기반 SLAM 알고리즘 결함으로 지도가 반으로 갈라지지는 않았나요? Unity Robotics Visualizations 패키지는 점유 그리드, 트랜스폼, 측위(localization), 그리고 LIDAR 포인트 클라우드를 종합하여 시각화하므로 알고리즘의 결함 위치를 눈으로 확인할 수 있습니다.

해당 이미지는 새로운 공간을 매핑하는 로봇을 보여줍니다. 로봇이 SLAM 알고리즘을 실행하자 점유 그리드가 채워지는 모습을 확인할 수 있습니다. 점유 그리드는 주변을 회색 톤으로 표시하며, 각 픽셀(또는 셀)은 장애물이 해당 영역을 점유하고 있을 확률을 나타냅니다.

Robotics Visualizations 패키지는 트랜스폼, 점유 그리드, 3D 포인트 클라우드, 마커, 레이저 스캔, 이미지(jpeg, png, 비압축) 등 가장 일반적인 ROS 메시지 유형을 지원합니다. 고유의 데이터 유형을 확인해야 하는 경우 커스터마이징도 가능합니다.

Here, robot transform visualizations have been activated, allowing you to overlay data and debug in real time.
디버깅을 위해 LIDAR 데이터를 트랜스폼 및 Unity 씬 데이터와 함께 시각화합니다. 시뮬레이션과 실제 데이터 간의 전환이 원활합니다.

커스터마이징

Robotics Visualizations 패키지는 사용자가 제작한 시각화도 지원합니다. 빌트인 시각화를 토대로 원하는 방식으로 커스터마이즈하는 강력한 툴 세트도 포함됩니다. 몇 가지 주요 툴은 다음과 같습니다.

Drawing3d는 3D 공간에 임의의 질감/색상을 가진 선, 도형, 메시, 레이블을 간편하게 그릴 수 있는 유틸리티 클래스입니다. 예를 들어, Drawing3d를 사용하여 오브젝트가 도달할 것으로 예상되는 위치에 오브젝트의 고스트를 그리거나, 오브젝트가 해당 지점으로 가기 위해 따를 궤적을 보여주는 선, 그리고 주변에 오류 바를 표시하는 추가 선을 그릴 수 있습니다.

PointCloudDrawing은 GPU에 최적화된 포인트 클라우드 렌더러로, 각기 다른 크기와 색상을 가진 최대 1,000만 개의 빌보드 포인트를 상호 작용 속도로 표시할 수 있습니다. 이 툴을 사용하면 3D 스캔이나 뎁스 이미지와 같은 볼류메트릭 데이터를 표시할 수 있습니다.

HistoryDrawingVisualizer 템플릿을 사용하면, 데이터 트렌드 이력, 3D 이동 경로 등을 표시하고, 주제로 전송된 메시지를 변경 가능한 길이의 이력으로 관리할 수 있습니다. 그리고 해당 이력을 원하는 대로 분석하고 표시할 수 있습니다.

물론 이 모든 기능은 AR 및 VR 지원, Unity 셰이더 그래프의 커스텀 셰이더, 컴퓨트 셰이더, 클라우드 시뮬레이션 등의 기능을 제공하는 Unity 엔진의 성능과 사용 편의성을 기반으로 실현됩니다.

향후 계획

Robotics Visualizations 패키지는 무궁무진한 활용 가능성을 지니고 있습니다.

Robotics Visualizations 패키지를 시작하려면 Nav2-SLAM 튜토리얼을 참고하여 최신 패키지의 사용법을 알아보세요.

Unity Robotics Visualizations Package enables you to visualize robot data alongside Unity environments combining real data and simulated data in one place.
Unity Robotics Visualizations 패키지를 사용하면 Unity 환경에서 로봇 데이터를 시각화하여, 실제 데이터와 시뮬레이션된 데이터를 한 곳에서 결합할 수 있습니다.

로보틱스 분야를 지원하기 위해 로보틱스 패키지와 기능이 꾸준히 개발되고 있으며, 이번 Robotics Visualizations 패키지는 일부에 불과합니다. 더 많은 로보틱스 프로젝트를 살펴보려면 GitHub의 Unity Robotics Hub를 방문하세요.

로보틱스 포럼에 방문하거나 unity-robotics@unity3d.com으로 이메일을 보내 피드백과 제안을 공유해 주세요.

2021년 10월 4일 엔진 & 플랫폼 | 16 분 소요

Is this article helpful for you?

Thank you for your feedback!