Go to Post It's sooo stressful! I brought my suitcase to school today, and I still don't know if we're going! - elfenari [more]
Home
Go Back   Chief Delphi > Technical > Technical Discussion
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 24-09-2003, 13:46
indieFan indieFan is offline
RoboDox and LVHS - Missing you!
FRC #5941
Team Role: Engineer
 
Join Date: Jan 2002
Rookie Year: 2001
Location: Seattle (was SoCal, then SA,TX))
Posts: 382
indieFan has a reputation beyond reputeindieFan has a reputation beyond reputeindieFan has a reputation beyond reputeindieFan has a reputation beyond reputeindieFan has a reputation beyond reputeindieFan has a reputation beyond reputeindieFan has a reputation beyond reputeindieFan has a reputation beyond reputeindieFan has a reputation beyond reputeindieFan has a reputation beyond reputeindieFan has a reputation beyond repute
Types of Drives?

Hello Everyone,

I am currently looking at different types of gearboxes and how to optimize them. This has led to my looking at the various types of overall drive systems. I believe I understand what skid and crab drive are, but I am clueless about what a swerve drive is.

Can someone please explain what these (and any unnamed) drive types are?

Thanks,
indieFan
  #2   Spotlight this post!  
Unread 24-09-2003, 14:03
RogerR's Avatar
RogerR RogerR is offline
its spelled *ya'll*, not *y'all*
AKA: Roger Riquelme
FRC #3844 (Wildbots)
Team Role: Teacher
 
Join Date: Feb 2003
Rookie Year: 2001
Location: Somerset, KY
Posts: 913
RogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond repute
Send a message via AIM to RogerR Send a message via MSN to RogerR
"crab" and "swerve" are two names for the same drive type
__________________
"But to say that the race is a metaphor for life is to miss the point. The race is everything. It obliterates whatever isn't racing. Life is a metaphor for the race." -- Donald Antrim
  #3   Spotlight this post!  
Unread 24-09-2003, 14:40
WakeZero WakeZero is offline
FIRST-a-holic Strategist
#1011 (CRUSH)
 
Join Date: Feb 2002
Location: Tucson, AZ
Posts: 316
WakeZero will become famous soon enough
Send a message via AIM to WakeZero Send a message via Yahoo to WakeZero
Quote:
Originally posted by RogerR
"crab" and "swerve" are two names for the same drive type
These two terms are common nicknames for an omni-directional drive.

The term Crab, comes from... well, a crab. If you have ever seen a crab walk, you know that crabs walk sideways. This makes sense since omni-directional drives can go sideways like a crab.

The term swerve is attributed to the agile motion of omni-directional drives. You never really know where they are going next, they just swerve all over the place very gracefully... most of the time anyway
__________________
2004 Arizona Regional -- Semifinalist
2003 NAT Galileo Division -- Highest Seeded Rookie (20th)
2003 NAT Galileo Division -- 100% Autonomous Completion (7 for 7)
2003 Arizona Regional -- Rookie All-Star Award
2003 Arizona Regional -- Quarterfinalist

Alumni on Team 64, The Gila Monsters
College Mentor/Founder of Team 1011, CRUSH
  #4   Spotlight this post!  
Unread 24-09-2003, 15:06
RogerR's Avatar
RogerR RogerR is offline
its spelled *ya'll*, not *y'all*
AKA: Roger Riquelme
FRC #3844 (Wildbots)
Team Role: Teacher
 
Join Date: Feb 2003
Rookie Year: 2001
Location: Somerset, KY
Posts: 913
RogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond reputeRogerR has a reputation beyond repute
Send a message via AIM to RogerR Send a message via MSN to RogerR
Quote:
Originally posted by WakeZero
These two terms are common nicknames for an omni-directional drive.
there was a large debate (over the summer, i think) in which it was determined that crab and swerve drive lack the three degrees of freedom required to be a true 'omni-directional drive'; they only have two, rotation and x-direction.

a killough(sp?) platform or 'holonomic drive' has three degrees of freedom, and therefore is a 'true' omni-directional drive.

