Blog | Tag | Local | Guest | Login | Write |  RSS
MSRDS에 해당되는 글 7건
2008.10.14 :: MSRDS 란? 2

그동안 VPL만 주구장창 했군요.-_-;;;

정작 로봇은 보여드리지도 않고...;;

-_-;;




오늘은 로봇을 직접 조종할 수 있는 시뮬레이션 모드에 대해서 설명하겠습니다.

레고 마인드스톰 NXT로봇을 조종할 수 있게 하도록합니다.

음..

만들어져 있는 로봇을 시뮬레이션 하는 것은 쉽습니다.

먼저 VPL을 실행시키고 Diagram에 Simple Dashboard 와 Simulated Generic Differential Drive Activity를 추가합니다.

그 둘을 연결시킬 필요는 없습니다. 다만 SimulatedGenericDifferentialDrive Activity의 Config 정보만 수정하여주면 됩니다.


정보를 수정하기 위해  SimulatedGenericDifferentialDrive Activity를 클릭하여 주시고 화면 오른쪽에 보시면 Properities 창이 보일겁니다.

거기에서 두번째 항목인 Configuration을 보시면 선택가능한 항목들이 있는데 거기서 Use a manifest를 선택합니다.

선택하시면 아래에 Manifest를 선택할 수 있는 콤보박스가 생성됩니다.



Properities에서 import 버튼을 클릭하면 SimulatedGenericDifferentialDrive을 지원하는 서비스 목록들이 표시되는데, 거기에서 LEGO.NXT.Tribot.Simulation.manifest.xml을 선택합니다.



그러면 VPL에서 더 이상 선택할 것은 없습니다.

그리고 실행을 시켜줍니다. 그러면 윈도우 창이 두 개 뜰겁니다.

하나는 Simpledashboard가 실행된 화면이고, 하나는 시뮬레이션 실행화면입니다.

시뮬레이션 실행 화면에 보시면 LEGO NXT Tribot이 보일겁니다.




SimpleDashboard에서 시뮬레이션 로봇에 연결하고 제어해야 합니다. 그러기 위해서는 오른쪽 상단에 있는 Machine : 입력박스에 "localhost"를 입력하고 Connect합니다.



그러면 아래의 Sevice Directory 아래에 (LegoNXTMotorBase) /simulated... 라고 표시 된 항목이 추가 됩니다.


그 생성된 항목을 더블클릭하시면, 왼쪽 Differential Drive에 있는 Motor : 부분이 Motor : On 으로 변경됩니다.



그리고 그 윗 부분의 Drive 버튼을 클릭하고, 그 상태에서 위의 동그라미의 십자선 표시 그 부분이 조이스틱 역할을 하는데 그 것을 마우스로 클릭하며 움직여 보시면, 로봇이 시뮬레이션 화면 안에서 원하는 움직임 대로 움직이는 것을 볼 수 있습니다.


움직여서 장애물 옆으로 옮겨간 모습입니다.


카메라 화면 시점을 움직이고 싶으시면, 시뮬레이션 화면을 클릭하시고 마우스로 옮기면 상하좌우로 회전하고, 키보드의 화살표 키를 누르시면 앞뒤옆 등으로 움직입니다.

단순히 Activity 두 개만을 추가해서 이렇게 로봇을 시뮬레이션 상에서 제어 가능한데, 물론 LEGO NXT 말고도 다른 기본적으로 제공하는 로봇들을 제어가능합니다.





3주만에 글 쓰는군요...0ㅁ0;;

허을...

-ㅁ-aaa

아 그리고 MSRDS 2008최종버전이 나왔더라구요.

다운로드 링크는 아래로~

http://www.microsoft.com/downloads/details.aspx?familyid=84c5b49f-0f9c-4182-a267-a951328d3fbd&displaylang=en#filelist



이번 시간은 if문 사용해보도록 하겠습니다.

음...

두가지 값을 입력 받아서 그 값들이 같은지. 다른지 확인하여 출력해 주는 프로그램을 만들어 보겠습니다.

먼저 SimpleDialog activity 두 개와 Calculate Activity 두 개를 추가하여줍니다.

각 각 하나씩 연결하여 주시고. PromptDialog - Success 를 선택하여 줍니다.



그리고 그 두개를 연결한 Join Activity를 추가하고 연결하여 줍니다.


