Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Robot drive and camera interaction not working (http://www.chiefdelphi.com/forums/showthread.php?t=111981)

rickyman20 24-01-2013 18:57

Robot drive and camera interaction not working
 
I a currently working on a program that will use the camera to guide the robot, but the problem is I can't get it to work. When I try the drive or the camera separately, it works without an issue, but when I use one to control the other, it does not work and it fills my console with
Code:

"Robot Drive... Output not updated often enough."
It I am not able to figure out what the problem is? Here is the code I used (without the teleop and class declaration, but it extends SimpleRobot)
Code:

    AxisCamera camera;          // the axis camera object (connected to the switch)
    CriteriaCollection cc;      // the criteria for doing the particle filter operation
   
    RobotDrive drive;
   
    public void robotInit() {
        camera = AxisCamera.getInstance();  // get an instance ofthe camera
        cc = new CriteriaCollection();      // create the criteria for the particle filter
        cc.addCriteria(MeasurementType.IMAQ_MT_BOUNDING_RECT_WIDTH, 30, 400, false);
        cc.addCriteria(MeasurementType.IMAQ_MT_BOUNDING_RECT_HEIGHT, 40, 400, false);
       
            drive = new RobotDrive(1, 3);
    }

    public void autonomous() {
        while (isAutonomous() && isEnabled()) {
            try
            {
                ColorImage image = camera.getImage();
                BinaryImage thresholdImage = image.thresholdRGB(0, 45, 25, 255, 0, 47);
                BinaryImage bigObjectsImage = thresholdImage.removeSmallObjects(false, 2);
                BinaryImage convexHullImage = bigObjectsImage.convexHull(false);
                BinaryImage filteredImage = convexHullImage.particleFilter(cc);
               
                ParticleAnalysisReport[] reports = filteredImage.getOrderedParticleAnalysisReports();
                if(reports.length > 0)
                {
                        if(reports[0].center_mass_x > image.getWidth() / 2 + 10)
                                drive.arcadeDrive(0, 1);
                        else if(reports[0].center_mass_x < image.getWidth() / 2 - 10)
                                drive.arcadeDrive(0, -1);
                        else
                                drive.arcadeDrive(0, 0);
                }
               
                filteredImage.free();
                convexHullImage.free();
                bigObjectsImage.free();
                thresholdImage.free();
                image.free();
            } catch (NIVisionException ex) {
                ex.printStackTrace();
            } catch (AxisCameraException e) {
                e.printStackTrace();
            }
        }
    }


Joe Ross 24-01-2013 21:03

Re: Robot drive and camera interaction not working
 
My guess is that processing the camera image is taking longer then the frequency of the driver station packets (20 ms). Have you tried timing each of the operations? You might have to break up the processing for each step (1st time through the loop get the image, 2nd time through the loop threshold the image, etc).

Arhowk 24-01-2013 21:12

Re: Robot drive and camera interaction not working
 
Try putting this at the end of autonomous

Timer.delay(1);

Joe Ross 24-01-2013 21:46

Re: Robot drive and camera interaction not working
 
Another thing is that if reports.length is 0, you won't call the RobotDrive, which will cause that message.

Arhowk 24-01-2013 21:54

Re: Robot drive and camera interaction not working
 
Quote:

Originally Posted by Joe Ross (Post 1221436)
Another thing is that if reports.length is 0, you won't call the RobotDrive, which will cause that message.

True. Your criteria are quite strict for a 160x120 camera

rickyman20 24-01-2013 22:28

Re: Robot drive and camera interaction not working
 
I did put an if in case it was zero, and the resolution is higher. I had tested it and there was always at least one rectangle

Arhowk 24-01-2013 22:44

Re: Robot drive and camera interaction not working
 
Quote:

Originally Posted by rickyman20 (Post 1221469)
I did put an if in case it was zero, and the resolution is higher. I had tested it and there was always at least one rectangle

put this line on the top of auton

drive.setSafetyEnabled(false)


All times are GMT -5. The time now is 10:09.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi