OCCRA
Go to Post Every robot needs a locky-thingy. A robot without one might fire when it isn't supposed to, and hit the wrong target; e.g., a referee, FTA, or robot inspector. - Richard Wallace [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Events   CD-Media   CD-Spy   FRC-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
Thread Tools Rating: Thread Rating: 19 votes, 5.00 average. Display Modes
  #1   Spotlight this post!  
Unread 04-08-2014, 10:45 PM
Jared Russell's Avatar
Jared Russell Jared Russell is offline
I feel better now.
AKA: Jared341
FRC #0254 (The Cheesy Poofs)
Team Role: Engineer
 
Join Date: Nov 2002
Rookie Year: 2001
Location: San Francisco, CA
Posts: 2,639
Jared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond reputeJared Russell has a reputation beyond repute
Team 254 Presents: CheesyVision

Like many teams this season, Team 254 was surprised when we got to our first competition and found out that the Hot Goal vision targets were not triggering right at the start of autonomous mode. There seems to have been some improvements through the weeks, but there is still anywhere from 0.5 to 1.5 seconds delay.

We originally had planned on using a sensor on board the robot - an infrared photosensor from Banner - but our problem was that (a) you can't move the robot until the hot goal triggers or you'll miss the target and (b) it meant our drive team spent a lot of time lining up the sensors to be juuuust right (as Karthik and Paul often pointed out at Waterloo). Onboard cameras may be more tolerant of movement, but introduce new hardware and wiring onto the robot.

We were intrigued by the Kinect, but thought: Why use the Kinect when our Driver Station already has a built-in webcam?

Introducing CheesyVision, our new laptop-based webcam system for simple gesture control of our robot. 254 ran this software at SVR and drove to the correct goal every single time. In eliminations, we installed it on 971 and it worked perfectly, as well. We wanted to share it with all of FRC prior to the Championship, because we think that just because the field timing issue will probably never be perfect this season, nobody should have to suffer.

CheesyVision is a Python program that runs on your Driver Station and uses OpenCV to process a video stream from your webcam.

There are three boxes on top of the webcam image:

-A calibration box (top center)
-Two boxes for your hands (left and right)

Basically, if the left and right boxes are similar in color to the calibration box, we assume your hand is not there. Before each match, our operator puts his hands in the left and right boxes, and then drops the one that corresponds with the goal that turns hot. The result is sent over a TCP socket to the cRIO - example Java code for a TCP server and robot that uses this data in autonomous mode is provided, and doing the same thing in C++ or LabView should be easy (If you implement one of these, please share it with the community!).

There are tuning instructions in the source code, but we have found the default settings work pretty reliably under most lighting conditions as long as your shirt and the color of your skin are different enough (because the algorithm is self-calibrating). Of course, you could use virtually anything else besides skin and clothing if the colors are different.

Here are some screenshots:





To download and install the software, visit:
https://github.com/Team254/CheesyVision

Good luck!

Last edited by Jared Russell : 04-08-2014 at 10:48 PM.
Reply With Quote
  #2   Spotlight this post!  
Unread 04-08-2014, 10:49 PM
DampRobot's Avatar
DampRobot DampRobot is offline
Riding my 6'3" Channel Islands Fish
AKA: Roger Romani
FRC #0100 (The Wildhats) and FRC#971 (Spartan Robotics)
Team Role: Engineer
 
Join Date: Jan 2012
Rookie Year: 2010
Location: Stanford University
Posts: 1,217
DampRobot has a reputation beyond reputeDampRobot has a reputation beyond reputeDampRobot has a reputation beyond reputeDampRobot has a reputation beyond reputeDampRobot has a reputation beyond reputeDampRobot has a reputation beyond reputeDampRobot has a reputation beyond reputeDampRobot has a reputation beyond reputeDampRobot has a reputation beyond reputeDampRobot has a reputation beyond reputeDampRobot has a reputation beyond repute
Re: Team 254 Presents: CheesyVision

I saw this in person at SVR, and it is very cool. Great job 254, and thanks for sharing!

Now if only someone would use this same technology to block their 3 ball auto...
__________________
The mind is not a vessel to be filled, but a fire to be lighted.

-Plutarch
Reply With Quote
  #3   Spotlight this post!  
Unread 04-08-2014, 10:51 PM
Yipyapper's Avatar
Yipyapper Yipyapper is offline
St. Louis Or Bust
AKA: Aaron Gordon
FRC #0781 (Kinetic Knights)
Team Role: Alumni
 