그리고 If Acvity와 Data Activity를 추가하고, Join Activity와 If Activity를 연결하여 주시고, If의 조건은 두 값을 같은지 다른지 비교하는 것이므로,  msg == msg0 이라는 문을 추가하여줍니다.
그 If Activity와 Data Activity를 참 일때와 거짓일때 각각 연결하여주시고, 참인 Data Activity에는 같다 라는 문장을 적어주시고 string 형으로 선언하여 줍니다. 거짓인 Data Activity에는 다르다 라는 문장을 적으시고 string를 선택하여줍니다.


이제 그 Data들을 각각 표시할 Dialog를 추가하여줍니다.

Data Activity와 SimpleDialog를 연결하시고, AlertDialog를 선택하시고,


Data Connections에서는 value를 선택합니다.


그러면 오늘 실행해볼 프로그램은 다 끝났구요. 다하면 다음과 같은 모습을 갖게 됩니다.


실행을 시켜보면~

Prompt Dialog 창이 두개 뜨구요. 거기에 각각 원하는 문장이라던지 적으시고, OK를 하시면

같으면 같다 라는 Alert Dialog, 다르면 다르다 라는 Alert Dialog를 보실수 있습니다.



그리고 Switch 조건문 처리에 관한 예제 인데요.


위 그림과 같이 구성하시면 됩니다.

Prompt Dialog로 입력받은 문자열을 switch문에서 찾아서 해당하는 것을 따라 Data가 출력됩니다.

오늘 새로본 Activity가 두 가지가 더 있는데요.

merge와 join 인데, 그 둘의 차이점은 merge 같은 경우는 연결되어있는 입력점의 값들이 하나라도 입력되면 해당 출력점으로 전달을 하여주고, join 같은 경우는 모든 값들이 다 입력되야 해당 출력으로 전달을 합니다.


.............

연달아 글 쓰는건 좀...

귀찮은듯??-ㅁ-a



이번 시간(?)은 사용자 에게서 입력을 받아서, 그 변수를 가지고 활용해 보도록 하겠습니다.

입력을 받는 방법은 이때 까지 출력으로 써왔던 SimpleDialog를 이용하시면 됩니다. 훗. -_-a

먼저 SimpleDialog와 Calculate Activity를 추가하여 줍니다.

그리고 그 둘을 연결 하여 줍니다. 그러면 다음과 같은 Connections 창이 뜹니다.


그러면 위와 같이 PromptDialog - Success를 선택하고 OK를 하여줍니다.


현재 까지 상태 입니다.

여기 까지 하셨으면 SimpleDialog를 하나 더 추가 하여 줍니다. 그러면 Add Activity라는 창이 하나 더 뜹니다.

현재 Diagram에 SimpleDialog가 있기 때문에 뜨는데, 원래 있는 SimpleDialog와 별반 다르지 않기 때문에 아래의 SimpleDialog를 선택하시고 OK를 눌러줍니다.


그리고 Calculate Activity 와 방금 추가한 SimpleDialog Activity를 연결합니다. 그러면 또 Connections 창이 뜨는데 AlertDialog를 선택하고,

Value는 value를 선택하고 OK합니다.


다 하셨으면 다음과 같은 모습일 것입니다.

그러면 실행을 하여 주시면~~!

입력을 받을 Prompr Dialog창이 뜹니다.


그러면 입력 창에 원하는 문자열 아무거나 적으시고 OK를 클릭하시면~


위와 같이 적은 문자열이 그대로 출력이 됩니다.

지난 글과 연계하여 Calculate Activity 를 수정하여서, 또 다른 상태로 출력을 하여 보세요~

참 쉽죠~?

.............ㅜㅜㅜㅜㅜㅜ

..........

저번주 한번 날렸네요... -_-;;

시사회 간다고 바쁘게 그날 하루 날려 주시고~

이번주에 두개 올라 갑니다~~!


VPL 기본 1 에서는 Hello World! 를 출력 하는 것을 해보았습니다.

그냥 단순히 변수 값 만 날리는거 말고, 변수 값을 받아서 처리 하여 출력하여 보도록 하겠습니다.

저번의 Hello World! 하는 것에서 약간 변형을 해서 Variable과 Calculate 라는 Activity를 하나 씩 추가 해 줍니다.