old thread on the subject

the first FIRST killough platform (i believe) was built by team 857 in 2002, and was called the 'kiwi-drive'.
__________________
"But to say that the race is a metaphor for life is to miss the point. The race is everything. It obliterates whatever isn't racing. Life is a metaphor for the race." -- Donald Antrim
  #5   Spotlight this post!  
Unread 24-09-2003, 16:22
WakeZero WakeZero is offline
FIRST-a-holic Strategist
#1011 (CRUSH)
 
Join Date: Feb 2002
Location: Tucson, AZ
Posts: 316
WakeZero will become famous soon enough
Send a message via AIM to WakeZero Send a message via Yahoo to WakeZero
Quote:
Originally posted by RogerR
there was a large debate (over the summer, i think) in which it was determined that crab and swerve drive lack the three degrees of freedom required to be a true 'omni-directional drive'; they only have two, rotation and x-direction.
Bah!
__________________
2004 Arizona Regional -- Semifinalist
2003 NAT Galileo Division -- Highest Seeded Rookie (20th)
2003 NAT Galileo Division -- 100% Autonomous Completion (7 for 7)
2003 Arizona Regional -- Rookie All-Star Award
2003 Arizona Regional -- Quarterfinalist

Alumni on Team 64, The Gila Monsters
College Mentor/Founder of Team 1011, CRUSH
  #6   Spotlight this post!  
Unread 24-09-2003, 17:07
Frank(Aflak)'s Avatar
Frank(Aflak) Frank(Aflak) is offline
Registered User
#1067 (SLUH)
 
Join Date: Dec 2002
Location: Saint Louis
Posts: 375
Frank(Aflak) is on a distinguished road
Quote:
Originally posted by RogerR
there was a large debate (over the summer, i think) in which it was determined that crab and swerve drive lack the three degrees of freedom required to be a true 'omni-directional drive'; they only have two, rotation and x-direction.

a killough(sp?) platform or 'holonomic drive' has three degrees of freedom, and therefore is a 'true' omni-directional drive.

old thread on the subject

the first FIRST killough platform (i believe) was built by team 857 in 2002, and was called the 'kiwi-drive'.
If we can get ahold of (raise the money to buy) quality omniwheels we are going to use a four-wheel Killough variant (wheels 90 degrees apart instead of 120 degrees apart).

Its been worked on, and should actually be mechanically simpler and much more robust than last year's drive. Of course, we will only go ahead if it is consistant with our strategy, which will be decided come January.

