FIRST Robotics Competition Documents

Showing results for 
Search instead for 
Did you mean: 

[2015] FRC LabVIEW Quick Start Guide


The FRC LabVIEW Quick Start guide is designed to give you a quick overview of everything you need to know to set and program your robot using LabVIEW.  Be sure to download and install the FRC LabVIEW Software first.

The Quick Start Guide is comprised of four modules that can each be completed in ~30 minutes. The first two modules make a great 1 hour session for Kick Off and Quick Build events. If you have any feedback on this training please leave a comment below. If you have technical questions post them on the NI FRC Forums. You can find the Quick Start guide for download at the bottom of this page. 


NOTE: This document will be updated on Kick Off Day with game specific info and will be updated throught the season so be sure to check back for updates.


1. Set Up

  • Software Set Up Overview
  • FRC Software Orientation 
  • roboRIO Introduction and Set Up
  • Basics of the Robot Project
  • Deploying and Driving


2. LabVIEW Basics

  • What is LabVIEW?
  • LabVIEW development environment
  • LabVIEW programming fundamentals
  • Tools and Troubleshooting
  • Teleop and Autonomous Code


3. Vision, PID & Simulation

  • Vision Code Overview
  • Vision Assitant
  • Integrating Vision Code
  • What is PID Control?
  • Robotics Simulator


4. Advanced Programming

  • Customizing Dashboards
  • Dashboard Record and Playback
  • Event Error Logs
  • Performance
  • Autonomous Strategies


Additional Resources - The Quick start guide give an overview of all the topics below, but it you need more details and info check out the links below.


1. Set Up - Resources

    Software Set Up Guide

    LabVIEW Development Suite for FRC 2014

    Imaging cRIO & Windows IP Configuration

    Troubleshooting cRIO connections

    Driver Station Tutorial

    Custom Dashboard Tutorial

    Robotics Framework Tutorial


2. LabVIEW Basics - Resources

    Learn LabVIEW - Video Training

    LabVIEW Environment Overview

    Creating custom controls

    LabVIEW Dataflow

    LabVIEW Tools

    LabVIEW Data Structres

    LabVIEW Debugging

    WPI Library Overview

    LabVIEW Quick Reference Card


3. Vision, PID, & Simulation Resources

    Configure an AXIS Camera

    Image Processing Tutorial

    Using Vision Targets

    List of NI Vision Functions

    LabVIEW PID Tutorial

    PID Theory Explained

    Robot Simulator Tutorial


4. Advanced Programming Resources

    Full FRC LabVIEW Training (Beginner & Advanced) 4.5 hrs each

    Programming for Performance

    Autonomous Timed Movement



Member LoriG

It seems that the 2015 Joystick Palette has replaced the Get VI with a Get Value VI.  The Get Value VI outputs an array (instead of  the cluster output I saw last year).  Is there any documentation listing & accessing the position of each buttion/axis in the array?  If so where can I find it? 


Follow up

I found that I could map the buttons and joystick axises using the simulation tool.  I am still interested in knowing if there is any official documentation. 

Member DAQjr

There is also a VI in the Joystick Palette called Get Info that will tell you about your joystick.  We recommend you use that to find the Axes.

The buttons are simply in the same order as last year.  Naturally since the buttons are in an array (0-based index) you have to subtract 1 from the number printed on the joystick buttons (1-based index).

Member mavismay
Member lambertj

So we now have to manualy find the axes then use the index number instead of having labled clusters?

Member mavismay

Yes, you now have to specify which index you want (assuming you know which index), and that is the only value you will receive. The programmers from my team and I felt this was a bit more error-pron than simply choosing the labeled index we want from a cluster of values, so we decided to ignore it. Fortunately, LabView has a built in tool that can convert an array to a cluster. We then unbundled that cluster, giving us a similar completely-labeled data layout like we had last year. Either approach works.

Hope this helps,

Nick May

Sent from my iPhone

Member DAQjr

In the past the labelled cluster was misleading.  It was always the same thing (static) and, depending on what joystick you have, it would be wrong.  The new method allows you to find the correct axis no matter what type of joystick you use since the DS will now send the list of axes so you know what index they are in.

Member IceGigDude

I am having a trobling time with buttons in the 2015 LABVIEW. I looked at the porting guide from 2014 to 2015 and tried to program buttons with arrays. I had little success (The robot did what I programmed but it wasnt the right button I had to press, and with less power than programmed). Than I tried what mavismay(higher in the comments) said with converting the array to a cluster. Having the same amount of success as last time. I am wondering if anyone can help me with the buttons. It would be greatly appriciated.


Member mavismay

So you tried both ways and neither worked? If you can upload some screenshots of the code in question, I can look and see for you. It's always hard to understand the problem without context.



Sent from my iPhone

Member IceGigDude

Screenshot (2).png

Member IceGigDude

Thank You for helping me. Here is example code of what I am trying to accomplish.

Much appreciated


Member mavismay

Alright, sorry it took me so long to get back to you, but I finally got a

chance to take a quick look. Anyway, from what you've shown me, you are

using the "unbundle cluster" correctly, I think any problems you are having

are on the logic end of the program. So, for example, if your power is not

at what you desire, up the numerical values you are feeding to the motors.

Also, you probably noticed by now that you have to hold the buttons to get

them to work. That is because you are using simple case structures; these

reset every 10 milliseconds with the rest of the teleop VI. If the buttons

you assigned are not working correctly, that could also just be a simple

case of misunderstanding which button corresponds to which on your

controller (I've done that a million times).

I hope this all makes sense. Feel free to ask any more questions if you

still need help.

- Nick

Member IceGigDude

It all makes sence and thank you for the help. Ill will play around with the code. This help means a lot to me.


Member IceGigDude


So Im messing around with our teams pratice bot in order to learn encoders and how they work, and I can't seem to get the program to work. The robot will drive but it will not stop at the set point. Does anyone know why?

Please see my attached Picture.

-CalvinScreenshot (4).png

Member MarkBalla-Tecnova

How confident are you about the PID gains? If they are not tuned to the system I can see how you may never see a motor drive value of less than 0.1  What if instead of looking at the motor drive value you looked at the difference between the set value (50) and the encoder value typically called the error value. This value may give you a better indication of how close you are to the target.

Member IceGigDude

I did do something like that than I found another example online that showed me that code. So I wanted to try it out to see if it would work. But here is what I origanally done.Screenshot (6).png

Member R^2

Any word on when the updated version will be avaliable for the 2016 season?