사물 인터넷 기술
이 기사는 시각 유도 로봇에 대한 AspenCore 특별 프로젝트의 일부입니다.
로봇 비전 애플리케이션은 복잡한 요구 사항 세트를 가져올 수 있지만 오픈 소스 라이브러리는 거의 모든 요구 사항에 대한 솔루션을 제공할 준비가 되어 있습니다. 개발자는 기본 이미지 처리 및 객체 인식에서 동작 계획 및 충돌 방지에 이르기까지 다양한 오픈 소스 패키지를 찾을 수 있으며, 짧은 기사에서 충분히 언급할 수 있는 것보다 훨씬 더 많이 언급할 수 있습니다. 그럼에도 불구하고 개발자가 정교한 로봇 시스템을 구현하는 데 도움이 되는 몇 가지 주요 오픈 소스 이미지 처리 패키지가 있습니다. (참고:이 보고서는 보다 기본적인 이미지 기반 알고리즘을 위한 라이브러리에 중점을 두고 있으며 특히 AI 기반 로봇 비전을 위한 오픈 소스 소프트웨어는 제외합니다.)
로봇 비전 소프트웨어에 대한 어떤 기사도 OpenCV(Open Source Computer Vision Library)를 강조 표시하는 데 실패할 수 없습니다[출처]. 사용 가능한 오픈 소스 소프트웨어 패키지 중에서 OpenCV는 아마도 가장 널리 사용되고 기능이 풍부할 것입니다. 2,500개 이상의 알고리즘을 구현하는 OpenCV 배포판은 다음을 포함하는 일련의 모듈에서 이미지 처리 요구 사항을 해결합니다.
다른 모든 모듈에서 사용되는 기본 데이터 구조 및 기능을 정의하는 코어,
선형 및 비선형 이미지 필터링, 기하학적 이미지 변환, 색 공간 변환, 히스토그램 등을 포함한 이미지 처리 기능을 제공하는 imgproc;
동작 추정, 배경 빼기 및 객체 추적 알고리즘을 지원하는 동영상
기본 기하학 알고리즘, 카메라 보정, 물체 포즈 추정 등을 제공하는 calib3d,
features2d, 특징 감지기, 설명자 및 설명자 일치를 제공합니다.
객체 및 사전 정의된 클래스의 인스턴스 감지를 제공하는 objdetect,
C++로 작성된 OpenCV는 C++, Python, Java 및 Matlab용 인터페이스와 함께 사용할 수 있으며 Windows, Linux, Android 및 Mac OS를 지원합니다. 단일 명령, 다중 데이터(SIMD) 명령 세트에 대한 지원과 함께 OpenCV는 GPU 모듈을 통해 많은 기능에 대한 CUDA 기반 GPU 가속을 제공하고 ocl 모듈을 통해 OpenCL 가속을 제공합니다. 최근에 출시된 OpenCV 4.0은 인기 있는 Kinect Fusion 알고리즘의 구현을 포함하여 다양한 성능 개선 및 기능을 제공합니다.
기능을 위해 OpenCV는 로봇 비전으로 빠르게 움직이려는 개발자의 인내심을 능가하는 학습 곡선이 필요할 수 있습니다. 이러한 개발자에게는 Python 기반 SimpleCV [source]가 답이 될 수 있습니다. OpenCV를 기반으로 구축된 SimpleCV는 고급 로봇 비전 개발자에게 필요한 기능을 제공하지만 경험이 부족한 개발자가 간단한 Python 함수 호출로 기본 머신 비전 기능을 탐색하는 데 도움이 되는 액세스 가능한 프레임워크를 제공합니다. 예를 들어 개발자는 SimpleCV Image 클래스(아래 목록의 img.binarize())에 있는 간단한 내장 메서드를 사용하여 이미지 임계값과 같이 일반적으로 사용되는 기능을 빠르게 구현하고 마지막으로 그림 1과 같은 결과를 표시할 수 있습니다.
from SimpleCV import Image, Color, Display # 절반과 절반을 수행하는 함수를 만듭니다. image.def halfsies(left,right):result =left # 오른쪽 이미지를 오른쪽이 되도록 자릅니다. 자르기 =right.crop(right.width/2.0,0,right.width/2.0,right.height) # 이제 자르기를 왼쪽 이미지에 붙여넣습니다. result =result.blit(crop,(left.width/2,0)) # 결과를 반환합니다. return result# imgur.img =Image('http://i.imgur.com/lfAeZ4n.png')# 90의 임계값을 사용하여 이미지를 이진화#하고 결과를 반전시킵니다. 90).invert()# 나란히 생성 image.result =halfsies(img,output)# 결과 이미지 표시.result.show()# 결과를 file.result.save('juniperbinary.png'에 저장 )
그림 1. 위에 나열된 Python 코드의 결과(출처:SimpleCV)
OpenCV 및 SimpleCV는 기본 이미지 처리 기능과 함께 로봇 시스템이 물체를 다루거나 물리적 환경 내에서 안전하게 작동하는 데 필요한 많은 고급 이미지 처리 알고리즘을 구현합니다. 이러한 많은 계산에 사용되는 기본 데이터 구조 중 하나는 포인트 클라우드입니다. 포인트 클라우드는 객체를 나타내는 다차원 데이터 포인트의 모음입니다(그림 2). 카메라에서 획득한 물체의 포인트 클라우드는 물체 식별, 정렬 및 피팅과 같은 기본적인 로봇 작업에 사용됩니다. 포인트 클라우드 작업을 위해 PCL(Point Cloud Library) [소스]은 필터링, 피팅, 키포인트 추출, 세분화 등을 위한 알고리즘을 구현합니다.
그림 2. 기본 토러스에 대한 포인트 클라우드 데이터 세트. (출처:Wikimedia Commons/Kieff).
사물 인터넷 기술
대부분의 유지 관리 소프트웨어에는 유사한 모듈과 기능이 포함되어 있지만 공급업체는 또한 다양한 고유 서비스, 특수 기능, 다양한 가격 책정 체계 등을 자랑합니다. 기능 및 비용 차이의 긴 목록으로 인해 예산과 요구 사항에 맞는 올바른 소프트웨어를 찾는 프로세스는 진정한 균형 작업입니다. 무한한 소프트웨어 옵션 외에도 검색을 시작하기에 가장 좋은 위치를 이해하는 것도 어려울 수 있습니다. 최고의 소프트웨어 연구 사례에 대한 생각에 대해 Hippo CMMS 전문가 그룹을 대상으로 설문조사를 실시했을 때, 그들은 정말 유용한 팁과
Open CV는 가장 많이 사용되는 Computer Vision 라이브러리 중 하나입니다. Open CV는 얼굴 인식, 물체 추적, 바코드 스캔 등에 사용할 수 있으며 이 블로그에서는 조명이 켜져 있는지 여부를 감지하는 데 더 중요합니다. 이 블로그에서는 PLCnext에서 Open CV 및 Python을 시작하는 데 도움이 되며 적색광 감지를 위해 이미지를 사전 처리하는 방법에 대한 작은 코드 샘플을 제공합니다. 이 블로그는 이전 블로그 게시물에서 설명한 PLCnext 컨트롤러에서 Open-CV를 사용하는 대체 방법입니다. 전제조건