[OpenDDS] 2.실시간 영상 스트리밍 구현::테스트베드

Juhyun Maeng
juhyun.maeng
Published in
8 min readAug 30, 2019

맹주현 (JuHyun Maeng), 이동혁(DongHyuk Lee)

지난 1부에 이어 이번 2부에서는 네트워크 환경 구축을 위한 OpenDDS 빌드와 영상을 획득할 수 있는 환경 구축을 위한 OpenCV 빌드 과정에 대한 설명을 다룹니다. 이후 글을 통하여 OpenDDS에서 웹캠으로 획득한 영상을 전송하는 과정에 대한 설명을 다룰 것입니다.

환경 구축에 필요한 오픈 소스로는 OpenDDS와 OpenCV가 있습니다.

OpenDDS : 3.12.2 32bit Windows

OpenCV : 3.4.4 64bit Windows

  • OpenDDS와의 호환을 위하여 OpenCV를 32bit로 수정하는 작업을 진행하였습니다.

테스트베드를 구축한 PC 환경은 아래와 같습니다.

OS : Windows 10 64bit

Compiler : Visual C++ 14 (Microsoft Visual Studio 2015)

OpenDDS 빌드

구축하려는 테스트베드의 목표는 OpenDDS 기반의 Pub/Sub 모델을 통하여 웹캠 영상을 실시간 스트리밍 하는 것입니다. 이를 위하여 먼저 OpenDDS를 빌드하는 작업을 진행하였습니다.

위 OpenDDS 링크에서 OpenDDS-3.13.2.zip (Windows)를 다운로드합니다.

  • 링크를 통하여 OpenDDS 빌드 과정에 대한 세부사항을 확인할 수 있습니다.

Configure

Visual Studio 2015용 개발자 명령 프롬프트를 이용하여 Configure 과정을 진행할 수 있습니다. Configure는 OpenDDS 소스 파일의 환경설정을 해주는 파일(명령어)로써 OpenDDS-3.13.2.zip에 포함되어 있습니다. 그래서 압축을 푼 후, 명령 프롬프트를 통하여 이 파일로 Configure 과정을 진행합니다. 그러나 Configure 과정 중 생기는 오류가 있기 때문에 우선 Configure 파일의 일부를 수정해야 합니다.

압축파일 푼 후, Configure 파일 위치

Command Line 408 에서 기존 ‘~/cl(\.exe)?$/i)’로 작성되어 있는 부분에 Windows 환경의 디렉토리 접근 명령어인 ‘\\’를 추가합니다.

Configure 파일 수정 위치 및 내용

Command Line 1611 에서 ‘-type $mpctype’ 부분을 ‘-type vc14’로 수정합니다. $mpctype 부분에 자신이 사용하고 있는 Visual Studio Compiler 버전을 입력하는 것입니다.

Configure 파일 수정 위치 및 내용

다운로드 링크에서 확인할 수 있듯이 OpenDDS는 Windows와 Linux 둘 다 지원합니다. 각각의 압축파일을 다운로드하여서 원하는 OS에 맞는 OpenDDS를 빌드하여 사용할 수 있습니다. 여기서 우리가 다운로드 한 Windows용 OpenDDS의 압축파일을 해제하여 확인한 Configure 파일 내 포함된 일부 명령어가 Linux용으로 되어있기 때문에 미리 수정 없이 Configure 과정을 진행하면 오류가 발생할 수 있습니다.

각 OS별로 지원되는 OpenDDS

setenv.cmd 환경변수 설정

Configure 과정을 마치고, OpenDDS에서 필요한 환경변수를 설정하기 위하여 setenv.cmd 명령어를 이용해 자동으로 환경변수를 맞추어 줄 수 있습니다.

명령 프롬프트를 통하여 환경변수 설정

Microsoft Visual Studio 2015 실행 및 빌드

Visual Studio가 설치된 폴더에서 Visual Studio를 실행합니다.

명령 프롬프트를 통하여 Visual Studio 실행