Join Date: Apr 2011
Rookie Year: 2008
Location: Kincardine
Posts: 164
Yipyapper has a reputation beyond reputeYipyapper has a reputation beyond reputeYipyapper has a reputation beyond reputeYipyapper has a reputation beyond reputeYipyapper has a reputation beyond reputeYipyapper has a reputation beyond reputeYipyapper has a reputation beyond reputeYipyapper has a reputation beyond reputeYipyapper has a reputation beyond reputeYipyapper has a reputation beyond reputeYipyapper has a reputation beyond repute
Re: Team 254 Presents: CheesyVision

This is absolutely phenomenal, and since 781 had to remove their camera for weight, I needed a new method for hot goal detection. I have not been this happy about programming for a while--whether this works for us or not, I am incredibly grateful.

Too bad I can't give rep more than once.
__________________

Programmer/Driver for Team 781 -- The Kinetic Knights 2010-2014. 2011 World Finalists!
Reply With Quote
  #4   Spotlight this post!  
Unread 04-08-2014, 10:53 PM
Thad House's Avatar
Thad House Thad House is offline
Mentor
FRC #4488 (Shockwave)
Team Role: Mentor
 
Join Date: Feb 2011
Rookie Year: 2010
Location: Portland, Oregon
Posts: 545
Thad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond repute
Re: Team 254 Presents: CheesyVision

This really is cool. I like the method. The only problem is that Wildstang couldn't use it

In all seriousness, I think this is an excellent way of detecting hot goals. Very simple, and most laptops have a camera on them nowadays. Ill keep it in mind for championships this weekend.
__________________
-Team 4488
2013 Autodesk Oregon Regional: Highest Rookie Seed -- RAS: 2013 Curie Division: Rookie All Star
2014 Districts: 2x #1 Seed, 2x Champions, DCA, Industrial Design
2014 District Championships: #3 Seed, #1 Pick, Finalist, Quality Award. 337 District Points, #1 in District.
2014 Galileo: #2 Pick, Finalist!

Reply With Quote
  #5   Spotlight this post!  
Unread 04-08-2014, 10:54 PM
instantcake's Avatar
instantcake instantcake is offline
Registered User
AKA: Hunter Werlla
FRC #3847 (Spectrum)
Team Role: Operator
 
Join Date: Jan 2012
Rookie Year: 2012
Location: houston,tx
Posts: 12
instantcake will become famous soon enoughinstantcake will become famous soon enough
Re: Team 254 Presents: CheesyVision

Thank you so much, we were just looking at how to implement our hot goal detection for champs, and this is an amazing solution. We also plan on extending it to tell the robot where to go while blocking during autonomous. Thank you so much for sharing this with the FIRST community!
Reply With Quote
  #6   Spotlight this post!  
Unread 04-08-2014, 10:54 PM
JohnFogarty's Avatar
JohnFogarty JohnFogarty is offline
All your auto points belong to us.
AKA: @doctorfogarty @UofSCFIRSTers @GarnetSq
FRC #4901 (4H Garnet Squadron Robotics)
Team Role: Mentor
 
Join Date: Aug 2009
Rookie Year: 2006
Location: Columbia, SC
Posts: 1,149
JohnFogarty has a brilliant futureJohnFogarty has a brilliant futureJohnFogarty has a brilliant futureJohnFogarty has a brilliant futureJohnFogarty has a brilliant futureJohnFogarty has a brilliant futureJohnFogarty has a brilliant futureJohnFogarty has a brilliant futureJohnFogarty has a brilliant futureJohnFogarty has a brilliant futureJohnFogarty has a brilliant future
Send a message via AIM to JohnFogarty Send a message via Yahoo to JohnFogarty Send a message via Skype™ to JohnFogarty
Re: Team 254 Presents: CheesyVision

We currently use the Kinect method, but i might be inclined to implement this instead. I didn't develop something like this because the kinect Java classes already exsisted and were fairly easy to use. I do like how this required some work though.

Nice work.
__________________
John Fogarty - University of South Carolina Electrical Engineering 16' - 16 Medals - Future Air Force Officer
(2008-13) 1102 - 1 Chairman's Award, 1 FRC Finalist Alliance, & 1 FTC Winning Alliance
(2009-13) 3864 - 1 FTC Inspire Award, 9 FTC Winning Alliances & 1 FTC World Championship
(2013) 1772 - 1 FRC Winning Alliance
(2014 - ???) 4901 - 1 FRC Winning Alliance
http://www.garnetsquadron.com/
Reply With Quote
  #7   Spotlight this post!  
