Unity 검색

ROS2 photo of machine learning bot in a manufacturing environment
ROS2 photo of machine learning bot in a manufacturing environment
공유

Is this article helpful for you?

Thank you for your feedback!

유니티에서 기쁜 마음으로 ROS2에 대한 공식 지원을 발표합니다. 강력한 프레임워크와 시뮬레이션을 갖춘 ROS2는 앞으로 다양하고 새로운 사용 사례를 지원할 예정입니다.  

2007년부터 사용되기 시작한 ROS(Robot Operating System, 로봇 운영 체제)는 인기 있는 로봇 애플리케이션 개발 프레임워크입니다. 원래 로보틱스 연구를 촉진할 목적으로 설계되었으나, 곧 산업 및 상업용 로보틱스 분야에서 널리 사용되게 되었습니다. ROS2는 ROS의 안정적인 프레임워크를 기반으로 구축되었으며 멀티 로봇 시스템, 실시간 시스템, 제작 환경과 같은 현대적인 응용 분야에 대한 지원을 개선했습니다. 유니티는 ROS 생태계에 대한 공식 지원을 ROS2까지 확장하려 합니다.

최근의 로보틱스는 개발자가 직접 정의한 엄격한 규칙 없이 알고리즘이 결정을 내리는 "자율성" 연구 및 개발로 초점이 옮겨가고 있으며, 개발 과정은 실제 세계의 테스트보다 유연하고 빠른 실험이 가능한 시뮬레이션을 통해 지원됩니다. 유니티는 Robotics-Nav2-SLAM 예제를 개발하여, Unity와 ROS2로 자율 주행 로보틱스(AMR)에 동시 위치 인식 및 매핑(SLAM)과 내비게이션을 시뮬레이션하는 방법을 시연했습니다.

ROS2로 더 강화되는 최신 로보틱스

ROS는 여전히 로보틱스 프로토타이핑에 우수한 프레임워크이지만 프로토타이핑을 넘어 로보틱스 시스템을 본격적으로 생산하고 배포하는 데 필요한 기능 몇 가지가 부족한 상황입니다. ROS2의 기술 로드맵은 업계 전문가들로 구성된 위원회에서 수립하고 관리하며, ROS2 프레임워크가 로보틱스 최종 사용자에게 적합하도록 명확한 방침을 기준으로 합니다. ROS2는 더 많은 운영 체제와 통신 프로토콜을 지원하며, ROS에 비해 더 분산형으로 설계되어 있습니다.

자율성을 강화하는 시뮬레이션

ROS2의 새로운 사용 사례들은 대부분 자율성에 집중합니다. 자율성을 도입하게 되면 많은 산업용 로보틱스 사용 사례에서와 달리, 상태 머신과 일련의 수학 공식만 사용해서는 로봇이 내리는 결정과 그 결정의 결과를 완벽하게 예측할 수 없습니다. 자율 로봇은 산업용 로봇에 비해 훨씬 광범위한 환경에서 운영됩니다. 자율 로봇이 접하는 입력의 순열은 통제된 실험실 환경에서 재현될 수 있는 양을 훨씬 능가합니다. 시공간을 완벽하게 장악할 수 있는 나만의 우주에서는 예상대로 완벽하게 움직이는 자율 로봇을 구현할 수 있지만, 현실적으로는 적절하고 강력한 시뮬레이션이 필요합니다.

로봇이 환경을 감지해야 한다면, 환경의 시뮬레이션된 토폴로지와 물리의 정확성을 전혀 손상하지 않으면서 시뮬레이션이 감지 센서를 정확하게 모델링할 수 있어야 합니다. 주어진 환경에 사람이나 다른 로봇 등 기타 에이전트가 있다면, 시뮬레이션은 센서 시뮬레이션, 토폴로지 표현, 물리 모델링을 계속해서 정확히 구현하면서 에이전트의 동작까지 모델링할 수 있어야 합니다. 로봇이 발생 가능한 모든 시나리오에 대해 완전히 훈련할 수 있도록 하려면 이러한 시뮬레이션을 아주 많이 실행해야 합니다. 즉 자율 로보틱스를 지원하는 시뮬레이션은 산업용 로보틱스에서는 자주 요구되지 않는 네 가지 특징인 유연성, 확장성, 규모 가변성, 충실성을 갖춰야 하며 이에 따른 성능 저하도 없어야 합니다. 유니티에서 플랫폼에 추가 기능을 구축하여 자율 로봇 개발을 지원하려는 이유는 Unity가 위 요건을 모두 충족하기 때문입니다.

