MSRS(Microsoft Robotics Studio) 가 정식버전이 나오면서 MSRDS(Microsoft Robotics Developer Studio) 로 이름이 바뀌어 발매가 되었더군요. MSRS 이던 시절부터 이 툴 에 대한 기대는 매우 컸고, 소개나 이런 것들을 봤을때 정말 로봇 연구 분야에 있어서 최적의 툴이 아닌가 생각을 했었습니다.
CCR(Concurrency and Coordination Runtime) 과 DSS(Decentralized Software Services) 를 통해 비동기적 처리 방식에 실시간 반응이 가능하도록 하였고, VPL(Visual Programming Language) 이라는 Labview 와 같은 GUI 형태의 언어를 통해 누구나 쉽게 로봇을 제어할 수 있다는 것을 주로 장점으로 부각하였습니다. 여기에 서비스의 추가만 이루어지면 확장할 수 있다는 것, 사실적인 물리엔진 등등 많은 장점이 부각되고 있었습니다.
뭐... 참 좋은 툴임에는 틀림 없습니다만, 두가지 확실히 눈에 보이는 단점들이 있더군요. 각각에 대해서 한번 간단하게 정리해볼까 합니다.
1. 높은 사양
MSRS 1.5 -> MSRDS 2008 로 넘어오면서 픽셀쉐이더와 버텍스쉐이더를 지원하는 GPU 를 시뮬레이션 환경에서 요구합니다. 물론 고화질의 시뮬레이션을 얻는다는것이 나쁘다는 건 아닙니다. 꼬우면 돈주고 사면되지 않느냐라고 해도 딱히 할말은 없죠. ( 모 게임에서는 돈이 없는건 죄가 아니다라고 하더군요;;; 아..아스트로레인저 잊지않겠다 -_- )
그러나 MSRS 에서는 분명 소프트웨어적으로도 그런 시뮬레이션 환경을 지원 했었습니다. 그래서 상대적으로 사양이 낮은 PC 에서도 시뮬레이션을 수행해보는데 큰 무리가 없었습니다. 하지만 MSRDS 2008 로 넘어가면서 시뮬레이션 화면자체가 검은 상태로 아무것도 나타나질 않습니다. 제가 알기로는 현재 MSRDS2008 에서 GPU 의 내장 물리 엔진을 사용하는 것도 아닌걸로 알고있습니다만(이부분은 명확하지 않습니다.), 어떤 이유에서인지 반드시 GPU 의 엔진을 요구하고 있습니다. 덕분에 저는 다른 사양 좋은 컴퓨터에서 작업을 해야되지 말입니다.....
그리고 이 높은 사양에 대한것은 하나 우려되는 점이 있습니다. CCR 과 DSS 를 통해 비중앙화된 전송형태와 동시성을 확보할 수 있다고 하는데, 이 역시 멀티코어 기반의 환경을 주로 테스트 벤치마크로서 보여주고 있습니다. 단일 코어 기반은 쓰지 말라는 것 같습니다. -_-
2. VPL
VPL 은 초보자를 위한 언어이고, 간단한 테스트 정도를 위한 언어일 것이라고 생각됩니다. 이를 통해 복잡한 로직을 구현한다는 건 오히려 머리속에 방해가 될 것 같은 기분이 듭니다. 물론 Labview 를 통해 큰 규모의 프로그램을 봤을 때, VPL 도 그러한 가능성을 충분히 가지고 있다고 생각이 됩니다. 그러나 Labview 의 그것에 비해서 VPL 은 생각보다 많이 불편합니다.
일단 깔끔해 보이기 위해서 큼직큼직한 서비스 아이콘을 만든건 좋습니다만, 오히려 좀 더 작고 가볍게 만들어서 쓸데없는 그래픽 효과가 나타나다가 다운먹는 현상을 좀 없애주는건 어떨까 생각합니다. 약간만 흔들어대도 공포의 오류메세지가 나타납니다만 이건 좀 아닌것 같죠? ( 제 PC 에서만 그런 건가 했는데, 그게 아니더군요 -_- )
그리고 루프를 만드는 것이 상당히 지저분합니다. 아주아주 지저분합니다. 루프의 편의를 제공하기 위해 제공하는 서비스가 있긴 하지만, 그것을 이용한다 해도 지저분한 것은 어쩔 수 없죠. 물론, 그 더러운꼴 보기 싫다면 C#을 사용하면 됩니다.... MSRDS 하나를 사용하기 위해 새로운 언어를 쓰라. 이말입니다. ( 그렇다고 C#이 나쁘다는건 아닙니다. 써보니 편하고 좋습니다;; )
....
그냥 확실한 단점인 저 두가지만 지적해야겠습니다. 저 두가지만으로도 정이 뚝떨어지긴 합니다.( 특히 고사양은 정말... ㅜㅜ ) 물론 범용적으로 알려져 있는 로봇 시뮬레이터가 없고, VPL 로 몇가지 시뮬레이션 로봇을 돌려보시고 나면 정말 이렇게 쉬울수가! 라고 외치실 지도 모릅니다.
하지만... 뭔가 더 해보시려면 발버둥이 아니라 생난리를 쳐도 난감해지는 상황에 봉착하게 될것입니다. (아닐수도 있습니다 ^^) 어디까지나 현재로서는 말이죠. 기본 서비스를 제공하는 것 만으로는 고수준의 시뮬레이션을 하기는 어렵고, 실제 로봇과의 연동을 위해서는 일단 로봇이 필요하지만, 사실상 있다고 해도 이를 지원하는 로봇이 아직까지는 그렇게 다양하지는 않습니다.
C# 을 사용할 수 있고, 배울 수 있는 분이라면 MSRDS 가 가진 가능성은 무궁무진하다는 것만큼은 확실합니다. MSRDS 의 세부적인 서비스 개발에도 C#이 필요하고, VPL 로 할 수 없는 고수준 제어 역시 C#으로만 가능하기 때문이죠.
전체 내용을 정리를 하자면,
1. MSRDS 2008 로 업그레이드 되면서 사양이 무지하게 높아졌다. 그러므로 로우스펙의 유저는 그냥 VPL 로 덧셈뺄셈만 해보면 그걸로 끝, 시뮬레이션은 기대도 말고... ( Simulation Engine 이나 Simulation 관련 서비스 하나만 띄우시고 수행하셔보시면, 사용 가능 여부를 바로 알 수 있습니다. )
2. VPL 로 많은 것을 기대하지 마라. 그리고 VPL 로 복잡한 프로그래밍을 할 경우에 수시로 저장을 해야 중간에 다운먹어도 당황하지 않을 것이다.
3. MSRDS 2008 의 모든 기능을 사용해 보기 위해서는 C#을 배우세요. C#을 배우면 세상이 달라집니다.
네 이정도가 되겠습니다.
끝으로 몇가지 유용한 링크를 걸어놓도록 하겠습니다.
Microsoft 의 Express 버전의 도구들 다운받는 곳
http://www.microsoft.com/express/download/
드림스파크
http://www.microsoft.com/korea/msdn/dreamspark/ds_sub01.aspx
MSRDS(Microsoft Robotics Developer Studio)
http://msdn.microsoft.com/en-us/robotics/default.aspx
Naver MSRDS Korea 카페
http://cafe.naver.com/msrskorea/
(*) 개인 유저이시라면 가급적이면 불법복제품 쓰지 마시고, Express 버전을 사용하세요. 사실 개인이 Professional 버전 이상의 컴포넌트를 사용할일은 별로 없는것 같아요; Express 버전의 C# 으로도 여러가지 작업을 하는데 크게 부족함이 없었습니다. 대학생이시라면 드림스파크 링크로 가셔서 Professional 버전의 정품을 사용하시는것도 좋습니다 :)