Download
latest Releases : 2.0.0-RELESE
2.0.0-RELESE | Download page |
Number of Projects
RT-Component | 153.5 |
RT-Middleware | 35 |
Tools | 22 |
Documentation | 2 |
Choreonoid
Motion editor/Dynamics simulator
OpenHRP3
Dynamics simulator
OpenRTP
Integrated Development Platform
AIST RTC collection
RT-Components collection by AIST
TORK
Tokyo Opensource Robotics Association
DAQ-Middleware
Middleware for DAQ (Data Aquisition) by KEK
OpenCV라이브러리의 RT컴포넌트화(Flip컴포넌트)
이 페이지에서는 OpenCV라이브러리 중, 화상을 반전 시키는 cvFlip()를 VC9에서 RT컴포넌트화 합니다.
이하는 작업의 흐름입니다.
cvFlip함수에 대해
cvFlip함수는 2차원 배열을 수직, 수평 또는 양축으로 반전합니다.
컴포넌트의 개요
InPort에서 입력 받은 화상을 반전해서 OutPort로 출력하는 컴포넌트
반전의 대상축은 RTC의 컨피그레이션 기능을 사용해서 flip_mode라는 이름의 파라메터로 지정합니다.
flip_mode는 반전하고 싶은 방향에 따라 이하와 같이 지정해 주십시오.
작성한 RTC의 사양은 이하와 같습니다.
※ TCameraImage형이란, OpenRTM-aist의 InterfaceDataTypes.idl에서 이하와 같이 정의하고 있는 데이터형입니다.
그림 1은 각각의 flip_mode에서의 화상처리 이미지입니다.
동작 환경・개발 환경
Flip컴포넌트 모형의 생성
Flip컴포넌트 모형의 생성은 RTCBuilder를 사용합니다.
RTCBuilder의 기동
eclipse를 기동하면 이하와 같은 Welcome페이지가 표시됩니다.
이 Welcome페이지를 좌측 상단의 「X」를 눌러 닫으면 이하의 페이지가 표시됩니다.
우측 상단의 「Open Perspective」버튼을 눌러 풀다운의 「Other…」버튼을 누릅니다.
「RTC Builder」를 선택하는 것으로 RTCBuilder가 기동합니다.
RTCBuilder 용 프로젝트 생성
우선, RT컴포넌트를 작성하기 위한 Eclipse프로젝트를 작성합니다. 화면 상부의 메뉴에서 [File]-[New]-[Project]를 선택합니다.
표시된「New Project」화면에서, [Other]-[RTC Build]를 선택해,「Next」를 클릭.
「Project name」에 작성하는 프로젝트명을 입력하고 [Finish]를 클릭.
지정한 프로젝트 이름의 프로젝트가 생성되어 패키지 익스플로어에 추가됩니다.
생성한 프로젝트에는, 디폴트 값이 설정된 RTC 프로파일 XML(RTC.xml)가 자동적으로 생성됩니다.
RTC 프로파일 에디터 기동
RTC 프로파일 에디터를 열려면 , 툴바의「 Open New RtcBuilder Editor 」버튼을 클릭하던가, 도구모음의 [file]-[Open New Builder Editor] 를 선택합니다.
데이터 포트에서 사용하는 데이터 타입 정의 파일 소재의 설정
데이터 포트나 서비스 포트에서 사용하는 데이터형이 정의된 IDL파일이 놓인 위치를 미리 설정해 둘 필요가 있습니다.
※ 여기서의 설정 내용은 워크 스페이스를 변경하지 않는 한 유효하므로, 프로젝트마다 설정할 필요는 없습니다.
이하와 같은 순서로 데이터형이 정의되어 있는 IDL파일의 소재를 설정해 주십시오.
컴포넌트의 프로파일 정보 입력과 코드의 생성
1. 「Basic」탭을 선택해 기본 정보를 입력합니다.
2. 「Activity」탭을 선택해 사용하는 액션 콜백을 지정합니다.
Flip컴포넌트는 onActivated(), onDeactivated(), onExecute() 콜백을 사용하기 때문에 그림 14와 같이 on_activated, on_deactivated, on_execute의 3개를 ON으로 설정합니다.
3. 「Data Ports」탭을 선택해 데이터 포트의 정보를 입력합니다.
4. 「Configuration」탭을 선택해 Configuration의 정보를 입력합니다.
5. 「Language and Environment」탭을 선택해 프로그래밍 언어를 선택합니다.
여기에서는 C++(언어)를 선택합니다.
6. 「Basic」탭에 있는 "Code Generation"버튼을 클릭해 컴포넌트의 모형을 생성합니다.
※ 생성되는 코드는 eclipse기동시에 지정한 워크 스페이스 폴더안에 생성됩니다. 현재의 워크 스페이스는 「File」-「Switch Workspace」에서 확인 가능합니다.
액티비티 처리의 구현
Flip컴포넌트에서는 InPort로 부터 받은 화상을 화상 저장용 버퍼에 저장해 그 저장한 화상을 OpenCV의 cvFlip()함수에서 변환합니다. 그 후, 변환된 화상을 OutPort에서 송신합니다.
onActivated(), onExecute(), onDeactivated()에서의 처리 내용을 그림 19에 표시합니다.。
onExecute()에서의 처리를 그림 20에 표시합니다.
OpenCV용 유저 프로퍼티 시트의 복사
프로퍼티 시트란 컴파일에 필요한 여러가지의 옵션(인클루드 경로, 라이브러리 로드 경로, 라이브러리)이나 매크로를 기술한 VC의 설정 파일의 일종입니다. RTCBuilder나 rtc-template로 생성한 VC용 프로젝트에서는 VC의 프로퍼티 시트를 이용해 각종 옵션을 부여합니다. 또한, 유저가 추가로 옵션을 추가할 수 있도록 유저 설정의 프로퍼티 시트도 인클루드 하도록 되어 있습니다.이하의 내용을 user_config.vsprops라는 파일명으로 저장해 Flip폴더에 복사해 주십시오.
또는 아래의 링크에서 vsprops파일을 다운로드해 Flip폴더에 저장해 주십시오.
user_config.vsprops
※ 이미 Flip폴더에는 user_config.vsprops파일이 존재하지만 덮어쓰기 해도 됩니다.
copyprops.bat의 실행
copyprops.bat라는 파일을 실행하는 것으로 rtm_config.vsprops이라는 파일이 복사됩니다.
rtm_config.vsprops파일은 RT컴포넌트를 VC++로 빌드하기 위해 필요한 인클루드 경로나 링크하는 라이브러리 등이 기술되어 있는 파일입니다.
헤더 파일의 편집
소스 파일의 편집
이하와 같이 onActivated(), onDeactivated(), onExecute()를 작성합니다.
Flip컴포넌트의 패키지
구현된 패키지를 아래의 링크에서 다운로드할 수 있습니다.
확장자가 "zip_"으로 되어있기 때문에 "zip"으로 리네임한 뒤 압축을 해재해 주십시오.
빌드의 실행
Flip_vc9.sln파일을 더블 클릭해 Visual C++ 2008을 기동합니다.
Visual C++ 2008의 기동후 그림 21와 같이 컴포넌트를 빌드합니다.
Flip컴포넌트의 기동 확인
여기에서는 「OpenCV용 RTC군(Win32용 인스톨러)」에서 인스톨한 USBCameraAqcuireComp 컴포넌트와 USBCameraMonitorCom 컴포넌트 그리고 이번에 작성한 Flip 컴포넌트를 접속해 동작을 확인합니다.
NameService의 기동
omniORB의 네임 서비스를 기동합니다.
[시작] > [모든 프로그램] > [OpenRTM-aist] > [C++] > [tools] 의 순서로 「Start Naming Service」를 클릭해 주십시오.
&color(RED){※ 「Star Naming Service」을 클릭해도 omniNames가 기동되지 않는 경우는 컴퓨터 이름이 14문자 이내로 설정되어 있는지를 확인해 주십시오.
rtc.conf의 작성
RT컴포넌트에서는 네임 서버의 주소나 네임 서버에의 등록 포맷 등의 정보를 rtc.conf라는 파일에 지정할 필요가 있습니다.
이하의 내용을 rtc.conf라는 파일명으로 저장해 Flip\FlipComp\Debug(또는 Release)폴더에 넣어 주십시오.
※ Eclipse기동시에 workspace를 디폴트 상태로 한 경우 Flip폴더의 경로는
C:\Documents and Settings\<로그인 유저명>\workspace 입니다.
Flip 컴포넌트의 기동
Flip 컴포넌트를 기동합니다.
조금 전 rtc.conf 파일을 넣은 폴더에 있는 FlipComp.exe 파일을 실행합니다.
USBCameraAqcuire,USBCameraMonitor 컴포넌트의 기동
USB카메라의 캡쳐 화상을 OutPort로 출력하는 USBCameraAqcuireComp 컴포넌트와 InPort에서 취득한 영상을 화면에 표시하는 USBCameraMonitorComp컴포넌트를 기동합니다.
이 2개의 컴포넌트는 이하의 순서로 기동시켜 주십시오.
[시작] > [모든 프로그램] > [OpenRTM-aist] > [components] > [C++] > [OpenCV] 의 순서로 「USBCameraAqcuireComp」와「USBCameraMonitorComp」를 각각 클릭해 실행합니다.
컴포넌트의 연결
그림 22와 같이 RTSystemEditor에서 USBCameraAqcuireComp, Flip, USBCameraMonitorComp 컴포넌트를 연결합니다.
컴포넌트의 Activate
RTSystemEditor의 상부에 있는 「ALL」이라는 아이콘을 클릭해 모든 컴포넌트를 액티베이트 합니다.
정상적으로 액티베이트된 경우 그림 23과 같이 녹색으로 컴포넌트가 표시됩니다.
동작 확인
그림 24와 같이 컨피그레이션 뷰에서 컨피그레이션을 변경할 수 있습니다.
Flip 컴포넌트의 컨피그레이션 파라메터 「flipMode」을 「0」이나「-1」등으로 변경해 화상이 반전되는지 확인해 주십시오.
다른 PC에서 동작하는 RTC의 연결
다른 PC에서 동작하는 RT컴포넌트를 접속합니다.
rtc.conf의 편집
사용하고 있는 PC에 네트워크 인터페이스가 복수로 존재하는 경우, 이하와 같이 "corba.endpoints" 를 설정해 주십시오.
컴포넌트의 기동
USBCameraMonitorComp 컴포넌트를 기동해 주십시오.
[시작] > [모든 프로그램] > [OpenRTM-aist] > [components] > [c++] > [OpenCV] 의 순서로 "USBCameraMonitorComp.exe"를 클릭합니다.
다른 PC상에서 기동되어 있는 네임 서버에의 접속
그림 25의 상부에 있는 콘센트 마크의 버튼을 눌러 그림 26의 다이얼로그에서 다른 PC의 IP주소를 입력합니다.
컴포넌트의 연결
다른 PC상의 네임 서버에 등록되어 있는 USBCameraAcquire 컴포넌트와 localhost네임 서버상에 등록되어 있는 USBCameraMonitor 컴포넌트를 시스템 에디터 상에 드래그 앤 드롭합니다.
다음에 USBCameraAcquire의 OutPort와 USBCameraMonitor의 InPort를 그림 27과 같이 연결합니다.
컴포넌트의 액티베이트
그림 28과 같이 USBCameraMonitor에서 마우스 오른쪽 버튼을 클릭해 "Activate"를 클릭합니다.
USBCameraMonitor 컴포넌트의 화면상에 화상이 표시되면 성공입니다.
Flip 컴포넌트의 소스・헤더 파일
Flip 컴포넌트의 소스 파일
Flip컴포넌트의 헤더 파일