background image

 

 
 
 
 
 
 
 
 
 

Automatyzacja i robotyzacja 

procesów produkcyjnych 

 
 

 

Instrukcja laboratoryjna 

 
 
 

Graficzne środowisko 

programowania robotów 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Opracował: mgr inŜ. Wojciech Błotnicki 

background image

Cel 

ć

wiczenia. 

Celem ćwiczenia jest zapoznanie studenta z graficznym środowiskiem programowania 

robotów na przykładzie środowiska Microsoft Visual Programming Language (VPL), które 
jest częścią pakietu Microsoft Robotics Developer Studio. 
 

Wprowadzenie. 

Microsoft  Robotics  Developer  Studio  jest  środowiskiem  działającym  pod  systemem 

Windows, przeznaczone jest ono do uŜytku akademickiego, hobbystycznego i komercyjnego. 
UmoŜliwia w łatwy sposób tworzenie aplikacji dla wielu platform sprzętowych robotów. Jest 
rozpowszechniane na zasadach licencji freeware.  

 
RDS  dostarcza  zintegrowane  środowisko  .NET  umoŜliwiające  projektowanie, 

wykonywanie, i debugowanie wysoce rozbudowanych, współbieŜnych aplikacji dla robotów. 
RDS  ułatwia  rozwiązanie  takich  problemów  jak  koordynacja,  konfiguracja,  rozwinięcie  i 
moŜliwość  uruchamiania  kodu  jednej  aplikacji  w  innej.  Oprócz  narzędzi  i  środowiska 
uruchomieniowego,  RDS  posiada  duŜo  przykładów  i  ćwiczeń  jak  symulować  i  sterować 
roboty. 

 
W jego skład wchodzą : 

 

Concurrency and Coordination Runtime (CCR), 

 

Decentralized Software Services (DSS), 

 

DSS Manifest Editor (DSSME), 

 

Microsoft Visual Programming Language (VPL), 

 

Microsoft Visual Simulation Environment.   
 
VPL  jest  to  język  graficzny  do  tworzenia  aplikacji  CCR/DSS.  Inaczej  niŜ  w 

konwencjonalnym  programowaniu,  VPL  sprawdza,  który  komponent  jest  aktualnie 
wykonywany  w  miarę  napływu  danych.  Aplikacje  są  tworzone  poprzez  proste  „złapanie  i 
upuszczenie”  poszczególnych  komponentów  i  następnie  ich  odpowiednie  połączenie.  VPL 
moŜe  generować  usługi  w  języku  C#,  które  w  sposób  znaczący  mogą  przyspieszyć  rozwój 
projektu. 
 

Przebieg 

ć

wiczenia. 

Student wykonuje kolejno zadania: 

Zadanie 1 - ''Hello World'' 

Klasyczny dydaktyczny program będący pierwszym przykładem w nauce większości jezyków 
programowania.  W  Microsoft  VPL,  program  ten  moŜna  zrealizować  za  pomocą  dwóch 
bloków. 
 
W  celu  uruchomienia  VPL  z  menu  start  wybierz  Microsoft  Robotics  Developer  Studio, 
następnie wybierz i uruchom Visual Programming Language. W przypadku systemu Vista i 
nowszych  naleŜy  uruchomić  jako  administrator  (prawy  guzik  myszy,  uruchom  jako 
administrator) 
 

background image

Z  menu  File  wybierz  New,  aby  utworzyć  nowy  projekt.  Wybierz  bloczek  czynności  Data 
klikając  dwukrotnie  na  niego  lub  przeciągając  go  z  przybornika  Basic  Activities  na  pole 
schematu  programu.  Wybierz  rodzaj  stałej  string  z  rozwijanego  menu.  Kliknij  w  okno 
tekstowe bloku Data, a następnie wpisz „Hello World”. 
 

 

 

Rys. 1 – blok czynności Data 

 

 

Wstaw blok czynności Simple Dialog przeciągając go z przybornika Services i ustaw go po 
prawej  stronie  bloku  Data.  (Aby  szybciej  znaleźć  bloczek,  moŜna  wpisać  jego  nazwę  na 
górze przybornika) 
 
