FRC-Robot-2018/
common/ - This contains all of the types used in communications, on the display(s), in vision, and on the robot.
robot/ - Our robot code lives here. It depends on the common and visionRIO projects.
display/ - Our configuration and output display lives here. It may incorporate Shuffleboard at some point.
visionRIO/ - Our vision code start out being specific to how the RoboRIO will process images and distill them to targeting info.
Note that we will do vision processing on the RIO. If you disagree, then get this 'simple' version of vision working (from processing all the way through integration into robot code and driver inputs) early. We'll then discuss other options.
- The first step to applying neural nets to our robot is to collect data, even when we aren't using it directly. Once we realize how we can apply neural nets, we will have a great set of training data if we've already collected it all! Therefore:
- All Joystick inputs, sensory data, and outputs (including Talon, Pneumatic and custom outputs like LED's) will be managed via the Codex framework.
- Local state variables may be put into a Codex framework if you feel it is worth capturing. Hint: it probably is, but only AFTER we have a better understanding of the states we want to capture. That way we aren't constantly changing the enumerations so quickly.
- Critical configuration data will use NetworkTables. Generally this is most custom data from the driver's station to the robot.
- Since 2015, the NetworkTables protocol has been the only network comms that have worked 99% of the time (albeit a bit bandwidth-heavy).
- NetworkTables had some issues with stale cache data in the past, but v4.0 may have addressed this.
- Single-use or low rate data may be in JSON format, and is sent via NetworkTables (assumes v4.0 still includes JSON support).
- If NetworkTables does not support JSON, or it has a critical flaw with JSON, it is somewhat easy to use the Codex IO code to create a custom String data sender.
- For easy JSON conversion, use Google's GSON library.
- High-frequency data from the robot to the driver's station, such as our sensor and joystick data, should use the Codex protocols over UDP.
- Storing data to a file may happen either on the RIO (to a mounted USB drive) or to the driver's station.
- JSON data should have a .json extension
- Codex data should be stored in a CSV format with a .csv extension
- As soon as possible post-match, get the data to our (TBD) Google Sheet for analysis by the pit crew.
- The WPILIB screensteps describe how to setup our wireless bridge to be similar to the QoS and bandwidth limitations live on a field. When testing a robot during a 'live' match in the classroom, we should set those parameters up.
- Install the latest FRC Update Suite from here
- This installs the mDNS handler needed for the computer to communicate with the RoboRIO.
- NOTE - you will need to create an NI account. Who knows why they force this step... If you don't feel comfortable making one, ask around - someone already has this installer.
http://www.ni.com/download/first-robotics-software-2015/5112/en/
- Install the Java JDK 8, update 151 or greater.
- This is NOT the JRE. Google "Java SE Development Kit 8".
- If you have JDK 6 or 7 installed, should you uninstall it first.
- If you have an older version of JDK 8, you should update it. Java usually installs an update executable. On Windows, search the start menu for 'Java update'. On linux, do apt-get or yum -u. On Mac ...
- Setting up Eclipse
- Go to www.eclipse.org and install the latest "Eclipse for Java Developers".
- Go to www.git-scm.org and install the Git Bash terminal. If you want help from your mentors in getting out of a mess with Git, they'll need this tool. This terminal is also a 'Linux-lite' terminal - many standard unix commands work. Thus it is far superior to the command prompt for platform-independent code development in Windows.
- Launch Eclipse. Go to Help --> Install New Software...
- In the "Work With" drop-down, select 'All available sites'
- In the filter box, type 'fx'
- Select e(fx)clipse - IDE, then Next/Next/SignLifeAway/Finish. Go get coffee, the install takes about 10 minutes.
- This is so the warning about 'restricted' api's & javafx don't show up in Eclipse. It's not an issue since we're using the Oracle JVM on our installations, right?
- Cloning the Development Branch
- Use
git clone
to clone this URL: - https://github.com/iliterobotics/FRC-Robot-2018.git
- Use
- Import the Gradle Project in Eclipse
- Go to Import > Gradle > Gradle Project
- Click
next
to get past the Welcome Screen - Browse to the root folder of the gradle project you cloned in step 4.
- Keep clicking
next
until you're done
- Deploying to the RoboRIO through the command line
- This is preferrable if you like to keep your build history separate from your Eclipse Java console output.
- Open your terminal and navigate to your project directory, then build and deploy with the following command:
- Linux (or Git Bash on Windows):
./gradlew build deploy
- Windows:
gradlew build deploy
- Linux (or Git Bash on Windows):
- The
--offline
argument can be used at competition when internet is not available. - If you're having weird issues you can try cleaning the project and refreshing the dependencies with
gradlew clean cleanEclipse build eclipse --refresh-dependencies
- Deploying to the RoboRIO through the Eclipse GUI
- Open the Gradle Task View by going to Window > Show View > Other... > Gradle > Gradle Tasks
- Scroll to
deploy
and double-click
- The first thing you should do before pushing ANY code to a code repository is fetch the latest code using
git fetch
- If you want to fetch the latest version of the code and merge it into your version, use
git pull
git pull
is basically the equivalent ofgit fetch
thengit merge
- If you want to fetch the latest version of the code and merge it into your version, use
- Ask yourself whether you should be committing your code directly to
master
- If you haven't tested your code yet, put it on a branch labeled
experimental/<feature-name>
- When this code has been tested it will be moved to a
feature/
branch
- When this code has been tested it will be moved to a
- Code regarding competition-specific changes should be put on a branch labeled
competition/<current-competition-name>
- This code will be merged into
master
after the competition and tagged with the competition name
- This code will be merged into
- Code that has been tested but not approved for the use on the robot should be labeled
feature/feature-name
- Code tested and approved for use on the robot can be merged from its
experimental/
orfeature/
branch into master - A good example of this process can be found here
- Branches can be be made using
git checkout -b <branch-name>
. This will also switch to the new branch. - If you want to change the branch you're working on, use
git checkout <branch-name>
- If you haven't tested your code yet, put it on a branch labeled
- After you've resolved any conflicts between your code and the latest code, you can commit your code
git commit -m "Message here"
will commit your code, storing in the local repository on your computer
- Pushing code
- Branches are pushed using
git push origin <branch-name>
- For example, pushing
master
would be done usinggit push origin master
- You may need to set the upstream branch using
--set-upstream
- Branches are pushed using
cd <directory path>
Change directoryls -a
Lists all filesrm <filename>
Removes filesmkdir <name>
Create foldercp <filename> <location>
Copy files over