Dennis C. Erickson is a senior mentor for robotics teams 1510 and 2898. He has expertise in National Instruments' LabVIEW software and CompactRIO hardware. LabVIEW is a graphical programming language used to create virtual instruments (VIs) for data acquisition and instrument control. The CompactRIO is a real-time controller that can interface with sensors and actuators.
2. Working
with
National
Instrument’s
Hardware
and
Software
Specifically:
Software
~
LabVIEW
Hardware
~
cRIO
2
3. LabVIEW
VI
=
Virtual
Instrument
EW
=
Engineering
Workstation
VI
=
Virtual
Instrument
or
in
other
languages
“Routine”,
SubVI
=
Subroutine
3
4. • Graphical
Interface
(Not
Text
Based)
• Dataflow
(All
inputs
must
be
updated
before
VI
–
Virtual
Instrument
–
executes)
• Self
Documenting
(You
know
what
the
code
does)
4
5. • Portable
Code
(VIs
are
easily
reused)
• Advanced
set
of
diagnostic
tools;
probes,
execution
highlighting,
error
reporting,
ability
to
surround
the
code
with
a
“virtual
world
simulation
environment”
for
testing.
5
6. • Perfectly
tailored
for
NI
hardware
• Automatically
handles
multiple
cores
and
threads
• Easily
compiles
to
RT
(Real-‐time)
Operating
Systems
and
FPGA
(Field
Programmable
Gate
Arrays)
used
in
the
cRIO
processor
6
7. While
it
is
entirely
possible
to
win
a
contest
with
a
robot
that
is
“bare
bones”
the
better
goal
is
to
learn
how
to
do
things
along
the
way
that
may
or
may
not
be
used.
7
11. Name
your
project
.
You
might
for
example
use
your
team
name
and
year
in
the
name:
i.e.,
“Team
1510
for
2010
Robot
Project”
Be
sure
that
you
enter
your
team
IP
in
the
following
format:
11
12. Adding
a
VI
to
your
project:
If
its
new,
then
right-‐click
to
“VI”
and
select
and
name
it.
If
adding
an
existing
one
select
the
menu
item
“Add”.
12
13. Some
example
controls
and
indicators
for
the
Front
Panel
Numerical
Controls
and
Indicators
13
22. Some
example
controls
and
indicators
for
the
Diagram
Structures,
Classes
and
Variants
22
23. Some
example
controls
and
indicators
for
the
Diagram
Numerics,
Booleans
and
Files
23
24. Some
example
controls
and
indicators
for
the
Diagram
Timing,
Dialog
Boxes,
Waveforms,
etc,
etc
Hundreds
of
other
functions
24
25. Testing
the
Joystick
Power
Function
VI
Task:
Test
the
VI
with
1000
simulated
Joystick
positions
from
0
to
+1
to
0
to
-‐1
(White
Line)
and
create
9
plots
with
the
following
function:
Plotn
=
(motor
speed)m
Where:
Plotn
=
a
series
of
plots
(9
total)
Motor
speed
=
voltage
input
to
the
motor
(from
1
to
-‐1)
m
=
power
function
(use
to
alter
the
forward
sensitivity
of
the
Joystick)
25
26. This
discussion
touches
on
the
following
principle
areas:
• The
cRIO
hardware
(The
Brain)
• The
Sensors,
Motors
and
Actuators
that
can
be
used
• The
DS
Drive
Station
(Link
from
the
User
to
the
robot’s
brain)
26
27. cRIO
–
Compact
Real-‐time
Input/Output
A
PAC
(Programmable
Automation
Controller)
which
is
an
industrial
controller
that
is
used
in
advanced
systems
incorporating
software
capabilities
such
as
control,
communication,
data
logging,
and
signal
processing
requiring
rugged
hardware
performing
logic,
motion,
process
control,
and
vision.
For
FIRST
applications,
ideal
for
robot
building.
A
fully
populated
cRIO
example
27
28. Real-‐time
operating
system
cRIO
connected
to
a
Laptop
FPGA
–
Field
Programmable
Gate
Array
located
under
the
cRIO
chassis
28
29. The
following
Example
code
shows
how
to
create
an
environment
to
test
and
calibrate
VI
modules.
In
this
case
we
are
testing
the
Camera
Servo
motors
Next
run
the
test
in
a
While
loop.
Note
the
Loop
First
Initialize
the
test
(note
Sweep
constant
which
defines
the
loop
cycle
the
“Data
Dependency”
wire)
(20ms).
Here
the
loop
is
stopped
using
the
Stop
Test?
command
Finally
End
the
test
by
closing
all
references,
etc.
Again
note
the
Data
Dependency
and
use
of
a
Frame
structure
as
the
SubVI
has
no
wired
input
to
use
29
30. The
following
slides
start
with
a
State
Chart
to
show
what
the
State
Diagram
will
do.
The
next
slides
show
the
State
Diagram
created.
30
31. State
diagrams
are
extremely
useful
in
creating
small
or
large
applications.
Since
LabVIEW
is
a
DataFlow
language,
this
approach
adds
to
the
robustness
of
the
application
The
Application
starts
by
selecting
the
Initialize
Test
State
(case).
Note
that
we
check
for
errors
and
if
the
Stop
Test?
Button
is
pressed.
Note
that
the
Enum
(far
left
constant
control)
has
3
possible
states;
Initialize
Test,
Run
Test
and
End
Test
31
32. These
slides
show
a
typical
State
Diagram
that
tests
camera
servos.
Note
the
inputs
from
the
joystick
and
a
smoothing
control
to
test
filtering.
Next
if
no
errors,
run
the
While
loop
until
an
error
happens
or
the
Stop
Test?
Button
is
pressed
the
go
to
the
next
State
32
33. One
of
the
interesting
features
of
the
State
Diagram
is
confining
the
application
code
to
one
screen,
thus
self
documenting
code
Finally,
there
has
been
an
error
or
the
Stop
Test?
Button
has
been
pressed
so
end
the
test
by
closing
references,
etc.
Note
that
now
the
Boolean
constant
is
now
TRUE
which
stops
the
loop
33