1 / 53

Microsoft Robotics Developer Studio 고급 프로그래밍 과정 [Part 4] VPL 지능형 프로그래밍

Microsoft Robotics Developer Studio 고급 프로그래밍 과정 [Part 4] VPL 지능형 프로그래밍. 2008 로보틱스 그룹 마이크로소프트. 김 영 준 수석 yjoonkim@microsoft.com. SimpleVision 서비스를 활용한 VPL 지능형 로봇 프로그래밍. 메니페스트의 역할. 실행될 서비스를 나열함 Generic 서비스와 물리적 서비스를 매핑시키는 역할 수행

ashby
Download Presentation

Microsoft Robotics Developer Studio 고급 프로그래밍 과정 [Part 4] VPL 지능형 프로그래밍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Microsoft Robotics Developer Studio고급 프로그래밍 과정[Part 4] VPL 지능형 프로그래밍 2008 로보틱스 그룹 마이크로소프트 김영 준 수석 yjoonkim@microsoft.com

  2. SimpleVision 서비스를 활용한 VPL 지능형 로봇 프로그래밍

  3. 메니페스트의역할 • 실행될 서비스를 나열함 • Generic 서비스와 물리적 서비스를 매핑시키는 역할 수행 • Drive, 센서 등에 대한 Generic 서비스를 이용해 프로그램 개발 후, Manifest 파일에서 물리적 서비스와 매핑을 시킴 • 로봇 애플리케이션과 H/W 로봇 서비스를 분리시키는 역할을 수행함

  4. Generic 서비스와 물리 서비스 매핑 • Drive 서비스용 메니페스트 분리하기 • Bumper 서비스용 메니페스트 분리하기 • LRF 서비스용 메니페이스 분리하기

  5. 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>

  6. 범퍼서비스용 메니페스트 만들기 <?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>

  7. 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>

  8. 메니페스트를 이용한 로봇 제어 • 도전 과제 • SimulationTutorial2의 P3DX 로봇을 위한 제어 프로그램을 VPL 상에서 구현하시오 • Drive, Bumper, LRF 센서에 대한 메니페스트를 구성한 후 Generic 서비스에 연결하시오 • Drive 서비스에 대해 테스트를 수행하시오 • SimpleDashboard 서비스를 추가한 후, Bumper 서비스와 LRF 서비스에 대해 테스트를 수행하시오

  9. 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 파일로 저장할 것

  10. SimpleVision을 이용한 로봇 제어 • 도전 과제 • SimulationTutorial2에 Red 색상의 박스를 추가한 후, 해당 색상의 박스를 영역을 추출해 내도록 SimpleVision을 설정하시오

  11. SimpleVision 다이어그램

  12. 대상 색상의 학습 • SimpleDashBoard를 이용해 학습시킬 대상을 찾는다 • 학습시킬 대상의 중심 부분을 왼쪽 마우스를 누른 체 움직이면 원이 생성되며, 색상값이 우측에 표시됨 • TrainColor 버튼을 클릭하여 값을 저장시킴

  13. 비전 기반의 대상 물체 탐색 • 도전 과제 • SimulationTutorial2에서 Red 색상의 박스를 찾을 때 까지 로봇을 회전시키시오.

  14. 비전 기반의 대상 물체 탐색 • 도전 과제 • SimulationTutorial2에서 Red 색상의 박스를 찾은 후에 해당 박스로 로봇을 접근시키시오.

  15. 비전 기반의 대상 물체 탐색 • 도전 과제 • SimulationTutorial2에서 Red 색상의 박스를 찾은 후에 해당 박스로 로봇을 접근시키면서, 거리를 체크하여, 0.5M 까지 근접시킨 후, 로봇을 멈추시오.

  16. ColorSegment 서비스를 활용한 VPL 지능형 로봇 프로그래밍

  17. 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 파일로 저장할 것

  18. 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>

  19. ColorSegment 기반의 대상 물체 탐색 • 도전 과제 • SimulationTutorial2에 다양한색상의 박스들을 추가한 후 ColorSegment를 통해 추출된 색상 영역의 개수를 출력하시오.

  20. ColorSegment 서비스 활용

  21. ColorSegment 메니페스트 지정

  22. DSS 보안설정 해제

  23. DSS 보안설정 해제 • VPL을 종료한 후, 재시작 시킬 것

  24. ColorSegment 색상 지정

  25. 마우스를 클릭하여 시작과 끝점을 지정해 줄 것

  26. ColorSegment 기반의 대상 물체 탐색 • 도전 과제 • ColorSegment를 통해 추출된 색상 영역의 리스트를 출력하시오

  27. ColorSegment 기반의 대상 물체 탐색 • 도전 과제 • ColorSegment를 통해 추출된 색상 영역중에서 Red를 감지한 후, 해당 영역의 넓이와 중심 좌표를 출력하시오.

  28. ColorSegment 기반의 대상 물체 탐색 • 도전 과제 • ColorSegment를 통해 추출된 색상 영역중에서 Red를 감지한 후, 해당 영역으로 로봇을 접근시키시오

  29. 패턴인식서비스를 활용한 VPL 지능형 로봇 프로그래밍

  30. 패턴인식 환경 • 시뮬레이션 공간상에 주어진 박스들의 색상과 내부 도형을 모두 찾기

  31. 패턴인식 데모 • 시뮬레이션 공간상에 주어진 박스들의 색상과 내부 도형을 모두 찾기 Demo

  32. 패턴인식 환경의 구성 • 시뮬레이션 환경 및 로봇 • 로봇 센서 및 제어용 서비스

  33. 패턴인식을 위한 수행 요소 시뮬레이션 환경 시뮬레이션 웹캠 전처리 서비스 로봇 제어 서비스 특징 추출 서비스 분류 서비스 학습 서비스 분류 서비스

  34. 수행 요소 설명 • 시뮬레이션 환경 및 로봇 • 시뮬레이션 웹캠 • 시뮬레이션 환경의 카메라 영상 획득 • 전처리 서비스 • 대상 영역을 탐색하고 인식 대상 이미지를 추출함 • 특징추출 서비스 • 대상의 형태를 인식하기 위한 특징 값을 추출함 • 분류 서비스 • 자체의 분류기를 통해 대상의 형태를 인식함 • 후처리 서비스 • 인식된 결과 관리 및 미션 완료 여부를 파악함 • 로봇 제어 서비스 • 학습 서비스 • 분류기를 학습시킴

  35. 패턴인식 예제 서비스 구성 • 시뮬레이션 환경 및 로봇 • PRBotSpace • 시뮬레이션 웹캠 • PRBotWebCam 서비스 • 전처리 서비스 • PRPreProcessor • 특징추출 서비스 • PRFeatureExtractor • 분류 서비스 • PRClassifier • 후처리 서비스 • PRPostPrecosser • 로봇 제어 서비스 • PRBotContactSensors • PRBotDifferentialDrive • PRBotLaserRangeFinder • 학습 서비스 • PRTrainer

  36. 미션 완료 여부 체크 • 인식해야 할 대상의 개수를 미션 시작 전에 등록 • 등록된 미션 개수 만큼 대상을 찾아 내었을 경우, 미션 완료로 간주 • 박스의 지정된 색상과 해당 박스 안의 도형의 모양을 모두 정확히 인식해 내어야 함 • 최소 4개 이상의 다른 색상과 도형으로 조합된 박스를 배치할 예정 • 미션 수행자는 주어진 개수만큼의 조합을 모두 찾아 내어야 함

  37. 미션 수행의 특징 • 로봇 스스로의 공간 분석 기능 체크 • 웹캠 상의 화면을 분석하고 공간상에 주어진 사물에 접근하기 위한 제어기술 필요 • 로봇 스스로의 사물 식별 기능 체크 • 주어진 색상과 도형의 형태를 스스로 인지하는 기술 필요 • 영상처리 및 패턴인식과 관련된 기본적인 AI 기술 활용 • 로봇 스스로의 자율 주행 체크 • 로봇의 각종 센서와 주행을 제어할 수 있는 기술 필요 • 인식 결과 관리 기능 체크 • 인식된 결과를 중복으로 처리하지 않고 유일한 조합을 관리하고 미션을 진행하는 기술 필요

  38. 미션 수행을 위한 참조 기술 • 영상 처리 기술 • 비트맵 제어 기술 • 이진화 • 정규화 • 특징 추출 기술 • 패턴 인식 기술 • 통계적 기술 • 신경망 분류기 적용 기술 • 로보틱스 기술 • MSRS의 기본적인 로봇 서비스 개념 학습 필요 • MSRS 프로그래밍 기술 • 기본적인 서비스 개발 기술 • VPL 활용 기술 • C# 개발 기술

  39. 색상 히스토그램 • 특정 색상의 영역을 찾아내기 위하여 획득된 비트맵 이미지로 부터 특정 색상의 RGB가 누적 계산 • 획득된 이미지에 대해 세로 또는 가로 방향으로 특정 색상 영역 누적 • 계산된 값을 통해 해당 이미지에 대상 사물이 존재하는 체크 • 사물이 존재할 경우, 크기와 방향을 계산 • 대상이 화면의 중앙에 오도록 로봇 회전 시킴 • 대상이 화면의 중앙에 있을 경우, 히스토그램 값이 어느 크기 이상이 될 때 까지 로봇을 대상에 접근시킴 • 샘플 코드 • 시뮬레이션 축구 예제에서 빨간색 공을 찾아가는 예제 활용

  40. 이미지 정규화 • 획득된 이미지에서 대상이 발견되고, 그 크기가 지정된 크기 이상으로 감지되었을 경우, 인식 단계로 진행하기 위해 대상 영상을 추출하는 작업 진행 • 영상 추출 후, 특징 추출을 원할히 하기 위해 지정된 크기로 이미지를 정규화 시킴 • 샘플 코드 • SimpleVision 예제에서 검출된 얼굴영상을 정규화 시키는 예

  41. 특징 추출 방법 • 획득된 이미지에 포함되어 있는 도형의 형태를 인식하기 위해 식별력이 증가시켜 주는 특징 요소 계산 • 이진화 • 특징 추출을 원할하게 하기 위해 이미지를 이진화하여 도형 패턴이 추출될 수 있도록 함 • 가로 및 세로 방향의 픽셀 합계 • 가로 및 세로 방향으로의 픽셀 합계를 통해 도형 분포 정보를 특징으로 활용 • 대각선 방향으로의 픽셀 합계 • 대각선 방향의 픽셀 합계는 삼각형과 같은 사선 형태의 정보를 파악할 수 있도록 함 • 8x8, 16x16 등 작은 크기의 정규화 값 • 픽셀의 분포를 축소된 형태의 이미지를 통해 파악할 수 있음 • 신경망 분류기 등의 입력 데이터로 사용될 수 있음

  42. 인식(분류) 방법 • 추출된 특징 값을 통해 어느 형태의 도형인지 판별 • 통계적 방법 • 이미 학습되어 분류되어 있는 모델 값들과 비교하여 가장 유사도가 높은 (상호 거리 값이 가장 작은) 모델로 분류 • 구현예) 모델의 평균값과 특징값 사이의 거리 제곱값을 사용 • 인식 대상을 추가하거나 삭제하는 것이 용이 • 학습시 속도가 빠름 • 신경망 분류기 • 추출된 입력값을 신경망 분류기에 입력하면, 신경망 분류기는 학습 효과에 의해 출력값을 리턴함 • 리턴된 출력값을 파악하여 분류 결과를 도출해 냄 • 인식해야 할 대상을 사전에 모두 정의해 놓아야 함 • 학습시 많은 시간이 소요될 수 있음

More Related