Esempio n. 1
0
        ///////////////////////////////////////////////////////////////////////////
        //
        public RobotLocator(ParticleFinder pi)
        {
            _particles = pi.Particles;

            imgheight = pi.imgheight;
            imgwidth = pi.imgwidth;

            findTargets();

            if (_particles.Count == 3) {
                targetleft = _particles[0];
                targetmid = _particles[1];
                targetright = _particles[2];
            }
            else if (_particles.Count == 2) {
                Particle p1 = _particles[0];
                Particle p2 = _particles[1];

                int center = imgwidth / 2;

                if (p1.area > p2.area) {
                   targetleft = p1;
                   targetmid = p2;
                }
                else {
                    targetmid = p1;
                    targetright = p2;
                }
            }
            else if (_particles.Count == 1) {
                targetmid = _particles[0];
            }
        }
Esempio n. 2
0
        public void Start()
        {
            _settings       = null;
            _particlefinder = new ParticleFinder(Settings.Default.Luminance, false, 60 * 25);
            _camera         = new CameraMJPG(Settings.Default.CameraURL, Settings.Default.FrameRate, Settings.Default.Compression);
            // _camera = new Camera(Settings.Default.CameraURL, Settings.Default.FrameRate);

            _trim = Settings.Default.Trim;

            _camera.Start();
        }
Esempio n. 3
0
        void findByAspectRatio(ParticleFinder pi)
        {
            // look for mid goal, find the biggest particle with the right aspect ratio
            foreach (Particle p in pi.Particles)
            {
                if ((p.aspectratio > midaspectmin) && (p.aspectratio < midaspectmax))
                {
                    if ((targetmid == null) || (p.area > targetmid.area))
                    {
                        targetmid = p;
                    }
                }
            }

            // look for side goals
            if (targetmid != null)
            {
                foreach (Particle p in pi.Particles)
                {
                    if ((p.aspectratio > sideaspectmin) && (p.aspectratio < sideaspectmax))
                    {
                        // we've got a side particle
                        if (targetmid.right < p.left)
                        {
                            if ((targetright == null) || (p.area > targetright.area))
                            {
                                targetright = p;  // take the biggest one
                            }
                        }
                        else if (targetmid.left > p.right)
                        {
                            if ((targetleft == null) || (p.area > targetleft.area))
                            {
                                targetleft = p;   // take the biggest one
                            }
                        }
                    }
                }
            }
            else
            {
                // if we couldn't find anything above, look for the largest particle
                foreach (Particle p in pi.Particles)
                {
                    if ((targetmid == null) || (p.area > targetmid.area))
                    {
                        targetmid = p;
                    }
                }
            }
        }
Esempio n. 4
0
        ///////////////////////////////////////////////////////////////////////////
        //
        public RobotLocator(ParticleFinder pi)
        {
            _particles = pi.Particles;

            imgheight = pi.imgheight;
            imgwidth  = pi.imgwidth;

            findTargets();

            if (_particles.Count == 3)
            {
                targetleft  = _particles[0];
                targetmid   = _particles[1];
                targetright = _particles[2];
            }
            else if (_particles.Count == 2)
            {
                Particle p1 = _particles[0];
                Particle p2 = _particles[1];

                int center = imgwidth / 2;

                if (p1.area > p2.area)
                {
                    targetleft = p1;
                    targetmid  = p2;
                }
                else
                {
                    targetmid   = p1;
                    targetright = p2;
                }
            }
            else if (_particles.Count == 1)
            {
                targetmid = _particles[0];
            }
        }
Esempio n. 5
0
        public void Start()
        {
            _settings = null;
            _particlefinder = new ParticleFinder(Settings.Default.Luminance, false, 60 * 25);
            _camera = new CameraMJPG(Settings.Default.CameraURL, Settings.Default.FrameRate, Settings.Default.Compression);
            // _camera = new Camera(Settings.Default.CameraURL, Settings.Default.FrameRate);

            _trim = Settings.Default.Trim;

            _camera.Start();
        }
Esempio n. 6
0
        void findByAspectRatio(ParticleFinder pi)
        {
            // look for mid goal, find the biggest particle with the right aspect ratio
            foreach (Particle p in pi.Particles) {
                if ((p.aspectratio > midaspectmin) && (p.aspectratio < midaspectmax)) {
                    if ((targetmid == null) || (p.area > targetmid.area))
                        targetmid = p;
                }
            }

            // look for side goals
            if (targetmid != null) {
                foreach (Particle p in pi.Particles) {
                    if ((p.aspectratio > sideaspectmin) && (p.aspectratio < sideaspectmax)) {
                        // we've got a side particle
                        if (targetmid.right < p.left) {
                            if ((targetright == null) || (p.area > targetright.area))
                                targetright = p;  // take the biggest one
                        }
                        else if (targetmid.left > p.right) {
                            if ((targetleft == null) || (p.area > targetleft.area))
                                targetleft = p;   // take the biggest one
                        }
                    }
                }
            }
            else {
                // if we couldn't find anything above, look for the largest particle
                foreach (Particle p in pi.Particles) {
                    if ((targetmid == null) || (p.area > targetmid.area)) {
                        targetmid = p;
                    }
                }
            }
        }