그러면 위와 같은 상태가 됩니다.

Data 에 string형 변수로 "홍길동"을 넣어주면 "당신은 홍길동 입니다" 로 메세지를 출력 해 보도록 하겠습니다.

그러면 Data에 string형으로 변환하여 홍길동을 적어주시고, Variable 에는 your name으로 지정해줍니다.


위와 같이 하시면 되는데 Data와 Variable을 연결 하시면 다음과 같은 창이 뜨는데 거기서 SetValue를 선택하시고 OK누르시면 됩니다.

그리고 Variable Activity에서 오른쪽 아래의 ... 라는 추가 버튼을 누르시면 다음과 같은 창이 뜹니다.


여기에서는 Add 버튼을 누르신 후 yourname이라는 변수로 설정해 줍니다. 물론 데이터 형은 string으로 하여야 겠죠.


그리고 Calculate에서는 yourname이라는 변수를 선택하여 주면 됩니다.


현재 까지 하셨으면 위와 같은 상태일꺼고 simpleDialog랑 Calculate를 연결 하시면 됩니다. 여기서는 지난 글의 방법과 같이 AlertDialog를 선택 하시면 되구요.


그 다음에 Data Connections 창이 뜨는데 거기선 value에서 value를 선택하시고 ok하시면 됩니다.



이 상태에서 실행을 하시면 변수를 처리 하지 않은 변수 상태 그대로 홍길동 이 출력이 됩니다.


변수 처리를 할려면~!! Calculate Activity에서 수정을 해 주어야 합니다.

string은 " " 로 닫아주시고, 그담에 + 하시면 두 변수 사이가 더해지는(??)구조?-ㅁ-a;;;; 다음의 그림과 같이 Calculate Activity를 수정하여 주시고 실행하시면.


다음과 같이 원하는 모습대로 출력이 됩니다.




뭐 이거 날로 먹는 느낌도 강하긴 한데.. 기초라 뭐 설명을 어찌.. 흡...-_-a



아.. 이거 벌금의 압박으로 무조건 쓰게 되네요..-ㅁ-a;;;

ㄷㄷㄷㄷ

무서운 시그장님.. ㄷㄷ

오늘은 VPL로 C언어나 새로운 언어들을 배울때 가장 많이 시작하는 Hello World 를 화면에 표시하는 것을 할 것입니다.

VPL로 간단하게 어떻게 되는지.. 보시죵~



VPL 실행 방법은 다들 아시라 믿습니다만...-ㅁ-;; 설마.. 모르시는분은.. 설마.. -ㅁ-a

저번에도 올렸듯이... 비스타에서는 관리자권한으로 실행하시구요~~

File 메뉴에서 새로만들기 혹은 New를 선택하셔서 새 프로젝트를 만드시구요.

왼쪽 상단에 있는 Basic Activities에 있는 "Data" toolbox를 마우스로 끌어서 오른쪽의 빈 Diagram에 아무데나 원하는 곳에 놓으세요~

그리고 그 activity의 int 옆에 있는 드롭다운 리스트에서 string을 선택하시면 됩니다. 왜 그걸 선택하냐는... 설마..-ㅁ-aa

Hello World가 문자열이라서.. 설마..-ㅁ-aa

data avtivity의 텍스트 상자를 클릭하시면 입력 하실수 있는데 거기에 Hello World! 를 입력하시면 됩니다.


현재 까지 한 data activity 모습..-ㅁ-aa

그 다음에는...... 다음에는.....

화면에 표시할 다이얼로그 창을 가져와야..-ㅁ-a

왼쪽 아래의 Services 에서 아래로 쭈우우우우욱 내리시면 SimpleDialog 가 있습니다. 혹시 못 찾으시겠으면.. 아니면 내리는게 귀찮다거나 하시면~~ Services의 아래에 Find service ... 에 입력을 해서 검색 하시면 됩니다. 찾으시면~~! 그 것을 오른쪽 Diagram창에 끌어 오세요~

그 위치는 어디에 있어도 상관 없습니다. 그리고 data activity와 SimpleDialog를 연결합니다.

아 어떻게 연결하시는지 모르시겠으면... Data activity의 오른쪽에 보면 주황색 네모가 있습니다. 그 네모를 클릭해서 SimpleDialog의 왼쪽 네모에 붙이시면 자동으로 연결이 됩니다...!! 참.. 쉽죠.. 라고 말해야 하나.-ㅁ-a 설마...

