Sunday, May 24, 2015

Programming - An Overview

[Update 1: Added more info and tons of links]
[Update 2: Diagram Updated]
[Update 3: Vision links added]

In the last few days, weeks, and months we have discuss programming and programmers in a way that typically speaks to the robot and the code that runs in the Roborio.

The bigger picture is...well....bigger.

Take a look at the following block diagram, which is a quick and dirty overview of the various "programming" areas that are present in an FRC team.




Some of these are optional, such as a scouting app (vs Excel or simply paper), and some have many ways of being accomplished, like the robot code itself which can be run in Java, C++, LABView, and even Python.

In the next few days, this diagram is going to be expanded to show the various languages/methods that each task can be accomplished.

For all of the official FRC code and libraries, simulator, and extensive documentation, check out the webpages of the 2015 FRC Control System

So, what are all of the blocks?

On The Robot:
roboRIO - the main robot controller
navX MXP - robotics navigation controller
Leonardo++ - a rugged version of the Arduino Leonardo


LEDs - discrete LEDs to indicate sensor status to the drive team
LED Light Strips - either static strips, or dynamic strips like the NeoPixel

Vision:
Jetson TK1 - vision processor and more
Camera - Microsoft HD3000 or other USB webcam

Examples of how a Jetson TK1 can be used for vision processing are described in this white paper.
What does it look like? Here is a video that shows it in action.

At The Driver's Station:
Drivers Station Software
Smart Dashboard Software
Network Tables

Custom Interface:
TI Launchpad - the interface behind a custom driver station
Button Box - an interface box that the team imagines, designs, and builds to provide buttons/lights for secondary tasks. Takes the place of buttons on the joysticks for easier use and to reduce accidental hits on the small buttons. Examples here, here, and here.

- or -
The custom interface could be a tablet app running a program that accesses the network tables. There is a Python version available on Github.

Simulation:
Before I get to the list of simulators that are available, one quick note.....
Having a working simulator for our robot is critical to reducing the jam up that occurs during the build when everyone is jockeying for space on and around the robot. Being able to take program testing away from the robot itself will GREATLY improve our teams ability to produce a useable robot.

There are several simulators available for FRC robots. The official one is FRCSim and is available here: Using FRCSim with C++ and Java

A thread on ChiefDelphi has a list of several RecycleRush simulations:
http://xantaz.netne.net/FRC2015game/WebFRC2015.html
http://acsrobotics.com/recycle-rush/
https://www.dropbox.com/s/uh1gnpbldf...eRush.rar?dl=0 (downloadable for the link above)
http://acsrobotics.com/recycle-rush-3151/
http://team537.org/about-us-2/team-s...imulator-2015/

Also, just about any Java coding that needs to be tested that doesn't require dedicated hardware can be done either in a desktop environment, or on one of the sims listed above.

Scouting:
Many teams utilize sophisticated methods to enter, collate, and manage scouting data during matches. This is an area where we have started with a simple system and have barely scratched the surface of what is possible.

Team Website, Twitter Page, Instagram, Mailing List, Newsletter:
While this may not seem like a "programming" area, the fact is that all of these things either do have code, or may have code. The website does for sure, but what about the newsletter mailing list generator scripts...for example.

Software and Library Maintenance:
All of these areas have code, functions, notes, test results, etc.. that have to be maintained in some form or fashion. The robot code is housed on Github and is well maintained. The rest of the code has to have a home, and a person or people to keep track of it all.

1 comment:

  1. This is very interesting content! I have thoroughly enjoyed reading your points and have come to the conclusion that you are right about many of them. You are great. Wishes you very Happy New Year 2018

    ReplyDelete