Unread 04-08-2014, 10:58 PM
PayneTrain's Avatar
PayneTrain PayneTrain is offline
Unprepared
AKA: Wil Payne (@Wil_Payne)
FRC #0422 (The Mech Tech Dragons)
Team Role: Mentor
 
Join Date: Mar 2010
Rookie Year: 2008
Location: RVA
Posts: 1,233
PayneTrain has a reputation beyond reputePayneTrain has a reputation beyond reputePayneTrain has a reputation beyond reputePayneTrain has a reputation beyond reputePayneTrain has a reputation beyond reputePayneTrain has a reputation beyond reputePayneTrain has a reputation beyond reputePayneTrain has a reputation beyond reputePayneTrain has a reputation beyond reputePayneTrain has a reputation beyond reputePayneTrain has a reputation beyond repute
Send a message via Skype™ to PayneTrain
Re: Team 254 Presents: CheesyVision

I can't wait to tell the beleaguered crew working on Kinect programming there may be another way!

It is a real shame 254 isn't using the Kinect after its rousing success with it in 2012.
__________________
Don't follow your dreams; follow my Twitter!
Reply With Quote
  #8   Spotlight this post!  
Unread 04-08-2014, 10:59 PM
akoscielski3's Avatar
akoscielski3 akoscielski3 is online now
Mentor (1114), Alumni (772)
AKA: Aaron Koscielski
FRC #1114 (Simbotics)
Team Role: Mentor
 
Join Date: Jul 2010
Rookie Year: 2006
Location: LaSalle, Ontario, Canada
Posts: 1,031
akoscielski3 has a reputation beyond reputeakoscielski3 has a reputation beyond reputeakoscielski3 has a reputation beyond reputeakoscielski3 has a reputation beyond reputeakoscielski3 has a reputation beyond reputeakoscielski3 has a reputation beyond reputeakoscielski3 has a reputation beyond reputeakoscielski3 has a reputation beyond reputeakoscielski3 has a reputation beyond reputeakoscielski3 has a reputation beyond reputeakoscielski3 has a reputation beyond repute
Re: Team 254 Presents: CheesyVision

This weekend at the Windsor-Essex Great Lakes Regional I heard of 1559 using a very similar program for their Hot Goal detection. Instead they used cards that had symbols on them, and I believe they had this all season long though I can not confirm. Because of this they won the Innovation and Control Award.

It's pretty cool seeing that another team came up with a very similar way to detect the Hot Goal.

Good luck at Champs Poofs!
__________________
Hall of Fame Team 1114 Simbotics
2013-Present

Team 77WHO?! 772 Sabre Bytes
2010-2013

Dean's List Finalist 2013 Waterloo Regional
Reply With Quote
  #9   Spotlight this post!  
Unread 04-08-2014, 11:05 PM
alex.lew's Avatar
alex.lew alex.lew is offline
Registered User
AKA: Alex Lew
FRC #1912 (Team Combustion)
 
Join Date: Jan 2012
Rookie Year: 2012
Location: Slidell, LA
Posts: 54
alex.lew will become famous soon enoughalex.lew will become famous soon enough
Re: Team 254 Presents: CheesyVision

2468 team appreciate used a system like this at Bayou last week. This never occurred to us - it's so simple and elegant. This will be pretty cool to show kids at demos.
__________________
www.team1912.com
Spreading the Wildfire
2014 Dean's List Winner
Reply With Quote
  #10   Spotlight this post!  
Unread 04-08-2014, 11:34 PM
RyanCahoon's Avatar
RyanCahoon RyanCahoon is offline
Compulsive frobnicator
FRC #0766 (M-A Bears)
Team Role: Leadership
 
Join Date: Dec 2007
Rookie Year: 2007
Location: Pittsburgh->Mountain View
Posts: 577
RyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond reputeRyanCahoon has a reputation beyond repute
Re: Team 254 Presents: CheesyVision

Quote:
Originally Posted by akoscielski3 View Post
This weekend at the Windsor-Essex Great Lakes Regional I heard of 1559 using a very similar program for their Hot Goal detection. Instead they used cards that had symbols on them, and I believe they had this all season long though I can not confirm. Because of this they won the Innovation and Control Award.
We (1708) used a similar method at both NYTV (we got it working about halfway through the competition) and Pittsburgh (where we won Innovation in Control as well). We used the Fiducial module built into RoboRealm.

