GithubHelp home page GithubHelp logo

team612 / 612-2016 Goto Github PK

View Code? Open in Web Editor NEW
9.0 23.0 6.0 17.3 MB

FRC Team 612's 2016 code for First Stronghold

License: GNU General Public License v2.0

CMake 0.64% Shell 0.89% C++ 97.95% Java 0.52%

612-2016's Introduction

612-2016

Travis CI Build Status:    Build Status      
Gitter Chat Room:           Gitter

This repository holds the robot code for the Chantilly Robotics FIRST Team 612 robot, competing in the 2015-2016 season game FIRST Stronghold.

##Documentation:

Chantilly Robotics' programming team uses the C++ programming language and WPILib to program our robot. Documentation for this library can be found here. WPILib is a programming library with C++, Java, Python, and other bindings written and maintained by the Worcester Polytechnic Institute, containing software used to interface with sensors, motors, and other useful objects.

Chantilly Robotics' robot also utilizes the navX-MXP board. Its library has been integrated into this project. Documentation can be found here.

##Sponsors:

Company Name Website
IBEW Company Website
Bechtel Company Website
Booz Allen Company Website
Northrup Grumman Company Website
The Morris Family Personal Contribution
Chipotle Company Website
Ortho Virginia Company Website
Paul Miller Personal Contribution
The Hybrid Shop Company Website
MPSC Company Website
NVRC Company Website
Sustainability Company Website
Alkem Scale Models Company Website
Chris Franke Personal Contribution
Jen Griem Personal Contribution

##Contributors:

Students:
Name Github Username
Champ Dietzel (Captain) ChampD
Benjamin Ward WardBenjamin
Ahmad Bamba Ahmad-Bamba
Calvin Godfrey ggodfrey
Zach Perkins ZachPerkins1
David Fiumano DavidFiumano
Shaun Wu Alexbay218
Dominic Philip domi-a-philip
Paola Henriquez PaolaHenriquez
Grey Golla bobobalink
Nayana Suvarna nls5260
Jeffrey Wang Jeffrey-Wang
Dakshesh Nimishe dnimishe
Aru Rajpurohit arajpurohit
Anvitha N anvitha2828
Goodwin Lu Mister-GoodwinLu
Benjamin Blue DoctorVolt
Abby Denman AbDen
Mentors:
Name Github Username
Zack Alfakir ZackAlfakir
Travis Axtell ToasterTaster

612-2016's People

Contributors

abden avatar ahmad-bamba avatar alexbay218 avatar anvitha2828 avatar arajpurohit avatar bobobalink avatar calvin-godfrey avatar carlyamar avatar cdietzel avatar davidfiumano avatar davidrow avatar dnimishe avatar doctorvolt avatar dominicap avatar jeffrey-wang avatar jisoocheong avatar mister-g-lu avatar toastertaster avatar wardbenjamin avatar zachperkins1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

612-2016's Issues

QUESTION: Subsystem list

So far, I think the list of subsystems is: drivetrain, defense mechanisms, defense locations, boulder mechanism.

Can anyone think of anything else based on the current design?

We should start wiki pages for these subsystems

Implement AlignToTarget

This command will auto-align the robot to face and angle it's shooter at the vision target. To do this, we will have to find a way to:

  • Store bounding boxes of the targets in a way so we may recognize the same target from frame to frame.
  • Decide a target at which to aim.
  • Use a PID Controller to rotate the robot such that it faces towards the target.
  • Calculate the distance using the height of the bounding box.
  • Use the distance to approximate a launch angle at which to aim the shooter (Will require a bunch of testing).
  • Fire the boulder at a consistent speed.

Navx Library and Board Improvement

Implement features in Navx subsystem (currently only a wrapper)
Delete robot.cpp changes and improve Navx subsystem.
Solve Navx board issues (not working reliably).

Fix DriveToDefense.h

Notice in the header file this code:

 #include "Commands/Subsystem.h"
 #include "../Robot.h"
 #include <CanTalonSRX.h>

And this is the compile error:

/usr/bin/arm-frc-linux-gnueabi-g++    -Wno-unused-parameter -pedantic -fPIC -std=c++1y -I/home/travis/build/Chantilly612Code/612-2016/wpilib/include -I/home/travis/build/Chantilly612Code/612-2016/src -O0 -g3 -Wall -fmessage-length=0 -g   -o CMakeFiles/FRCProgram.dir/src/Commands/DriveToDefense.cpp.o -c /home/travis/build/Chantilly612Code/612-2016/src/Commands/DriveToDefense.cpp
In file included from /home/travis/build/Chantilly612Code/612-2016/src/Commands/DriveToDefense.cpp:12:0:

