Log in

View Full Version : GRIP implementation into robot code


dgummadi
14-11-2016, 17:27
Our team is attempting to use GRIP to process vision, when we generate the code and implement it into our robot code eclipse has no errors with openCV however when the code is compiled the compiler prints this:
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:35: error: cannot find symbol
[javac] private Mat source0;
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:73: error: cannot find symbol
[javac] public void setsource0(Mat source0) {
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:81: error: cannot find symbol
[javac] public Mat rgbThresholdOutput() {
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:110: error: cannot find symbol
[javac] private void rgbThreshold(Mat input, double[] red, double[] green, double[] blue,
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:111: error: cannot find symbol
[javac] Mat out) {
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:140: error: cannot find symbol
[javac] private void findLines(Mat input, ArrayList<Line> lineList) {
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:30: error: cannot find symbol
[javac] private Mat rgbThresholdOutput = new Mat();
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:37: error: cannot find symbol
[javac] System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
[javac] ^
[javac] symbol: variable Core
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:51: error: cannot find symbol
[javac] Mat rgbThresholdInput = source0;
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:58: error: cannot find symbol
[javac] Mat findLinesInput = rgbThresholdOutput;
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:112: error: cannot find symbol
[javac] Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2RGB);
[javac] ^
[javac] symbol: variable Imgproc
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:112: error: cannot find symbol
[javac] Imgproc.cvtColor(input, out, Imgproc.COLOR_BGR2RGB);
[javac] ^
[javac] symbol: variable Imgproc
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:113: error: cannot find symbol
[javac] Core.inRange(out, new Scalar(red[0], green[0], blue[0]),
[javac] ^
[javac] symbol: class Scalar
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:114: error: cannot find symbol
[javac] new Scalar(red[1], green[1], blue[1]), out);
[javac] ^
[javac] symbol: class Scalar
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:113: error: cannot find symbol
[javac] Core.inRange(out, new Scalar(red[0], green[0], blue[0]),
[javac] ^
[javac] symbol: variable Core
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:141: error: cannot find symbol
[javac] final LineSegmentDetector lsd = Imgproc.createLineSegmentDetector();
[javac] ^
[javac] symbol: class LineSegmentDetector
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:141: error: cannot find symbol
[javac] final LineSegmentDetector lsd = Imgproc.createLineSegmentDetector();
[javac] ^
[javac] symbol: variable Imgproc
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:142: error: cannot find symbol
[javac] final Mat lines = new Mat();
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:142: error: cannot find symbol
[javac] final Mat lines = new Mat();
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:147: error: cannot find symbol
[javac] final Mat tmp = new Mat();
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:147: error: cannot find symbol
[javac] final Mat tmp = new Mat();
[javac] ^
[javac] symbol: class Mat
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:148: error: cannot find symbol
[javac] Imgproc.cvtColor(input, tmp, Imgproc.COLOR_BGR2GRAY);
[javac] ^
[javac] symbol: variable Imgproc
[javac] location: class Pipeline
[javac] C:\Users\2472\workspace\Something-Creative\src\src\Pipeline.java:148: error: cannot find symbol
[javac] Imgproc.cvtColor(input, tmp, Imgproc.COLOR_BGR2GRAY);
[javac] ^
[javac] symbol: variable Imgproc
[javac] location: class Pipeline
[javac] 28 errors

BUILD FAILED
C:\Users\2472\wpilib\java\current\ant\build.xml:71 : Compile failed; see the compiler error output for details.


Anyway, it appears to me that the Mat inside the openCV library is not in the build path. However when I check in Project>properties>Java Build Path it shows opencv-3.1.0 as one of the libraries.
Am I implementing GRIP incorrectly or is there a way to fix this issue?

Djur
14-11-2016, 20:43
You need to add the OpenCV jar as a user library in build.properties, it won't work if you only add it as a normal Eclipse dependency.

The easiest way to do it is to put the jar in ${user.home}/wpilib/user/lib (for you, C:\Users\2472\wpilib\user\lib\opencv-java-3.1.0.jar) and add that jar as an Eclipse dependency

Your build.properties file should then have the line


userLibs=${user.home}/wpilib/user/lib/opencv-java-3.1.0.jar


Note that I'm referencing WPILib's build of OpenCV (which can be found here (http://first.wpi.edu/FRC/roborio/maven/release/org/opencv/opencv-java/3.1.0/)) which doesn't contain any compiled native libraries.