Skip to content
This repository has been archived by the owner on Sep 17, 2020. It is now read-only.

oi/jfgl/ikhRSGBoh;iRSGoh; #11

Open
wants to merge 148 commits into
base: arm-development
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
7a03171
Added Gyro Header to follow line command
Jan 8, 2019
3797a64
Added Camera Width Distance to constants map
Jan 8, 2019
46cc8d6
well some imporvements
jsutter909 Jan 8, 2019
d17f2d0
Merge branch 'line-following' of https://github.com/titan2022/FRC-201…
jsutter909 Jan 8, 2019
493e8cf
incremental improvement
jsutter909 Jan 8, 2019
3895b33
Converted diff in stage 2 to inches
Jan 8, 2019
22c183e
Merge branch 'line-following' of https://github.com/titan2022/FRC-201…
jsutter909 Jan 8, 2019
8312286
more improvements
jsutter909 Jan 8, 2019
5a61ba5
Added more stuff
Jan 8, 2019
3d3aa60
add stuff
Jan 8, 2019
ad79481
Changed Stage Switches
Jan 8, 2019
d515b58
pls
Jan 8, 2019
43d3dc6
started line subsystem
gabrielbryk Jan 8, 2019
3f9d73d
Fixed some erros
Jan 8, 2019
59e6994
more stuff
jsutter909 Jan 8, 2019
4bfdbbd
line subsystem returns values
gabrielbryk Jan 8, 2019
74c9776
finally implemented getcameradata
jsutter909 Jan 8, 2019
2a9c5e4
got it driving
gabrielbryk Jan 8, 2019
45a5369
line data working
gabrielbryk Jan 8, 2019
cc78211
moved follow to auto
gabrielbryk Jan 8, 2019
81ac08a
changed some stuff
jsutter909 Jan 9, 2019
9df859e
added some changes and made things nicer
jsutter909 Jan 9, 2019
9feed91
Bug fixes and clean up
Jan 9, 2019
87fff0f
Merge remote-tracking branch 'origin/line-following' into line-following
Jan 9, 2019
4547ed1
Changed Xbox Map to static and added follow line command to drive com…
Jan 9, 2019
2314903
Fixed thing for static
Jan 9, 2019
7cadeef
Added Talon Encoders
gabrielbryk Jan 9, 2019
b398b8f
finish the kill command
jsutter909 Jan 9, 2019
45b288d
Merge branch 'line-following' of https://github.com/titan2022/FRC-201…
jsutter909 Jan 9, 2019
b3eadb0
testing vision code
gabrielbryk Jan 9, 2019
0ac4d37
talon encoders broken
gabrielbryk Jan 9, 2019
cf09508
Encoders working, followline not working
gabrielbryk Jan 9, 2019
2f8b5b2
following code from wednesday
gabrielbryk Jan 10, 2019
b39493c
Trying new method for approaching line
Jan 10, 2019
1efb21c
Added stuff to idk
Jan 10, 2019
fa339e2
fjdsl
Jan 10, 2019
2936dd4
fdhsjak
Jan 10, 2019
84c208f
gettting ready for improvements!
jsutter909 Jan 11, 2019
1b1f017
improved the follow line function
jsutter909 Jan 11, 2019
7f0e06e
Cleaned up Follow Line COmmand
Jan 11, 2019
5ee08fb
Revert "vision code from thursday"
gabrielbryk Jan 11, 2019
7fe37e2
Merge pull request #2 from titan2022/line-following
jsutter909 Jan 11, 2019
cb09a49
Fixed error
Jan 11, 2019
a022c9c
fjdksl
Jan 11, 2019
f8e9213
Cleaned up Follow Line Command more
Jan 11, 2019
83aacc2
more change
jsutter909 Jan 16, 2019
813ffda
Merge branch 'line-following' of https://github.com/titan2022/FRC-201…
jsutter909 Jan 16, 2019
80485ba
fdjslajkfdsla
Jan 16, 2019
606d739
Added some comments
Jan 16, 2019
3a152b2
more changes!
jsutter909 Jan 17, 2019
724a9c1
Made a readme bitches
dasarchan Jan 18, 2019
ba1e668
jfslka;
jsutter909 Jan 18, 2019
5ae90db
fjdsl
Jan 18, 2019
c0e7655
Fixed merge conflicts
ayush17agarwal Jan 21, 2019
f27c163
constants for pid
jsutter909 Feb 5, 2019
52de59d
first vision commit
gabrielbryk Jan 10, 2019
da26c0b
working vision
aaronjrod Jan 10, 2019
b8d48de
working vision
gabrielbryk Jan 10, 2019
942e826
vision code from thursday
gabrielbryk Jan 11, 2019
38188b9
Revert "vision code from thursday"
gabrielbryk Jan 11, 2019
dcb0511
added network table implementation to python
aaronjrod Jan 11, 2019
faf414b
everything is wrong
gabrielbryk Jan 15, 2019
63a9604
working video stream
gabrielbryk Jan 18, 2019
349279f
image stream successfully outputing processed images, but at a low fr…
gabrielbryk Jan 18, 2019
c952dd9
wew vision
jsutter909 Jan 25, 2019
f33a3db
vision is screwed
gabrielbryk Jan 31, 2019
414d20f
Vision stuff
gabrielbryk Feb 5, 2019
f702650
visionnnnn
gabrielbryk Feb 5, 2019
4cf18ab
rough line lineup
gabrielbryk Feb 5, 2019
6b181cf
Drive stuff
gabrielbryk Feb 10, 2019
56b35a1
Merge branch 'master' into line-following
gabrielbryk Feb 10, 2019
5820b04
Merge pull request #9 from titan2022/line-following
gabrielbryk Feb 10, 2019
c0b13e8
Merge branch 'arm-development' into master
gabrielbryk Feb 10, 2019
e69f88a
fixed shit
gabrielbryk Feb 11, 2019
ee906eb
more fixxes
gabrielbryk Feb 12, 2019
3fc3041
Uncommented PID and other leveling code for testing
Feb 12, 2019
1358f60
Fix Xbox map for arm controls
Feb 12, 2019
356f1e2
Maybe Fixed encoder stuff idk
Feb 12, 2019
cfa7f53
krfl5gth6yo7jupgrfht67ju8
Feb 12, 2019
b70ae2d
Testing leveling code
Feb 12, 2019
c70a0c6
updated code dj;fakl;djf;
aaronjrod Feb 12, 2019
ea4c5ba
Fixed merge conflicts
aaronjrod Feb 12, 2019
5809eda
Updated Robot.java to use a 4-space indent
trajing Feb 13, 2019
240cdd2
Interim HatchGrabber command & subsystem for testing purposes
trajing Feb 13, 2019
bf87fb1
Fixed Arm Subsystem merge thing I fucked up earlier
Feb 13, 2019
dd9094c
Testing leveling code and stuff so I uncommented and also just for Tr…
Feb 13, 2019
c83719c
Changes from 2/12/19
aaronjrod Feb 13, 2019
635c92a
Changed HatchGrabber to toggle left and right bumpers
ayush17agarwal Feb 13, 2019
1583758
Refactor TalonSet to be responsible for distance-per-tick information
trajing Feb 14, 2019
da62bf3
FIguring out angles
Feb 14, 2019
d0d36e9
Moved stuff to robot periodic
Feb 14, 2019
8f5b4f7
testing changes
trajing Feb 14, 2019
6fdf8da
arm and wrist angles working
gabrielbryk Feb 14, 2019
2e4c4e0
Arm magic
gabrielbryk Feb 14, 2019
92956a0
Wrist levelling & responsive arm control
gabrielbryk Feb 15, 2019
b68e474
Minimum functioning preset command
trajing Feb 15, 2019
49ba925
Refactor ArmPresetCommand into an interactive command which handles p…
trajing Feb 15, 2019
9fce3ff
Code From Thursday
gabrielbryk Feb 15, 2019
7b888dc
this was a bad friday
gabrielbryk Feb 16, 2019
eb0a8e5
Changed Everything
gabrielbryk Feb 16, 2019
a46358d
Saturday by 12 pm
gabrielbryk Feb 16, 2019
e617123
After Practice Comp
gabrielbryk Feb 16, 2019
3891161
Merge remote-tracking branch 'origin/arm-motion-magic'
trajing Feb 16, 2019
308ef16
Changes
gabrielbryk Feb 16, 2019
715cedf
Merge pull request #12 from titan2022/arm-motion-magic
trajing Feb 16, 2019
3761913
Updated code from Saturday 5 pm
gabrielbryk Feb 16, 2019
a2bc138
Updated code from Saturday 5 pm
gabrielbryk Feb 16, 2019
b3eed0c
workingish
gabrielbryk Feb 17, 2019
abc3166
more arm stuff
gabrielbryk Feb 17, 2019
ceb3635
More preset work
gabrielbryk Feb 18, 2019
1f4b0b4
Add button unbinding functionality
trajing Feb 18, 2019
1ac8da7
good arm motion and mos the other grab works
gabrielbryk Feb 19, 2019
823fa47
Cleaned Up Code
gabrielbryk Feb 19, 2019
269867e
Merge pull request #13 from titan2022/comp-bot
gabrielbryk Feb 19, 2019
4d360bb
presets better
gabrielbryk Feb 20, 2019
e2f9a02
Merge pull request #14 from titan2022/comp-bot
gabrielbryk Feb 20, 2019
721155f
saturday stuff
gabrielbryk Feb 26, 2019
58f60f7
Monday 2/25 code that has finished and working preset program. DO NOT…
ayush17agarwal Feb 26, 2019
7643bd5
Updated Presets and fixed watchdog stuff
ayush17agarwal Mar 5, 2019
22ea57a
updated driving changes
ayush17agarwal Mar 5, 2019
cba8204
camerastuff
gabrielbryk Mar 5, 2019
70ee6b6
camera setup 2
ayush17agarwal Mar 6, 2019
5db37d0
updated changes
ayush17agarwal Mar 6, 2019
8c293e6
camera kinda working and arm is now faster
gabrielbryk Mar 6, 2019
7ce94c8
fixed buttonn press
gabrielbryk Mar 6, 2019
4098f95
upgraded to comp bot
gabrielbryk Mar 7, 2019
7df280a
End of First Comp Day
michaelvdow Mar 8, 2019
9dc7366
before I fuck up the arm
michaelvdow Mar 8, 2019
f39da37
end of midwest day 2
michaelvdow Mar 9, 2019
77cfe90
End Of Comp
gabrielbryk Mar 12, 2019
de743c1
converted to comp bot
gabrielbryk Mar 12, 2019
523b837
I lied i actaully converted to practice bot
gabrielbryk Mar 12, 2019
952f38f
Changes from after session 3/12
ayush17agarwal Mar 13, 2019
9f0d18c
mostly working wrist stuff
gabrielbryk Mar 13, 2019
730a0e8
working better
gabrielbryk Mar 13, 2019
b1eaa28
Revert "I lied i actaully converted to practice bot"
gabrielbryk Mar 14, 2019
ca2d3db
Revert "working better"
gabrielbryk Mar 14, 2019
d444b46
fixed and also probably broke the arm and the wrist.
gabrielbryk Mar 14, 2019
558cd3f
stuff
gabrielbryk Mar 19, 2019
e35b2c5
Refactor left & right Talons to Victors
trajing Mar 19, 2019
3ebee67
Cache gyro and encoder inputs for drive subsystem
trajing Mar 19, 2019
1e7bf5c
Minor optimization to remove redundant sensor calls
trajing Mar 19, 2019
a3a740e
Cache encoder inputs for ArmSubsystem
trajing Mar 19, 2019
e7dd71b
Added Hab 3 climbing command
trajing Mar 19, 2019
52539b3
Basic hab 3 climbing
trajing Mar 19, 2019
15a830c
Bind Hab3ClimbCommand to button
trajing Mar 19, 2019
66c1b1e
Instantiated screw talons in DriveSubsystem construction
trajing Mar 19, 2019
1006635
some things work. some things don't.
gabrielbryk Mar 25, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 125 additions & 0 deletions GRIP/2019gaberoom.grip
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
<grip:Pipeline>
<sources>
<grip:Camera>
<property name="deviceNumber" value="2"/>
</grip:Camera>
</sources>
<steps>
<grip:Step name="HSL Threshold">
<grip:Input step="0" socket="0"/>
<grip:Input step="0" socket="1">
<value>
<double>1.0791356615025363</double>
<double>74.53925305259105</double>
</value>
</grip:Input>
<grip:Input step="0" socket="2">
<value>
<double>30.575547587099685</double>
<double>123.00341850254723</double>
</value>
</grip:Input>
<grip:Input step="0" socket="3">
<value>
<double>214.02876531477455</double>
<double>255.0</double>
</value>
</grip:Input>
<grip:Output step="0" socket="0" previewed="false"/>
</grip:Step>
<grip:Step name="Find Contours">
<grip:Input step="1" socket="0"/>
<grip:Input step="1" socket="1">
<value>false</value>
</grip:Input>
<grip:Output step="1" socket="0" previewed="false"/>
</grip:Step>
<grip:Step name="Filter Contours">
<grip:Input step="2" socket="0"/>
<grip:Input step="2" socket="1">
<value>100.0</value>
</grip:Input>
<grip:Input step="2" socket="2">
<value>0</value>
</grip:Input>
<grip:Input step="2" socket="3">
<value>0</value>
</grip:Input>
<grip:Input step="2" socket="4">
<value>1000</value>
</grip:Input>
<grip:Input step="2" socket="5">
<value>0</value>
</grip:Input>
<grip:Input step="2" socket="6">
<value>1000</value>
</grip:Input>
<grip:Input step="2" socket="7">
<value>
<double>79.73620617132391</double>
<double>100.0</double>
</value>
</grip:Input>
<grip:Input step="2" socket="8">
<value>200.0</value>
</grip:Input>
<grip:Input step="2" socket="9">
<value>4.0</value>
</grip:Input>
<grip:Input step="2" socket="10">
<value>0</value>
</grip:Input>
<grip:Input step="2" socket="11">
<value>1000</value>
</grip:Input>
<grip:Output step="2" socket="0" previewed="true"/>
</grip:Step>
<grip:Step name="Save Images to Disk">
<grip:Input step="3" socket="0"/>
<grip:Input step="3" socket="1">
<value>JPEG</value>
</grip:Input>
<grip:Input step="3" socket="2">
<value>100.0</value>
</grip:Input>
<grip:Input step="3" socket="3">
<value>1.0</value>
</grip:Input>
<grip:Input step="3" socket="4">
<value>false</value>
</grip:Input>
<grip:Output step="3" socket="0" previewed="true"/>
</grip:Step>
</steps>
<connections>
<grip:Connection>
<grip:Output step="1" socket="0" previewed="false"/>
<grip:Input step="2" socket="0"/>
</grip:Connection>
<grip:Connection>
<grip:Output source="0" socket="0" previewed="true"/>
<grip:Input step="3" socket="0"/>
</grip:Connection>
<grip:Connection>
<grip:Output source="0" socket="0" previewed="true"/>
<grip:Input step="0" socket="0"/>
</grip:Connection>
</connections>
<settings>
<teamNumber>0</teamNumber>
<publishAddress>roboRIO-0-FRC.local</publishAddress>
<deployAddress>roboRIO-0-FRC.local</deployAddress>
<deployDir>/home/lvuser</deployDir>
<deployUser>lvuser</deployUser>
<deployJavaHome>/usr/local/frc/JRE/</deployJavaHome>
<deployJvmOptions>-Xmx50m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:MaxNewSize=16m</deployJvmOptions>
</settings>
<codeGenerationSettings>
<language>Python</language>
<className>GripPipeline</className>
<implementWpilibPipeline>false</implementWpilibPipeline>
<saveDir>C:\Users\gbryk\GRIP</saveDir>
<packageName></packageName>
<moduleName>grip</moduleName>
</codeGenerationSettings>
</grip:Pipeline>
Binary file added GRIP/__pycache__/grip.cpython-37.pyc
Binary file not shown.
15 changes: 15 additions & 0 deletions GRIP/camera.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
import numpy as np
import cv2 as cv
cap = cv.VideoCapture(2)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
# Our operations on the frame come here
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
# Display the resulting frame
cv.imshow('frame',gray)
if cv.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv.destroyAllWindows()
14 changes: 14 additions & 0 deletions GRIP/contourtest.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import numpy as np
import cv2

