산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 임베디드

시각적 SLAM 애플리케이션 개발 용이

SLAM(Simultaneous Localization and Mapping)은 로봇과 같은 장치가 센서 데이터를 사용하여 주변 환경의 그림을 구축하고 동시에 해당 환경 내에서 위치를 결정하는 프로세스를 설명합니다. 카메라, 소나, 레이더, LiDAR 및 관성 측정 장치(IMU)를 사용하는 기본 위치 데이터를 포함할 수 있는 배포된 소프트웨어 알고리즘과 사용된 센서 측면에서 SLAM을 구현하는 여러 가지 방법이 있습니다.

저렴하고 작은 카메라의 가용성으로 인해 단일 표준 카메라를 사용하여 위치 및 매핑 기능을 수행하는 단안 Visual SLAM 시스템의 인기가 높아졌습니다. 이러한 시각적 SLAM 시스템은 화성 탐사선과 착륙선을 비롯한 다양한 로봇에서 찾을 수 있습니다. , 농업 분야의 현장 로봇, 드론, 그리고 잠재적으로 자율주행차. Visual SLAM 시스템은 또한 GPS를 사용할 수 없는 경우에도 이점을 제공합니다. 예를 들어 건물이 장애물로 인해 GPS 정확도가 떨어지는 대도시 또는 실내 지역과 같은 곳입니다.

이 기사에서는 객체 인식, 추적 및 오류 수정과 관련된 모듈과 알고리즘을 다루는 기본적인 시각적 SLAM 프로세스에 대해 설명합니다. SLAM 계산 및 기능을 전용 DSP로 오프로드하는 이점에 대해 논의하고 CEVA-SLAM SDK 개발 키트를 사용하여 이 개발 경로를 따라 얻을 수 있는 이점을 설명합니다.

직접 및 기능 기반 SLAM

시각적 SLAM을 구현하는 방법에는 여러 가지가 있지만 모두 동일한 전체 방법을 사용합니다. 연속적인 카메라 프레임을 통해 설정점을 추적하여 3D 위치를 삼각 측량하는 동시에 이 정보를 사용하여 카메라 포즈를 추정합니다. 이와 동시에 SLAM 시스템은 복잡한 알고리즘을 지속적으로 사용하여 투영된 지점과 실제 지점 간의 차이인 재투영 오류를 최소화합니다.

Visual SLAM 시스템은 수신된 이미지의 정보를 사용하는 방식에 따라 직접 또는 기능 기반으로 분류할 수 있습니다. Direct SLAM 시스템은 전체 이미지를 서로 비교하여 환경에 대한 풍부한 정보를 제공하므로 보다 자세한 지도를 생성할 수 있지만 처리 노력과 속도는 희생됩니다. 이 기사에서는 이미지에서 모서리 및 "얼룩"과 같은 정의된 기능을 검색하고 이러한 기능만을 기반으로 위치 및 주변을 추정하는 기능 기반 SLAM 방법에 중점을 둡니다. 기능 기반 SLAM 방법은 이미지에서 상당한 양의 귀중한 정보를 삭제하지만, 절충안은 계산적으로 구현하기 더 쉬운 단순화된 프로세스입니다.


그림 1:직접 및 기능 기반 SLAM. (출처:https://vision.in.tum.de/research/vslam/lsdslam)

시각적 SLAM 프로세스

특징 기반 SLAM의 주요 단계는 입력 이미지에서 희소 특징 집합을 추출하고, 다른 카메라 포즈에서 얻은 특징을 일치시키고, 특징 재투영 오류(포인트의 추적된 위치 간의 차이)를 최소화하여 SLAM 문제를 해결하는 것입니다. 모든 지점에서 카메라 포즈 추정치가 제공될 것으로 예상되는 위치).

이러한 단계는 모든 기능 기반 SLAM 구현에 공통적인 아래에 설명된 빌딩 블록 세트를 사용하여 수행됩니다. Visual SLAM은 상당한 양의 연구를 생성하는 진화하는 영역이며 SLAM 구현의 정확한 특성에 따라 각각 장단점이 있는 각 모듈에 대해 다양한 알고리즘이 개발 및 제안되었습니다. 아래 설명은 현재 가장 인기 있는 알고리즘의 하위 집합을 언급합니다.

특징 추출(그림 2)은 모서리, 가장자리, 얼룩 및 출입구 및 창문과 같은 보다 복잡한 객체와 같은 이미지의 유용한 정보를 컴팩트한 특징 벡터로 효율적으로 나타내는 프로세스입니다. 인기 있는 특징 추출 알고리즘에는 계산 효율성으로 인해 실시간 비디오 처리에 매우 적합한 모서리 감지 방법인 DoG(Differance of Gaussian) 및 FAST9(Features from Accelerated Segment Test)가 있습니다.


