• 검색 결과가 없습니다.

스튜디오를이용한로봇소프트웨어개발

N/A
N/A
Protected

Academic year: 2022

Share "스튜디오를이용한로봇소프트웨어개발"

Copied!
5
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

로봇을 만들고 개발하는 사람들 중에 상용으로 판매하는 개발 업체도 있겠지만, 아무래 도 로봇이란 것을 처음 접하고 이것들을 간단히 스크립트 언어 같은 걸로 움직일 수 있다 는 사실에 매우 기뻐하는 사람들이 훨씬 더 많을 것으로 생각한다.

그런 사람들은 대부분 취미로 로봇을 개발하는 사람들 혹은 학교에서 전자공학 및 제어 계측 관련 전공자들일 것이다. 필자는 학교에서 로봇을 통해 소프트웨어를 구동해 보는 것을 그 어느 것 보다도 최우선 순위를 두어야 할 우리의 과제로 생각한다. 사람들은 재미 있고 흥미 있는 일들에 대해 늘 도전하기 마련이다. 이번 호에서는 로봇들을 구동시키는 소프트웨어 플랫폼과 서비스, 개발 도구에 대해 알아보도록 하겠다.

로봇 소프트웨어 플랫폼의 필요성

현재 로봇 하드웨어는 그야말로 춘추 전국 시대를 맞이하고 있다. 각종 산업별로 기능 형 로봇부터 지능형 서비스 로봇 그리고 인간을 닮아가는 휴먼로이드 로봇 등 그 종류도 천차만별이다. 하지만 이러한 로봇을 동작시키는 소프트웨어 또한 제각각 사용된다.

다시 말해 로봇 소프트웨어 간 호환성이 없다는 뜻이다. 예를 들어 단일 로봇을 만들 때 에는 상관없지만 다른 로봇과 의사소통을 하거나 여러 대의 다양한 로봇을 개발한다고 가

1

TECHNICALFEATURE

정할 때 공통된 표준 소프트웨어가 없다면 어떻게 되겠는가?

현재의 로봇 소프트웨어 제작 공정을 흐름 별로 살펴보자면 처음 어떤 로봇을 개발할 것인가 하는 기획 단계를 통해 로봇 프로토 타입을 하나 만들어 실제 환경에 잘 적응되 고 있는지 테스트 한 다음 본격적인 대량양 산 체제로 가동하게 될 것이다.

그렇다면 로봇 분야에서의 소프트웨어 필 수 요소는 기본적으로 로봇을 구동시키고 서 비스를 제어할 수 있는 개발 프레임워크, 디버 깅 및 배포, 보안 및 로깅, 시뮬레이션 등이 포 함되어 있어야 개발자들이 쉽게 로봇 소프트 웨어를 개발할 수 있다. 바로 이러한 로봇 소 프트웨어를 만들기 위해 공통된 프레임워크 및 개발자들에게 친숙한 IDE 환경을 제공하

MS 로보틱스

스튜디오를 이용한 로봇 소프트웨어 개발

지난 달 첫 연재에서는 국내외 로보틱스 시장과 비즈니스 기회에 대해 알아보며 국 내 로봇 개발 업체의 현실과 어려움에 대한 문제를 제기했다. 그렇다면 이번 달에는 그러한 문제를 하나씩 하나씩 풀어 나가보도록 하자.

글 : 서진호 차장 / 한국 마이크로소프트 JinHo.Seo@microsoft.com

MS 로보틱스 스튜디오로 서비스 로봇 만들기 ②

(2)

는 데 그것이 바로 마이크로소프트 로보틱스 스튜디오 플랫폼이다.

MS 로보틱스 스튜디오 설치 및 구성

마이크로소프트 로보틱스 스튜디오는 시작부터 수많은 로봇 하 드웨어 파트너와 협업하는 시스템으로 이루어졌다. 잘 아시다시 피 마이크로소프트라는 회사는 하드웨어(마우스 및 키보드 등 일 부 품목 제외)를 만들지 않고 소프트웨어만 개발하는 회사이다.

즉, 하드웨어는 OEM이라 부르는 하드웨어를 주문형 생산 방식 으로 만드는 업체가 제조하기 때문에 이 OEM사가 마이크로소프 트 로봇 하드웨어 파트너 회사가 된다. 현재 전 세계 20개 이상의 로봇 하드웨어 파트너사가 기본적으로 MS 로보틱스 스튜디오 안 의 컴포넌트 서비스를 제공하고 있다.

MS 로보틱스 스튜디오 설치 순서는 여러분의 PC에 Windows Vista, Windows XP 프로페셔널과 같은 운영체제를 설치하면서 시작된다. 그 후 Visual Studio 2005와 Visual Studio 2005 서 비스 팩1을 설치한 다음 마이크로소프트 다운로드 홈페이지에 가 서 Microsoft Robotics Studio(1.5) 압축 실행 파일을 다운로드 받아 실행시키면 조금 있다그림 1과 같이 화면이 나타난다.

그림 1에서 보듯이 MS 로보틱스 스튜디오는 현재 나와 있는 마 이크로소프트 기술들을 복합적으로 사용한 예라고 볼 수 있다. 모 두 설치해 주기 바란다. Visual C++ 런타임은 이미 Visual Studio 2005에 포함되어 있으므로 설치하지 않아도 된다.

또한 로봇 시뮬레이션을 위한 XNA기반 AGEIA 사의 PhyX 기 술은 DirectX 9.0c 런타임을 필요로 하며 MS 로보틱스 스튜디오 는 .NET 런타임 3.0을 기반하고 있어서 C#이나 VB.NET, IronPhython과 같은 언어를 지원한다. 만일 여러분의 PC에 이러 한 컴포넌트가 설치되어 있지 않다고 해도 인터넷만 연결되어 있 으면 자동적으로 설치된다.

MS 로보틱스 스튜디오 설치가 모두 끝나면 프로그램 메뉴에 Microsoft Robotics Studio(1.5) 라는 폴더가 생긴다. 이 프로그

램은 IDE 환경을 사용하지 않고 Command Shell에서 컴파일 할 수 있도록 Command Shell 환경을 구현하며 DSS에 관계된 Manifest 수정 및 실행을 지원한다.

또한, 추가적으로 로봇 소프트웨어를 구동하기 위한 Visual Programming language와 실제 환경의 로봇을 가상에서 시뮬레 이션 해 주는 Visual Simulation Environment도 제공한다. 이 설명에 대해 도대체 무슨 말인지 의아해 하는 독자 분들이 많으리 라 생각한다. 그 어디에도 로봇 소프트웨어를 구동시키는 프로젝 트 파일이 없기 때문이다.

그림 2와 같이 Visual Studio 2005의 프로젝트를 실행시켜 보 니 Project Type에 드디어 Robotics가 보인다. MS 로보틱스 스 튜디오 1.5부터는 Visual Studio 2005와 통합되어 플러그 인 형 태로 제공된다. 반드시 마이크로소프트 로보틱스 스튜디오 1.5를 설치해야만 Project Type으로 4가지 템플릿이 보인다.

MS 로보틱스 스튜디오의 핵심, DSS와 CCR

그림 3은 MS 로보틱스 플랫폼을 한 눈에 볼 수 있는 그림으로 그림 1. MS 로보틱스 스튜디오 설치 화면

(3)

다른 로봇 소프트웨어 플랫폼과 달리 MS 로보틱스 플랫폼은 DSS와 CCR이라는 핵심 컴포넌트가 있다. DSS는 우리말로‘비 집중방식 소프트웨어 서비스(Decentralized Software Services)’로 부를 수 있는데 기존의 DCOM이나 CORBA같은 분 산형 서비스와 많이 닮았으나, 그것들은 엔터프라이즈 미들웨어 에서 사용하는 것이기 때문에 로봇과 같은 소규모 소프트웨어는 맞지 않다.

따라서 마이크로소프트는 WCF와 같은 분산형 서비스 형식을 빌려와 로봇의 동작이나 센서, 모터 등에 대한 상태 값을 웹 서비

스 기반으로 제공하는 DSS 시스템을 구축하였다. DSS는 HTTP/SOAP 프로토콜을 지원하며 특정한 포트를 통해 XML 형 태의 메시지로 로봇을 제어할 수 있다.