I've attached our RoboRealm script file for anyone who's curious. To use, first double click on the Fiducial line in the script, then click the Train button, then click Start. You may need to change the path to the directory that the fiducials are stored in if you're not on 64-bit Windows or you installed in a non-default directory. You'll also have to modify the Network Tables configuration to match your team number.

If we can get a more comprehensive paper written on it, I'll post it on CD.

Nice work, Poofs and Devil-Tech (and others). Cool to see other teams using this method as well.
Attached Files
File Type: zip fiducial tracker.zip (1.0 KB, 13 views)
__________________
--Ryan

FRC 2046, 2007-2008, Student member
FRC 1708, 2009-2012, College mentor; 2013-2014, Mentor
FRC 766, 2014-, Mentor

Last edited by RyanCahoon : 04-08-2014 at 11:54 PM.
Reply With Quote
  #11   Spotlight this post!  
Unread 04-09-2014, 12:01 AM
billbo911's Avatar
billbo911 billbo911 is offline
Registered User
AKA: That's "Mr. Bill"
FRC #2073 (EagleForce)
Team Role: Mentor
 
Join Date: Mar 2005
Rookie Year: 2005
Location: Elk Grove, Ca.
Posts: 1,877
billbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond repute
Re: Team 254 Presents: CheesyVision

I LOVE IT!!

This year 2073 used a USB webcam on our bot to track the balls. It was implemented to assist the driver with alignment to balls when they were obstructed from his view or just too far away to easily line up.
We won the Inspiration in Control Award at both Regionals we attended because of it. If 254 can share their code, we can share the Labview receiver we used to help any team that can take advantage of it.
Set the IP of the receiver to that of your DS, the Port number to that set on line 72 of the code 254 provided, and set number of bytes to read to whatever you are sending. In the case of 254's code, that should be 1.

A quick look at the block diagram will make it obvious what to do.

Please ask any questions here so I can publicly answer them.
Attached Files
File Type: vi PCDuino Receiver.vi (14.4 KB, 41 views)
__________________
So long and thanks for all the fish!
CalGames 2009 Semi Finalist, CalGames 2009 Autonomous Champion Award winner
Sacramento 2010 Creativity in Design winner, Sacramento 2010 Quarter finalist, 2010 Madtown Creative Design Award
2011 Sacramento Finalist, 2011 Madtown Engineering Inspiration Award
2012 Sacramento Semi-Finals, 2012 Sacramento Innovation in Control Award, 2012 SVR Judges Award.
2012 CalGames Autonomous Challenge Award winner ($$$).
2013 Pow3rhou53 Pwnage Gracious Professionalism Award.
2014 2X Rockwell Automation: Innovation in Control Award (CVR and SAC). Curie Division, Gracious Professionalism Award.
2014 Capital City Classic Winner AND Runner Up.
Reply With Quote
  #12   Spotlight this post!  
Unread 04-09-2014, 12:17 AM
Thad House's Avatar
Thad House Thad House is offline
Mentor
FRC #4488 (Shockwave)
Team Role: Mentor
 
Join Date: Feb 2011
Rookie Year: 2010
Location: Portland, Oregon
Posts: 545
Thad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond reputeThad House has a reputation beyond repute
Re: Team 254 Presents: CheesyVision

So something that might be helpful to add would be to make it SmartDashboard compatible. That might make it alot more accessible to teams because it can easily be added as just a variable on the dashboard. You can get python binding for SmartDashboard here
http://firstforge.wpi.edu/sf/frs/do/...ktables.2014_4

I don't have a CRIO on me, but I attached a version that uses the exact same method of communicating as we were doing earlier in the season, so it should work. It just has two bool variables (right_in and left_in) and should just use the standard smartdashboard VI's or functions and be compatible with all versions.

EDIT: Attaching the file wouldnt work for some reason. So here is a skydrive link
https://onedrive.live.com/redir?resi...nt=file%2c.zip
__________________
-Team 4488
2013 Autodesk Oregon Regional: Highest Rookie Seed -- RAS: 2013 Curie Division: Rookie All Star
2014 Districts: 2x #1 Seed, 2x Champions, DCA, Industrial Design
2014 District Championships: #3 Seed, #1 Pick, Finalist, Quality Award. 337 District Points, #1 in District.
2014 Galileo: #2 Pick, Finalist!


Last edited by Thad House : 04-09-2014 at 12:23 AM.
Reply With Quote
  #13   Spotlight this post!  
Unread 04-09-2014, 12:22 AM
seg9585's Avatar
seg9585 seg9585 is offline
Registered User
AKA: Eric
FRC #4276 (Marina Vikings)
Team Role: Engineer
 
