350 likes | 660 Views
LabVIEW Workshop . September 26, 2009 Hauppauge High School SPBLI - FIRST. Mark McLeod Advisor Hauppauge Team 358 Northrop Grumman Corp. Mark.McLeod@ngc.com. Agenda. How to Begin LabVIEW Basics FRC Palette How to Do Standard Operations
E N D
LabVIEW Workshop September 26, 2009 Hauppauge High School SPBLI - FIRST Mark McLeod Advisor Hauppauge Team 358 Northrop Grumman Corp. Mark.McLeod@ngc.com
Agenda • How to Begin • LabVIEW Basics • FRC Palette • How to Do Standard Operations Note: These slides approximate the material covered at a hands-on 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
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 FRC Palette Overview
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 FrameworkGlobal 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 Mark.McLeod@ngc.com