Przeciągnij  linkę  pomiędzy  oboma  blokami.  Automatycznie  pojawi  się  okno  dialogowe 
Connections.  Wybierz  DataValue  z  pierwszej  listy  oraz  AlertDialog  z  drugiej  listy, 
nastepnie kliknij OK
 

 

Rys. 2 – Okno dialogowe Connections 

Następnie w oknie dialogowym Data Connections z rozwijanej listy wybierz value
 

background image

 

Rys. 3 – oko dialogowe Data Connections 

 

Okno  dialogowe  Data  Connections  definiuje  jaki  parametr  (w  tym  wypadku  wartość) 
zostanie przekazane z bloku Data do bloku Simple Dialog
 
Schemat blokowy programu powinien wyglądać jak na rys. 4. 
 

 

Rys. 4 – Schemat programu 

 
Teraz  wybierz  Run  z  menu  Run  (lub  naciśnij  F5).  JeŜeli  jeszcze  nie  zapisałeś  swojego 
projektu otworzy się okno dialogowe zapisu. Podaj nazwę projektu a następnie zapisz (Save). 
 
VPL  powinien  teraz  uruchomić  aplikację.  JeŜeli  pojawi  się  okno  pytające  o  odblokowanie 
aplikacji wybierz odblokuj (Unblock). 
 
Po uruchomieniu aplikacji powinno pojawić się okno dialogowe z napisem „hello World”. 
 
Aby zatrzymać program wybierz Stop z menu Run
 

 

background image

Zadanie 2 – inkrementacja zmiennej 

To  ćwiczenie  ma  na  celu  zobrazowanie  przepływu  dany  w  VPL.  Polega  ono  na  stworzeniu 
zmiennej, jej inicjalizacji oraz inkrementacji od 1 do 10. 
 
Ć

wiczenie rozpocznij od utworzenia nowego projektu (menu File, opcja New).  

Następnie  na  schemat  przeciągnij  blok  czynności  Variable    (blok  zmiennej).  Aby  otworzyć 
okno  definiowania  zmiennej  (Define  Variables)  naciśnij  przycisk  (...)  na  bloku  Variable 
(moŜesz równieŜ wybrać „Variables...” z menu Edit). W oknie dialogowym naciśnij Add, a 
następnie  napisz    Test  w  oknie  tekstowym.  Upewnij  się  czy  w  rozwijanym  menu  Type  jest 
wybrany rodzaj zmiennej int , jeśli tak naciśnij OK
 

 

Rys. 1. Okno dialogowe Define Variables 

 
JeŜeli  twoja  zmienna  Test  nie  jest  przypoŜądkowana  do  bloku  czynności  Variable,  otwórz 
rozwijane menu bloku zmiennej I wybierz utworzoną przez siebie zmienną Test
 

 

Rys. 2. Blok zmiennej Test 

 
Do  schematy  programu  dodaj  blok  Data  po  lewej  stronie  zmiennej  (Variable),  a  następnie 
połącz  je  jak  pokazano  na  rys.  3.  Otworzy  się  okno  dialogowe  Connections,  wybierz 
DataValue  na  połączeniu  wychodzącym  oraz  SetValue  na  połączeniu  wchodzącym, 
następnie naciśnij OK. 
 

 

Rys. 3. Blok Data ustawia wartość bloku zmiennej 

 

background image

Blok  Data  powienien  mieć  ustawiony  rodzaj  stałej  na  int  oraz  wpisaną  jej  wartość  1.  JeŜeli  
uŜyjesz połączenia SetValue bloku Variable ustawi ono wartość zmiennej na oraz wyśle tą 
wartość na wyjście tego bloku. 
 
Sprawdzanie wartości zmiennej 
 
Dodaj blok czynności Merge po prawej stronie schematu programu, a następnie połącz go z 
wyjściem  bloku  Virable.  Blok  Merge  moŜe  mieć  wiele  wejść  i  posłuŜy  on  do  stworzenia 
pętli zliczającej. 
 

 

