Saturday, October 28, 2017

Beta Testing!

Hi Team!

FIRST has made public the list of teams doing the Beta Program, and plotted them on a map.  We are one of only two teams west of Texas, in the LabVIEW Beta.  There are four other teams in California in the program, and all of them are doing C++.  Almost all of the beta teams are in the US.  The only team in Europe, Africa, or Asia, is in Israel, and they are using LabVIEW.  There is one team in Australia, and they are using C++. In the picture, LabVIEW is blue, C++ is red, and Java is yellow.

This link will take you to see the map, and you can click on the tabs to find a table listing of the teams.

We are now publicly listed as a Beta team, so go ahead and shout it out to the world! 

As it says in the FRC Blog (which can be found at this link):

Nidec Dynamo BLDC Motor with Controller
The new brushless motor/controller combo that a small number of Beta teams will be testing is the Nidec Dynamo BLDC Motor with Controller. This small 12V DC Brushless motor/controller will be legal for the 2018 FIRST POWER UP Season, and will be available in FIRST Choice with additional units being sold by AndyMark.
We feel that this low power, integrated motor/controller combo is a great way to introduce brushless technology to FRC and are excited to have Nidec working to bring it to teams this season. Nidec has been working with FIRST to provide a custom cable harness with the motor to make the connection between the controller and the roboRIO as simple for teams as possible. We can’t wait to see what teams will do with this new technology this season!
Note: Teams will need the 2018 FIRST Robotics Competition software to control this motor correctly, so you will have to wait until Kickoff (and pay close attention to the documentation!) to start playing around with it. Until then, check out the datasheet here for more details about the electrical and mechanical specs.
Note 2: Are you unsure about brushless motors? No problem! Since its inception, FIRST Robotics Competition has allowed only brushed motors. However, brushless motors are widely used in many industries! For more information about the difference between the two, check out this link.
Which is really cool and exciting!  This is the first time a brushless motor has been used in FRC and we are hoping to be one of the Beta teams to test that technology.  While we are waiting to find out if we are, click the links and brush up (hahahahahah) on the technology, because this is a very real option for our 2018 robot and we want to be able to have informed discussions when discussing motor choices in design meetings.
Today is the Quarter Auction fundraiser for our Junior Robotics program. I hope to see some of you there!
-- Len

Wednesday, October 25, 2017

No Off-Site This Week

Hi Team!

Sorry for the late notice, but we won’t be holding the Thursday offsite meeting this week.  Please spread the word to others, as not everyone is plugged in to their e-mail.

That doesn’t mean that there is nothing to do.  I hope that you have been able to poke at 2018 FRC LabVIEW to get more familiar with it.  As I mentioned before, you can learn how to use it better by re-doing some of the programs from the programming challenges.

One of the problems we had with the beta software was missing VI’s for the Talons and the NavX.  CTRE has released a new version of their installer package (v. 5.0.4.2) that should install the VI’s in the correct place.  There may still be issues due to renaming, but at least the VI’s should now be findable.  Kaui Labs has not released a version of their software through the beta program, so their VI’s will have to be installed from their publicly available package.

Other helpful links:

Sourctree for handling our git repository

All of our code repositories.  E-mail me if you are ready for commit privileges on the server.

And lastly, please remember that the team’s Quarter Auction fund raiser is this weekend.  Mrs. E. has some exciting news that she has to tell all of you about in person.

— Len

Wednesday, September 27, 2017

No Thursday Offsite This Week

We won't be holding a Thursday off-site meeting for programming this week.  Instead, we will be having a LabVIEW party at the robotics room on Saturday from 9:00-2:00.  Bring your laptop if you have one, as a limited number of team laptops will be available.

-- Len

2018 Control System Beta

Congratulations Team!


We have been selected to participate in the 2018 Beta Testing program for FIRST! This is a huge honor and responsibility, as there are only 30 teams globally who were selected for each language, and many of those spots are being held by long-time Championship-level teams that have been beta teams for several years.  We are specifically assigned to test the new version of LabVIEW and the respective FIRST code libraries.

So what does this entail for us?  We will be thoroughly testing the 2018 software and potentially new hardware ahead of most teams.  We have to document what we’ve learned.  We need to give feedback to FIRST and their suppliers.  We need to share what we’ve learned and become an authoritative contact for other teams.  Like I said above, this is a huge responsibility.

This will take the efforts of the entire team, as we will have to get both Toasty and Moldy back into competition shape.  Specific to the process that FIRST uses, I need to collect 9 other official participants (students and mentors), as soon as possible.  If you are interested, just post below or send me an e-mail indicating your interest.

-- Len

Wednesday, September 6, 2017

Welcome New Members!


Hi Team!

First of all, welcome to all of the new members who expressed interest in programming, coding, or “anything” at today’s meeting.  I’m sorry that I wasn’t there to meet you, but I’ll get to know you soon enough.

If you haven’t visited the team website yet, you should get into the habit of checking it out at here.  The Buzz page is automatically updated with stuff from the team’s various social media feeds.  Very soon, we will be updating the main site with more recent content and adding a programming blog.  This will be a persistent place for much of the information that I send out over e-mails, and a place to have discussions over different coding topics.  The site also has a calendar under the Team Resources area that should be the most up-to-date scheduling for meetings.  Our items will be deep red in color, but you should also check out other events (especially the pink ones).
  

For those of you new since last week, we use two different languages or environments for programming our robots.  We use LabVIEW, a graphical-based language for main robot control and the off-field dashboard.  We use Python with OpenCV to do our vision programming.  I now have the VirtualBox VM ready for Python programming with OpenCV, which mimics the system used on our vision processing computer.  This can be installed on your own computer, so that you can get up to speed as fast as possible.