한편, CCR은‘동시 및 유기 런타임(Concurrency and Coordination)’이라고 부르는 데, 멀티 프로세스나 서비스를 비 동기적으로 호출하고자 할 때 쓰레드 정렬이나 쓰레드 락이 걸리 지 않기 위한‘느스한 커플링(Loosely-Coupled)’메시지 방식으 로 로봇을 동시 제어할 수 있는 혁신적 방식이다.

한마디로 말해 로봇을 구동하기 위한 응용 프로그램은 센서 및 액튜레이터의 조합이며 원격으로 제어하거나 스스로 움직이는 동 작을 감지하는 프로그램을 말하는데, 원격으로 제어할 때는 쉽고 편리한 사용자 인터페이스를 제공한다. 따라서 로봇 소프트웨어 플랫폼의 가장 큰 도전은 이러한 로봇이 동작하기 위해 필요한 센 서, 모터, 액튜레이터 등이 동시에 잘 움직이도록 디자인되고 이 것을 개발자에게 프레임워크로 개발하기 쉽게 제공되어야 하는 것이다.

예제로 MyRobot 서비스 만들기

이론만 설명한다면 독자들은 지루해 할 것이다. 그렇다면 이제 부터 여러분이 궁금히 여기는 MyRobot 서비스 예제를 하나 만들 어 MS 로보틱스 플랫폼이 어떻게 동작하는 지 알아보고자 한다.

첫째, 그림 4와 같이 Command Prompt 창을 띄워 Services 라는 새 폴더를 만들고 그 폴더로 이동하여 DSS 서비스를 다음과 같은 명령어로 실행한다.

둘째, Services\MyRobot 폴더로 이동하면 MyRobot 서비스에 관련된 소스 파일들이 생성된 것을 눈으로 확인할 수 있다.

1

TECHNICALFEATURE

DssNewService.exe /namespace:Robotics /service:MyRobot 표 1. 새 DSS 서비스 실행 명령

그림 2. Visual Studio 2005의 로보틱스 마법사

그림 3. MS 로보틱스 스튜디오 런타임

(4)

Command Prompt에 MyRobot.sln를 입력하면 자동적으로 Visual Studio 2005에서 MyRobot 솔루션 프로젝트를 불러오는 것을 그림 5와 같이 볼 수 있다.

셋째, 이제 DSS 서비스가 올바르게 동작하는지 점검하기 위해 MyRobot 솔루션 프로젝트를 Build 하기 바란다. 에러가 발생하 지 않았다면 Command Prompt 창에서 표 2처럼 DSSHOST 서 비스를 실행시켜 준다. DSSHOST 서비스는 여러분들이 만든 커 스텀 DSS 서비스를 실행시켜 주는 런타임 서비스에 해당된다.

넷째, 표 2의 DSSHOST 명령어를 Command Prompt 창에서 실행하면 DSSHOST가 MyRobot DSS 서비스를 생성한 결과를 볼 수 있다. Command Prompt 창을 닫지 말고 그대로 인터넷 익 스플로러를 실행시켜 URL에‘http://localhost:50000/

MyRobot’이라고 입력하면 SOAP 메시지 프로토콜로 정의된 MyRobot DSS 서비스를 보게 될 것이다.

다섯째, 로봇이 구동하기 위한 서비스에 Robot상태 속성 값을 추가하여 메시지 프로토콜로 전송해 보도록 하겠다. 불러왔던

Command Prompt 창을 모두 닫고 MyRobot 솔루션 프로젝트 를 불러와 MyRobotType.cs 파일을 찾도록 한다.

여섯째, MyRobotType.cs 파일에서 비어있는 MyRobotState 클래스 안에 표 3과 같이 DataMember 속성 값을 추가해 넣는다.

일곱째, 이제 로봇에서 실제로 SOAP 메시지를 받을 HTTP 서 비스 핸들러를 구현할 차례이다. 표 4와 같이 MyRobot.cs 파일 에서 HttpGetHandler 가상 메서드를 추가 한다.

그림 4. Command Prompt 창에서 DSS 서비스 실행 그림 5. Visual Studio 2005 MyRobot 솔루션 프로젝트

DssHost /port:50000 /manifest:"MyRobot.manifest.xml"

표 2. DSSHOST 실행 명령

[DataContract()]

public class MyRobotState {

private string _member = "This is a state.";

[DataMember]

public string Member {

get { return _member; } set { _member = value; } }

표 3. MyRobotState 클래스에서 DataMember 속성 값 추가

(5)

여덟째, Build Solution 하고 에러가 없다면 Debug 버튼을 누 르거나 표 2와 같이 수동으로 CommandPrompt에서 MyRobot 서비스를 실행시킨다. 인터넷 익스플로러를 실행시켜 http://

localhost:50000/MyRobot 주소로 이동하면 그림 6과 같이 SOAP 메시지 바디 안 MyRobotState에 Member 속성 값이 찍 혀 있는 것을 최종적으로 확인할 수 있다.

참고로 DSS 서비스의 제어판은 http://localhost:50000/

controlpanel 웹 주소에 포함되어 각종 서비스를 제어하거나 여 러 가지 옵션을 그림 7에서 보듯이 제공한다.

글을 마치면서

이제까지 여러분과 함께 DSSHOST 기반 MyRobot 서비스에서 Member라는 상태 값을 로봇에게 전달하는 방법에 대해 알아보았 다. DSS 서비스 단위는 로봇을 동작시키는 최소 단위이다. 다음 호 에는 이러한 DSS 서비스 기반에서 실제 로봇과 연동할 수 있는 Visual Programming Language 에 대해 알아보도록 하겠다.

1

TECHNICALFEATURE

그림 7. DSS 서비스의 ControlPanel 화면 그림 6. SOAP 메시지 결과 화면

1. 마이크로소프트 로보틱스 홈페이지(http://msdn.microsoft.com/robotics) 2. 마이크로소프트 로보틱스 비디오 튜토리얼(http://msdn2.microsoft.com

/en-us/robotics/bb383569.aspx)

3. 서진호의 모바일/임베디드 이야기(http://blogs.msdn.com/jinhoseo) 주석 및 참고

using Microsoft.Dss.Core.DsspHttp;

……….

[ServiceHandler(ServiceHandlerBehavior.Concurrent)]

public virtual IEnumerator<ITask> HttpGetHandler(HttpGet httpGet)

{

httpGet.ResponsePort.Post(new HttpResponseType(_state));

yield break;

}

표 4. MyRobotState 클래스에서 DataMember 속성 값 추가

참조

관련 문서

대표 적인 초탄성 모델을 이용하여 고무 재료의 단축 인장 시험과 이축 인장 시험의 예측 결과를 Figure 5와 같이 나타냈다.. Ogden 3차와 같은 고차항의 모델은 두 가지 이상의

Table 2 에서 보는 바와 같이 THFA의 함량이 증가함에 따 라 시럽의 분자량이 감소하는 것을 확인할 수 있다.. 따라서 동일 한 부피 내에서 THFA의 몰농도가 IBOA보다 크므로 THFA

반면에, TA의 경우에는 분자량이 낮음에도 오 히려 PEG600 단독의 경우보다 MFI가 약간 감소하는 것을 볼 수 있는데 이는 위에서 언급한 바와 같이 PEG600과 TA 가 함께 섞여

공업분석에서는 극성용매를 사용한 시료가 비극성용매를 사용한 시료보다 Ash 함량이 높았고, BET분석을 통해 희석침전방식을 사용한 시료가 감압증류를 사용하여 건조한 시료보다

셋째, 제공하는 재화나 서비스가 시민 생활에 불가피한 성 격을 가지고 있어 공급방식이나 가격 설정과 관련하여 정치 적으로 매우 민감하다. 운송과 관련한 네 트워크 개념뿐만

• 그리고 메뉴에서 Solover Parameters 를 선택하여 사용자가 원하는 형태의 해를 얻을 수 있다. 이는 다른 동영상 파일로 출력 가능하다... 원하는 변수의

이 때, 아이디와 패스워드를 입력하면 리눅스

철도와 선박회사들은 ICC를 가지 고 있고, 농부들은 농림부(the Agriculture Department)를 그리고 은행가들은 연방준비위 원회(the Federal Reserve Board)를