Join Date: Feb 2006
Rookie Year: 2001
Location: Boeing (Seal Beach, CA)
Posts: 306
seg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant future
Re: Team 254 Presents: CheesyVision

Wouldn't it be easier just to hold up a light or large board of a specific color to discern between the two?
Basically we are just concerned about answering a boolean question here. As in: "Is the left goal hot?" If no, don't hold up the board/light and assume the right goal is hot. If yes, hold up your indicator.
__________________
My FIRST legacy:

Team 204 Student 2001, 2002 (Voorhees, NJ)
Team 1493 College Mentor 2006 - 2008 (Troy, NY)
Team 2150 Intern/Professional Mentor 2007, 2009 (Palos Verdes)
Team 4123 Lead Engineering Mentor 2012 (Bellflower, CA)
Team 4276 Engineering Mentor 2012-2014 (Huntington Beach, CA)
Reply With Quote
  #14   Spotlight this post!  
Unread 04-09-2014, 12:26 AM
seg9585's Avatar
seg9585 seg9585 is offline
Registered User
AKA: Eric
FRC #4276 (Marina Vikings)
Team Role: Engineer
 
Join Date: Feb 2006
Rookie Year: 2001
Location: Boeing (Seal Beach, CA)
Posts: 306
seg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant futureseg9585 has a brilliant future
Re: Team 254 Presents: CheesyVision

Quote:
Originally Posted by billbo911 View Post
I LOVE IT!!

This year 2073 used a USB webcam on our bot to track the balls. It was implemented to assist the driver with alignment to balls when they were obstructed from his view or just too far away to easily line up.
We won the Inspiration in Control Award at both Regionals we attended because of it.
Cool -- we actually did the same thing, and fed back to the driver station which balls were detected in the field of view, and also their distance + offset angle from our collector. Seemed to work pretty well but when we were out on the field we didn't use the autonomous control for it just because of the nature of defensive and high-speed gameplay. Unfortunately we didn't win a Controls award at either of our regionals. Would love to compare code though!
__________________
My FIRST legacy:

Team 204 Student 2001, 2002 (Voorhees, NJ)
Team 1493 College Mentor 2006 - 2008 (Troy, NY)
Team 2150 Intern/Professional Mentor 2007, 2009 (Palos Verdes)
Team 4123 Lead Engineering Mentor 2012 (Bellflower, CA)
Team 4276 Engineering Mentor 2012-2014 (Huntington Beach, CA)
Reply With Quote
  #15   Spotlight this post!  
Unread 04-09-2014, 12:33 AM
MrTechCenter's Avatar
MrTechCenter MrTechCenter is offline
Registered User
AKA: Harsharan "Harsh" Dhaliwal
FRC #2073 (Eagleforce)
Team Role: Coach
 
Join Date: Sep 2011
Rookie Year: 2010
Location: Sacramento, CA
Posts: 390
MrTechCenter has much to be proud ofMrTechCenter has much to be proud ofMrTechCenter has much to be proud ofMrTechCenter has much to be proud ofMrTechCenter has much to be proud ofMrTechCenter has much to be proud ofMrTechCenter has much to be proud ofMrTechCenter has much to be proud ofMrTechCenter has much to be proud ofMrTechCenter has much to be proud of
Re: Team 254 Presents: CheesyVision

Quote:
Originally Posted by seg9585 View Post
Wouldn't it be easier just to hold up a light or large board of a specific color to discern between the two?
Basically we are just concerned about answering a boolean question here. As in: "Is the left goal hot?" If no, don't hold up the board/light and assume the right goal is hot. If yes, hold up your indicator.
This is kind of like what we did for our hot goal tracking. We lined up our robot up with the middle of the high goal so that it could only see the targets for the side that we were on. The camera looked at the targets for the first second and a half of autonomous. If that side was hot first, the robot quickly drove forward and shot. If the other side was hot first, the robot very slowly moved forward so that by the time it was in position to shoot, the goals flipped.
__________________
2011 Sacramento Regional Finalists; 2011 MadTown Throwdown VIP Excellence in Engineering Award; 2012 Sacramento Regional Innovation in Control Award; 2012 Silicon Valley Regional Judges' Award; 2012 CalGames Autonomous Challenge Award; 2012 MadTown Throwdown Finalists; 2013 P0W3RH0U53 PWNAGE Gracios Professionalism Award; 2014 Central Valley Regional Innovation in Control; 2014 Sacramento Regional Innovation in Control; 2014 Curie Division Gracious Professionalism Award
Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 05:29 AM.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


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