To spread the love, we will have a VirtualBox install party at the Evansic house tomorrow (Thursday) night.  It is the next red block on the team calendar.  Bring your laptop (Mac, Windows, or Linux), and you too can get your own tools to play with and learn Python and OpenCV!

If you can’t make it (I know, short notice), the VM and other related information will be available when the website is updated.

— Len

Wednesday, August 30, 2017

Why Python and LabVIEW?

Hi Team!

One of the big questions that I get about coding for the team is why "Python and LabVIEW?”  We could use Java or C++ instead.

The simple answer is the same for both languages.  LabVIEW and Python are easy to learn.

When Mrs. E. and I came to the team in the 2008-9 school year, FIRST FRC was transitioning to an entirely new control system from National Instruments.  From the beginning, it could be programmed in C++, Java, or LabVIEW.  The previous controller used a derivative of C, so it was decided that we would use C++ to program the new system.  It seemed that this would be the best fit.

Four weeks into the build season, our team programmer had spent a LOT of time trying to get the C++ framework to work.  At that point, I was a bit worried that we wouldn’t have any working code ready for the robot.  I sat one of the underutilized team members down at a computer, and in two hours, we were able to replicate everything in LabVIEW that the main programmer had struggled to get working in C++ over four weeks.  On top of that, we even made a working vision system for that year’s game that could discern different colored balls.

Now, please understand, our main programmer was and is a very smart guy.  He eventually got all of the code working in C++, but it took a huge investment on his part.  Nobody else on the team had any hope of understanding how the code worked, as nobody had the time that he had spent on the code.  LabVIEW was and is much easier to get up to speed with.  We have mentors that know LabVIEW and we get sponsorship money from National Instruments for using it.

Our use of Python is a little more complex.  We use it on the nVidia Jetson platform, which is an ARM architecture with a lot of GPU cores.  We could use C++ on this, as OpenCV (the computer vision library we use) is written in C++.  Why don’t we use C++ here instead?

As mentioned before, Python is easy to learn, but that isn’t the whole story.  Python is Python is Python (within the same version).  If you run it on Linux, Windows, or macOS, it works the same.  C++ is NOT the same on those three platforms, as the compilers for C++ are different on each.  Linux uses g++, macOS uses Xcode (llvm Clang underneath), and Windows uses Visual C++.  They all compile C++ code, but do it very differently, and to varying levels of adherence to ANSI standards.  This means that C++ code written on one operating system is not guaranteed to work on another without a lot of testing and re-writing.

Last year, we did encounter differences in how OpenCV that was called from Python behaved on different platforms.  This was primarily due to the use of different compilers on different systems.  The Python code we wrote, however, behaved the same on Windows, Linux, and macOS.  As mentioned in the last e-mail, I am working on a virtual machine solution that we can all use to replicate running on the Jetson.  We might be able to use C++ in this virtual machine, as the compiler will be the same as what the Jetson uses, although the underlying CPU’s will be different.

Perhaps the best reason I have found for using Python for vision is a site that is dedicated to using OpenCV with Python.  Please visit PyImagesearch.com for the best guides I have found for learning computer vision topics.  Adrian’s blog entries are way better than the books that I had found last year.  He really does a good job in breaking things down to be much more understandable.  He also covers topics that are extremely advanced (like machine learning).

I just realized that I didn’t address Java.  Well, I don’t want to make anyone suffer that much.  I’m told that Java 8 is not as bad, but bad is relative, and it is still Java.  In all seriousness, Java is a third-class citizen for robot programming.  The FRC Java framework is a wrapper on the C++ framework.  The C++ framework is itself a second-class citizen, as it usually trails the LabVIEW framework when new features are introduced or bugs are fixed.

If you want to use Java or C++ (or Swift, or C#, etc) for a project, just reply privately and let me know.  All computer languages are just tools, and one of them may be a better tool for something that we do.  The more tools you have, the heavier your toolbox will be.

— Len

Tuesday, August 29, 2017

Getting Started for 2018!

Hi Team!

It was good to see some returning members and meet some new members at the Junior Robotics Kickoff meeting on Monday.  We have a lot of new challenges ahead of us this fall, so I’d like to get a strong start to this semester.

Many of you know that we currently use two different languages or environments for programming the big robot.  We use Python with OpenCV to code our vision system on the nVidia Jetson platform, and we use LabVIEW for the main robot and dashboard programming.  This fall, we will also be investigating several different ways of programming an Android based controller for our First Tech Challenge (FTC) team.  None of the FTC options are Python or LabVIEW, so it will be a great opportunity to learn something new.

This summer, we posted some mild programming challenges on the team website.  The primary goal of the challenges was to develop problem-solving skills.  Problem solving is what is really underneath all programming and engineering.  The secondary goal was to get more exposure to working with either LabVIEW or Python.  I encourage all new and existing team members to look at, and attempt these challenges, as it will really help in learning programming languages that may be new to you.


The lowest-cost of entry option for the programming contests is using Python, as it is free and works on Windows, macOS, and Linux.  If your computer doesn’t already have it installed (this is mostly a Windows problem), you can download the appropriate package from http://python.org.  We are currently using version 2.7.x.

I am putting together a virtual machine image for vision programming.  This image will closely replicate the working environment on the Jetson, so that more work can be done without having to physically have access to the Jetson hardware.  More details will be shared on Thursday night.  If you want to get a head start, you can download and install Oracle’s VirtualBox software (free), which is available for Windows and macOS.  It is available at https://www.virtualbox.org.  I anticipate that the virtual machine image will take around 10 GB of space, when it is completed.

Hope to see you Thursday!

— Len