/home/travis/build/Chantilly612Code/612-2016/src/Commands/DriveToDefense.h:16:25: fatal error: CanTalonSRX.h: No such file or directory

 #include <CanTalonSRX.h>

Please observe what is different in those few lines of code and make the correction. There is a reason that the CANTalonSRX is not being included correctly, see if you can spot it.

DriveTrain flip orientation

We've been asked to have a joystick flip so we can change the meaning of the forward/reverse directions.

  • what are our options to accomplish this? flip joystick axes? invert motor outputs?
  • provide recommendation to Travis for further guidance.

Make Drivetrain Command files.

So what i want you to do is go to eclipse and in the 612-2016 project, right click the project header and go to either new -> Command, or new -> subsystem in order to make the framework for the code listed here in the wiki under Drivetrain.

Change CANTalons in RobotDrive to Talons

We are using Talon SR's this year for the drive train in RobotDrive. This is because 1: we do not have enough Talon SRX's for both robots and 2: we are not using any of the SRX features on the drivetrain.

It should be as easy as changing CANTalon to Talon in RobotMap.cpp.

2016 Documentation

Last year we maintained our own copy of the WPILib documentation in a gh-pages branch. This year, we should do the same, and generate our own copy of the docs from the newest version of WPILib's Doxygen documentation.

Joystick button map

We need to document the necessary joystick buttons that we'll have.

  • make a new wiki page for Joystick buttons
  • discuss with drive team current button needs. Update wiki page
  • are we using an xbox controller or a flight stick?
  • how many joysticks are we planning on using?
  • post a diagram of the joystick button mapping to the wiki page
  • make edits to OI.cpp and OI.h files as necessary

Make Drive method in Drivetrain

This is actually two methods that overload each other. One has the ability to take in a GenericHID object that will drive the robot using the TankDrive method of RobotDrive. The other method takes two float values between -1 and 1 that are used to drive the robot manually.

PassDefense command

For the code, we need a command that when a button on the driver is pressed, the robot can pass the defense in front of it. This requires a lot of vision and advanced level stuff, but the basics can still created now.

For this, a command needs to be made that, depending on the value of an enum, executes a different method to breech all the defenses. The enum values should be set to all the types of defenses. The methods in drivetrain would be the various ways to cross all the defenses.

This may render the BreachDefense commands obsolete. Keep this in mind.

Edit:

This is now BreachAuto

  1. Make enum Defenses in Robot.h
  2. In Execute of BreachAuto, make a switch statement for all values of Defenses including NONE
  3. The switch statements should call methods in Drivetrain. Those methods should be designed to pass the defenses.

Defense list:

  • None
  • Portcullis
  • Cheval de Frise
  • Moat
  • Ramparts
  • Drawbridge
  • Sally Port
  • Rock Wall
  • Rough Terrain
  • Low Bar

Make Drivetrain Subsystem constructor and objects.

This must be done be someone who knows how command based works (what OI, command base, Robot.cpp do). Add four CANTalon objects to the constructor of the Drivetrain subsystem inside of the constructor for a RobotDrive. Also make sure to declare the Subsystem as "Drivetrain". You can use the example robot program called gearsbot to get a refrence for what to do. You will also need to modify the Drivetrain.h file to make it compile. If you need help, please ask me.

Travis CI

In order to upgrade to their new system, all commands must be done without root. This means that instead of installing the toolchain, it needs to be downloaded and then linked.

I also noticed a few more improvements that could be done:
Everything needed for FRC Travis CI could be bundled together easily.
Version of wpilib needs to be updated constantly and manually. There must be a better way.
Passing binaries could be uploaded somewhere so there is always an up-to-date binary without people freaking out about a broken compiler.

Set up RoboRIO

  1. Find Spare RoboRIO
  2. Install updated RoboRIO image from National Instruments (needs FRC utilities)
  3. Test uploading code from Eclipse

Documentation: https://wpilib.screenstepslive.com/s/4485/m/13503
https://wpilib.screenstepslive.com/s/4485/m/13503/l/273817-updating-your-roborio-firmware
https://wpilib.screenstepslive.com/s/4485/m/13503/l/144984-imaging-your-roborio

Note: This task will be quite a bit of work. For example, this needs quite a bit of additional hardware to power the roborio and such.

Travis CI failing

In constructor 'BreachLowBar::BreachLowBar()': /home/travis/build/Chantilly612Code/612-2016/src/Commands/BreachLowBar.cpp:21:11: error: 'drivetrain' is not a member of 'Robot' Requires(Robot::drivetrain.get());

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.