Multi-Robot Control and Integration

prettybadelyngeΛογισμικό & κατασκευή λογ/κού

18 Νοε 2013 (πριν από 3 χρόνια και 4 μήνες)

44 εμφανίσεις

Multi
-
Robot Control and Integration

University of Southern Maine

May, 2009

Members

Mike Nelson

Mechanical Engineering / Computer Science

Dan
Boissonneault

Electrical Engineering

Project Goals



Control multiple robots from one PC



Staubli

/
Scara

/
Microbots




Construct easy
-
to
-
use graphical interface for
users




Define a programming language that utilizes
new command sets

Scara

Workspace

Staubli

Workspace

Goal Demonstration

Scara

to
Staubli

Route

Staubli

to
Scara

Route

Conveyer Belt

Go

Getting Control

Serial Communication
vs

Network Configuration



Serial Communication


Cheap / Easy


Ugly


Network Configuration


Cleaner / More “with the times”


Possibly Thousands of $$$ if we screw up

Flow of Control

The system acts essentially the same as a
Client / Server
setup (like the internet).

In this case, the
Server(s)

are the
Controllers

and the
Client

is the
PC
.


Client

Adept Controller

Microbot

Controller

Microbot

Controllers

Adept Controllers

Request

Response

Response

Controller Programming Languages



Adept V+



Similar to a BASIC language



No multithreading



No data type transformation




Microbot

Command Set


String based commands

V+ Example

.PROGRAM example()


SPEED

50
ALWAYS


MOVE

a


DELAY

10.0


MOVE

b


CLOSEI

.END

Microbot

Example

Serial Data


@step
(230,
-
1000,700,400,0,0,0)


step
(speed, shoulder, elbow, wrist, pitch, roll, yaw)


Serial Data


@close
(230)


close
(speed)

Client
-
Side (PC) Programming


Created in
Java



students are familiar with it



easy multithreading



object oriented by design



familiar design patterns for abstractness

Implemented Designs


Listener Pattern



Interpreter Pattern



Command Pattern

!! Announcement !!

Data Ready…

What?

What?

Y3oo9 r483hw

Y3oo9 r483hw

Hello friend

Hello friend

Execute()

User Interface

Programs



Written in XML



X



Extensible



M



Markup



L



Language



Loaded from a file, compiled into
DOM

tree,
and executed from top
-
to
-
bottom

XML Example

<?
xml

version=“1.0” encoding=“utf
-
8” ?>

<
person
>


<
first
-
name
>John</
first
-
name
>


<
last
-
name
>Doe</
last
-
name
>


<
interests
>



<
interest

priority
=“1”>Cricket</
interest
>



<
interest


priority
=“2”>Hamburgers</
interest
>


</
interests
>

</
person
>

RCML


R
obot
C
ontrol
M
arkup
L
anguage



<configuration>


<
conn
>



<execution>



<step>



<sequence>



<set>



<wait>



<prompt>



<for>



<break>


RCML (continued)

<step>


Executes a command.


Example:
<step>
staubli.pickPiece
()</step>


<sequence>


Wrapper tag.


Iterates through each
inner element

executing
one at a time.



RCML (continued)

<set>


Executes all inner elements simultaneously


Does not release control until all elements have
finished


<wait>


Has a single timeout attribute


Just simply stalls the
Thread

for the allotted time



RCML (continued)

<prompt>


Prompts the user for some input / response


Contains
<option>

tags that map values to a
process

<
prompt
>


<
option
value
=“Yes”>



…. Do something here ….


</
option
>

</
prompt
>


RCML (continued)

<for>


Uses the attribute “
count
” to loop over it’s inner
elements a certain number of times


Count can also be “
infinity
” as long as there is a
break statement within the
<for>
tag

<break>


Used to break out of a for loop


An easy way to continue on with the program
based on user interaction

RCML Example

<
configuration
>


<
conn

variable
=“
staubli

connection
=“COM2” />

</
configuration
>

<
execution
>


<
prompt
question
=“Continue?”>



<
option
value
=“no”>




<
step
>
staubli.pickTrack
()</
step
>



</
option
>



<
option

value
=“no”>




<
break

/>

</
execution
>

Known Issues


Scara

owns the IO


When “wait” is called it blocks the
Scara’s

functionality



RCML needs more
Error Handling

What’s Next


Resolve IO issue


Error Handling


Extend RCML to handle variables and logic


#{index}


<
if
expression
=“#{index} == 4”>…</
if
>


Make some cool, multi
-
robot programs

(maybe even make them serve a purpose)

Special Thanks

Dr. Carlos Luck


Advising


Knowledge of Configurations / Possible Issues


Josiah Plummer


Adept Programming and Manipulation


Serial IO


Everything pertaining to robots….

THE END

Questions?