im = cv2.imread('images/2019-01-09_00-57-35-005.png')
imgray = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
ret,thresh = cv2.threshold(imgray,127,255,0)
im2,contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(im, contours, -1, (0,255,0), 3)
cv2.imshow('frame',im)
if cv2.waitKey(1) & 0xFF == ord('q'):

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
157 changes: 157 additions & 0 deletions GRIP/grip.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,157 @@
import cv2
import numpy
import math
from enum import Enum

class GripPipeline:
"""
An OpenCV pipeline generated by GRIP.
"""

def __init__(self):
"""initializes all values to presets or None if need to be set
"""

self.__rgb_threshold_red = [0.0, 45.40101835752104]
self.__rgb_threshold_green = [0.0, 255.0]
self.__rgb_threshold_blue = [0.0, 255.0]

self.rgb_threshold_output = None

self.__find_contours_input = self.rgb_threshold_output
self.__find_contours_external_only = False

self.find_contours_output = None

self.__filter_contours_contours = self.find_contours_output
self.__filter_contours_min_area = 40.0
self.__filter_contours_min_perimeter = 10.0
self.__filter_contours_min_width = 0.0
self.__filter_contours_max_width = 1000.0
self.__filter_contours_min_height = 0.0
self.__filter_contours_max_height = 1000.0
self.__filter_contours_solidity = [0.0, 100.0]
self.__filter_contours_max_vertices = 5000.0
self.__filter_contours_min_vertices = 0.0
self.__filter_contours_min_ratio = 0.0
self.__filter_contours_max_ratio = 1000.0

