242 로봇공학회논문지제 2 권제 3 호 (2007.9) MSRS 시뮬레이션환경에서가상로봇의네트웍제어 Network Control for Virtual Robot in MSRS Simulation Environment 신동관 1 이성훈 2 이수영 3 최병욱 Dong-Gwan Shin 1 Sung-Hun Lee 2 Soo-Yeong Yi 3 Byoung-Wook Choi Abstract Robot system development consists of several sub-tasks such as layout design, motion planing, and sensor programming etc. In general, on-line programming and debugging for such tasks demands burdensome time and labor costs, which motivates an off-line graphic simulation system. MSRS(Microsoft Robotics Studio) released in recent years is an appropriate tool for the graphic simulation system since it supports CCR(Concurrency and Coordination Runtime), DSS(Decentralized System Services), and dynamics simulation based on PhysX and graphic animation as well. In this paper, we developed an MSRS based network simulation system for quadruped walking robots, which controls virtual 3D graphic robots existing in remote side through internet. Keywords : 3D simulation, Microsoft Robotics Studio, virtual robot, network control 1. 서론 1) 전기 전자및정보분야에서의기술혁신에의해일부산업현장및극한환경에서사용되었던로봇을인간생활에이용하여삶을더욱더윤택하게하고자하는연구들이최근많은연구실및산업체에서행해지고있다 [1][2][3]. 이러한로봇을개발하는데있어서로봇의움직임을결정하고배치할때개발자가로봇의움직임을직접확인하면서위치를수정하고프로그램을변경하는작업은많은시간과노력이소요되고그에따른비용이추가된다. 이러한문제를해결하기위한방법에는여러가지가있겠지만그중 3차원공간에서의모의시험하는방법을생각할수있다. 3차원공간에서의시뮬레이션은기존에가지고있던로봇의정보및새로추가된여러정보기술들을미리시스템에도입하여가상적으로로봇을작동해볼수있는컴퓨터모델이다. 이것은로봇을가상환경으로그대로옮겨놓은것이므로실제와동일하다고간주할수있다. 이를이용하면수치적인방법으로 1 서울산업대학교전기공학과석사과정 (E-mail : shingun@snut.ac.kr) 2 서울산업대학교전기공학과석사과정 (E-mail : dashe@snut.ac.kr) 3 서울산업대학교전기공학과부교수 (E-mail : suylee@snut.ac.kr) 교신저자 : 서울산업대학교전기공학과부교수 (E-mail : bwchoi@snut.ac.kr) 는파악하기힘든구조적인충돌, 간섭또한쉽게찾아낼수있으며로봇개발과정에서빈번하게발생하고있는설계변경및프로그램수정에추가되는비용과시간의낭비를최소화할수있다. 다시말하자면 3차원공간의시뮬레이션을통한개발은개발자의의사결정의질을향상시키기위한통합모의환경으로이는실제환경에근접한컴퓨터모델을구축하고이를이용하여실제로봇을수정하고제어함으로써로봇의개발기간및비용을줄이기위한방법이라고할수있다. 본논문에서는네트워크로연결된두대의컴퓨터에시뮬레이션환경의가상로봇을구현하여네트워크게임처럼두대의컴퓨터가서로통신하여각자의로봇을제어하도록하였다. 본논문에서사용한시뮬레이션툴은 MSRS(Microsoft Robotics Studio) 에서제공하는시뮬레이션툴을사용하였다. 이시뮬레이션툴은 AGEIA 사의 PhysX SDK를통해사물에물리적인특성을부여할수있어로봇의충돌및자세제어에대한동작시뮬레이션을수행할수있다. 본논문의구성은다음과같이구성하였다. 2장에서는우리가사용한 MSRS에대하여알아본다. 3장에서는우선시뮬레이션환경에로봇을어떻게추가하는지알
MSRS 시뮬레이션환경에서가상로봇의네트웍제어 243 아보고, 보안설정및제어프로그램수정을통한네트웍제어방법에대해알아본다. 마지막으로 4장에서는본논문의결론을정리한다. 2. Microsoft Robotics Studio 오늘날의로봇산업이 1970년대의 PC산업과비슷한양상을보인다는분석과함께앞으로의로봇산업의발전가능성을본마이크로소프트사는지난 2006년 12월에 MSRS 1.0을시작으로현재 MSRS 1.5버전까지공개했다 [4]. 현재로봇을개발하는각각의회사는서로다른운영체제와하드웨어를가지고로봇개발을수행한다. 물론프로그램언어또한다르다. 이러한다른로봇시스템사이의어플리케이션코드의재사용은거의불가능하다. 마이크로소프트에서는이러한문제를닷넷프레임워크를사용하여해결하고자하였다. 그림 2. MSRS Runtime 예제또한 CCR(Concurrency and Coordination Runtime) 을사용함으로써쓰레드 (thread), 록 (lock), 세마포어 (semaphore) 등의사용없이메시지를동시에처리할수있다. 그림 3. MSRS 를이용한로봇시스템아키텍처 그리고 DSS(Decentralized System Services) 를적용함으로써서비스호스팅환경을제공하고디버깅, 기록, 감시, 보안등과같은용이한작업들을제공한다. 3. 시뮬레이션환경구현 그림 1. 닷넷프레임워크구조 MSRS는학생, 상업적인개발자등다양한사람들이다양한하드웨어를통해쉽게로봇어플리케이션을만들수있는윈도우기반의환경이다. MSRS 로봇어플리케이션의전체적인목적은조정 (orchestrate) 에서다양한센서로부터입력받은정보를가지고모터를구동하는것으로그림 2에서는이에해당하는간단한예를보이고있다. 본논문에서는강아지형태의다관절로봇을 3D 모델링하여물리력이작용하는시뮬레이션환경에적용하였다. 가상로봇을구현하기위해로봇객체를생성하여로봇의무게, 표면 (Texture) 및관절연결에관한정보를작성하였다. 또한, 가상로봇을네트웍으로제어할수있도록하기위해 SimpleDashboard 프로젝트를수정하여원격컴퓨터와호스트컴퓨터의가상로봇을동시에제어할수있도록하였다. 이와같은작업을수행하기위해우리는 MSRS 웹사이트 [5] 에서 MSRS 1.5를다운로드하여설치하였고, 컴파일러는마이크로소프트사에서권장하고있는 Visual Studio 2005 Professional Edition을사용하였다.
244 로봇공학회논문지제 2 권제 3 호 (2007.9) 그림 4. 서비스구성도 생성한프로젝트에시뮬레이션환경을적용하기위해필요한라이브러리를추가한다. 또한추가한라이브러리를사용하기위해 using 키워드를사용하여소스의상단에기입하여준다. 3.1 3D 모델링을통한가상로봇 Entity 구현 MSRS에서제공하는시뮬레이션에가상로봇을구현하기위해서우리는 [ 그림 5] 와같은작업을수행하였다. 그림 7. 라이브러리추가 그림 5. 가상로봇구현로봇의 3D 모델링작업은 PRO-E를사용하였고 PRO-E 를사용하여만든모델링파일을 MSRS에서사용하기위해서는파일변환과정이필요하다. 이때모델링파일을변환하기위해사용한도구는 MSDN에서소개된 Blender를사용하였는데이것은 PRO-E의모델링파일을객체 (obj) 파일로변환하여 MSRS에서로봇의표면에사용된다. 그림 6. 모델링파일변환가상로봇을구현하기위해서는우선로봇 Entity가존재할프로젝트를생성해야한다. MSRS에서는이러한작업을수월하게하기위해 dssnewservice 라는명령어를제공한다. 이명령어는다음과같이사용하며 SimulatonSNUT라는 namespace와 Genibo라는서비스를생성하게된다. 로봇의객체를구현하기위해프로젝트에객체클래스를추가생성한후앞서말한것과같이시뮬레이션에필요한라이브러리들을사용하기위해소스의상단에 using 키워드를사용하여기입하여준다. 우리가구현하려고하는가상로봇은다관절로봇으로서이는 MSRS의시뮬레이션튜토리얼 4에있는 ArticulatedArms과그기본구조가비슷하여그에해당하는객체파일을가져다가수정하였다. 이객체정보는 MSRS의하위폴더인 samples\simulation\entityes에존재하며이파일에는 ArticulatedArms 객체이외에도센서, 모터, 기타로봇플랫폼등의정보도수록되어있다. 가상로봇을구현하기위해생성한로봇객체파일에서우리가해주어야할일을그림 8에서보이고있다. 우선베이스에대한물리정보를부여하고이를바탕으로나머지관절에대한물리정보를정의한후 Blender 로변환한 3D 모델링파일을사용하기위한변수를선언한다. 그다음관절의연결정보를수록하는연결부의변수를선언하는데우리는강아지형태의로봇을구현하기위해 5개의변수를선언하였다. 메인소스로부터로봇의초기생성위치를전달받는이함수는원래표면정보에관한전달은없었다. 기본객체파일에서표면은연결부를생성해주는부분에서바로적용하였는데이렇게처리될경우같은로봇을여러개생성할때각각의로봇의표면을다르게적용할수없게된다. 때문
MSRS 시뮬레이션환경에서가상로봇의네트웍제어 245 에우리는변수를선언하고이함수에표면전달인자를추가하였다. 그다음앞에서정의한각관절의물리정보와표면정보를이용하여각각의다리에대한링크를구성하고제어프로그램에서각관절을제어할수있도록이름부여및각연결부를초기화해주는초기화함수를구현한다. 이후에있는속도및자세등을처리해주는함수및구성한연결부를배열하는함수는기존의객체파일에있는함수그대로사용하여도된다. 그림 8. Visual Robot Entity Code 그림 9는앞에서생성한프로젝트의메인소스로시뮬레이션에존재하는각종사물들을선언해주며로봇의 ID를제어프로그램으로전달하는과정을보이고있다. 우선시뮬레이션엔진을사용하기위한파트너를선언하였고, 제어프로그램과의데이터통신을위해 _armservceport를선언하였다. Start() 함수는이후에정의한 AddSky(), AddGround() 등과같은시뮬레이션환경함수와가상로봇생성함수를구동하여프로그램운용시시뮬레이션상에나타낼수있도록해준다. 이시뮬레이션환경함수는 MSRS의튜토리얼에있는함수를가져다가사용하였다. 가상로봇생성함수역시 MSRS의시뮬레이션튜토리얼 4에있는내용을기초로하여작성하였다. 이함수에서는가상로봇객체파일로넘겨줄로봇의초기위치및표면에대한값을정의한다. 그다음생성할로봇의이름을부여한후시뮬레이션서비스를생성하고앞에서선언한 _armserviceport 를통해서비스생성결과를전달한다. 이렇게전달된정보는 SimulatedLBR3Arm 프로젝트로전달된다. 이프로젝트는가상로봇서비스를제어프로그램인 SimpleDashboard와연결해주는역할을한다. 여기에서우리가수정해줄것은거의없다. 우리의프로젝트가기존의 ArticulatedArm 프로젝트를기반으로작성한것이라기존의함수를그대로사용하여도무방한것이다. 우리가수정해줄것은단지생성한로봇객체라이브러리를참조해주고기존에사용하던 Kuka 로봇에대한객체이름을우리의 Genibo로교체해주기만하면된다. 이러한작업들을수행함으로써물리력이작용하는시뮬레이션환경에서동작하는가상로봇을구현할수있었다. 그림 10은시뮬레이션에서구동하고있는가상로봇을보이고있으며이것은제어프로그램인 SimpleDashboard를통하여각관절을제어할수있도록하였다. 그림 9. Main Source Code 그림 10. 시뮬레이션으로구현한가상로봇
246 로봇공학회논문지제 2 권제 3 호 (2007.9) 3.2 네트웍컴퓨터의가상로봇제어네트워크로연결된두대의컴퓨터에서서로다른가상로봇을제어하기위해서는 Security Setting 과정이필요하다. 보안설정방법이두가지가있는데그중하나는 MSRS\store\SecuritySettings.xml 파일에서 AuthenticationRequired 항목을 false 로변경하는것이다. 또다른하나는시뮬레이션구동후웹브라우저에 http://localhost:50000/ 을기입하면현재구동하고있는시뮬레이션에관한상태정보가나타난다. 여기서좌측에있는메뉴에보안관리자항목이있는데이것을선택하면보안설정을할수있다. 여기서 Authentication 을 Disabled 로설정하면된다. 보안설정과정을수행한후네트워크로연결된다른컴퓨터의가상로봇을제어하기위한접속을잘이루어진다. 하지만가상로봇의제어는이루어지지않는다. 이러한문제를해결하기위해서는제어판 - 윈도우방화벽 - 예외 - 파일및프린터공유에체크를해주어야한다. 이와같은작업을수행하면가상로봇의네트웍제어가가능하게된다. ID를읽어올수가없다는것이다. 때문에우리는두번째계획안을수행하였다. 그림 12. 양방향제어계획안 (1) 두번째계획안이첫번째계획안과다른점은제어프로그램에서가상로봇에접근할때호스트와원격양쪽으로접속한다는것이다. 이러한방법은앞에서논의한두대의컴퓨터의가상로봇을동시에제어하는문제와계획 1안에서야기된 ID 문제역시해결할수있다. 그림 13. 양방향제어계획안 (2) 그림 11. Security Setting 두번째계획안을수행하기위해우리는제어프로그램을수정해야한다. 여기서말하는제어프로그램은 MSRS에서제공하는기본프로그램으로모든시뮬레이션튜토리얼에서사용하고있는 SimpleDashboard이다. 하지만이러한네트웍제어는컴퓨터 A에서컴퓨터 B로원격접속하여제어할경우컴퓨터 A에서보여지는시뮬레이션의가상로봇은작동하지않는문제점이발생한다. 이러한문제를해결하기위해우리는그림 12. 와그림 13과같은생각을해보았다. 그림 12는호스트컴퓨터에서네트웍컴퓨터의가상로봇으로접속하는방식으로이는기존의네트웍접속방식과유사하다. 하지만기존의방식과다른점은원격의가상로봇을제어하면서동시에호스트의가상로봇을같이제어하자는것이다. 이것은제어프로그램에서원격의가상로봇에게명령을보낼때호스트의가상로봇에도같이명령을보내동시에제어하고자하는것인데여기에약간의문제가있다. 그것은제어하고자하는호스트의가상로봇의 그림 14. SimpleDashboard Layout 제어프로그램에서기존의접속및제어부분을복사하여원격컴퓨터와호스트컴퓨터로의접속을가능하
MSRS 시뮬레이션환경에서가상로봇의네트웍제어 247 도록하였다. 윈도우폼에서이벤트가발생하였을경우해당이벤트는이벤트통로를통하여 simpledashboard 의메인소스의처리부로전달된다. 전달된정보는 _articulatedarmport를통하여로봇객체로전달되거나 DriveControl를통하여다시윈도우폼으로전달되어그에해당하는처리를수행하게된다. 그림 15는이러한 simpledashboard의데이터흐름을보이고있다. 제어주프로그램에서수정할내용은그림 16에서보이고있다. 우선원격컴퓨터의제어와더불어호스트컴퓨터의제어를위한 DriveControl 변수를추가하였고, Start() 함수에서는이벤트통로를통하여받은윈도우품에서발생한이벤트를처리부로연결하는부분에호스트에관련된부분을추가하여주었다. 끝으로해당이벤트에대한처리부를구현해줌으로써가상로봇의양방향제어를수행할수있었다. [ 그림 17] 은네트워크에연결된두대의컴퓨터가서로네트웍제어를통해가상로봇을제어하는모습이다. 그림 17. 네트워크로연결된컴퓨터에서가상로봇의네트웍양방향제어 4. 결론 그림 15. SimpleDashboard Data Flow 그림 16. SimpleDashboard Source Code 사회에서로봇에대한관심이높아짐에따라산업체에서는로봇의오작동으로인한인적, 물적손실을줄이고제품개발주기의단축등을위해많은시간과노력및비용을투자하고있다. 하지만현재로봇개발에있어서일반적으로하드웨어로봇은고가의부품들로구성되며, 하드웨어로봇개발과소프트웨어개발이병행되지못하고순차적으로진행됨으로써, 비용과개발기간이많이소요되고있다. 또한재사용되지못하는코드들로인해매번동일한작업을다시반복하게됨으로써비용과기간의증가를유발한다. MSRS는 2장에서언급한 DSS와 CCR을통해재사용성과코딩의용이성을제공하며시뮬레이션환경을통해하드웨어로봇과소프트웨어개발의병행이가능하도록하고, 소프트웨어를테스트할수있는시뮬레이션환경을제공함으로써비용과기간을대폭감소시키는효과를얻을수있다. 본논문에서는이와같은 MSRS의특징을적용하여물리적특성을부여할수있는 3차원시뮬레이션공간에가상로봇을구현하였다. 이러한시뮬레이션에서로봇의모션제어를수행해봄으로써로봇의기구학적오류를초기에발견해낼수있고, 로봇의각부품에대한시뮬레이션코드를재사용함으로써제품의개발비용및기간을단축할수있으리라고본다. 또한가상로봇의양방향제어를수행해봄으로써카메라가없는환경에서네트워크로연결된네트웍로봇의제어가능성을보았다. 하지만최적화되지못한서비스의분산은전체프로그램을이해하는데어려움을주고있다. 또한가상로봇의모션제어역시미흡한상태이다. 따라서추후에는로
248 로봇공학회논문지제 2 권제 3 호 (2007.9) 봇객체와 SimulatedLBL3Arm을통합하여서비스의무의미한분산을억제하고제어프로그램을최적화할것이다. 또한좀더사실적인모션제어를통해실제로봇과가상로봇을동시에제어했을경우시뮬레이션뷰어를통해충분히모니터링할수있도록하고자한다. 참고문헌 [1] 남상엽외, ED-7271을이용한지능형로봇구조및응용, 2006. [2] http://www.urcdc.or.kr/ [3] 전략기술경영연구원, 유비쿼터스 - 지능형로봇, 2004 [4] http://irobas.co.kr/2006/kor/about/info06.asp [5] http://msdn2.microsoft.com/ko-kr/robotics/ [6] http://forums.microsoft.com/default.aspx?forumgroup ID=383&SiteID=1 [7] http://channel9vip.orcsweb.com/wiki/default.aspx/cha nnel9.msroboticsstudio [8] http://channel9.msdn.com/wiki/default.aspx/channel9. SimulationImportTutorials [9] Thomas Stumpfegger, Adnreas Tremmel, Christian Tarragona, and Michael Haag, A Virtual Robot Control Using a Service-Based Architecture and a Physics-Based Simulation Environment [10] http://www.blender.org/ 최병욱 1986 한국항공대학교전자공학과 ( 학사 ) 1988 한국과학기술원전기및전자공학과 ( 공학석사 ) 1992 한국과학기술원전기및전자공학과 ( 공학박사 ) 1988~2000 LG 산전주식회사, 엘리베이터연구실장및임베디드시스템연구팀장 2000~2005 선문대학교, 제어계측공학과부교수 2005~ 현재서울산업대학교, 전기공학과부교수관심분야 : 임베디드시스템, 실시간제어시스템, 지능형로봇 이수영 1988 연세대학교공과대학전자공학과 ( 학사 ) 1990 한국과학기술원전기및전자공학과 ( 공학석사 ) 1994 한국과학기술원전기및전자공학과 ( 공학박사 ) 1995~1999 한국과학기술연구원휴먼로봇연구센터선임연구원 1999~2007 전북대학교전자정보공학부부교수 2007~ 현재서울산업대학교, 전기공학과부교수관심분야 : Walking robot system, Gait design and motion control, Robot vision 신동관 2006 선문대학교기계및제어공학부 ( 학사 ) 2006~ 현재서울산업대학교전기공학과석사과정관심분야 : 임베디드시스템, 유비쿼터스컴퓨팅, 지능형서비스로봇이성훈 2006 선문대학교기계및제어공학부 ( 학사 ) 2006~ 현재서울산업대학교전기공학과석사과정관심분야 : 지능형서비스로봇, Robot Vision