유니티 Robotics 패키지를 사용하면 미리 구축된 인터페이스에 액세스하여 ROS 또는 ROS2와 간편하게 통신할 수 있습니다. URDF Importer를 사용하면 URDF 파일에서 기존의 로봇 설정을 직접 임포트할 수 있으며, Unity의 고품질, 고효율 렌더링 파이프라인과 성능 기준에 부합하는 정확한 물리 시뮬레이션에서 로봇을 훈련시킬 수 있습니다. 유니티 에셋스토어에는 미리 제작된 추가 환경 및 프랍이 매우 다양하게 구비되어 있으므로, 로봇의 주변 환경과 과제를 모델링하는 데 도움을 얻을 수 있습니다. 클릭 몇 번으로 제작한 시뮬레이션을 Windows 10, Mac OS, Linux 등 주요 OS에 구축하고 배포할 수 있습니다. C# 스크립팅, Bolt 비주얼 스크립팅, 또는 에셋스토어에서 이용 가능한 다양한 스크립팅과 유틸리티 툴킷을 사용하여, 프로젝트의 구체적인 사용 사례에 맞도록 특정 시뮬레이션의 기능을 지속적으로 커스터마이즈할 수 있습니다.

클릭 한 번으로 ROS2 지원

Unity 프로젝트를 ROS2로 간편하게 전환할 수 있습니다. ROS-TCP-Connector패키지에 ROS와 ROS2 통합 간에 패키지를 전환할 수 있는 드롭다운 메뉴가 추가되었습니다. 프로토콜을 변경하면 Unity에서 자동으로 선택된 메시지 정의와 직렬화 프로토콜에 따라 패키지를 다시 컴파일합니다. 해당 기능을 테스트하려면 프로젝트에 변경 사항을 직접 적용하거나 Robotics-Nav2-SLAM 예제 저장소를 이용해 보세요. Nav2 내비게이팅 및 매핑 튜토리얼에서 Unity를 센서 및 주행 거리 측정 정보의 시뮬레이션 소스로 사용하는 데 필요한 컴포넌트가 포함되어 있습니다.

ros2 settings
ROS2 통신을 위한 Unity 설정

이 예제 프로젝트는 Unity를 사용하여 ROS2로 구동되는 내비게이션 시스템을 시뮬레이션하는 방법을 시연합니다. 내비게이션의 개념은 간단명료하며 자율 로보틱스의 맥락에서도 크게 달라지지 않습니다. 내비게이션 알고리즘의 목표는 현 위치에서 원하는 위치로 이동하는 경로를 찾는 것입니다. 하지만 현 위치에서 원하는 위치로 이동하려면 우선 SLAM, 즉 동시 위치 인식과 매핑을 수행해야 합니다. SLAM은 로봇의 현재 위치와 이전 위치를 파악하도록 구축된 알고리즘의 모음을 설명합니다. 인간은 감각 기관과 두뇌를 이어 주는 고유의 처리 과정을 통해 끊임없이 SLAM을 수행합니다. 하지만 자율 로봇의 경우 대부분의 실제 환경에서 SLAM을 정확히 수행하는 일이 여전히 어려운 과제입니다. 자율 주행 로봇이 이전 위치에 근거하여 현 위치를 항상 파악할 수 있도록 하기 위해 정확히 무엇이 필요한지 알아내기 위한 연구가 여전히 활발히 진행되고 있습니다. 해답을 찾는 유일한 방법은 각 사용 사례에서 센서, 알고리즘 등 다양한 방안을 시도하고 그중 어떤 방안이 효과적인지 살펴보는 것입니다.

유니티 예제 프로젝트에는 간단한 창고 환경과 완전히 구현된 Turtlebot3 주행 로봇, 시뮬레이션 LIDAR 및 모터 컨트롤러, 그리고 Nav2 및 slam_toolbox 스택을 시뮬레이션에서 연습시키는 데 필요한 ROS2 종속성이 모두 포함된 이미지를 구축하는 Docker 파일이 포함되어 있습니다. Nav2의 단계적 튜토리얼은 ROS2 또는 SLAM 알고리즘으로 작업해 본 적이 없는 경우에 유용한 컨텍스트를 제공합니다. Unity에서 예제 프로젝트를 실행해 보고 싶다면, 프로젝트를 시작하고 실행하는 데 필요한 모든 지침이 저장소에 있습니다.

Left: RViz display of ROS 2 messages generated in and sent by Unity. Right: TurtleBot 3 performing SLAM and autonomous navigation in Unity.
왼쪽: Unity에서 생성하여 전송한 ROS2 메시지가 표시된 RViz 창 오른쪽: Unity에서 SLAM 및 자율 내비게이션을 수행하는 TurtleBot3

지금 시작하기

Unity를 처음 사용하는 로보틱스 개발자 또는 로보틱스를 처음 접하는 Unity 개발자라면 ROS2 통합을 사용하여 Robotics-Nav2-SLAM으로 자율 내비게이션을 수행해 보세요. 이는 유니티의 로보틱스 툴과 강력한 패키지를 통합하여 구축할 수 있는 사례 중 하나의 작은 예시에 불과합니다. 아울러 Unity Robotics 팀은 확장성과 규모 가변성에 중점을 두어 일반적인 로보틱스 사용 사례를 명시적으로 지원하는 기능을 지속적으로 구축하여 릴리스하고 있습니다.

또한 유니티는 올해 ROSCon 워크샵을 개최하여 Nav2-SLAM-Example을 확장하고, 특별한 역할을 맡은 다수의 로봇이 협업을 통해 구체적인 과제를 수행할 수 있도록 지원할 예정입니다.

Is this article helpful for you?

Thank you for your feedback!