Rys. 4. Blok Merge 

 
Za  blokiem  Merge  umieść  blok  czynności  If.  W  bloku    If  umięść  warunek  logiczny  który 
będzie  sprawdzany  (Test  ==  10).  Gdy  warunek  logiczny  będzie  spełniony  (zmienna  Test 
bedzie  równa  10)  dana  będzie  przepuszczona  na  normalne  wyjście  w  przeciwnym  wypadku 
dana (w naszym wypadku zmienna Test) będzie przekazywana na wyjście Else
 

 

Rys. 5. Blok  If 

 
Inkrementacja zmiennej 
 
Do schematu programu dodaj blok czynności Calculate, naciśnij na nego prawyk klawiszem 
myszy,  a  następnie  wybierz  "Flip  Connections"  z  rozwijanego  menu.  Podłącz  wyjście  Else 
bloku  If do wejścia bloku  Calculate. W bloku czynności Calculate wpisz formułe zadania 
„Test + 1”. 
 

 

Rys. 6. Inkrementacja zmiennej 

 

background image

UŜyj wyniku działania bloku Calculate aby nadać nową wartość zmiennej Test. W tym celu 
dodaj  kolejny  blok  Variable  i  podłącz  go  do  wyjścia    Calculate.  W  oknie  Connections 
wybierz  CalculatedResult  oraz  SetValue,  a  następnie  naciśnij  OK.  Podłącz  wyjście 
Variable do bloku Merge w ten sposób „zamkniesz” pętle inkrementującą zmienną Test. 
 

 

Rys. 7. Zamknięcie petli 

 
Wykorzystanie bloku Text to Speech 
 
Dodaj  kolejny  blok  Calculate  i  podłącz  jego  wejście  do  wyjścia    Merge.  W  oknie  bloku 
Calculate wpisz: 
“The number is “ + Test 
Ta  operacja  zmieni  automatycznie  zmienną  Test  na  zmienną  tekstową    i  doda  ją  do  tekstu 
zawartego w cudzysłowie. 
 

 

Rys. 8. Tworzenie wiadomości tekstowej 

 
Dodaj blok Text-To-Speech z przybornika Services oraz podłącz go do  wyjścia  Calculate. 
W  oknie    Connections    ustaw  z  (From:)  CalculatedResult  na  (To:)  SayText  oraz  w  Data 
Connections zmień value na SpeechText
 

 

Rys. 9. Blok Text-To-Speech 

background image

 
Na koniec dodaj kolejny blok Data oraz podłącz go do wyjścia bloku If. Zdefiniuj typ Data 
na string i w pisz w oknie bloku: 
All is done! (gdy jest zdefiniowany typ na string nie trzeba urzywać cudzysłowów) 
Dodaj  kolejny  blok  TextToSpeech  (powinieneś  skopiować  istniejący  blok  TextToSpeech  i 
wkleić  go  –  co  będzie  oznaczało,  Ŝe  korzystasz  z  istniejącej  juŜ  usługi.  Natomiast,  gdy 
przeciągniesz  nowy  blok  z  przybornika  utworzysz  nową  usługę  TextToSpeech0  co  nie  jest 
prawidłowe).  Podłącz    Data  do  bloku  TextToSpeech  który  właśnie  skopiowałeś  oraz  ustaw 
z:  DataValue  na:  SayText  w  oknie  Connections.  Natomiast  w  oknie  Data  Connections 
ustaw  value na SpeechText
 
Gdy skończysz twój schemat powinien wyglądać jak na rys. 10. 
 

 

Rys. 10. Kompletny schemat programu 

 
Uruchomienie programu 
 
