robocubs / 2018robotcode Goto Github PK
View Code? Open in Web Editor NEWThis is the robot code for 2018.
License: Other
This is the robot code for 2018.
License: Other
Icon | Type This... | Meaning |
---|---|---|
:black_large_square: |
Very Low Priority | |
:large_blue_circle: |
Low Priority | |
:large_orange_diamond: |
Medium Priority | |
:red_circle: |
High Priority | |
:bangbang: |
Immediate Concern |
Code Quality
Bugs
No bugs as of late, but they will be added here when deemed necessary.
Icon | Type This... | Meaning |
---|---|---|
:large_blue_diamond: |
Low Priority | |
:large_orange_diamond: |
Medium Priority | |
:red_circle: |
High Priority | |
:bangbang: |
Immediate Concern |
Autonomous Goals
Monday, March 12, 2018
Monday, March 12, 2018
Monday, March 12, 2018
Driver Functionality: Gear Shifting
Saturday, February 17, 2018
Saturday, February 17, 2018
teleopInit()
. After x
amount of rotations, shift to high gear if low gear is not manually chosen. On stick release, reset the counter.Monday, March 12, 2018
Robot Status Functions
Saturday, February 17, 2018
Thursday, Februrary 22, 2018
Monday, March 12, 2018
Abstraction for Limelight NetworkTables values.
These are abstrations to make it easier to work with Limelight.
getTable()
to init and return an instance of NetworkTable for usagegetTarget()
to return bool-converted tv
valuegetHorizontalOffset()
to return float tx
value (see https://limelightvision.io/pages/getting-started-with-limelight)getVerticalOffset()
to return float ty
value (see https://limelightvision.io/pages/getting-started-with-limelight)getTargetArea()
to return float ta
value (see https://limelightvision.io/pages/getting-started-with-limelight)getTargetSkew()
to return float ts
value (see https://limelightvision.io/pages/getting-started-with-limelight)setLedMode()
to modify LED state (0 is on, 1 is off, 2 is blink), it will be remapped sensibly to 0 is off, 1 is on, 2 is blinksetCameraMode()
to change processing state (vision processing is 0, driver camera is 1)setPipeline()
to change pipeline (0-9 as argument)TBD This is where we apply the values from the low-level methods.
Whether we're basing it on last year's code or not, let's start implementing some PID code for the drivetrain that we can use in autonomous:
driveForward(Number distance)
driveBackward(Number distance)
turn(Number angle)
method as a low-level control. These with have to use the angle from the NavX compass.turnLeft()
method as high-level interface to turn(Number angle)
to turn 90ยฐ to the left.turnRight()
method as high-level interface to turn(Number angle)
to turn 90ยฐ to the right.The Drivetrain will also need to use the pneumatics to shift gears. We need to discuss how exactly we want to do this (automatic transmission shifts gears at a set speed? drive chooses between high and low gear?). Look for examples of how other teams did it--there should be some good whitepapers and other documentation out there.
Edit: Modified list for completion sake. - @nhubbard
This makes our project more maintainable and clear to use for others who wish to use it in the future.
Feel free to comment on this task.
minimum deliverable product
A few minor observations about code readability and conciseness.
Going through the code (in the DropOffScaleHigh
), I found Robot.liftArm.getArmAngle() > scaleHighHeight && Robot.liftArm.getArmAngle() != scaleHighHeight
. The > operator automatically excludes equality, so the second half of the compound (after the &&) is redundant.
DropOffScaleHigh
to Robot.liftArm.getArmAngle() > scaleHighHeight
. Please keep a lookout for these statements in the future. Nice catch, Mr. Guenther! Completed as of commit 854f346.I like where you're going with the x = 0
, x = 1
in this command; this is the start of a state machine. I'd suggest using an enum for the various states so that it's even easier to follow, and better variable names than x
(which is very generic). When you get the wrist and other joints fully implemented, this is going to be even more important. Relevant lines for an example:
private final int MOVING = 0;
private final int REACHED = 1;
// ...
private int armState = MOVING;
//...
while (armState == MOVING) {
//...
} else {
armState = REACHED;
}
See also this more fully realized example of a team using an enum in a state machine
Important! You can Google some tutorials and videos on State Machines if you'd like to know more. Note that the State Design Pattern is not exactly the same as the State Machine and is not what we want here.
Edit: Feb 1, 2018 11:37 by @nhubbard: Converted to task list for management purposes.
Convert from the post on Band.
Icon | Type This... | Meaning |
---|---|---|
:large_blue_diamond: |
Low Priority | |
:large_orange_diamond: |
Medium Priority | |
:red_circle: |
High Priority | |
:bangbang: |
Immediate Concern |
Driver Functionality: Movement
Friday, February 16, 2018
Friday, February 16, 2018
Driver Functionality: Gear Shifting
Saturday, February 17, 2018
Saturday, February 17, 2018
teleopInit()
. After x
amount of rotations, shift to high gear if low gear is not manually chosen. On stick release, reset the counter.Operator Functionality: Arm and Wrist
Thursday, February 15, 2018
Sunday, February 18, 2018
Sunday, February 18, 2018
Sunday, February 18, 2018
Sunday, February 18, 2018
Sunday, February 18, 2018
Saturday, February 17, 2018
Operator Functionality: Buttons
Saturday, February 17, 2018
Saturday, February 17, 2018
February 20, 2018
February 20, 2018
Saturday, February 17, 2018
Saturday, February 17, 2018
Robot Status Functions
Saturday, February 17, 2018
Thursday, Februrary 22, 2018
Thursday, Februrary 22, 2018
Thursday, Februrary 22, 2018
Thursday, Februrary 22, 2018
Thursday, Februrary 22, 2018
Goals
Automate as much as possible for the operator!
Test one
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.