Autonomous Navigation Workshop

Download Report

Transcript Autonomous Navigation Workshop

LabVIEW Workshop
September 26, 2009
Hauppauge High School
SPBLI - FIRST
Mark McLeod
Advisor
Hauppauge Team 358
Northrop Grumman Corp.
[email protected]
Agenda




How to Begin
LabVIEW Basics
FRC Palette
How to Do Standard Operations
Note: These slides approximate the material covered at a handson workshop where this work was all done in a live LabVIEW
session.
How to Begin


Start LabVIEW
New -> FRC cRIO Robot Project
– Name your project
– Set your cRIO IP address (10.xx.yy.02)
– Choose “Basic Framework” or “Advanced
Framework”
or
 Open -> Browse (Existing Project)
Default Frameworks

Basic Framework
– Basic Robot Main.vi
– Drive loop
– Camera loop
– Periodic loop
– Autonomous Independent.vi
– Robot Global Data.vi

Advanced Framework
– Team Code






Begin.vi
Teleop.vi
Vision Processing.vi
Autonomous Iterative.vi or Autonomous Independent.vi
Periodic Tasks.vi
Robot Global Data.vi
LabVIEW Basics

Project Explorer
– My Computer
– RT CompactRIO Target

What’s Important Here
– RT CompactRIO Target
– Build Specifications
– Basic Robot Main.vi
– Autonomous Independent.vi
Basic Framework
RT CompactRIO Target

Right click –> “Properties”
– General – IP Address 10.xx.yy.02
Only need this if IP address wasn’t set
correctly when the project was created
Build Specifications

Right click on a spec. for “Properties”
– Source Files


Startup VIs: Basic Robot Main.vi
“Run as Startup”
– Must reboot to take affect
Use to download your program to the robot
Temporary Debug - Run

Run - Used to test & debug
– must be done from RobotMain.vi
– Temporarily executes your code - Gone
after a reboot
– Stop or disconnect halts robot
– Can disable Downloaded code, so test
reboot
Edit a Program

Double click on “Basic Robot Main.vi”
This is the “Front Panel”

Click on Window -> “Show Block
Diagram”
The Block Diagram is where you do
most of your programming
Front Panel/Block
Diagram
Front
Panel
Block
Diagram
Create Your Own VIs

From existing code
– Highlight code
– Edit -> CreateSubVI


From scratch (File -< New VI)
Extras
– Change Icon
– Add terminals (from Front Panel)
Palettes



Different Palettes for Front Panel vs Block
Right click in Block Diagram window
What’s Important
– Programming (structures & basic operations)
– WPI Robotics Library (all robot stuff)
– FIRST Vision (camera)

Help -> Show Context Help
– Detailed Help
Functions Palette
Block
Diagram
Palette
FRC Palette Overview

WPILib
–
–
–
–
–
–
–
–
Robot Drive
Sensors
Actuators
I/O
Driver Station
Camera
Communications
Utilities

FIRST Vision
– Image Management
– Intensity
Measurement
– Particle Analysis
– Image
Enhancement
– Image Conversion
– Display Interaction
Basic Functional Structure



Open
Operate: Start/Get/Set, etc.
Close
Mouse Over
Put cursor over vi icon
To see inputs & outputs
Use Context Help
(Help -> Show Context Help)
naming each I/O
In Context Help click on
“Detailed help”
for detailed explanation of each I/O
Wiring


Right-click vi icon in Block Diagram to get
menu
“Create”
– Constant (inputs, e.g., use to select PWM)
– Control (inputs used for debugging)
– Indicator (outputs used for debugging)

“Cluster, Class & Variant Palette”
– Unbundle by Name (e.g., get at joystick buttons)
Standard Functions
• Compressor
• Single
Solenoid control
• Double
Solenoid control
• Relay
Drives
• Teleop Tank Drive
(2-joystick)
• Teleop Arcade Drive
(1-joystick)
More Motors
• Single Motor
• Servo control
Motor Control
•Limit Acceleration
(both speeding up &
slowing down)
Can be annoying to drivers
SPECIAL CONCEPT:
Coerce vi- restrict value +/-
•Limit Switch
(one-way)
More Control Samples
•Joystick Curve
(simple cubed)
Miscellaneous
• Driver Station Custom Inputs
• Digital Input (e.g., limit switch)
• Analog Input (e.g., potentiometer)
Button Control
• Button Direct:
Action occurs
continuously while
button is held
•2 Button system:
1st button = ON
2nd button = OFF
Toggle Button
SPECIAL CONCEPT:
Feedback Node
• Button Action
once on Push
Timed Sequence
• Button Timed Operation
2 methods
SPECIAL CONCEPT:
Sequence Structure
Sensors
• Encoder
Requires extra step converting Digital Input to a Digital Source
• Gyroscope
Autonomous
LabVIEW Kills Autonomous Independent.vi at the end of autonomous mode
SPECIAL CONCEPT: Matched
Device Open/Close
Default Autonomous
Requires the motors & watchdog to be opened elsewhere
SPECIAL CONCEPT:
Global Variables
Global Variables

Use to open devices in one vi and use in
other places
– Primary example is using your drive motors in
both Autonomous & TeleOp

Devices anything you Open including:
–
–
–
–
–
Joysticks
Motors
Relays
Solenoids
Digital & Analog inputs
Basic Framework
Global Variables
Open devices in one place and pass them around to
other vi’s using Globals
–
–
–
–
–
Start with an “Open”
Double-click “Open”
Copy Device Reference
Paste into “Basic Robot Global.vi”
From the Project Explorer window drag “Basic Robot
Global.vi” onto the Block Diagram window next to the
“Open” & Select the new Device Reference in the icon you
get. (You can also copy/paste an existing icon.
– Wire the “Open” Device output to the icon for “Basic Robot
Global.vi”

How to create a new Global vi
– Project Explorer->New…->Global Variable
Advanced Framework
Global Variables






Add Open’s to Begin.vi
Double-click Open & Copy Device Ref
Open “RobotData.ctl”
Right-click “RobotData” & Open Type Def
Paste new Device Ref & drag into
RobotData
Wire Open to feed new typedef Bundle
Further Training



Examples on LabVIEW startup screen
NI FIRST forum:
http://decibel.ni.com/content/community/
first
Video Tutorials
– http://decibel.ni.com/content/docs/DOC-2511
– http://labviewzone.blip.tv
– http://www.lvmastery.com/tipjar2008-12-12
– http://first.wpi.edu/FRC/contro876.html


Presentation slides at:
Team358.org under Workshops
Questions/Help email is the best way
to reach me
[email protected]