1조-Five Guys
프로젝트 개요
기술개발 과제
국문 : 증강현실(AR) 기반 로봇팔 시뮬레이터
영문 : Augmented Reality(AR) Based Robotic Arm Simulator
과제 팀명
Five Guys
지도교수
황면중 교수님
개발기간
2024년 9월 ~ 2024년 12월 (총 4개월)
구성원 소개
서울시립대학교 기계정보공학과 20194300** 조**(팀장)
서울시립대학교 기계정보공학과 20184300** 문**
서울시립대학교 기계정보공학과 20194300** 이**
서울시립대학교 기계정보공학과 20194300** 최**
서울시립대학교 기계정보공학과 20194300** 최**
서론
개발 과제의 개요
개발 과제 요약
로봇을 실제 환경에서 실험하기 전에 동작과 작업 영역을 확인하고 충돌 사고를 예방하기 위해 시뮬레이션 테스트가 필요하다. 이 프로젝트는 AR 기술을 활용하여 가상 실험 환경을 구축하고, 로봇을 실제 환경에서 실험하기 전에 증강현실로 미리 테스트하여 사고를 예방하는 시스템이다. 기존 시뮬레이터의 단점을 보완하여, 스마트폰 카메라로 3D-Depth 맵을 생성하고 사용자가 직접 맵을 구현할 필요가 없다. 사용자는 AR로 로봇을 제어하고, VR box를 통해 움직임을 확인하며, 충돌 발생 시 위치 정보를 제공받는다.
개발 과제의 배경
로봇을 실제 환경에서 실험하기 이전에 로봇의 동작과 작업 영역을 확인하고 충돌 사고 등을 예방하기 위해 시뮬레이션 환경에서의 테스트가 선행되어야 한다. 기존의 시뮬레이터는 실험 환경이 바뀔 때마다 시뮬레이션 환경을 다시 만들어야 하는 단점이 있다.
개발 과제의 목표 및 내용
이 프로젝트는 AR 기술을 활용한 가상 실험 환경을 구축하는 것이다. 로봇 등 다양한 기술을 실제 환경에서 실험하기 전에 증강현실로 미리 실험하여 충돌 등의 사고를 예방하는 시스템이다. 시스템은 스마트폰 카메라를 통해 실험 환경의 3D-Depth 맵을 생성하며, 사용자가 직접 맵을 구현할 필요가 없다. 사용자는 AR로 불러온 로봇을 명령에 따라 제어하고, 스마트폰과 결합한 VR box를 통해 그 움직임을 확인할 수 있다. 또한, 실험 과정에서 충돌이 발생하면 충돌 발생 위치에 대한 정보를 제공받을 수 있다.
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
- 로봇팔 시뮬레이터
- MATLAB/SIMSCAPE
- MATLAB의 Robotics Tool Box[1]를 이용해 로봇의 기구학, 동역학 등과 관련된 라이브러리를 불러올 수 있으며 로봇 모델링 또한 가능하다. 이에 더해 MATLAB의 SIMSCAPE[2]를 사용하면 Multibody를 활용해 다물체에 대한 모델링 환경을 제공하며 힘, 토크, 마찰 등과 같은 물리적 요소를 추가하여 실제 동작과 같은 모델을 구현할 수 있다. 추가적으로 SIMSCAPE의 특성상 직관적으로 제어 시스템을 구성할 수 있으며 MATLAB과 연동하여 데이터의 처리가 편리하다는 이점이 있다. 시뮬레이션의 경우 라그랑주 역학 및 뉴턴-오일러 방정식을 기반으로 하기 때문에 정밀한 시뮬레이션이 가능하다.
- GAZEBO
- GAZEBO는 실제 로봇의 운영에 있어 대중적으로 사용하는 미들웨어 ROS(Robot Operating System)와 통합이 용이하다. 이를 바탕으로 시뮬레이션과 실제 로봇 제어를 동시에 수행할 수 있다. 이에 더해 플러그인 아키텍처를 사용하기 때문에 카메라, 로봇 모델 등 시뮬레이션에서 활용할 수 있는 다양한 요소의 추가 및 수정이 편리하다. 또한 GAZEBO는 오픈 소스이기 때문에 무료로 사용할 수 있으며 대규모 오픈 소스 커뮤니티를 통해 지원을 받을 수 있다는 이점이 있다. 물리 엔진의 경우 ODE(Open Dynamics Engine), Bullet, DART(Dynamic Animation and Robotics Toolkit), Simbody 등 여러 물리 엔진을 지원하기 때문에 시뮬레이션의 목적에 적합한 동작을 구현할 수 있다.
- Unity
- 설계가 될 당시 게임 엔진을 목표로 하였지만 최근 로봇공학 및 시뮬레이션에 사용되고 있다. 로봇공학 분야에서도 적극 사용할 수 있도록 ROS와 통합을 위한 플러그인을 지원하며 이를 바탕으로 실제 로봇과 동일한 조건에서 제어 알고리즘을 검증할 수 있다. 추가적으로 AI와 머신러닝을 통합할 수 있는 환경을 제공하여 로봇팔이 자율적으로 학습하는 강화 학습 환경을 구성할 수 있으며 VR과 AR을 통합할 수 있는 기능까지 제공된다. PhysX 물리 엔진을 사용하여 충돌 감지, 힘 및 토크 계산, 마찰을 정밀하게 모델링할 수 있으며 고품질 3D 그래픽까지 활용되면 매우 사실적인 환경을 제공할 수 있다.
- Isaac Sim
- NVIDIA의 Omniverse 플랫폼을 기반으로 한 로봇 시뮬레이션 소프트웨어이며 Cloud환경 및 고성능 GPU를 기반으로 물리 계산을 빠르게 수행하며 시뮬레이션의 속도와 정확성을 극대화한 환경이다. 이러한 특징을 기반으로 로봇팔의 자율 학습, 딥러닝과 강화 학습 알고리즘 지원 등 AI와 머신러닝에 최적화된 시뮬레이션 환경을 제공한다. 물리 엔진으로는 PhysX 엔진을 사용하여 충돌 감지, 힘 및 토크 계산, 마찰을 정밀하게 모델링할 수 있다.
- 증강현실
- Unity
- 내장 물리 엔진인 PhysX 엔진을 바탕으로 충돌 감지 및 상호 작용 구현에 유리하며 무료 라이센스, 튜토리얼 제공, 다양한 인터페이스 제공으로 일반인이 접근하기 용이하다는 장점을 갖고 있다. 하지만 복잡한 기능 구현을 위해서는 추가적인 학습이 필요하다는 단점이 존재한다.
- Unreal Engine
- 내장 물리 엔진인 Chaos를 통해 복잡한 AR 시뮬레이션 환경에서도 우수한 성능을 보이는 것이 특징이다. Unity와 마찬가지로 무료 라이센서와 다양한 온라인 학습 자료가 제공되기 때문에 접근성이 좋지만 처음 사용법을 익히는 데에는 비교적 시간이 오래 걸린다는 단점이 있다.
- ARkit(Apple)
- 무료로 제공되며 Apple 생태계에 최적화되어 있어 Apple 장치를 통해 VR 또는 AR을 구현하기 위해 적합한 소프트웨어이다. 하지만 Apple 생태계에 최적화된 만큼 Apple 장치가 없는 경우 사용이 제한적이며 ARKit 내장 물리 엔진을 사용한다는 특징이 있다.
- ARCore(Google)
- ARKit과 달리 Android 생태계에 최적화되어 있는 소프트웨어이다. 이에 따라 Android 장치가 없는 경우 사용이 제한적이라는 단점이 있으며 Unity, Unreal Engine과 통합하며 물리 엔진 구현이 가능하다는 특징이 있다.
- 3D Mapping
- Phtogrammetry
- 다수의 2D 사진을 이용해 3D 구조를 재구성하는 방법으로 대규모 지역을 빠르게 맵핑할 수 있다는 특징이 있다. 하지만 주변 환경에 많은 영향을 받으며 특히 복잡한 표면의 경우 표현이 제한적이라는 단점이 있다.
- SLAM
- 이동 중에도 데이터 수집 및 맵핑이 가능하여 동적 환경에서 유리하며 이에 따라 다양한 로봇 플랫폼에서 사용하기에 적절하다. 하지만 맵 구성에 있어 계산량이 많아 처리 속도가 느릴 수 있으며 센서 품질에 따라서 정확도가 크게 달라진다는 특징이 있다.
- RGB-D SLAM
- RGB 카메라와 Depth 센서를 함께 사용하여 비교적 정확한 지도를 생성할 수 있으며 실시간으로 깊이 정보를 처리할 수 있어 즉각적인 피드백 및 환경 인식이 가능하다는 특징이 있다. 하지만 Depth 센서의 측정 범위가 짧아 먼 거리의 물체는 정확한 감지가 어려우며 조명 조건에 영향을 받을 수 있다는 단점이 있다.
기술 로드맵
- 로봇팔 시뮬레이터
- 1980년대
- 로봇팔의 기구학, 동역학 및 제어, 시뮬레이션의 연구 단계로 이론적인 기초를 설립하는 시기이다. 이 시기에는 CAD 시스템과 함께 기구학 시뮬레이터를 활용하여 시뮬레이션을 진행하였다.
- 1990년대
- 로봇팔의 기구학, 동역학 및 제어, 시뮬레이션의 이론이 발전하는 단계이며 MATLAB/Simulink[12]를 활용하여 2D/3D 시각화가 가능한 로봇 시스템의 제어 알고리즘 개발 및 테스트를 진행하였다.
- 2000년대
- 여러 물리 엔진의 기본이 되는 물리 기반 동역학 시뮬레이션 이론이 등장하였다. 특히, 현재에도 대중적으로 활용되는 V-REP(Virtual Robot Experimentation Platform)과 GAZEBO가 등장하며 해당 소프트웨어를 활용해 로봇 시뮬레이션을 진행하였다.
- 2010년대
- ROS(Robot Operation System)이 등장하며 로봇에 접근하기 용이한 환경이 조성되었으며 GAZEBO와 ROS의 통합으로 시뮬레이션에 대한 접근성이 증대되었다. 추가적으로 MoveIt과 같이 시뮬레이션에서 경로 계획과 제어를 용이하게 해주는 오픈 소스가 등장하였다.
- 2020년대
- 시뮬레이션을 기반으로 데이터 셋을 생성하고 학습을 진행하는 환경이 만들어졌다. 따라서 로봇 시뮬레이션과 머신러닝, AI를 통합할 수 있는 Issac Sim과 같은 환경이 개발되었으며 시뮬레이션을 바탕으로 학습한 내용을 현실에서도 사용할 수 있도록 현실과 시뮬레이션 환경 동기화와 관련된 연구가 진행되었다.
- 현재&미래
- 디지털 트윈을 활용하여 실제 로봇과 가상 시뮬레이터가 실시간으로 상호작용할 수 있는 기술이 개발되고 있으며 클라우드 기반 고성능 컴퓨팅을 활용하여 더욱 정밀하고 사실적인 시뮬레이션 개발이 진행되고 있다.
- 증강현실(Augmented Reality)
- 1990년대
- 1968년 Head-Mounted-Display 기술이 개발된 것이 증강현실의 시작이며 1992년 산업 생산 공정에서 AR 응용 가능성을 제시한 논문[13]이 발표되며 ‘증강현실(Augmented Reality)’ 이라는 용어가 대중적으로 사용되고 개발되기 시작하였다.
- 2000년대
- ARToolkit 오픈소스 소프트웨어가 등장하였으며 해당 소프트웨어가 뷰포인트 추적 기술을 제공하며 AR 기술 개발이 확대되었다. 또한 “A Survey of Augmented Reality” 논문[14]에서 AR의 과거, 현재, 미래에 대해 리뷰를 진행하며 AR 기술 개발이 널리 알려지게 되었다.
- 2010년대
- 모바일 AR 애플리케이션 제작시 활용되는 Vuforia[15]가 출시되며 대중의 AR 기술 접근이 증가하였으며 모바일 AR 기술 개발이 확대되었다. 또한 Google에서는 Google Glass를 통해 AR을 안경에 접목시키는 기술을 보여주었으며 Unity, Unreal Engine이 등장하며 AR 개발 툴킷에 물리 엔진 적용이 확대되고 실제와 같은 AR 구현에 힘쓰게 되었다.
- 2020년대
- Microsoft에서는 HoloLens 관련 특허[16]를 등록하였으며 이는 공간 맵핑, 제스처 인식, 시각 데이터 통합 등의 기술을 담고 있으며 이를 바탕으로 MR(Mixed Reality) 구현이 본격적으로 시작되었다. MR은 현실과 가상을 혼합하여 더 발전된 가상 현실을 만드는 것을 의미한다.
- 현재&미래
- 현재에는 객체 인식, 공간 인식, 제스처 인식에 AI를 접목하여 더 정확하고 자연스러운 AR을 생성하는 연구가 진행되고 있으며 이후에는 AI와 MR의 접목을 통해 현실과 가상의 구분이 어려운 가상현실이 생성될 것으로 보인다.
- 3D Mapping
- ~1990년대
- 3D Mapping에 대한 초기 개념이 정립되고 개념의 발전이 진행되는 시기로 전통적인 지리적 측량 기법을 사용하여 수작업 계산을 통해 3D 모델을 생성하였다.
- 1990년대
- LiDAR 기술이 개발되며 고정밀의 3D Mapping이 가능해졌으며 Photogrammetry가 발전하여 항공 사진, 위성 이미지를 기반으로 3D 모델링이 가능해졌다.
- 2000년대
- 디지털 이미지, 컴퓨터 비전 기술이 발전하며 사진을 기반으로 한 3D 모델링이 더욱 정밀해졌으며 SLAM(Simultaneous Localization And Mapping) 기술이 발전하여 본격적인 3D Mapping이 진행되었다.
- 2010년대~현재
- RGB-D 카메라의 도입으로 실시간 3D Mapping 및 정확한 3D 모델링이 가능한 수준으로 기술이 발전하였으며 AI를 활용하여 물체 인식, 특징 추출, 데이터 분류 등을 통해 정확한 모델 구축이 가능해졌다.
- 현재&미래
- 클라우드 컴퓨팅을 통한 데이터 공유 및 실시간 처리, 사물 인터넷을 통한 정보수집을 이용해 더욱 빠르고 정밀한 3D Mapping을 구현하고 있다.
특허조사 및 특허 전략 분석
- Visualization Of a Robot Motion Path and Its Use in Robot Path Planning(US20240083027)
- AR을 활용하여 로봇의 모션 및 경로를 시각화하고 경로 길이 최소화, 로봇 수명 극대화 등에 초점을 맞춘 경로 최적화를 진행하는 기술을 제안하였다.
- Occlusion and Collision Detection for Augmented Reality Applications(US20220230383)
- AR 환경에서 가상 객체와 실제 객체의 위치를 파악하고 충돌을 감지하는 기술을 제안하였다.
- 특징과 차별점 비교
항목 Visualization Of a Robot Motion Path and Its Use in Robot Path Planning(US20240083027) Occlusion and Collision Detection for Augmented Reality Applications(US20220230383) 특징 AR 활용
로봇 모션 및 경로 시각화
경로 최적화가 초점AR 활용
가상 객체, 실제 객체 탐지
객체간 충돌 감지특허와 비교한 본 프로젝트의 차별성 실제 환경에 대한 Mapping 존재
실제 환경과의 충돌 고려
충돌 시각화가 초점실제 환경 탐지 및 Mapping
복잡한 가상 객체 활용
- 특허 전략
- 본 프로젝트는 3D 맵핑, AR 매니퓰레이터 제어, 가상 환경과 실제 환경의 통합을 주된 기술로 진행된다. 관련하여 3D 맵핑과 AR 매니퓰레이터 제어는 특허가 제시되어 널리 사용되고 있으므로 해당 기술의 경우 상호 라이선스를 통해 협력관계를 구축한다. 한편, 3D 맵핑과 AR 매니퓰레이터 제어를 바탕으로한 가상 환경과 실제 환경의 통합 기술을 특허 개발을 통해 특허 출원을 진행한다.
시장상황에 대한 분석
시장 분석
- AR 매니퓰레이터 인터페이스 시장은 아직 활성화되지 않았지만 관련 연구가 증가하고 있는 추세이다. 증강현실 분야에 대한 연구는 활발해지고 있으며, 4차 산업혁명에 따른 컴퓨팅 속도 향상, 카메라 발전, 새로운 알고리즘 등 기술 발전으로 인해 전반적인 AR 시장이 확대되고 있다. 한편, 로봇은 일상생활에서 점점 더 보편화되고 있으며, 기존의 산업 내 역할을 넘어 재활 로봇, 사회적 로봇, 이동/항공 로봇, 다중 로봇 시스템과 같은 다양한 분야로 확장되고 있다. 이런 흐름 속에서 로봇 공학에서의 AR은 상호작용의 효율성과 직관성을 향상시켜 인간-로봇 상호작용(HRI)을 변화시키고 있다.
- 아래 그림을 통해 1995년부터 2019년까지 로봇 제어 및 계획 분야에서 AR 및 VR 연구가 꾸준히 증가했음을 알 수 있다. 이는 AR 및 VR 연구의 증가는 로봇 공학 분야에서 AR 기반 애플리케이션에 대한 관심과 잠재력이 커지고 있음을 나타낸다.
경쟁제품 조사 비교
- AR 매니퓰레이터 인터페이스 시장이 아직 완전히 형성되지 않았기 때문에 현재 본격적인 상용제품이 아닌 경쟁제품은 연구단계에 있다. 다음은 두 가지 주목할만한 연구이다.
- Programming Robotic Manipulator using Augmented Reality
- VR 헤드셋을 사용하여 손 제스처로 실제 로봇 위에 겹쳐져 있는 가상 로봇의 모션을 조작한다. Message 명령을 통해 현재 가상 로봇의 모션을 실제 로봇이 따라가는 방식으로 구현 되어있다. 여러 컨피규레이션을 store 해두고 한 번에 Message 명령으로 보내 연속동작을 수행하는 기능도 제공한다.
- Robot Programming Through Augmented Trajectories
- 이 연구에서는 VR 헤드셋을 사용하여 손 제스처로 trajectory를 생성할 수 있다. 생성한 trajectory 위를 가상 로봇만 따르게 하는 프리뷰 기능을 제공한다. 가상 로봇은 실제 로봇과 겹쳐져 있어 실제 로봇의 움직임을 미리 볼 수 있는 효과가 있다. trajectory 생성 방식은 평면, 곡면을 인식하여 면 위에 trajectory 경유점을 지정하는 방식이다.
Programming Robotic Manipulator using Augmented Reality | Robot Programming Through Augmented Trajectories | 본 프로젝트 | |
---|---|---|---|
사용 기기 | VR 헤드셋 | VR 헤드셋 | 스마트폰, 노트북 |
조작 방법 | 손 제스처 | 손 제스처 | 스마트폰 터치, 노트북 키보드 |
프리뷰 기능 | O | X | O |
모션 조작 기능 | O | X | X |
경로 계획 기능 | X | O | X |
충돌 검사 기능 | X | X | O |
특징/성능 matrix를 통해 분석한 본 제품의 강점은 실시간 환경변화를 반영하여 충돌체크를 수행하는 기능과 수동으로 실제 환경을 시뮬레이션할 필요가 없어 시간이 절약되는 효과이다.
마케팅 전략 제시
범주 | 내용 |
---|---|
강점(Strengths) |
- 실시간 환경 반영 |
약점(Weaknesses) |
- 3D Mapping 정확도 |
기회(Opportunities) |
- 선점자 이점 |
위협(Threats) |
- 잠재적 경쟁자 |
- - SO 전략(강점-기회)
- 얼리 어답터(로봇 공학 연구소, 연구 기관 또는 주요 제조 공장)와 협력하여 실제 응용 분야에서 제품의 장점을 보여주는 자세한 사례 연구를 개발한다. 실시간 환경 반영 및 시간 절약 이점이 어떻게 로봇 연구 개발의 효율성을 높이고 오류를 줄이는지 강조한다. 이러한 사례 연구는 추가 파트너십을 유치하고 시장에서 신뢰도를 구축하는 강력한 마케팅 도구 역할을 할 수 있다. 또한, 할인된 가격이나 사용자 정의 옵션 등 얼리 어답터에게 인센티브를 제공하여 신속한 채택을 장려하고 제품 개선을 위한 중요한 피드백을 수집한다.
- - ST 전략(강점-위협)
- 잠재적인 경쟁업체가 시장에 진입하면 제품의 주요 차별화 요소인 실시간 환경 반영과 시간 절약의 장점을 마케팅 자료에 강조하여 경쟁력을 유지한다. 또한 새로운 기능, 소프트웨어 업데이트 및 성능 향상을 지속적으로 도입하는 지속적인 제품 개선 프로그램을 개발한다.
- - WO 전략(약점-기회)
- 낮은 3D Mapping 성능 문제를 해결하기 위해 제품의 호환성을 개선하는 데 중점을 둔다. LiDAR 센서가 포함되어 있는 iPhone Pro 시리즈나 VR헤드셋 플랫폼을 모두 지원하는 멀티 플랫폼 앱을 개발하면 3D Mapping 성능이 향상될 수 있다. 이를 통해 더 넓은 시장 부문으로의 문을 열면서 값비싼 하드웨어에 대한 의존도를 줄이고 더 넓은 시장 침투를 위한 중요한 기회를 포착할 수 있다.
- - WT 전략(약점-위협)
- 조명 변화와 거리 정보 부족 문제를 해결하기 위해 LiDAR 센서가 포함되어 있는 iPhone Pro 시리즈나 VR헤드셋 플랫폼을 모두 지원하는 멀티 플랫폼 앱을 개발한다. 이를 통해 잠재적 경쟁자가 진입했을 때도 기술적 우위를 확보할 수 있다.
개발과제의 기대효과
기술적 기대효과
- 이 프로젝트는 실제환경에서 로봇 실험을 진행하기 전에 증강현실(AR)로 미리 로봇의 동작과 주변 물체와의 충돌 여부를 확인함으로써, 로봇의 충돌 방지 및 작업 안정성을 사전에 확인할 수 있는 기술적 성과를 기대할 수 있다. 스마트폰 카메라를 통해 실험 환경의 3D Depth-맵을 생성하고, 이후 실험환경의 변화에 따라 3D Depth-맵을 최신화하여 시뮬레이션 상에서 따로 맵을 구현할 필요 없이 로봇의 움직임을 실시간으로 확인함으로써 개발 효율이 향상된다. 이에 따라 개발 기간 단축 및 비용 절감을 예상할 수 있으며, 테스트 중 발생할 수 있는 장비 손상 위험을 최소화할 수 있다.[22]
경제적, 사회적 기대 및 파급효과
- 경제적으로는 시뮬레이션 환경을 구축하는 데 필요한 인력과 자원을 절약할 수 있으며, 이로 인해 관련 연구개발 비용이 절감될 것으로 예상된다. 또한, 충돌로 인한 로봇이나 실험 환경의 파손을 방지함으로써 유지보수 및 장비 교체 비용 절감 효과도 기대된다. 이러한 기술은 로봇 제조업 및 자동화 산업에서의 생산성과 경쟁력 강화를 도모하여, 관련 시장 규모의 성장에 기여할 가능성이 있다.[23]
사회적 측면에서는, 안전한 실험 환경을 조성함으로써 로봇 기술 도입 시 발생할 수 있는 물리적 위험 요소를 줄일 수 있다. 이는 산업 현장에서의 작업자 안전성을 높이고, 궁극적으로 산업재해를 감소시키는 효과를 가져올 수 있다. 환경적인 측면에서 실험 중 파손으로 인한 폐기물 발생을 줄이고, 에너지 소모와 자원 낭비를 최소화함으로써 환경 보호에 기여할 수 있다.
기술개발 일정 및 추진체계
개발 일정
구성원 및 추진체계
- 구성원 역할
- 추진 계통도
설계
설계사양
제품의 요구사항
번호 | 요구사항 | D or W | 중요도 |
---|---|---|---|
1 | 휴대폰과 컴퓨터 사이의 통신이 원활해야 함. | D | 대 |
2 | 휴대폰의 자세추정이 정확하게 이루어져야 함. | D | 대 |
3 | 충돌 감지가 정확해야 함 | D | 대 |
4 | 렌더링 된 로봇의 움직임이 자연스러워야 함. | D | 중 |
5 | 렌더링 된 로봇의 움직임이 실제와 유사해야 함. | D | 중 |
6 | 다양한 로봇과 소프트웨어에 대해 적용이 가능해야 함. | W | 소 |
7 | 인터페이스를 사용함에 있어 불편함이 없어야 함. | W | 소 |
항목 | 세부 항목 | 설명 |
---|---|---|
편의성 | 가시성 | 화면에 렌더링된 로봇의 움직임이 자연스러워 실제 환경과의 어색함이 없어야 함. |
사용 범용성 | 다양한 로봇에 대해 사용이 가능하며, 로봇을 동작시키는 어떠한 소프트웨어라도 적용 가능해야 함. | |
조작 편의성 | 사용자가 인터페이스를 통해 다양한 기능을 사용할 때 불편함이 없어야 함. | |
성능 | 추적 정확도 | 휴대폰의 자세 추정을 기반으로 렌더링된 로봇의 자세가 전역 좌표계 상에서 고정되어야 함. |
충돌 감지 정확도 | 렌더링된 로봇과 주변의 실제 지형지물 간의 충돌을 정확히 감지해야 함. | |
현실 재현도 | 렌더링된 로봇의 움직임이 실제 로봇의 움직임과 유사해야 함. | |
경제성 | 효율성 | 시스템 개발에 필요한 비용이 저렴해야 함. |
설계 사양
항목 | 기준 | 설계사양 |
---|---|---|
가시성 | 80% 이상의 사용자 만족도 | AR을 통해 실제환경에 렌더링 된 로봇의 모습이 자연스러워야 함. (예: 실제 로봇이 책상 위에 놓여 있다면 렌더링 된 로봇 또한 책상 위에 자연스럽게 렌더링 되어야 함) AR을 통해 실제환경에 렌더링 된 로봇이 동작할 때 움직임이 끊김이 없고 자연스러워 실제환경과의 어색함이 없어야 함. |
사용자 친화도 | 80% 이상의 사용자 만족도 | 사용자가 AR환경에서 간편한 입력장치를 사용하여 인터페이스를 이용함에 있어 불편함이 없어야 함. |
휴대폰 자세 추정 정확도 | 위치오차 1cm 이하 및 각도오차 3° 이하 | 로봇이 렌더링 될 자세는 출력장치인 휴대폰의 자세에 의존적이므로 휴대폰 자세추정의 오차를 최소화해야 함. 휴대폰에 내장된 IMU센서를 사용하여 자세추정을 진행하며 하드웨어적인 한계 및 예외상황을 고려하여 위치오차 1cm 이하, 각도오차 3° 이하를 목표로 설정하여 구현. |
현실 재현도 | 조인트 오차 1 이하 | 가상 로봇이 실제 로봇의 움직임을 잘 재현해야 함. |
로봇과 장애물간의 충돌 감지 정확도 | 충돌 감지 정확도는 95% 이상, 충돌 위치의 정밀도는 5cm 이하 | 특정 동작이 만약 실제 로봇이 수행하였을 때 주변 지형지물과의 충돌이 발생하는 동작이라면, AR을 통해 렌더링 된 로봇은 해당 동작을 수행함에 있어서 충돌이 발생하는 동작이라는 사실을 95% 이상의 정확도로 밝혀내야 함. 충돌이 발생하는 동작임을 밝혀냈을 때 충돌이 발생하는 위치는 5cm 이하의 정밀도를 가져야 함. |
개념설계안
- 출력장치
- 개발환경
- 인식장치
- 3D Mapping
이론적 계산 및 시뮬레이션
- 변환행렬 및 관계
- 모델링 객체를 스마트폰의 화면 상에 표시하기 위해서는 모델링 객체의 좌표계, 스마트폰의 카메라 좌표계, Unity의 가상 환경 좌표계 사이의 관계가 필요하다. 그 관계를 변환행렬이라고 하며 이를 구하면 아래 그림의 과정에 따라 총 4단계를 거쳐 모델링 객체가 스마트폰 화면에 나타나게 된다.
- 먼저 모델이 가지고 있는 모델 좌표계를 월드 변환을 통해 Unity의 가상 환경 좌표계에 배치한다. 가상 환경에 배치된 모델들을 AR 기기의 카메라 기준 좌표계로 배치하기 위한 뷰 변환을 단계로 하여 순차적으로 이뤄진다. 행렬이므로 한 번에 계산이 가능하다.
- 회전행렬
- 기준 좌표계 관점에서 바라본 대상 좌표계의 회전 정도이다. 아래 그림을 예로 들면 기준 좌표계인 그림의 xyz 좌표계의 관점에서 봤을 때 주전자 모델링의 회전 정도이다.
- 먼저 모델이 가지고 있는 모델 좌표계를 월드 변환을 통해 Unity의 가상 환경 좌표계에 배치한다. 가상 환경에 배치된 모델들을 AR 기기의 카메라 기준 좌표계로 배치하기 위한 뷰 변환을 단계로 하여 순차적으로 이뤄진다. 행렬이므로 한 번에 계산이 가능하다.
- 동차 변환 행렬
- 좌표계간의 이동을 표현한 동차 좌표에 회전 행렬을 추가하면 행렬 간의 회전, 위치 변환을 곱셈으로 표현할 수 있다.
- 이를 모델링 객체의 좌표변환 과정에 적용하면 Unity의 가상 환경의 좌표계 관점에서 본 모델링 객체 좌표계의 동차 변환 행렬(world transform matrix), 카메라 좌표계의 관점에서 본 가상 환경 좌표계의 동차 변환 행렬(view transform matrix)이 필요하다. world transform matrix는 이미지 자세 추정, view transform matrix는 IMU 칼만필터 과정을 통해 얻을 수 있다. world transform matrix를 T_virtual^modeling, view transform matrix를 T_camera^virtual라 하면 카메라 좌표계의 관점에서 본 모델링 객체 좌표계의 회전과 위치 값은 아래 식의 행렬곱의 결과 T_camera^virtual에 표현된다.
- 이미지 자세 추정
- 이미지 자세 추정은 이미지 특징 감지, 이미지 특징 매칭, 호모그래피 계산, 이미지 트래킹으로 이루어진다.
- IMU 칼만필터(위치추정)
- IMU 센서와 위치 추정 개요
- IMU 센서는 가속도계와 자이로스코프로 구성되어 있으며, 이를 통해 가속도와 각속도를 측정한다. 이러한 데이터를 시간에 따라 적분하면 속도와 위치를 추정할 수 있다. 그러나 센서 노이즈와 바이어스 때문에 직접적인 적분은 누적 오차를 발생시켜 정확한 위치 추정이 어렵다.
- Forward Kinematics
- 로봇팔에서 n-1번째 조인트와 n번째 조인트 사이의 관계를 표현 위해 4×4 동차 변환 행렬을 사용한다. 동차 변환 행렬은 아래 식과 같으며, 이때 r_11 ~ r_33은 조인트 사이의 회전 변환을 나타내고 p_1 ~ p_3은 조인트 사이의 위치 변환을 나타낸다
- 위 식의 각 원소를 구하기 서로 인접한 좌표의 회전 또는 전이 관계를 표현하는 Denavit-Hartenberg 표현방식을 사용한다. Denavit-Hartenberg는 아래와 같은 변수로 이루어져 있으며 이들을 D-H변수라 한다.
- 각 링크에서의 D-H 변수들을 찾은 후 아래 식을 적용하면 n-1번째 조인트와 n번째 조인트 사이의 관계를 찾을 수 있다.
- A_0^1~A_(n-1)^n을 바탕으로 로봇팔의 0번째 조인트부터 n번째 조인트의 변환행렬을 구하면 아래 식과 같다. 이때, R_0^n은 0번째 조인트부터 n번째 조인트까지의 회전 행렬이며 P_0^n은 0번째 조인트부터 n번째 조인트까지의 위치 벡터이다. 이를 바탕으로 설정한 좌표축은 밑의 그림과 같다.
- 위 그림에서 B,0^',1^',2^',3^',4'의 좌표축은 조인트 간의 모든 변환을 나타내기 위해 추가하였다. 이를 바탕으로 K1로봇팔의 D-H변수를 구하면 아래 표와 같다.
- Meshing(메쉬 생성)
- 깊이 추정 및 포인트 클라우드 생성
- 메쉬 생성
- 삼각분할
- 2D 이미지를 통해 얻은 포인트 클라우드를 삼각형들로 연결하여 메쉬를 구성한다. 일반적으로 각 삼각형의 내접원이 다른 점을 포함하지 않도록 하여 최대화된 최소 각을 보장한다.
- Mapping(정합 및 매핑)
상세설계 내용
소프트웨어 설계
유스케이스
유스케이스 설명
유스케이스 설명 Meshing AR Foundation 라이브러리를 이용하여 주변 환경을 충돌 가능한 메싱(Meshing) 정보로 매핑한다. Remeshing 기존의 메싱 정보를 초기화하고 주변 환경을 다시 매핑한다. Image Tracking Based Place 카메라를 통해 이미지의 자세를 추정하여 렌더링할 로봇팔을 해당 위치에 배치한다. Colision Check 메싱된 맵 정보와 렌더링된 객체 간의 충돌 여부를 확인하고 사용자에게 알린다. Joint Set Rendering 로봇팔 컨트롤 시스템으로부터 받은 조인트 명령에 따라 로봇팔의 조인트를 조정하고 렌더링한다. Trajectory View 로봇팔 컨트롤 시스템으로부터 받은 조인트 리스트를 기반으로, 조인트 리스트의 특정 인덱스에서의 움직임을 재생하거나 정지할 수 있는 기능을 제공한다.
또한 해당 조인트 값에 해당하는 로봇팔 형상을 렌더링하여 시각화한다.Transmit Joint Msg 계산된 로봇팔의 조인트 세트를 스마트폰으로 전송한다. Calculate Joint Msg 사용자가 정의한 트래젝토리 정보를 조인트 명령 세트로 변환한다.
- Meshing
- Trigger
- ‘Mesh’ 화면으로 이동하면 동작한다.
- Requirement
- 전면 카메라를 통해 얻은 2D 이미지, 스마트폰 내부의 IMU 센서를 이용해 얻은 tracking data를 사용해 이미지 내부 픽셀의 depth 정보를 추출한다. 픽셀의 depth 정보를 mesh 객체로 만들기 위해서는 공간을 나누는 voxel size 및 mesh 객체의 크기를 나타내는 block size에 대한 설정이 필요하다. Real-world와 로봇팔 객체의 충돌을 적절히 감지하기 위해서는 real-world에 대한 meshing이 세밀할수록 좋지만 이는 앱 성능을 저하시킨다. 따라서 real-world의 voxel size는 0.01 m로 설정한다. 한편, voxel size에 따라 앱 성능 저하를 방지하기 위해 3D meshing map 업데이트 주기는 5hz로 설정한다. 생성할 mesh block의 size 또한 real-world의 인지에 영향을 미치기 때문에 비교적 세밀한 0.02 m로 설정한다.
- Function
- Depth 정보, voxel size, block size를 바탕으로 real-world에 대한 3D meshing map을 생성한다. 각 mesh 객체는 block size와 같은 크기를 가지고 있으며 각 객체마다 renderer, collider가 있어 사용자가 원하는 rendering을 통해 mesh를 생성할 수 있고 내부 객체와의 충돌을 감지할 수 있다.
- Result
- Meshing의 결과로 3D meshing map이 생성되며 이를 객체 형태로 저장한다. 좌측의의 원본 이미지는 real-world에 대한 2D 이미지이다. 해당 이미지에서 추출한 depth 정보, voxel size, block size를 기반으로 생성된 3D Meshing Map을 생성하면 가운데 이미지와 같다. 한편, 가운데 이미지의 각 mesh 객체에 대해 거리에 따라 색이 달라지는 renderer를 적용하면 우측 이미지와 같다.
- Remeshing
- Trigger
- ‘Mesh’ 화면에서 ‘Remeshing’ 버튼을 누르면 동작한다.
- Requirement
- Real-world에 대한 3D meshing map이 있는 경우 기능이 동작하며, 의도와 다르거나 불필요한 3D meshing map이 있는 경우 사용하기에 적절하다.
- Function
- Meshing을 마친 3D meshing map을 모두 삭제하고 전면 카메라를 통해 얻은 real-world에 대한 meshing을 시작한다.
- Result
- ‘Remeshing’ 버튼이 눌린 이후부터 ‘MeshDone’ 버튼이 눌릴 때까지 사용자의 전면 카메라를 통해 얻은 real-world에 대해 meshing을 진행한 3D meshing map이 저장된다.
- Image Tracking Based Place
- Trigger
- Meshing 및 Remeshing 기능에서 “MeshDone” 버튼을 누른 이후 동작한다.
- Requirement
- 이미지의 자세를 추정하여 해당 자세에 로봇을 렌더링 해야 하기 때문에 자세 추정에 용이한 특징점이 많은 이미지를 선택하였다. 해당 이미지를 Unity상에서 XR->Reference Image Library에 업로드함으로써 이를 추정하고자 하는 이미지로 설정하였다.
- Function
- 어플리케이션이 실행되는 동안 실시간으로 계속해서 이미지의 자세를 추정하고 이를 로봇 베이스의 자세로 하게 된다면 이미지 자세 추정에 있어서 노이즈가 존재하기 때문에 로봇의 자세가 조금씩 진동하는 문제가 있다. 반대로 어플리케이션을 실행한 상황에서만 이미지 자세 추정을 하고 이를 로봇 베이스의 자세로 하게 된다면 스마트폰의 자세추정에 노이즈가 존재하기 때문에 로봇의 자세가 처음과 비교하여 조금씩 틀어졌을 때 보정하지 못한다는 문제가 있다. 따라서 “PoseEstimate” 버튼을 추가하여 선택적인 이미지 자세 추정을 가능하게 했다. 해당 버튼을 누르면 이미지에 대한 자세 추정이 진행되어 실시간으로 로봇의 베이스가 추정한 이미지의 자세를 가지게 되고, 버튼을 한 번 더 누르면 이미지 자세 추정이 중단되어 로봇의 자세가 조금씩 진동하는 문제를 해결할 수 있다. 그리고 만약 로봇의 자세가 틀어졌다면 다시 버튼을 눌러 보정을 진행하면 된다.
- Result
- 우측 상단, 좌측 하단 사진은 “PoseEstimate” 버튼을 켜서 실시간으로 이미지의 자세를 추정하고 그 자세를 로봇 베이스가 갖도록 한 모습이고 우측 하단 사진은 “PoseEstimate”버튼을 꺼서 이미지 자세 추정을 중단하여 로봇 베이스의 자세가 업데이트 되지 않는 모습이다.
- Collision Check
- Trigger
- ‘Joint Set Rendering’ 및 ‘Trajectory View’ 버튼을 누른 이후 동작한다.
- Requirement
- ‘Mesh’화면에서 얻은 3D meshing map과 ‘Joint set rendering’ 및 ‘Trajectory view’ 기능에서 현재 rendering하고 있는 각 조인트의 각도를 알아야 한다. Unity의 가상 환경 좌표계 기준으로 mesh 객체의 position과 로봇팔 객체의 position이 일치했을 경우 충돌이 일어났다고 판단한다.
- Function
- 저장된 3D meshing map에서 각 mesh 객체의 collider를 통해 mesh 객체의 충돌을 감지할 수 있다. 또한, 현재 rendering하고 있는 각 조인트의 각도 및 로봇팔의 URDF 파일을 통해 로봇팔의 위치를 파악하고 Tag를 설정하여 충돌을 감지할 수 있다. Mesh와 로봇팔의 충돌 감지를 통해 두 객체의 충돌 여부를 판단한다.
- Result
- Mesh와 로봇팔의 충돌 감지가 일어나는 도중 두 객체의 충돌이 확인되면 3D meshing map의 충돌 위치에 충돌이 일어났음을 알리는 표시가 생성된다. 충돌을 검출하기 위해서는 [그림 20]과 같은 meshing 이미지가 필요하다. 이때 [그림 21]와 같이 공 객체를 생성하여 3D meshing map과 객체의 충돌이 발생하면 우측 사진과 같이 이를 알리는 표시가 생성된다.
- Joint Set Rendering
- Trigger
- PC로부터 단일 조인트 명령어를 수신하면 동작한다.
- Requirement
- ‘Joint Set Rendering’이 정상적으로 동작하기 위해서는 몇 가지 조건이 충족되어야 한다. 우선, ‘Meshing’ 작업을 통해 3D meshing map을 갖고 있어야 하며, ‘트래킹 이미지’를 기반으로 로봇팔 객체가 생성되어 있어야 한다. 또한, PC와 사용자의 스마트폰이 동일한 네트워크에 접속되어 있어야 하며, ROS 통신으로 연결되어 있어야 한다.
- Function
- PC를 통해 베이스부터 엔드이펙터까지의 조인트 리스트를 수신하면, 해당 조인트 값들을 이용해 로봇팔 객체의 각 조인트 위치 관계를 계산한다. 이 과정에서는 Forward Kinematics를 활용하며, 계산 결과를 바탕으로 각 링크의 위치와 방향을 재조정한다. 이후, 조정된 상태를 기반으로 아래 사진과 같이 랜더링을 수행한다. 아래 사진은 모든 조인트 값이 0인 리스트를 수신했을 경우의 랜더링 결과이다.
- Result
- PC로부터 수신한 조인트 명령에 따른 로봇의 동작이나 이동 궤적을 사용자가 AR환경에서 확인할 수 있다.
- Trajectory View
- Trigger
- ‘Joint Set Rendering’ 및 ‘Trajectory View’ 버튼을 누른 이후 동작한다.
- Requirement
- ‘Joint Set Rendering’을 통해 동작을 실행한 뒤에 그 동작에 해당하는 조인트 리스트가 저장되어야 한다.
- Function
- PC로부터 수신 받은 동작의 조인트 리스트들을 저장한다. ‘Trajectory View’ 버튼을 누르면 아래 그림과 같이 슬라이드바를 통해 조인트 리스트의 인덱스를 조절하여 해당 동작을 사용자가 다시 확인할 수 있도록 한다.
- Result
- ‘Trajectory View’를 통해 직전에 로봇이 움직인 동작을 다시 확인할 수 있다.
- Transmit Joint Msg
- Trigger
- 해당 기능은 Meshing 및 Remeshing 기능에서 “MeshDone” 버튼을 누른 이후 작동한다.
- Requirement
- ROS 통신을 지원하기 위해 앱과 PC간 ROS 통신을 구현해야 한다. 이를 위해 Unity-Technologies의 ‘ROS-TCP 커넥터’ 패키지를 사용한다. Unity와 ROS 간의 통신을 가능하게 하기 위해 ROS 노드로 실행되는 TCP 엔드포인트가 모든 메시지 전달을 처리한다. Unity 측에서 ROSConnection구성 요소는 TCP 엔드포인트 ROS 노드를 사용하여 서비스를 게시, 구독 또는 호출하는 데 필요한 기능을 제공한다. 이 때 ROS 마스터는 로봇의 조인트 값을 송신할 PC에서 실행되고 TCP 통신이므로 PC와 스마트폰이 같은 와이파이에 연결되어 있어야 한다. ‘ROS-TCP 커넥터’ 패키지를 설치 후 상단 메뉴 바에 Robotics가 된다. Robotics 안의 ROS 설정 창에서 ROS IP Addres설정을 해야 한다. 해당 란에 ROS 통신으로 로봇의 조인트 값을 송신할 PC의 IP 주소를 입력한다. Unity.Robotics.ROSTCPConnector 네임스페이스를 통해 ROS 노드를 초기화하고 Publisher와 Subscriber를 생성할 수 있다. 또한 RosMessageTypes 네임스페이스를 통해 표준 ROS 메시지들을 접근할 수 있다.
- Function
- ROS 토픽 통신을 통해 PC에서 스마트폰 앱으로 로봇의 각 조인트 명령값이 전달된다.
- Result
- ‘Trajectory View’ 혹은 ‘Joint Set Rendering’을 담당하는 노드에 각 조인트 명령값이 저장된다.
- Calculate Joint Msg
- Trigger
- 사용자가 trajectory_msgs/MultiDOFJointTrajectory.msg 메시지를 사용하여 ROS 토픽을 통해 Calculate Joint Msg의 기능을 하는 노드로 데이터를 송신하면 작동한다
- Requirement
- Calculate Joint Msg 노드가 실행중이어야 한다. 사용자는 각 경유점의 동차 변환 행렬을 리스트 형태로 trajectory_msgs/MultiDOFJointTrajectory.msg 메시지에 담아 토픽으로 송신해야 한다.
- Function
- Inverse Kinematics를 사용하여 사용자가 정의한 Trajectory의 각 경유점을 로봇의 엔드이펙터가 지나가도록 하는 조인트 명령 세트로 변환한다.
- Result
- Trajectory의 각 경유점에 해당하는 조인트 명령값이 리스트 형태로 ‘Trajectory View’ 혹은 ‘Joint Set Rendering’을 담당하는 노드에 저장된다.
평가 내용
- 출력 장치
- 시인성 및 경제성을 고려하여 VR BOX(+스마트폰)을 선택
- 개발 환경
- 호환성이 높고 다양한 기능을 지원하는 Unity를 선택
- 인식장치
- 경제성, 호환성, 접근성 측면에서 우수한 Smart Phone Camera를 선택
- 3D Mapping
- 연산량이 적고 단순하게 카메라의 2D 이미지 데이터를 필요로 하는 Lightship ARDK을 선택
결과 및 평가
완료 작품의 소개
프로토타입 사진 혹은 작동 장면
포스터
관련사업비 내역서
완료작품의 평가
향후계획
현재 프로젝트는 로봇의 동역학을 고려하지 못하고 조인트 공간에서 제어가 이루어진다. 추후에는 로봇의 동역학을 고려하며 추가적으로 카테시안 공간에서 제어가 이루어지도록 수정할 예정이다. 또한 현재는 카드보드를 통해서 AR환경을 체험할 수 있지만 사용자의 생동감을 더욱 높이기 위해 VR기기와의 연동 또한 추후에 진행할 예정이다.
특허 출원 내용
부록
참고문헌
참고문헌 및 참고 사이트
- [1] The MathWorks inc., “Robotics System Toolbox”, https://kr.mathworks.com/products/robotics.html
- [2] The MathWorks inc., “Simscape”, https://kr.mathworks.com/products/simscape.html
- [3] Open Robotics, “GAZEBO”, https://gazebosim.org/home
- [4] Unity Technologies, “Unity”, https://unity.com/kr
- [5] NVIDIA DEVELOPER, “NVIDIA Isaac Sim”, https://developer.nvidia.com/isaac/sim
- [6] Epic Games, “Unreal Engine”, https://www.unrealengine.com/ko
- [7] Apple Inc. “ARKit 6”, https://developer.apple.com/kr/augmented-reality/arkit/
- [8] Google for Developers, “ARCore”, https://developers.google.com/ar?hl=ko
- [9] NVIDIA Corporation, “What Is Photogrammetry?”, https://blogs.nvidia.com/blog/what-is-photogrammetry/
- [10]The MathWorks inc., “SLAM(동시적 위치추정 및 지도작성)”, https://kr.mathworks.com/discovery/slam.html
- [11]The MathWorks inc., “Visual SLAN with RGB-D Camera – MATLAB & Simulink”, https://kr.mathworks.com/help/vision/ug/visual-slam-with-an-rgbd-camera.html
- [12] The MathWorks inc., ”Simulink”, https://kr.mathworks.com/products/simulink.html
- [13] Caudell, T. P., & Mizell, D. W. (1992). Augmented reality: An application of heads-up display technology to manual manufacturing processes. In Proceedings of the twentyfifth Hawaii international conference on system sciences (Vol. 2, pp. 659–669).
- [14] Azuma RT. A survey of augmented reality. Presence Teleoperators \ Virtual Environ 1997;6:355–85.
- [15] PTC, “Vuforia: 시장을 선도하는 엔터프라이즈 AR”, https://www.ptc.com/ko/products/vuforia
- [16] Michel Pahud (2023), Intuitive augmented reality collaboration on visual data, US20230350628A1
- [17] Giacomo Spampinato (2024), Visualization Of a Robot Motion Path and Its Use in Robot Path Planning, US20240083027
- [18] TIAN, Yuan (2021), Occlusion and Collision Detection for Augmented Reality Applications, US20220230383
- [19] Zhanat Makhataeva and Huseyin Atakan Varol. 2020. Augmented reality for robotics: a review. Robotics 9, 2 (2020), 21.
- [20] CAM USC Viterbi, (2017, 09 23), Programming Robotic Manipulator using Augmented Reality [Video], YouTube, https://www.youtube.com/watch?v=qrX7n2AUXco
- [21] CARIS Lab, (2018, 02 15), Robot Programming Through Augmented Trajectories [Video], YouTube, https://www.youtube.com/watch?v=amV6P72DwEQ
- [22] 이가영 기자, (2017, 10 27), 제조공정 개선 ‘VR·AR’ 한 몫하는데 국내 열악, 중기이코노미, https://www.junggi.co.kr/article/articleView.html?no=20259
- [23] 박관희 기자, (2018, 10 19), AR 통해 제조현장의 디지털 트랜스포메이션 가능해진다, 인더스트리뉴스, https://www.industrynews.co.kr/news/articleView.html?idxno=27404
관련 특허
- [1] Visualization Of a Robot Motion Path and Its Use in Robot Path Planning(US20240083027)
- [2] Occlusion and Collision Detection for Augmented Reality Applications(US20220230383)