self.filter_contours_output = None

self.__convex_hulls_contours = self.filter_contours_output

self.convex_hulls_output = None


def process(self, source0):
"""
Runs the pipeline and sets all outputs to new values.
"""
# Step RGB_Threshold0:
self.__rgb_threshold_input = source0
(self.rgb_threshold_output) = self.__rgb_threshold(self.__rgb_threshold_input, self.__rgb_threshold_red, self.__rgb_threshold_green, self.__rgb_threshold_blue)

# Step Find_Contours0:
self.__find_contours_input = self.rgb_threshold_output
(self.find_contours_output) = self.__find_contours(self.__find_contours_input, self.__find_contours_external_only)

# Step Filter_Contours0:
self.__filter_contours_contours = self.find_contours_output
(self.filter_contours_output) = self.__filter_contours(self.__filter_contours_contours, self.__filter_contours_min_area, self.__filter_contours_min_perimeter, self.__filter_contours_min_width, self.__filter_contours_max_width, self.__filter_contours_min_height, self.__filter_contours_max_height, self.__filter_contours_solidity, self.__filter_contours_max_vertices, self.__filter_contours_min_vertices, self.__filter_contours_min_ratio, self.__filter_contours_max_ratio)

# Step Convex_Hulls0:
self.__convex_hulls_contours = self.filter_contours_output
(self.convex_hulls_output) = self.__convex_hulls(self.__convex_hulls_contours)