그러면 Connections 라는 Dialog 창이 뜹니다. 거기서~~!

첫번째 항목... 즉, From에서 DaraValue를 선택하시고.. 그거 하나 밖에 없지만...

두번째 항목에서는 AlertDialog를 선택합니다. 왜냐구요??

그냥 뭐 알람 창 같은 모양에 Hello World!를 띄우기 위해서~~

ConfirmDialog도 실행하면 똑같습니다만... -ㅁ-;;; PromptDialog는 뭔가 입력을 받을때 쓰구요~!


Connections Dialog의 모습입니다.
일단 여기서 OK하시면~~! Data Connections Dialog창이 뜹니다.

그러면 Value 드롭다운하는 리스트에서 value를 선택합니다.

그렇게 함으로써~~ Data Activity에 있는 값이 Alert Form에 띄울 메시지 텍스트로 보내집니다.


현재 단계 까지 실행한 다이어그램의 모습입니다.
이렇게 되셨다면!!!!!!!!!!!! 실행을 실행을 실행을~~~!!

실행방법은 Run메뉴에 있는 Start 를 실행하거나 아니면 Help 메뉴 아래에 위치한 화살표 모양을 실행시켜도 되고... 그것마저.. 귀찮으시다면.. F5누르셔도 됩니다..;;;;-ㅁ-;;

프로젝트 저장을 안했을 것인데요.. 안했으면 저장 다이얼로그를 열어줘서 거기서 프로젟트 이름을 원하는대로 하시고 save하시면 됩니다.

그러고 나서 어플리케이션을 실행시키는데...! 그 과정이 끝나면..!

Hello World! 가 쓰여저 있는 simple alert dialog 상자가 뜹니다.

바로 이렇게요!
이렇게 떳으면 완성!!
종료 하고 싶으시면 Run dialog에 있는 stop을 실행시키면 됩니다 -ㅁ-a




우후후훗.. 오늘은 여기까지!!!

너무 쉬워서 글쎄 너무 뭐 한것도 없어서.. 에휴...

욕먹지 않으려나.. 에라잇 ..-_-;


오늘은 MSRDS의 기본(?)되는 VPL에 대해 소개 하려 합니다.~

먼저 MSRDS를 다운 받으셔서 설치를 해야 하는데..-ㅁ-a

다운로드 페이지 링크는 여기로~~

http://www.microsoft.com/downloads/details.aspx?FamilyId=57CE326B-2125-4163-A33F-ED2F69E03B56&displaylang=en#filelist

오프라인 설치 파일인 333.2MB 용량의 파일을 받으시면 됩니다.

비스타 64비트도 지원하고... 참 비스타에서는 실행할 때 관리자 모드로 실행하세요~ 반드시~~ ㅠㅠ

그거땜에 삽질한거 생각하면 정말.. ㅜㅜ




마이크로소프트 비주얼 프로그래밍 언어(VPL)는 이전의 프로그램 작성에서 보이는 제어 흐름보다 그래픽적 데이터 흐름에 기반을 둔 프로그래밍 모델로 디자인된 애플리케이션 개발 환경입니다. 데이터 플로우 프로그램은 명령의 집합을 순차적으로 실행하는 것이라기 보다는 재료가 도착하는 것에 따라 주어진 업무를 수행하는 조립 라인의 일련의 근로자와 같습니다. 그 결과 VPL은 여러 가지의 동시형 또는 분산 처리 시나리오를 프로그램하는 것에 아주 적합합니다.

VPL은 변수와 논리와 같은 개념에 대한 기본 이해가 필요한 초보 프로그래머에 적합합니다. 그러나, VPL은 초보자에게 제한되지 않습니다. 프로그래밍 언어의 구성적 성질은 빠른 프로토타이핑 또는 코드 개발을 위해 고급 프로그래머에게도 매우 유용할 것입니다. 또한, VPL의 툴박스가 로봇 애플리케이션을 개발에 맞춰져 있지만 근본적인 구조는 로봇 프로그래밍에 제한되지 않고, 다른 애플리케이션에도 적용될 수 있습니다. 그 결과, VPL은 학생, 애호가/동호인을 포함해 웹 개발자와 전문 프로그래머까지 넓은 사용자들에게 흥미로울 것입니다.