JeŜeli  wszytsko  jest  podłączone  prawidłowo  po  uruchomieniu  programu  (F5  lub  Run
komputer  zliczy  do  dziesięciu  (po  angielsku),  a  na  koniec  powie  ”All  done”.  JeŜeli  nic  nie 
słychać sprawdź podłączenie oraz ustawienia głośników. Gdy komputer nie jest wyposaŜony 
w głośniki zamiast TextToSpeech  uŜyj Simple Dialog (tak jak w ćw. 1). 
 

background image

Zadanie 3 – tworzenie własnego bloku czynno

ś

ci 

Ć

wiczenie  pokazuje  jak  utworzyć  własny  blok  czynności,  który  wykona  te  same  zadanie  co 

cały  program  w  ćw.  2.  Tworzenie  własnych  bloków  pozwala  na  modularyzację  aplikacji 
dzięki czemu będą one bardziej przejrzyste. 
 
Utwórz nowy projekt oraz dodaj blok  Data. Ustaw jego wartość na 1
 
Utwórz nowy blok czynności wstawiając do schematu blok Activity. Upewnij się czy jest on 
zaznaczony (jego krawędzie będą podświetlone, jeśli nie kliknij na niego raz).  
W  panelu  właściwości  (Properties)  zmień  pola  Name  oraz  Friendly  Name  na  CountTo10
Następnie otwórz blok czynności (klikając na niego dwukrotnie). Utworzy się nowa zakładka 
w polu schematu programu. Z rozwijanego menu  Action (na górze pola schematu w zakładce 
nowej czynności) wybierz Action rys. 1. 
 

 

Rys. 1. Zakładka bloku własnej czynności (Activity

 
Pole  schematu  czynności  przypomina  pole  schematu  programu.  Po  obu  stronach  pola 
schematu czynności znajdują się przyłączenia wejściowe oraz wyjściowe  z bloku czynności. 
Dane przepływają z wejść poprzez schemat czynności do wyjścia z bloku czynności. 
 
UŜyj polecenia Actions and Notifications z menu Edit. Kliknij w zakładkę Actions. Dodaj 
zmienną  wejściową  do  czynności  (będzie  to  zmienna  od  której  później  program  zacznie 
odliczać). Zmień nazwę wielkości wejściowej (Input value) na  StartValue oraz wybierz jej 
typ na Int. Kliknij OK. 
 

 

Rys. 2. Okno dialogowe Actions and Notifications 

 

background image

Wstaw  do  pola  schematu  czynności  takie  same  bloki  jak  wstawiłeś  w  ćw.  2    (Merge,  If
CalculateVariable i Data) jednakŜe będą one inaczej połączone. 
 
Rozpocznij  od  ustawienia  bloku  Calculate  po  lewej  stronie  i  podłącz  go  do  “wejściowego 
przyłącza”. Wpisz: 
StartValue 
w polu bloku Calculate, w ten sposób zostanie pobrana dana wejściowa. 
 
Do  bloku  Calculate  podłącz  kolejno  bloki  Merge  oraz  Variable.  Utwórz  nową  zmienną 
Test2 klikając w rozwijanym menu bloku Variable Define Variables. Wpisz nazwę zmiennej 
oraz ustaw jej typ na int
 

 

Rys. 3. Zmienna wejściowa Test2 

 
 
Do wyjścia z Variable podłącz blok If oraz w jego polu tekstowym wpisz warunek logiczny: 
Test2 = 10 (znaki = oraz = = w VPL są równorzędne). 
 

 

Rys. 4. Blok If 

 
Dodaj nowy blok Calculate oraz obróć go (przyciśnij na nim prawym guzikiem myszy oraz 
wybierz flip connections). 
 
Do wyjścia  Else podłącz blok Calculate, w którego polu wpisz: 
Test2 + 1 (inkrementacja zmiennej Test2) 
Wyjście  z  bloku  Calculate  podłącz  do  wejścia  bloku  Merge  zamykając  w  ten  sposób  pętle 
inkrementacji. 
 

background image

 

Rys. 5. Petla inkrementacji 

 
Następnie tak samo jak w ćw. 2 podłącz do wyjścia bloku  Variable zawierającego zmienną 
Test2 blok  Calculate, a nastepnie wpisz w jego pole: 
"The number is " + Test2 
Dodaj oraz podłącz do wyjścia z If blok Data. Wybierz typ string I wpisz w pole danej All 
done!
 Dodaj kolejny blok Merge do którego podłączwyjścia z Calculate i Data
 

 

Rys. 6. Końcowe bloki czynności 

 
Z  menu  Edit  wybierz  Actions  and  Notifications.  W  oknie  dialogowym  wybierz  zakładkę 
Notifications  oraz  kliknij    Add  pod  Notifications.  Następnie  kliknij  Add  pod  Notification 
values. Nadaj nazwę Text klikając Add i wybierz typ string, nastepnie kliknij OK. 
 

background image

 

Rys. 7. Ustawienia Notifications 

 
Teraz moŜesz podłączyć wyjście z bloku Merge (jest to bloczek łączący działania stworzonej 
podczynności)  do  wyjscia  Notification  po  prawej  stronie  oznaczone  kropką  (wyjście  z 
schematu  czynności).  Ustaw  połączenie  (connection)  z  ForwardedOutput  na  Notification 
oraz wartość na value. Cały schemat czynności powninien wyglądać jak na rys. 8. 
 

 

Rys. 8. Kompletny schemat czynności 

 
Zamknij  schemat  czynności  lub  przełącz  się  na  schemat  programu  głównego.  Podłącz  blok 
Data do bloku czynności właśnej CountTo10
Skopiuj i wklej blok CountTo10.  
Na  koniec  wstaw  blok  TextToSpeech  I  podłącz  go  do  wyjścia  Notification  bloku 
CountTo10. Ustaw połączenie jako Notification oraz z Text na SpeechText
 

background image

 

Rys. 9. Program główny 

 
Uruchom  program  (F5  lub  Run),  efekt  powinien  być  taki  sam  jak  w  przypadku  ćwiczenia 
drugiego. 
 
MoŜe  się  zdarzyć,  Ŝe  program  nie  zlicza  prawidłowo  tzn.  Nie  pokoleji  lub  kolejne  numery 
nachodzą  na  siębie,  moŜe  to  wynikać  z  tego,  Ŝe  zanim  numer  zostanie  wypowiedziany  pęta 
zoastanie  wykonana  po  raz  kolejny.  W  takim  wypadku  naleŜy  wybrać  operację 
SayTextSynchronous zamiast operacji SayText
 

Zadanie 4 – ł

ą

czenie danych 

Ć

wiczenie ma zadanie pokazać inny sposób przekazywania wartości zmiennej oraz jak łączyć 

dane z róŜnych źródeł. 
 
Porównaj schemat blokowy programu z zadania nr 2 z poniŜszym: 
 

Rys. 1. Zmodyfikowany schemat blokowy zadania 2go 

background image

Porównaj w obu schematach sposób przekazywania wartości zmiennej. Jaka jest róŜnica? 
 
Zmodyfikuj schemat z rys. 1 tak, aby na początku były zdefiniowane dwie wartości (Start i 
Stop). Wartość Start ma oznaczać liczbę od której program zacznie zliczać, natomiast Stop 
ma oznaczać liczbę na której program zakończy zliczanie. Do schematu konieczne jest 
dodanie bloku Join (rys. 2). 
 

Rys. 2. Blok Join 

 
Program ma działać podobnie jak poprzednie z tą róŜnicą, Ŝe mają być zdefiniowane dwie 
zmienne start i stop. Zliczanie ma się odbywać Start->Stop. 
 
 

Zadanie 5 – blok DirectionDialog 

Ć

wiczenie pokazuje przykład uŜycia bloku DirectionDialog

Utwórz program o schemacie blokowym jak na rys. 1. 
 

 

 
 
 

 

Rys. 1. Prosty DirectionDialog 

 
Zmodyfikuj schemat programu z rys. 1. tak aby po kaŜdorazowym naciśnięciu przycisku 
kierunkowego (w oknie DirectionDialog) oprócz wymówionej nazwy kierunku (tak jak działą 
program z rys. 1) pojawiło się dodatkowo okno dialogowe z informacją w języku polski jaki 
został naciśnięty przycisk (np. „Przycisk Lewo”). 
 
Uwaga: NaleŜy dodatkowo wykorzystać bloki IfData oraz SimpleDialog 

Zaliczenie 

ć

wiczenia. 

Warunkiem zaliczenia jest wykonanie co najmniej zadań 1-3.  

Kryterium oceniania: 
3 – wykonanie zadań 1-3, 
4 – wykonanie zadań 1-3 oraz zadania 4 lub 5, 
5 – wykonanie zadań 1-5. 

background image

Bibliografia: 

1.

 

Microsoft Robotics Developer Studio Express 2008, help; 

2.

 

K. Kotlińska, A. Mućko,: Sterowanie robotem Pioneer 3DX w Microsoft Robtics 
Studio, sprawozdanie, Warszawa 2009.