실행된 Visual Studio에서 OpenDDS가 설치된 폴더에 생성한 솔루션 파일을 불러올 수 있습니다. 솔루션 파일을 불러온 후, 빌드를 통하여 OpenDDS 빌드 과정을 완료하게 됩니다.

Visual Studio를 통하여 솔루션 파일 불러오기 및 빌드

테스트 파일 실행

OpenDDS를 설치한 \DevGuideExamples\DCPS\Messenger 폴더로 이동한 후, 명령 프롬프트에서 run_test.pl를 입력하여 OpenDDS의 기본 예제 중 하나인 Messenger를 실행하였습니다. 실행이 정상적으로 되었다면 아래와 같은 결과가 출력됨을 확인할 수 있습니다.

명령 프롬프트를 통하여 예제 실행 후, 출력 결과 확인

여기까지가 Windows 10에서 Visual Studio 2015를 통하여 OpenDDS 3.13.2를 빌드하는 과정에 대한 설명입니다.

OpenCV 3.4.4 빌드

이어서 빌드를 완료한 OpenDDS에 OpenCV를 빌드하고 통합하는 작업을 진행하였습니다. 다운로드 링크에서 opencv-3.4.4 (Windows)를 다운로드합니다.

OpenCV 32bit로 수정

OpenDDS가 32bit 이기 때문에 OpenCV를 32bit로 수정하는 작업을 진행하였습니다. 이는 OpenDDS에 OpenCV를 통합하기 위함이며, Windows용 OpenCV는 64bit만 제공되기 때문에 필요한 과정입니다.

CMake 다운로드

OpenCV 소스 다운로드

CMake를 통하여 OpenCV 64bit를 32bit로 전환한 후, OpenCV 32bit 빌드

CMake 툴을 이용하여 OpenCV 3.4.4 64bit를 32bit로 수정 및 빌드 하였습니다. 그리고 Visual Studio 2015를 통하여 앞서 빌드 한 OpenDDS 프로젝트에서 OpenCV를 사용할 수 있도록 OpenCV 헤더파일 디렉토리와 라이브러리를 추가하였습니다.

OpenCV를 빌드 한 디렉토리의 include 폴더를 Visual Studio 프로젝트 관리의 추가 포함 디렉토리에 추가합니다.

OpenDDS 프로젝트에 OpenCV include 폴더 추가

OpenCV를 빌드 한 디렉토리의 lib 폴더를 Visual Studio 프로젝트 관리의 추가 라이브러리 디렉토리에 추가합니다.

OpenDDS 프로젝트에 OpenCV lib 폴더 추가

OpenCV를 빌드한 디렉토리의 lib 파일을 Visual Studio 프로젝트 관리의 추가 종속성에 추가합니다. 그 결과, OpenDDS에서 OpenCV의 라이브러리를 사용할 수 있습니다.

OpenDDS 프로젝트에 OpenCV lib 파일 추가

이슈 사항

위와 같이 OpenDDS와 OpenCV를 통합한 후, OpenDDS 프로젝트를 실행하면 “응용프로그램을 제대로 시작하지 못했습니다. (0xc000007b)” 와 같은 오류가 발생할 수 있습니다. 이는 라이브러리 링크와 관련된 문제이며, 이 문제는 C:\(OpenCV가 설치된 디렉토리)\build\x86\vc14\bin에 있는 dll 파일 3개를 C:\Windows\SysWOW64 으로 복사해주면 해결될 것입니다.

Edit by

맹주현
한양대학교 컴퓨터·소프트웨어학과 박사과정
maengjuhyun@gmail.com
관심분야 : Blockchain, Network, DDS

이동혁
한양대학교 컴퓨터·소프트웨어학과 석사과정
shine5601@naver.com
관심분야 : DDS, Network, Blockchain

그림 출처

각 OS별로 지원되는 OpenDDS
https://opendds.org/downloads.html

--

--

Juhyun Maeng
juhyun.maeng

Hanyang University, Seoul, Republic of Korea Major in Computer·Software, PhD candidate