VPL 다이어그램의 예

마이크로소프트 비주얼 프로그래밍 언어 데이터 플로우는 다른 activity 블록에 연결될 수 있는 입력과 출력을 가진 블록으로 표현된 activity들의 연결된 순서로 구성됩니다.


위 그림에서 Data, Calculate, Variable 등 하나의 블록이 Activitie 입니다~.
 
Activitie는 사전에 빌드된 서비스, 데이터 흐름 제어, 함수 또는 다른 코드 모듈을 표현할 수 있습니다. 결과적인 애플리케이션은 그러므로 개별 프로세스의 순서화인 오케스트레이션이라 불립니다.

Activity는 또한 다른 activity들의 조합을 포함할 수 있습니다. 이것은 activity을 조합하고, 빌딩 블록으로 조합을 재사용하는 것을 가능하게 합니다. 이점에서 VPL로 만들어진 애플리케이션은 그 자체로 activity입니다.

Activity 블록은 그 연결 점을 나타내는 activity의 이름과 경계를 일반적으로 포함합니다. activity 블록은 또한 사용자가 activity에 사용될 데이터 값 입력, 할당 또는 변환을 위한 사용자 인터페이스 요소 및 activity의 목적을 설명하기 위해 그래픽을 포함할 수 있습니다.


SimpleDialog, GenericMotor 등 그림만 봐도..!
Activity는 그들의 연결 핀을 통하여 연결 됩니다. activity의 좌측의 연결 핀은 입력 메시지를 위해 연결 점을 표시합니다. 그리고 우측 핀은 출력 메시지를 위한 연결 점을 표시합니다.
Activity는 그 입력 연결 핀을 통하여 데이터가 포함된 메시지를 수신합니다. activity의 입력 핀은 action 또는 핸들러로 알려진 미리 정의된 내부 함수로의 연결 점입니다.

유효한 입력 메시지를 수신하면 activity 블록은 가동되고 수신된 메시지 데이터를 처리합니다. activity에 보내지는 모든 데이터는 해당 activity에 의해 소모됩니다. activity의 출력을 통해 데이터를 포워드하기 위해서는 수신 activity는 데이터를 복제해야 하고, 그것을 출력 연결에 넣어야 합니다.

Activity는 다중 입력 연결 핀과 그 각각에 대한 출력 연결 핀을 가질 수 있습니다. 출력 연결 핀은 두 개의 종류입니다: 결과 출력 또는 알림 출력(때때로 이벤트 또는 publication 출력이라고 불림) 중에 하나일 수 있습니다. 결과 출력은 직사각형 연결 핀으로 publication 출력은 둥근 연결 핀으로 표시됩니다.


출력 메시지(데이터)가 특정 입력 실행 메시지의 결과로 전송될 때 응답 출력 핀이 사용됩니다. 알림 핀은 입력된 activity 메시지의 결과로 정보를 보내는 데 사용되지만, 일반적으로 내부 상태변화를 메시지로 전송할 때 사용됩니다. 결과 핀은 단지 입력 메시지의 수신에서 대해 하나의 메시지를 보내지만 알림 핀은 또한 메시지 여러 번 생성할 수 있습니다. 따라서 알림 출력 핀은 메시지 데이터를 반복적으로 전송할 때 사용됩니다.



다음 시간엔....  튜토리얼을 따라 실행 해보는 방법을..?-ㅁ-aa

MSRDS 란?

안녕하세요. 수원 멤버십 18-2기 최동혁입니다.

이번에 주제없는 시그~ 각자 맘대로 하는 시그.. -_-aaa

아하하하.. 하드웨어 쪽으로 하고 팠는데 밀렸군요.

그래서 전부터 관심이 있었던 것중의 하나인 MSRDS에 관해 하려 합니다.

저도 처음부터 다시 하는 터라 모르는게 많으니.. 잘 봐주세요 ㅠㅠ

아래의 내용은 MSRDS가 무엇인지 왜 나왔는지에 대해 간단히 설명이 된 MSRDS공식 카페의 자료... 입니다... 무단으로 퍼온건가..... ㅠㅠ



로보틱스 스튜디오는 MS에서 2006년 말에 새롭게 출시한 로봇 애플리케이션 개발 툴입니다.