그림 2:SLAM 기능 추출. (출처:https://medium.com/towards-artificial-intelligence/oriented-fast-and-rotated-brief-orb-1da5b2840768)

특징 설명에서 추출된 각 특징 주변의 영역은 다른 설명자와 일치시킬 수 있는 간결한 설명자로 변환됩니다. 특징은 예를 들어 그 모양이나 특징점 주변의 패치에 있는 픽셀의 강도로 설명될 수 있습니다. ORB 및 FREAK는 인기 있는 기능 설명자 알고리즘의 예입니다.

Feature Matching에서 추출된 특징(설명자)은 여러 프레임에 걸쳐 일치됩니다. 첫 번째 이미지의 모든 특징을 두 번째 이미지의 모든 특징과 비교하여 두 이미지에서 특징을 일치시킵니다. 해밍 거리 함수는 벡터와 같은 데이터의 비트 세트에 대해 XoR 및 카운트 비트 함수를 사용하여 하드웨어에서 효율적으로 수행될 수 있으므로 일반적으로 피쳐 매칭에 사용됩니다. 해밍 거리는 두 벡터의 다른 비트 수를 나타냅니다. 즉, 점수가 낮을수록 일치가 더 가깝습니다.

루프 폐쇄는 SLAM 프로세스의 마지막 단계이며 특히 장기간에 걸쳐 현지화 및 매핑 작업을 수행할 때 일관된 SLAM 솔루션을 보장합니다. 루프 클로저는 인접하지 않은 프레임으로 동일한 장면을 관찰하고 포즈 추정에서 누적 드리프트를 줄이기 위해 프레임 사이에 제약 조건을 추가합니다. 다른 시각적 SLAM 모듈과 마찬가지로 루프 폐쇄를 위해 다양한 알고리즘이 개발되었으며 가장 인기 있는 알고리즘은 번들 조정, 칼만 필터링 및 입자 필터링입니다.

VSLAM 알고리즘은 활발한 연구 영역이며 위의 내용은 최근 몇 년 동안 등장한 점점 더 많은 기술의 예입니다. 기능 기반 SLAM 방법은 더 빠른 처리 속도를 가능하게 하고 메모리 대역폭을 보다 효율적으로 사용하기 때문에 임베디드 솔루션에 선호됩니다. 또한 기능 기반 솔루션은 밝기의 급격한 변화, 낮은 조명 수준, 빠른 카메라 움직임 및 폐색을 비롯한 다양한 조건에서 더 높은 수준의 견고성을 나타냅니다.

특정 알고리즘의 선택은 지도 유형, 센서 유형, 필요한 정확도 등을 포함한 특정 애플리케이션의 특성에 따라 결정됩니다. 많은 SLAM 시스템은 가장 광범위한 시나리오에 가장 적합한 알고리즘 조합을 통합합니다.

SLAM 구현 과제

Visual SLAM 처리는 계산 집약적이며 기존의 CPU 기반 구현에 높은 부하를 가하여 과도한 전력 소비와 낮은 프레임 속도를 초래하여 결과적으로 정확도와 배터리 수명에 영향을 줍니다. 새로운 SLAM 애플리케이션의 개발자는 더 높은 수준의 통합과 더 낮은 전력 소비를 제공하는 솔루션이 필요합니다. 설계에 전용 VPU(비전 처리 장치)를 점점 더 많이 사용하고 있습니다. VPU는 SLAM과 같은 머신 비전 작업의 가속화를 위해 특별히 설계된 아키텍처가 있는 일종의 마이크로프로세서로, 주 애플리케이션 CPU에서 비전 처리를 오프로드하는 데 사용할 수 있습니다. CEVA CEVA-XM6(그림 3)과 같은 VPU에는 저전력 소비, 강력한 ALU, 강력한 MAC 기능, 높은 처리량 메모리 액세스 및 전용 비전 명령과 같은 기능이 포함됩니다. 이 장치는 이미지 처리 응용 프로그램에 필요한 강력한 부동 소수점 기능도 지원합니다.


그림 3:CEVA XM6 비전 처리 장치. (출처:CEVA)

그러나 VPU를 사용하는 경우에도 시각적 SLAM 개발자는 여러 SLAM 모듈에 대한 효율적인 코드를 생성하는 것이 쉬운 일이 아니며 VPU를 주 프로세서에 인터페이스하기 어려울 수 있기 때문에 여전히 여러 문제를 극복해야 합니다.

효율적인 코드 생성은 실행 속도와 전력 소비를 최적화해야 하는 임베디드 애플리케이션에서 매우 중요합니다. 시각적 SLAM 모듈의 코딩은 복잡한 작업이며 잠재적으로 대량의 데이터를 가져오고 저장하고 조작해야 합니다. 예를 들어 기능 일치에서 설명자는 128비트 벡터로 메모리에 저장되며 연속 프레임에서 기능을 일치시키려면 일반적으로 200개의 기능을 2000개의 후보와 비교해야 하므로 400,000개의 일치 작업이 발생합니다. 일치 작업에는 분명히 많은 양의 메모리가 필요하지만 샘플링된 데이터 크기가 작은 경우 데이터를 가져오고 형식화하는 높은 오버헤드가 코딩된 알고리즘의 효율성을 손상시킬 수 있습니다.

번들 조정은 큰 행렬의 조작을 포함하는 복잡한 선형 대수를 포함하는 또 다른 알고리즘입니다. 이러한 VSLAM 모듈 및 기타 VSLAM 모듈에 대한 코딩을 최적화하기 위한 다양한 기술이 있지만 이러한 기술을 구현하려면 높은 수준의 비전별 코딩 전문 지식이 필요합니다.

메모리 관리는 이미지 처리의 또 다른 과제입니다. 이미지에서 캡처한 데이터는 일반적으로 연속적인 메모리 위치에 로드되며 이미지에서 임의의 패치로 작업한다는 것은 연속적인 메모리 위치에 저장되지 않은 데이터를 처리하는 것을 의미합니다. 기능 일치를 수행하는 소프트웨어 루틴은 비연속적인 메모리 위치에서 설명자를 검색해야 하므로 설정 오버헤드가 추가로 증가합니다.

VSLAM 개발 도구

오늘날의 환경에서 시장 출시 속도가 매우 중요하므로 개발자가 효율적인 비전 처리 코드를 구현하는 데 필요한 기술과 지식을 습득하는 데 시간을 할애하는 것이 항상 실용적인 것은 아닙니다. 다행스럽게도 비용 효율적인 SLAM 응용 프로그램의 가속화를 촉진하는 여러 도구가 있습니다. 개발자가 비전 관련 작업을 CPU에서 VPU로 쉽게 오프로드할 수 있도록 비전별 소프트웨어 라이브러리, 최적화된 하드웨어 및 통합 도구의 조합을 제공하는 애플리케이션 개발 키트를 사용할 수 있습니다.

CEVA SLAM SDK(그림 4)는 이러한 애플리케이션 개발 도구 세트의 대표적인 예입니다.


그림 4:CEVA SLAM SDK. (출처:CEVA)

CEVA XM6 DSP 및 CEVA NeuPro AI 프로세서 하드웨어를 기반으로 하는 CEVA SLAM SDK를 사용하면 SLAM 구현을 저전력 임베디드 시스템에 효율적으로 통합할 수 있습니다. SDK에는 기능 감지 및 일치는 물론 번들 조정을 위한 효율적인 코드를 제공하는 이미지 처리 라이브러리를 비롯한 여러 빌딩 블록이 있습니다. 또한 선형 대수학, 선형 방정식 풀이, 빠른 희소 방정식 풀이 및 행렬 조작을 지원합니다.

CEVA XM6 하드웨어는 비연속 메모리 액세스 문제를 해결하는 병렬 로드 명령과 해밍 거리 계산을 실행하기 위한 고유한 전용 명령과 같은 혁신적인 기능으로 이미지 처리에 최적화되어 있습니다. 또한 SDK에는 세부적인 CPU 인터페이스가 포함되어 있어 개발자가 비전 처리 기능을 메인 애플리케이션 CPU와 쉽게 통합할 수 있습니다.

개발 도구로서 SDK의 성능을 보여주기 위해 초당 60프레임으로 실행되는 전체 SLAM 추적 모듈의 참조 구현은 86mW의 전력 소비를 갖는 것으로 측정되었습니다.

결론

Visual SLAM 시스템은 농경지 로봇 및 드론과 같은 광범위한 응용 분야에서 인기를 얻고 있습니다. Visual SLAM을 구현하기 위한 대체 방법은 여러 가지가 있지만 임베디드 애플리케이션의 배포가 증가함에 따라 코딩의 효율성과 낮은 전력 소비가 중요한 요소입니다.

개발자가 VPU를 사용하여 메인 CPU에서 컴퓨팅 집약적인 비전 처리 작업을 오프로드하는 것이 일반적이지만 효율적인 코드를 생성하고 VPU와 CPU 간의 인터페이스를 관리하기 위해서는 여전히 중요한 과제가 남아 있습니다.

주요 동인을 시장에 출시함에 따라 개발자는 CEVA SLAM SDK와 같은 SLAM 전용 개발 툴킷에 내장된 기능을 활용하여 제품 개발을 가속화할 수 있습니다.


임베디드

  1. 3D 프린팅 애플리케이션에서 압출의 역할
  2. 글로벌 공급망의 AI 애플리케이션
  3. 프탈로시아닌 안료의 모든 용도
  4. 기본 염료의 모든 적용
  5. Pigment Blue의 모든 적용
  6. 현대 플라스틱 개발
  7. 컨트롤러 선택 방법
  8. 산업용 진동기의 응용
  9. 인더스트리 4.0:고유한 사이버 보안의 개발
  10. 시각적 관리가 업계에 미치는 영향