540 likes | 814 Views
Microsoft Robotics Developer Studio 고급 프로그래밍 과정 [Part 4] VPL 지능형 프로그래밍. 2008 로보틱스 그룹 마이크로소프트. 김 영 준 수석 yjoonkim@microsoft.com. SimpleVision 서비스를 활용한 VPL 지능형 로봇 프로그래밍. 메니페스트의 역할. 실행될 서비스를 나열함 Generic 서비스와 물리적 서비스를 매핑시키는 역할 수행
E N D
Microsoft Robotics Developer Studio고급 프로그래밍 과정[Part 4] VPL 지능형 프로그래밍 2008 로보틱스 그룹 마이크로소프트 김영 준 수석 yjoonkim@microsoft.com
SimpleVision 서비스를 활용한 VPL 지능형 로봇 프로그래밍
메니페스트의역할 • 실행될 서비스를 나열함 • Generic 서비스와 물리적 서비스를 매핑시키는 역할 수행 • Drive, 센서 등에 대한 Generic 서비스를 이용해 프로그램 개발 후, Manifest 파일에서 물리적 서비스와 매핑을 시킴 • 로봇 애플리케이션과 H/W 로봇 서비스를 분리시키는 역할을 수행함
Generic 서비스와 물리 서비스 매핑 • Drive 서비스용 메니페스트 분리하기 • Bumper 서비스용 메니페스트 분리하기 • LRF 서비스용 메니페이스 분리하기
Drive 서비스용 메니페스트 만들기 <?xml version="1.0" ?> <Manifest xmlns="http://schemas.microsoft.com/xw/2004/10/manifest.html" xmlns:dssp="http://schemas.microsoft.com/xw/2004/10/dssp.html" xmlns:simcommon="http://schemas.microsoft.com/robotics/2006/04/simulation.html" > <CreateServiceList> <!-- Start simulated motor service --> <ServiceRecordType> <dssp:Contract>http://schemas.microsoft.com/robotics/simulation/services/2006/05/simulateddifferentialdrive.html</dssp:Contract> <dssp:PartnerList> <dssp:Partner> <!--The partner name must match the entity name--> <dssp:Service>http://localhost/P3DXMotorBase</dssp:Service> <dssp:Name>simcommon:Entity</dssp:Name> </dssp:Partner> </dssp:PartnerList> </ServiceRecordType> </CreateServiceList> </Manifest>
범퍼서비스용 메니페스트 만들기 <?xml version="1.0" ?> <Manifest xmlns="http://schemas.microsoft.com/xw/2004/10/manifest.html" xmlns:dssp="http://schemas.microsoft.com/xw/2004/10/dssp.html" xmlns:simcommon="http://schemas.microsoft.com/robotics/2006/04/simulation.html" > <CreateServiceList> <!-- Start simulated bumber service --> <ServiceRecordType> <dssp:Contract>http://schemas.microsoft.com/robotics/simulation/services/2006/05/simulatedbumper.html</dssp:Contract> <dssp:PartnerList> <dssp:Partner> <!--The partner name must match the entity name--> <dssp:Service>http://localhost/P3DXBumpers</dssp:Service> <dssp:Name>simcommon:Entity</dssp:Name> </dssp:Partner> </dssp:PartnerList> </ServiceRecordType> </CreateServiceList> </Manifest>
LRF 서비스용 메니페스트 만들기 <?xml version="1.0" ?> <Manifest xmlns="http://schemas.microsoft.com/xw/2004/10/manifest.html" xmlns:dssp="http://schemas.microsoft.com/xw/2004/10/dssp.html" xmlns:simcommon="http://schemas.microsoft.com/robotics/2006/04/simulation.html" > <CreateServiceList> <ServiceRecordType> <dssp:Contract>http://schemas.microsoft.com/robotics/simulation/services/2006/05/simulatedlrf.html</dssp:Contract> <dssp:PartnerList> <dssp:Partner> <!--The partner name must match the entity name--> <dssp:Service>http://localhost/P3DXLaserRangeFinder</dssp:Service> <dssp:Name>simcommon:Entity</dssp:Name> </dssp:Partner> </dssp:PartnerList> </ServiceRecordType> </CreateServiceList> </Manifest>
메니페스트를 이용한 로봇 제어 • 도전 과제 • SimulationTutorial2의 P3DX 로봇을 위한 제어 프로그램을 VPL 상에서 구현하시오 • Drive, Bumper, LRF 센서에 대한 메니페스트를 구성한 후 Generic 서비스에 연결하시오 • Drive 서비스에 대해 테스트를 수행하시오 • SimpleDashboard 서비스를 추가한 후, Bumper 서비스와 LRF 서비스에 대해 테스트를 수행하시오
SimpleVision 서비스 활용하기 • SimpleVision 서비스를 위한 메니페스트 파일 구성 <?xml version="1.0"?> <Manifest xmlns:dssp="http://schemas.microsoft.com/xw/2004/10/dssp.html" xmlns:this="urn:uuid:2ec5e1b8-f23e-4900-a8bf-541e360ebe76" xmlns:simulatedwebcam="http://schemas.tempuri.org/2006/09/simulatedwebcam.html" xmlns:simulation="http://schemas.microsoft.com/robotics/2006/04/simulation.html" xmlns:simplevision="http://schemas.microsoft.com/robotics/2007/05/simplevision.html" xmlns="http://schemas.microsoft.com/xw/2004/10/manifest.html"> <CreateServiceList> <ServiceRecordType> <dssp:Contract>http://schemas.tempuri.org/2006/09/simulatedwebcam.html</dssp:Contract> <dssp:PartnerList> <dssp:Partner> <dssp:Service>http://localhost/robocam</dssp:Service> <dssp:PartnerList /> <dssp:Name>simulation:Entity</dssp:Name> </dssp:Partner> </dssp:PartnerList> <Name>this:simulatedwebcam</Name> </ServiceRecordType> <ServiceRecordType> <dssp:Contract>http://schemas.microsoft.com/robotics/2007/05/simplevision.html</dssp:Contract> <dssp:PartnerList> <dssp:Partner> <dssp:PartnerList /> <dssp:Name>simplevision:Webcam</dssp:Name> <dssp:ServiceName>this:simulatedwebcam</dssp:ServiceName> </dssp:Partner> </dssp:PartnerList> <Name>this:simplevision</Name> </ServiceRecordType> </CreateServiceList> </Manifest> SimpleVisionSimOnly.manifest.xml 파일로 저장할 것
SimpleVision을 이용한 로봇 제어 • 도전 과제 • SimulationTutorial2에 Red 색상의 박스를 추가한 후, 해당 색상의 박스를 영역을 추출해 내도록 SimpleVision을 설정하시오
대상 색상의 학습 • SimpleDashBoard를 이용해 학습시킬 대상을 찾는다 • 학습시킬 대상의 중심 부분을 왼쪽 마우스를 누른 체 움직이면 원이 생성되며, 색상값이 우측에 표시됨 • TrainColor 버튼을 클릭하여 값을 저장시킴
비전 기반의 대상 물체 탐색 • 도전 과제 • SimulationTutorial2에서 Red 색상의 박스를 찾을 때 까지 로봇을 회전시키시오.
비전 기반의 대상 물체 탐색 • 도전 과제 • SimulationTutorial2에서 Red 색상의 박스를 찾은 후에 해당 박스로 로봇을 접근시키시오.
비전 기반의 대상 물체 탐색 • 도전 과제 • SimulationTutorial2에서 Red 색상의 박스를 찾은 후에 해당 박스로 로봇을 접근시키면서, 거리를 체크하여, 0.5M 까지 근접시킨 후, 로봇을 멈추시오.
ColorSegment 서비스를 활용한 VPL 지능형 로봇 프로그래밍
ColorSegment 서비스 활용하기 • ColorSegment 서비스를 위한 메니페스트 파일 구성 <?xml version="1.0"?> <Manifest xmlns:colorsegment="http://schemas.microsoft.com/robotics/2007/07/colorsegment.html" xmlns:multidevicewebcamservice="http://schemas.microsoft.com/robotics/2006/05/multidevicewebcamservice.html" xmlns:this="urn:uuid:c550e483-c3ec-4030-8d5a-c18ae4ff9049" xmlns:dssp="http://schemas.microsoft.com/xw/2004/10/dssp.html" xmlns:simulatedwebcam="http://schemas.tempuri.org/2006/09/simulatedwebcam.html" xmlns:simulation="http://schemas.microsoft.com/robotics/2006/04/simulation.html" xmlns="http://schemas.microsoft.com/xw/2004/10/manifest.html"> <CreateServiceList> <ServiceRecordType> <dssp:Contract>http://schemas.microsoft.com/robotics/2007/07/colorsegment.html</dssp:Contract> <dssp:PartnerList> <dssp:Partner> <dssp:Contract>http://schemas.microsoft.com/robotics/2007/07/colorsegment.html</dssp:Contract> <dssp:Service>colorsegment.config.xml</dssp:Service> <dssp:PartnerList /> <dssp:Name>dssp:StateService</dssp:Name> </dssp:Partner> <dssp:Partner> <dssp:PartnerList /> <dssp:Name>colorsegment:WebCam</dssp:Name> <dssp:ServiceName>this:simulatedwebcam</dssp:ServiceName> </dssp:Partner> </dssp:PartnerList> <Name>this:ColorSegment</Name> </ServiceRecordType> ColorSegmentSimulation.manifest.xml 파일로 저장할 것
ColorSegment 서비스 활용하기 • ColorSegment 서비스를 위한 메니페스트 파일 구성 - 계속 <ServiceRecordType> <dssp:Contract>http://schemas.tempuri.org/2006/09/simulatedwebcam.html</dssp:Contract> <dssp:PartnerList> <dssp:Partner> <dssp:Service>http://localhost/robocam</dssp:Service> <dssp:PartnerList /> <dssp:Name>simulation:Entity</dssp:Name> </dssp:Partner> </dssp:PartnerList> <Name>this:simulatedwebcam</Name> </ServiceRecordType> </CreateServiceList> </Manifest>
ColorSegment 기반의 대상 물체 탐색 • 도전 과제 • SimulationTutorial2에 다양한색상의 박스들을 추가한 후 ColorSegment를 통해 추출된 색상 영역의 개수를 출력하시오.
DSS 보안설정 해제 • VPL을 종료한 후, 재시작 시킬 것
마우스를 클릭하여 시작과 끝점을 지정해 줄 것
ColorSegment 기반의 대상 물체 탐색 • 도전 과제 • ColorSegment를 통해 추출된 색상 영역의 리스트를 출력하시오
ColorSegment 기반의 대상 물체 탐색 • 도전 과제 • ColorSegment를 통해 추출된 색상 영역중에서 Red를 감지한 후, 해당 영역의 넓이와 중심 좌표를 출력하시오.
ColorSegment 기반의 대상 물체 탐색 • 도전 과제 • ColorSegment를 통해 추출된 색상 영역중에서 Red를 감지한 후, 해당 영역으로 로봇을 접근시키시오
패턴인식서비스를 활용한 VPL 지능형 로봇 프로그래밍
패턴인식 환경 • 시뮬레이션 공간상에 주어진 박스들의 색상과 내부 도형을 모두 찾기
패턴인식 데모 • 시뮬레이션 공간상에 주어진 박스들의 색상과 내부 도형을 모두 찾기 Demo
패턴인식 환경의 구성 • 시뮬레이션 환경 및 로봇 • 로봇 센서 및 제어용 서비스
패턴인식을 위한 수행 요소 시뮬레이션 환경 시뮬레이션 웹캠 전처리 서비스 로봇 제어 서비스 특징 추출 서비스 분류 서비스 학습 서비스 분류 서비스
수행 요소 설명 • 시뮬레이션 환경 및 로봇 • 시뮬레이션 웹캠 • 시뮬레이션 환경의 카메라 영상 획득 • 전처리 서비스 • 대상 영역을 탐색하고 인식 대상 이미지를 추출함 • 특징추출 서비스 • 대상의 형태를 인식하기 위한 특징 값을 추출함 • 분류 서비스 • 자체의 분류기를 통해 대상의 형태를 인식함 • 후처리 서비스 • 인식된 결과 관리 및 미션 완료 여부를 파악함 • 로봇 제어 서비스 • 학습 서비스 • 분류기를 학습시킴
패턴인식 예제 서비스 구성 • 시뮬레이션 환경 및 로봇 • PRBotSpace • 시뮬레이션 웹캠 • PRBotWebCam 서비스 • 전처리 서비스 • PRPreProcessor • 특징추출 서비스 • PRFeatureExtractor • 분류 서비스 • PRClassifier • 후처리 서비스 • PRPostPrecosser • 로봇 제어 서비스 • PRBotContactSensors • PRBotDifferentialDrive • PRBotLaserRangeFinder • 학습 서비스 • PRTrainer
미션 완료 여부 체크 • 인식해야 할 대상의 개수를 미션 시작 전에 등록 • 등록된 미션 개수 만큼 대상을 찾아 내었을 경우, 미션 완료로 간주 • 박스의 지정된 색상과 해당 박스 안의 도형의 모양을 모두 정확히 인식해 내어야 함 • 최소 4개 이상의 다른 색상과 도형으로 조합된 박스를 배치할 예정 • 미션 수행자는 주어진 개수만큼의 조합을 모두 찾아 내어야 함
미션 수행의 특징 • 로봇 스스로의 공간 분석 기능 체크 • 웹캠 상의 화면을 분석하고 공간상에 주어진 사물에 접근하기 위한 제어기술 필요 • 로봇 스스로의 사물 식별 기능 체크 • 주어진 색상과 도형의 형태를 스스로 인지하는 기술 필요 • 영상처리 및 패턴인식과 관련된 기본적인 AI 기술 활용 • 로봇 스스로의 자율 주행 체크 • 로봇의 각종 센서와 주행을 제어할 수 있는 기술 필요 • 인식 결과 관리 기능 체크 • 인식된 결과를 중복으로 처리하지 않고 유일한 조합을 관리하고 미션을 진행하는 기술 필요
미션 수행을 위한 참조 기술 • 영상 처리 기술 • 비트맵 제어 기술 • 이진화 • 정규화 • 특징 추출 기술 • 패턴 인식 기술 • 통계적 기술 • 신경망 분류기 적용 기술 • 로보틱스 기술 • MSRS의 기본적인 로봇 서비스 개념 학습 필요 • MSRS 프로그래밍 기술 • 기본적인 서비스 개발 기술 • VPL 활용 기술 • C# 개발 기술
색상 히스토그램 • 특정 색상의 영역을 찾아내기 위하여 획득된 비트맵 이미지로 부터 특정 색상의 RGB가 누적 계산 • 획득된 이미지에 대해 세로 또는 가로 방향으로 특정 색상 영역 누적 • 계산된 값을 통해 해당 이미지에 대상 사물이 존재하는 체크 • 사물이 존재할 경우, 크기와 방향을 계산 • 대상이 화면의 중앙에 오도록 로봇 회전 시킴 • 대상이 화면의 중앙에 있을 경우, 히스토그램 값이 어느 크기 이상이 될 때 까지 로봇을 대상에 접근시킴 • 샘플 코드 • 시뮬레이션 축구 예제에서 빨간색 공을 찾아가는 예제 활용
이미지 정규화 • 획득된 이미지에서 대상이 발견되고, 그 크기가 지정된 크기 이상으로 감지되었을 경우, 인식 단계로 진행하기 위해 대상 영상을 추출하는 작업 진행 • 영상 추출 후, 특징 추출을 원할히 하기 위해 지정된 크기로 이미지를 정규화 시킴 • 샘플 코드 • SimpleVision 예제에서 검출된 얼굴영상을 정규화 시키는 예
특징 추출 방법 • 획득된 이미지에 포함되어 있는 도형의 형태를 인식하기 위해 식별력이 증가시켜 주는 특징 요소 계산 • 이진화 • 특징 추출을 원할하게 하기 위해 이미지를 이진화하여 도형 패턴이 추출될 수 있도록 함 • 가로 및 세로 방향의 픽셀 합계 • 가로 및 세로 방향으로의 픽셀 합계를 통해 도형 분포 정보를 특징으로 활용 • 대각선 방향으로의 픽셀 합계 • 대각선 방향의 픽셀 합계는 삼각형과 같은 사선 형태의 정보를 파악할 수 있도록 함 • 8x8, 16x16 등 작은 크기의 정규화 값 • 픽셀의 분포를 축소된 형태의 이미지를 통해 파악할 수 있음 • 신경망 분류기 등의 입력 데이터로 사용될 수 있음
인식(분류) 방법 • 추출된 특징 값을 통해 어느 형태의 도형인지 판별 • 통계적 방법 • 이미 학습되어 분류되어 있는 모델 값들과 비교하여 가장 유사도가 높은 (상호 거리 값이 가장 작은) 모델로 분류 • 구현예) 모델의 평균값과 특징값 사이의 거리 제곱값을 사용 • 인식 대상을 추가하거나 삭제하는 것이 용이 • 학습시 속도가 빠름 • 신경망 분류기 • 추출된 입력값을 신경망 분류기에 입력하면, 신경망 분류기는 학습 효과에 의해 출력값을 리턴함 • 리턴된 출력값을 파악하여 분류 결과를 도출해 냄 • 인식해야 할 대상을 사전에 모두 정의해 놓아야 함 • 학습시 많은 시간이 소요될 수 있음