이제는 로봇 S/W 개발 시대입니다. 로봇 S/W 개발은 더이상 로봇 전문 분야의 개발자들에게만 국한된 영역이 아니라 일반 S/W 개발자 모두가 참여할 수 있는 애플리케이션 개발의 한 형태로서 발전하고 있습니다.

로봇 S/W 개발을 어렵게 생각하지 마시고 이제 한번 새롭게 시작해 보시기 바랍니다.

MS의 로보틱스 스튜디오 (이하 MSRS)에서는 기본적으로는 별도의 프로그래밍 언어를 습득하지 않아도 쉽게 로봇 애플리케이션을 개발할 수 있도록 VPL(Visual Programming Language) 이라는 새로운 툴을 제공하며, 고급 개발자들의 경우 C#을 이용하여, 다양한 형태의 서비스들이나 시뮬레이션 프로그래밍을 할 수 있도록 지원합니다.

                           

 

두개의 숫자를 더하는 VPL 구현 예

 

 

 

시뮬레이션 상에서 지원되는 레고 NXT 로봇

 

 

 

시뮬레이션 상에서 지원되는 Pioneer 로봇

 

MS 로봇틱스 스튜디오(MSRS)에서의 프로그래밍 과정은 크게 아래 3가지로 나눌 수 있습니다.

  • 이미 개발되어 있는 서비스들을 이용하여 애클리케이션 개발하기 - VPL을 이용하여 애플리케이션 개발 (초급 과정)

 

  • C#으로 서비스 개발하기 - VPL에서 사용될 수 있는 기본 서비스들을 개발하거나 VPL 없이 애플리케이션을 직접 개발
    • DSS나 CCR에 대한 개념을 적용하여 서비스를 개발함

 

  • 시뮬레이션 프로그래밍 - C#을 이용하여, 직접 시뮬레이션 로봇을 제어하거나 시뮬레이션 로봇을 제작

 

MSRS를 처음 시작하시는 개발자 분들은 처음에는 VPL을 통해 간단히 애플리케이션들을 개발해 보거나 실행시켜 보는 과정을 통해 MSRS의 단계적으로 이해해 나가는 것이 필요하며, 점차 C#을 이용해 개발자 여러분이 스스로 서비스들을 만들어 보는 단계로 나아가면 될 것 같습니다.

그리고 MSRS의 가장 큰 특징은 하드웨어 로봇이 없이도 로봇 애플리케이션 개발이 가능하다는 것인데, 여러분이 직접 시뮬레이션 로봇을 만들어 볼 수 있습니다. 여러 분이 직접 만들 수 있는 로봇의 형태는 아래와 같습니다.

  • 일반적인 바퀴달린 로봇
  • 4족 로봇 또는 6족 로봇
  • 기차 또는 자동차
  • 인공위성 또는 잠수함
  • 로봇 팔과 다리 (로봇 관절)
  • 홈 로봇

MSRS는 일반 게임 개발에 사용되는 Ageia 사의 PhysX 엔진을 제공하기 때문에, 여러 분들이 손쉽게 게임과 같은 형태의 재미있는 로봇 애플리케이션들을 만들 수 있습니다.

조이스틱이나 헨들, XBox 컨트롤들이 자동으로 연결되기 때문에 로봇을 조종하는 애플리케이션도 별다른 작업 없이 손쉽게 개발할 수 있습니다.

또한 MSRS에서는 고급 개발자를 위하여 비젼처리 또는 음성인식 샘플을 제공하여, 이러한 지능형 서비스를 이용하여, 자율주행과 같은 고급 로봇 제어 기능들을 쉽게 구현할 수 있습니다.

이 외에도 한글 TTS 기능이 제공됨에 따라, 오늘의 날씨를 읽어주거나 뉴스를 읽어 주는 서비스를 손쉽게 구현할 수 있습니다.

MSRDS 공식 카페 : http://cafe.naver.com/msrskorea.cafe



앞으로 포스팅은 VPL을 기준으로 하나하나 기본부터 해나갈 듯 합니다.

왜냐? 저.. C#이 뭔지 몰라요~~ -ㅁ-;

아하하.. 물론 C#공부는 따로 해보렵니다 ㅋ.

그럼 다음에 또 뵐께요~