The programming will be tough, but thats not my deptartment (i'm just the lead designer). Control should be a breeze. If we manage to get the solid-state gyro online enough to give us a consistant heading so that pushing the joystick north, regardless of the facing of the robot, will cause the robot to move north. and same with all the other directions. With a twist-stick joystick, we can add translational and rotational movement all into one hand . . . it is a good plan, I think. We will see. The biggest problem will be to make the chips and drills run at the same speed not only at 100% throttle, but at all the various percentages in between. Like I said, we will see how things go.
  #7   Spotlight this post!  
Unread 24-09-2003, 17:16
Pat Roche Pat Roche is offline
Mechanical Engineer
FRC #0134 (Team Discovery)
 
Join Date: Aug 2003
Rookie Year: 2000
Location: Pembroke, NH
Posts: 211
Pat Roche is a splendid one to beholdPat Roche is a splendid one to beholdPat Roche is a splendid one to beholdPat Roche is a splendid one to beholdPat Roche is a splendid one to beholdPat Roche is a splendid one to beholdPat Roche is a splendid one to behold
Send a message via AIM to Pat Roche
Quote:
Originally posted by Frank(Aflak)
If we can get ahold of (raise the money to buy) quality omniwheels we are going to use a four-wheel Killough variant (wheels 90 degrees apart instead of 120 degrees apart).

Its been worked on, and should actually be mechanically simpler and much more robust than last year's drive. Of course, we will only go ahead if it is consistant with our strategy, which will be decided come January.

The programming will be tough, but thats not my deptartment (i'm just the lead designer). Control should be a breeze. If we manage to get the solid-state gyro online enough to give us a consistant heading so that pushing the joystick north, regardless of the facing of the robot, will cause the robot to move north. and same with all the other directions. With a twist-stick joystick, we can add translational and rotational movement all into one hand . . . it is a good plan, I think. We will see. The biggest problem will be to make the chips and drills run at the same speed not only at 100% throttle, but at all the various percentages in between. Like I said, we will see how things go.
Getting the Chips and Drills to run the same all the time is just in our gearing. You have many options to that.

-Pat
  #8   Spotlight this post!  
Unread 24-09-2003, 18:30
WakeZero WakeZero is offline
FIRST-a-holic Strategist
#1011 (CRUSH)
 
Join Date: Feb 2002
Location: Tucson, AZ
Posts: 316
WakeZero will become famous soon enough
Send a message via AIM to WakeZero Send a message via Yahoo to WakeZero
Alright... after thinking about it, I guess my definition of an omni-directional drive would be:

A driving mechanism that allows 360 degree directional movement independent from the frame.

My thoughts are that you NEVER can or need to go in more than one direction at a time... so being able to do them all at the same time is a pointless criteria.

Therefore, under this definition, I consider Swerve Drive an omni-directional drive
__________________
2004 Arizona Regional -- Semifinalist
2003 NAT Galileo Division -- Highest Seeded Rookie (20th)
2003 NAT Galileo Division -- 100% Autonomous Completion (7 for 7)
2003 Arizona Regional -- Rookie All-Star Award
2003 Arizona Regional -- Quarterfinalist

Alumni on Team 64, The Gila Monsters
College Mentor/Founder of Team 1011, CRUSH
  #9   Spotlight this post!  
Unread 24-09-2003, 19:33
Jeff Waegelin's Avatar
Jeff Waegelin Jeff Waegelin is offline
El Jefe de 148
AKA: Midwest Refugee
FRC #0148 (Robowranglers)
Team Role: Engineer
 
Join Date: Aug 2001
Rookie Year: 2001
Location: Greenville, TX
Posts: 3,132
Jeff Waegelin has a reputation beyond reputeJeff Waegelin has a reputation beyond reputeJeff Waegelin has a reputation beyond reputeJeff Waegelin has a reputation beyond reputeJeff Waegelin has a reputation beyond reputeJeff Waegelin has a reputation beyond reputeJeff Waegelin has a reputation beyond reputeJeff Waegelin has a reputation beyond reputeJeff Waegelin has a reputation beyond reputeJeff Waegelin has a reputation beyond reputeJeff Waegelin has a reputation beyond repute
Quote:
Originally posted by WakeZero
Alright... after thinking about it, I guess my definition of an omni-directional drive would be:

A driving mechanism that allows 360 degree directional movement independent from the frame.

My thoughts are that you NEVER can or need to go in more than one direction at a time... so being able to do them all at the same time is a pointless criteria.

Therefore, under this definition, I consider Swerve Drive an omni-directional drive
The definition that was given in that thread, however, required the robot to move in the X, Y, and rotational directions simultaneously. And, as for "never" going in more than one direction, did you ever see the Kiwi Drive, or even the video? There's some awesome stuff you can do when spinning and going at a diagonal.

That being said, however, swerve is more than enough mobility for just about anybody. There are advantages to swerve over Killough, and vice-versa, but you can do well with either.
__________________
Jeff Waegelin
Mechanical Engineer, Innovation First Labs
Lead Engineer, Team 148 - The Robowranglers
  #10   Spotlight this post!  
Unread 25-09-2003, 09:15
Frank(Aflak)'s Avatar
Frank(Aflak) Frank(Aflak) is offline
Registered User
#1067 (SLUH)
 
Join Date: Dec 2002
Location: Saint Louis
Posts: 375
Frank(Aflak) is on a distinguished road
when I say that i will be tough to make the chips and drills to run at the same speed . . . I do not mean at full power. However, as I understand these things, if you were to take a chip and a drill, gear them so their free RPM's are equal, and then increase the voltage from zero to twelve at the same rate, the different motors will have different rates of increasing . . . ness . . . . osity . . . . or something. I mean, that, while you can sync the motors at 12 volts, they won't nescessarily be synced when you are giving them half power. Does this make sense? So, our base will run a straight line at full speed, but will pull to one side at half power and stuff. This isn't that large a problem, but its something to think about.
  #11   Spotlight this post!  
Unread 25-09-2003, 10:09
Tytus Gerrish's Avatar
Tytus Gerrish Tytus Gerrish is offline
IGAB, ADHD, and Dislexic
AKA: Ty
FRC #0179 (SwampThing)
Team Role: Tactician
 
Join Date: Feb 2003
Rookie Year: 2001
Location: West Palm Beach, Florida
Posts: 2,017
Tytus Gerrish has a reputation beyond reputeTytus Gerrish has a reputation beyond reputeTytus Gerrish has a reputation beyond reputeTytus Gerrish has a reputation beyond reputeTytus Gerrish has a reputation beyond reputeTytus Gerrish has a reputation beyond reputeTytus Gerrish has a reputation beyond reputeTytus Gerrish has a reputation beyond reputeTytus Gerrish has a reputation beyond reputeTytus Gerrish has a reputation beyond reputeTytus Gerrish has a reputation beyond repute
Speed, Power, And, Maneuvarubalty
SPAM seems to do well with Tank treds

Start, With, Attacking, My, Pproblems
Speed, Width, Agility, Manurvibilty, Power
And i just made these up for Swamp

A Crab drive seems Great because you can point all your power in any direction, But omni wheels only a fraction at the most half in any given direction
  #12   Spotlight this post!  
Unread 25-09-2003, 10:31
patrickrd's Avatar
patrickrd patrickrd is offline
Registered User
AKA: Patrick Dingle
no team
Team Role: Engineer
 
Join Date: May 2001
Rookie Year: 1999
Location: Medford, MA
Posts: 349
patrickrd is a splendid one to beholdpatrickrd is a splendid one to beholdpatrickrd is a splendid one to beholdpatrickrd is a splendid one to beholdpatrickrd is a splendid one to beholdpatrickrd is a splendid one to beholdpatrickrd is a splendid one to behold
Send a message via AIM to patrickrd
Quote:
Originally posted by Frank(Aflak)
when I say that i will be tough to make the chips and drills to run at the same speed . . . I do not mean at full power. However, as I understand these things, if you were to take a chip and a drill, gear them so their free RPM's are equal, and then increase the voltage from zero to twelve at the same rate, the different motors will have different rates of increasing . . . ness . . . . osity . . . . or something. I mean, that, while you can sync the motors at 12 volts, they won't nescessarily be synced when you are giving them half power. Does this make sense? So, our base will run a straight line at full speed, but will pull to one side at half power and stuff. This isn't that large a problem, but its something to think about.
Hi Frank,

The best options is to gear the motors such that the torque-speed curve lines are parallel for both motors. Then, for the motor with more power (ie the one further away on the torque-speed graph), you want to multiply the voltage applied by a constant less than one to bring the curve inward to the weaker motor. For example, the weaker motors would be used fully (PWM range -127 to 127) while the stronger motors would not be used fully (something like -108 to 108). This does waste power, but believe me, with four powered motors geared to an appropriate gear ratio and with high-traction wheels (see below), you will not have a power problem. Ensuring the same torque-speed curve using my method above will also help a LOT with control problems. There will still be some variance from motor to motor and over time and with varying heat conditions: If I were to do it, I would actually place encoders on each wheel, and use feedback control to ensure the robot is going in the commanded direction... But I don't know if FIRST rules allow purchasing of encoders. I know there are teams that make their own with the optical sensors. But to start with, ignore the encoders idea, and if things don't work well enough, you might consider it.

Now, about wheels, I have a lot of experience designing omniwheels, Here is a design I worked on last year (I've also attached a picture of final product):
Exploded view of wheel
Engineering Drawing
Engineering Drawing of Lexan "Hub"
Engineering Drawing of Roller (small rollers around the wheel)
CAD View of Robot w/ Wheels

The wheels have lexan hubs and delrin or aluminum rollers with rubber Buta-N o-rings wrapped around the outside of the rollers. The coefficient of friction between wheel and ground of this particular design is 1.3 for a felt-like material. I suspect it is at least 1.5 (probably closer to 2.0) on a FIRST carpet.

You can machine very similar wheels with manual mill & lathe, but you will need a rotary table to do the lexan pieces. It is better if you have access to CNC. You will also need to make larger wheels, probably about double the size of these wheels (which are 2" diameter). You can order O-Rings from McMaster or try and find them at a hardware store.

If you are really interested, you can actually read our mechanical design documentation at:
Cornell Robocup 2003 Mechanical Design Documentation

There may be some things of use in the documentation that I did not include here.

Good luck! And let me know if you have any questions.

- Patrick

__________________
Systems Engineer - Kiva Systems, Woburn MA
Alumni, Former Mechanical Team Leader - Cornell University Robocup - 1999, 2000, 2002, 2003 World Champions
Founder - Team 639 - Ithaca High School / Cornell University
Alumni - Team 190 - Mass Academy / WPI

Last edited by patrickrd : 25-09-2003 at 10:35.
  #13   Spotlight this post!  
Unread 25-09-2003, 11:24
Jnadke Jnadke is offline
Go Badgers!
#0093
Team Role: Alumni
 
Join Date: Jan 2002
Location: Appleton, WI
Posts: 775
Jnadke is on a distinguished road
Send a message via ICQ to Jnadke Send a message via AIM to Jnadke Send a message via Yahoo to Jnadke
Quote:
Originally posted by Tytus Gerrish
A Crab drive seems Great because you can point all your power in any direction, But omni wheels only a fraction at the most half in any given direction
Not entirely true... with a 4 wheel omniwheel design you can focus at minimum 1/2 your total power in a direction. This is considering that 2 motors power the X direction and 2 motors power the Y direction. Simple trig tells us the maximum we can focus (in a direction of 45 degrees) is 0.70 of all 4 motors. For the 3 wheel omnidirectional design, due to symmetry, you will always exert 0.57 times the total power in any direction. It is possible to increase this to 0.66 times the three motors if you orient the wheels parallel to the Y instead of perpendicular, however this is at the trade-off of losing the ability to control your heading (making this option not really feasible, unless you didn't care what your heading was such as with a saucer-shaped wedge robot).

Keep in mind that with the 4-wheel omnidrectional platform you can have your Y-axis geared for high-speed and your X-axis geared for high-torque without motor fighting.


As said above, with robots drive systems there are three variables to control. Heading, Y-axis velocity, and X-axis velocity.

Tank drive gives control over heading and y-axis velocity, but you can only manipulate one of those at any given moment.

2-wheel / caster drive gives a little bit more control over the two, and you can even do both at the same time for turns up to 45 degrees. However, you cannot make a 90 degree or more turn while maintaining Y-axis velocity.

Swerve/crab drive gives the illusion of omnidirectionibility due to the ability to change the robot heading without changing robot orientation. Still, you only have control over robot heading and Y-axis velocity. Although, you have the ability to manipulate both at the same time.

3-wheel/4-wheel holonomic drive systems have true capability to manipulate all 3 at once, as Jeff said above. It's possible to change robot heading/orientation while maintaining a constant velocity in a certain direction.
__________________
The best moments of our lives fall in two categories: those that did happen and those that did not.

Last edited by Jnadke : 25-09-2003 at 11:48.
  #14   Spotlight this post!  
Unread 25-09-2003, 12:18
WakeZero WakeZero is offline
FIRST-a-holic Strategist
#1011 (CRUSH)
 
Join Date: Feb 2002
Location: Tucson, AZ
Posts: 316
WakeZero will become famous soon enough
Send a message via AIM to WakeZero Send a message via Yahoo to WakeZero
Quote:
Originally posted by Jnadke
3-wheel/4-wheel holonomic drive systems have true capability to manipulate all 3 at once, as Jeff said above. It's possible to change robot heading/orientation while maintaining a constant velocity in a certain direction.
I still think this is an unnecessary requirement in the definition of an omni-directional drive
__________________
2004 Arizona Regional -- Semifinalist
2003 NAT Galileo Division -- Highest Seeded Rookie (20th)
2003 NAT Galileo Division -- 100% Autonomous Completion (7 for 7)
2003 Arizona Regional -- Rookie All-Star Award
2003 Arizona Regional -- Quarterfinalist

Alumni on Team 64, The Gila Monsters
College Mentor/Founder of Team 1011, CRUSH
  #15   Spotlight this post!  
Unread 25-09-2003, 13:06
Unsung FIRST Hero
JVN JVN is offline
@JohnVNeun
AKA: John Vielkind-Neun
FRC #0148 (Robowranglers)
Team Role: Engineer
 
Join Date: May 2001
Rookie Year: 2000
Location: Greenville, Tx
Posts: 3,159
JVN has a reputation beyond reputeJVN has a reputation beyond reputeJVN has a reputation beyond reputeJVN has a reputation beyond reputeJVN has a reputation beyond reputeJVN has a reputation beyond reputeJVN has a reputation beyond reputeJVN has a reputation beyond reputeJVN has a reputation beyond reputeJVN has a reputation beyond reputeJVN has a reputation beyond repute
Guys, this debate is basically just about terminology. Everyone has their own.

Here is mine (and 229s):

Omni-Wheel - A wheel that rotates normally and functions as a wheel, but can also be moved perpendicular to it's rotation. Like the wheel Patrick posted above. Many teams use these to aid in turning. (Hotbot 2001)

Omni-Drive - A drivetrain that consists of multiple "sets" of omni wheels in different (usually at perp.) directions. This alows the robot to move in any direction simply by powering the different wheels at different speeds. (think Metal-In-Motion 2002, which was a 6 wheeled variety. A 4 wheeled variety can be seen here .) I would consider 857's kiwi-drive to fall under this category.

Crab Drive - This type of drivetrain has 2 sets of drivetrains set perp. to each other. Instead of using omni-wheels and having all wheels on the ground, it somehow actuates things so that only one set is on the ground at a given time. (Good examples of this include WPI 2003, 358 2003, TRIBE 2002).

Swerve Drive - The individual wheels can "spin" changing the heading of the robot. It can move in any direction. (think Wildstang 2003/2002, Chief Delphi 2001/2002) There are many variations on this.

2-Wheel Swerve- Two wheels "spin" like a normal swerve drive (See above) the other wheels are either casters, or omni-wheels (see definition above). (see Chief Delphi 1998/2000).

Articulated-Steering - Some, or all of the wheels will turn like a car to aid in turning. 2 cool examples of this include Hotbot and Thunderchickens 2003.

Skid-Steering, or Tank Drive - This is the most standard type of drivetrain. All the wheels/tracks/whatever are pointed in one direction. The robot turns by reversing one side, while powering the other side forward. Examples of this include... almost everyone. When a robot in this configuration is turning, some energy is lost to "side load" because the robot is essentially dragging some of it's wheels across the floor sideways. Some teams use dropdown casters/skids to aid in turning.


This is just my terminology for things. It isn't always the most "technically correct" terminology, but this is what I've developed over 4 years in this program. *shrug* it works for us.

Perhaps this will benefit, someone....

John
__________________
In the interest of full disclosure: I work for VEX Robotics a subsidiary of Innovation First International (IFI) Crown Supplier & Proud Supporter of FIRST
Closed Thread


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

Similar Threads
Thread Thread Starter Forum Replies Last Post
Any Tips on the Design of Drives Argoth 3D Animation and Competition 0 03-11-2003 22:00
What's the best combination for bot types this year? authgeek1218 Rules/Strategy 5 09-01-2003 00:14
Button types Scottie2Hottie General Forum 7 27-03-2002 00:13
External Hard Drives... David Kelly Chit-Chat 8 01-12-2001 21:28
Music types Carolyn Duncan Chit-Chat 42 03-08-2001 23:06


All times are GMT -5. The time now is 06:31.

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


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