|
|
|
![]() |
|
|||||||
|
||||||||
I really really love to try new ideas, especially with Vex. So here's my second Vex Robot - "Holly"-nomic Drive. Holly was built for WPI's Savage Soccer competition (Linkage: http://users.wpi.edu/~savage/), and it was designed to pick up two pool balls and up to four penny rolls to dump them into the pendulum. Unfortunately, between SAT tests, a team fundraising drive, and a local "Christmas in the Village" celebration, we were unable to have enough people there to actually compete.
But I still finished the robot to a beta stage.
Here's how it works: The left joystick controls the orthogonal and diagonal movements, while the horizontal axis of the right joystick controls the rotation, giving full holonomic drive out of this. (Which works very well too.) The robot drives very well on hardwood flooring and linoleum and pretty good on carpet and the soft tiles of the 2006 FVC field. Despite being a holonomic drive, Holly also drives really well on sloped surfaces as well, including the ramps of the 2006 FVC field.
The front flipper is used to get the pool balls into the tray in the robot. This tray is attached to an elevator, which lifts the pool balls up. The tray is powered to dump in one direction or the other, allowing me to dump out the pool balls into the pendulum. The Lexan piece on the top is used to knock the penny rolls off the tower and into the tray of the robot.
Besides the full holonomic behavior, I also had to deal with a lack of enough controls on a single transmitter to drive every function on the robot. So I developed a "drive mode" and "manipulator mode". In "drive mode", the joysticks control the holonomic behavior of the robot, with the right rear push buttons controlling the front ball flipper. But by pushing either of the rear left buttons, the joysticks would cease to control the drive motors and would enter "manipulator mode". This would control the elevator and the tray rotation, as well as the flipper. When the rear left button was released, the controller would return to "drive mode" again. That way, I was able to incorporate the functionality of two transmitters into one. As usual with all my Vex robots, this was entirely programmed in EasyC 2.0.
BTW, my Triple Play bot has NOT cannibalized or taken apart!
(It took a $229 dollar order from VexLabs and about $120 dollars worth of additional parts from RadioShack to avoid having to take apart the Triple Play robot.) The Triple Play robot is still in one piece enjoying retirement from its 1,200 mile tour. The only thing that it is missing is the controller and the radio receiver, which are on Holly.
03-12-2005 22:28
CJOVery cool, although I must imagine that 4 omni wheels makes it pretty easy to push around.
03-12-2005 22:53
Billfred
Art, you've done it again.
What next? Beatty's 2002 machine in Vex? 
03-12-2005 23:22
Kevin Kolodziej
Billfred, don't give me ideas!!!!!
Very cool stuff here. How many motors total are there on that thing??
I just bought a kit and the first thing I did was a 3 motor version of a holonomic drive (two center drive wheels, one motor controlling two perpendicular wheels). Not as good as the real thing, but something to get the kids thinking before the season starts.
Kev
04-12-2005 05:09
sanddragAm I correct in saying it is NOT super easy to push around because the wheels are not all pointing in the same direction? BTW, have any videos of it driving?
04-12-2005 11:43
sciguy125Coincidentally, I'm on the verge of finishing my own omniwheel robot. I got the chassis together yesterday but haven't actually powered it yet (electronics aren't ready). I was pushing it around and noticed that the traction wasn't great, but it was decent. I think that the problem is it's too light. It probably weighs <2lb. The motors won't backdrive, but it will slide.
I'm using these wheels, by the way.
04-12-2005 11:55
Andy Grady
I got to see the Holonimic Drive in action yesterday and it was amazing. Very sleek movement and it seemed like the drivers handled it fairly easy. We wont even go into the beauty of the rest of the robot. Unfortunately they were not able to compete in the competition.
I do recommend that you check out the Savage Soccer site...we had alot of fun yesterday at WPI and the game was absolutely amazing. I think FIRST could learn a few things from these guys!
-Andy Grady
04-12-2005 18:07
artdutra04
|
Originally Posted by sanddrag
Am I correct in saying it is NOT super easy to push around because the wheels are not all pointing in the same direction? BTW, have any videos of it driving?
|



04-12-2005 19:00
sanddragThat just looks like a very bad idea. Especially the wires dangling on the ground. Great fun though, until the magic smoke is released.
04-12-2005 19:17
CJOOh, the magic smoke will just make make it seem a bit more like Christmas.
04-12-2005 20:11
Tom Bottiglieri|
Originally Posted by artdutra04
This makes me want to build one of these out of Vex parts next, so I can shovel my driveway from the park bench on my front porch.
![]() |
04-12-2005 20:40
CmptrGk
|
Originally Posted by Tom Bottiglieri
Why not just retrofit a powered snowblower to drive autonomously?
|
04-12-2005 20:49
greencactus3|
Originally Posted by CmptrGk
"ground beef".
|
19-12-2005 19:05
artdutra04
|
Originally Posted by artdutra04
I should a video of it driving around some time soon, as I have been non-stop busy for like the past month.
|
), so I decided to assemble the video of my Vex Holonomic Drive robot. All of the video was shot this past weekend at the Savage Soccer Demonstration at the WPI Robotnautica FLL Tournament. Many thanks to WPI for hosting the Savage Soccer competition, which presented a perfect excuse for me to build a holonomic drive.
Here's the link:
19-12-2005 21:30
skimooseArt, better get working on another white paper for this one. 
20-12-2005 07:53
Rosiebotboss
Art,
You have done it again..........The talk from the Vex guys during Rosie team meetings has always drifted to talking about what "Art from Gus" has done this week with his Vex kit. I can hardly wait to see the Vex snowcat. Will it be full size?? 
20-12-2005 17:31
ahecht
Seeing this thing play Savage Soccer this past Saturday was a real treat. The looks on the FLL kids' faces when this thing started driving were priceless!
20-03-2006 21:22
Michael Leicht
do you have the code for that robot?
i would like to make something like this. i was wondering if i could see your code for it.
20-03-2006 21:40
Dan PetrovicWhat did you use to bend and cut the metal and stuff? On the poster that comes with the kit it describes a machine that bends and cuts metal.
They don't sell anything like that at vexlabs.com
20-03-2006 21:52
Tim DellesAny wanna help me talk Alex into letting me and him build a VEX Kiwi bot?
20-03-2006 22:45
artdutra04
As requested, here is the code from EasyC ver 2.0 that I used for my Vex Holonomic Drive robot. The main drive controls are relative holonomic drive, which is relative to the current position of the robot. So if you push the left joystick to the left, the robot will go to its left. The code works well, and for a lot of people who I let drive this, it was a lot easiar for them to control than the tank drive on my Triple Play / Space Elevator vex robot.
Here's the code:
#include "Main.h"
void main ( void )
{
int LF; // Left Front
int RF; // Right Front
int LR; // Left Rear
int RR; // Right Rear
int leftx;
int lefty;
int rightx;
int spin;
while ( 1 )
{
// Get Data
leftx = GetRxInput ( 1 , 4 ) ; // Left Joystick, X Axis
lefty = GetRxInput ( 1 , 3 ) ; // Left Joystick, Y Axis
rightx = GetRxInput ( 1 , 1 ) ; // Right Joystick, X Axis
// Half the input signal (so code does not overflow past 255)
leftx = leftx / 2 ;
lefty = lefty / 2 ;
spin = rightx / 2 ;
// Drive Code Algorithim
LF = RR = lefty - leftx + 127 ;
RF = LR = 255 - lefty - leftx ;
RR = 255 - RR ; // Reverse Direction of RR motor
LR = 255 - LR ; // Reverse Direction of LR motor
// Spin Code Algorithim
RF = RF - spin + 63 ;
RR = RR - spin + 63 ;
LF = LF - spin + 63 ;
LR = LR - spin + 63 ;
// Code overflow prevention
if ( LF < 0 )
{
LF = 0 ;
}
else if ( LF > 255 )
{
LF = 255 ;
}
if ( RF < 0 )
{
RF = 0 ;
}
else if ( RF > 255 )
{
RF = 255 ;
}
if ( RR < 0 )
{
RR = 0 ;
}
else if ( RR > 255 )
{
RR = 255 ;
}
if ( LR < 0 )
{
LR = 0 ;
}
else if ( LR > 255 )
{
LR = 255 ;
}
// Set Motors
SetMotor ( 1 , RF ) ;
SetMotor ( 2 , LF ) ;
SetMotor ( 3 , LR ) ;
SetMotor ( 4 , RR ) ;
}
}
21-09-2006 22:00
DmkazI love bringing back up old topics =)
Anyways, I tried to import this code into EasyC 1.1 to see how it actually worked. To no avail though. After the code transfers to the controller, the motors seem to randomly spin at different times. I've tweaked this for numerous hours and still no luck. It would be great if someone could help on this issue. Thanks in advance
P.S. I apologize if I posted this in the wrong area. Didn't want to create a new topic for something that has been discussed numerous times.
10-10-2006 14:29
Dylan Gramlichdid u use just one of the joysticks to control this or some other combination? I should think about building something like that...hmm...
10-10-2006 16:58
artdutra04
|
Originally Posted by Dmkaz
I love bringing back up old topics =)
Anyways, I tried to import this code into EasyC 1.1 to see how it actually worked. To no avail though. After the code transfers to the controller, the motors seem to randomly spin at different times. I've tweaked this for numerous hours and still no luck. It would be great if someone could help on this issue. Thanks in advance |