@staticmethod
def __rgb_threshold(input, red, green, blue):
"""Segment an image based on color ranges.
Args:
input: A BGR numpy.ndarray.
red: A list of two numbers the are the min and max red.
green: A list of two numbers the are the min and max green.
blue: A list of two numbers the are the min and max blue.
Returns:
A black and white numpy.ndarray.
"""
out = cv2.cvtColor(input, cv2.COLOR_BGR2RGB)
return cv2.inRange(out, (red[0], green[0], blue[0]), (red[1], green[1], blue[1]))

@staticmethod
def __find_contours(input, external_only):
"""Sets the values of pixels in a binary image to their distance to the nearest black pixel.
Args:
input: A numpy.ndarray.
external_only: A boolean. If true only external contours are found.
Return:
A list of numpy.ndarray where each one represents a contour.
"""
if(external_only):
mode = cv2.RETR_EXTERNAL
else:
mode = cv2.RETR_LIST
method = cv2.CHAIN_APPROX_SIMPLE
im2, contours, hierarchy =cv2.findContours(input, mode=mode, method=method)
return contours

@staticmethod
def __filter_contours(input_contours, min_area, min_perimeter, min_width, max_width,
min_height, max_height, solidity, max_vertex_count, min_vertex_count,
min_ratio, max_ratio):
"""Filters out contours that do not meet certain criteria.
Args:
input_contours: Contours as a list of numpy.ndarray.
min_area: The minimum area of a contour that will be kept.
min_perimeter: The minimum perimeter of a contour that will be kept.
min_width: Minimum width of a contour.
max_width: MaxWidth maximum width.
min_height: Minimum height.
max_height: Maximimum height.
solidity: The minimum and maximum solidity of a contour.
min_vertex_count: Minimum vertex Count of the contours.
max_vertex_count: Maximum vertex Count.
min_ratio: Minimum ratio of width to height.
max_ratio: Maximum ratio of width to height.
Returns:
Contours as a list of numpy.ndarray.
"""
output = []
for contour in input_contours:
x,y,w,h = cv2.boundingRect(contour)
if (w < min_width or w > max_width):
continue
if (h < min_height or h > max_height):
continue
area = cv2.contourArea(contour)
if (area < min_area):
continue
if (cv2.arcLength(contour, True) < min_perimeter):
continue
hull = cv2.convexHull(contour)
solid = 100 * area / cv2.contourArea(hull)
if (solid < solidity[0] or solid > solidity[1]):
continue
if (len(contour) < min_vertex_count or len(contour) > max_vertex_count):
continue
ratio = (float)(w) / h
if (ratio < min_ratio or ratio > max_ratio):
continue
output.append(contour)
return output

@staticmethod
def __convex_hulls(input_contours):
"""Computes the convex hulls of contours.
Args:
input_contours: A list of numpy.ndarray that each represent a contour.
Returns:
A list of numpy.ndarray that each represent a contour.
"""
output = []
for contour in input_contours:
output.append(cv2.convexHull(contour))
return output



Binary file added GRIP/images/2019-01-09_00-57-29-846.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/2019-01-09_00-57-29-846.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/2019-01-09_00-57-30-875.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/2019-01-09_00-57-31-902.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/2019-01-09_00-57-32-926.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/2019-01-09_00-57-33-972.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/2019-01-09_00-57-35-005.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/2019-01-09_00-57-36-045.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/2019-01-09_00-57-37-058.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/2019-01-09_02-24-46-486.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/rect.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added GRIP/images/test.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Empty file added GRIP/vision.py
Empty file.
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# FRC-2019-JAVA

OK, so basically, I write readme.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
plugins {
id "java"
id "edu.wpi.first.GradleRIO" version "2019.1.1"
id "edu.wpi.first.GradleRIO" version "2019.4.1"
}

def ROBOT_MAIN_CLASS = "frc.robot.Main"
Expand Down
Empty file modified gradlew
100644 → 100755
Empty file.
Loading