|
Originally Posted by Dylan Gramlich
did u use just one of the joysticks to control this or some other combination? I should think about building something like that...hmm...
|
01-11-2006 14:58
Lil' Lavery
|
Originally Posted by artdutra04
The left joystick controlled the laternal movement - up on the joystick moved the robot forward, left on the joystick moved the robot to the left, and so on. The right joystick was used to control spin. Move the joystick to the right and the robot would spin to the right, etc. Any combination of the two joysticks, such as moving diagonally while applying a spin would mix the values, so it really would spin while driving diagonally.
|
01-11-2006 17:02
artdutra04
|
Originally Posted by Lil' Lavery
Did you use a robot-centric or a driver-centric code? In other words, if you pushed the joystick left, would the robot move to it's left, or your left?
|
01-11-2006 19:33
Lil' Lavery
|
Originally Posted by artdutra04
Robot-centric. I didn't have any gyros or accelerometers around, so there was no way for me to program absolute (driver-centric) control. That, and at the time I programmed it in EasyC, and I was unsure if sine, cosine, and tangent functions existed. Either way, most people who I let drive that robot found even relative (robot-centric) driving very easy to drive.
|
01-11-2006 23:08
artdutra04
|
Originally Posted by Lil' Lavery
Just curious how you got it to move in a straight line and spin at the same time then, as with a robot centric system, while spinning and translating, it begins to arc. For instance, if it spins clockwise while translating forwards, the "front" of the robot would move clockwise, causing a clockwise arc of motion (and eventually a circle that the robot moves clockwise along the perimeter).
|