![]() |
Team 2471 swerve drives
http://youtu.be/dKpz8bJqr58 This off-season I have been investing quite a bit of my time into this project, along with several of my team mates, its finally begun to pay off. The link is to a video of the test bot on Monday, which was the first day we got to drive it for more than about 5 minutes. Keep in mind, this is not our hallway to bash, so we are driving a bit cautiously. This robot will compete in the Bunny Bot off-season event on 12/21/13 hosted by team 1540. Most of the team that worked on the swerve project would agree that the initial programming was much easier than expected. we began integrating the code on Monday of last week, we had a vexing initial zeroing problem that took us until the end of Wednesday shop to solve. Then I went in on Saturday for a few hours and got the robot strafing. The next day I was in for literally less than 90 min and the first version of the code was done and working. The current code is a simple robot based drive that works well but would take a lot of driver practice to achieve what we want, so we will continue to add complexity from here. I have posted about the mechanical design previously on CD but I assume that many people have not seen it. The upper gear box is constructed with a one piece frame because it has high strength, low weight, and provides a compact design. The CIM drive has a one to one belt ratio on top right now to save space, and in the castor it has a 3.5 to 1 chain ratio, geared for 17 ft/sec. In the future, we may use a 12 to 15 belt ratio on top for more torque. The steering is done by a 550 series motor through a 27 to 1 planetary gearbox out of a Black and Decker drill, and then a 15 to 48 belt drive. The BND gearbox was chosen because it is light weight, some-what compact, and cost $17. Each swerve ends up weighing ~7.5 lb, the hole frame (as shown in the picture, not in the video) weighs ~37 lb. The foot print of each swerve is 6" by 6", but at ground level, the castors are only 4" wide. I also have a version designed for next year that would have a foot print of 3" by 9.375". I might post the designs here later if I get enough requests. I will also do my best to post another video of it driving once we get more intuitive code. If you have any further questions or comments i'd be happy to here them. Also, I'm still undecided on the gearing change, so if you have an opinion, please post. |
Re: Team 2471 swerve drives
Looking good, I'd like to see the more compact design as well.
As far as the gearing change, that depends entirely on the game the robot's playing, and what role it's playing in that game. Looking at a game like 2010, an offensive robot didn't need a high top speed, since there wasn't a huge amount of room to drive around because of the bumps. However, a defensive robot was best if it could quickly drive between the two goals to block. The next year in 2011, many offensive robots had a high top speed, designed to quickly traverse a mostly open field. The same thing was seen this year as long as you had a short robot (since the field was hardly open at all for tall robots). Then there are games like 2012, where it's a balance of the two previous examples. There was a good amount of open space, but it was somewhat limited because of the barrier, which also caused you to have to stop and start if you needed to cross the field. A lot of teams opted for faster acceleration and a lower top speed, but were still faster moving than in 2010. Basically, there's no benefit to having a higher top speed if you never reach it, and there's no benefit to having faster acceleration if you are driving long distances with few stops and starts. I also would advise against taking any "pushing power" arguments into account. If you want to play defense, friction with the floor is a better force to rely on than your motors (see team 71 in 2002). If you play offense, trying to push a defender is exactly what they want you to do, because it's wasting your time. Instead, simply avoid and evade defenders (see 610 this year for a great example, especially the way that their driver would "box out" defenders causing them to run into the pyramid and get stuck long enough for 610 to get free). FRC is all about doing the same thing as everybody else, only faster. |
Re: Team 2471 swerve drives
Welcome to the wild world of swerve. On the wheel part I wold be concerned with racking. You might want to consider adding a triangle cross brace to help with this. What wheel position sensor are you using? In my opinion 17 fps is too high. This sacrifices acceleration and precise movement for high end. Put a lower top end on and see what the drivers think. Track your current draw and voltage drop with a comp weight on the bot. Swerve is only as good as your drivers ability to use it. Time to set up the the obstacle course. The AndyMark wheels have good COF when new but wear fast.
|
Re: Team 2471 swerve drives
Quote:
That being said, I'm curious to see if people think it is too tall for any situation. 3.5 to one is not a lot of gearing. Quote:
Quote:
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Looks good... but I'm concerned with the rigidity of the frame. Is there going to be a belly pan or the like for the electronics? If not, I'd look at some diagonal bracing...
|
Re: Team 2471 swerve drives
looks cool. Is that swerve frame a single piece of aluminum???
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
Quote:
|
Re: Team 2471 swerve drives
Quote:
Quote:
The code is made up of two, somewhat simple parts right now. First, the left analog stick input gives an X-Y heading. That vector is directly applied to each wheel. This gives us our translation or strafing ability. Next, the X component of the right analog input gives a turning value. This value is set as the length of a vector on each wheel for orienting the robot. The angle of this vector is defined as being perpendicular to a line between the wheel and the the center of robot rotation. Then, one problem is that each wheel has two vectors that it is supposed to accomplish. The solution is simple: you just add the two vectors together. This presents a second problem. If you try to turn at full power and drive at full power at the same time, each wheel will try to drive at >100% power. This is solved by dividing each wheel's power by the power of the highest power wheel if that is greater than 100%. Quote:
This code, as I mentioned earlier works quite well, but it is somewhat difficult to drive. So before the off-season ends, we will be implementing a field-centric drive code. To get our sense of bearing, we will be using both gyro and compass sensors. To filter these inputs together we considered using a Kalman filter, but we decided it was not a good solution because it has a lot of tuning involved as well as not having a lot of information available on the details of how to tune them. We have decided to implement our own filter that is much more simple and gets directly to the solution. It essentially works by taking the height of the compass sensor on a graph and applying the curve of the gyro input to that. We had a problem in the beginning: a small syntax error that caused a lot of very odd outputs and symptoms. |
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
Partly because 1717 doesn't publish their designs or code, we took into consideration the resources that are available from team 1640. They are very generous to offer years worth of experience. While their detailed cad designs helped me get off the ground, their software papers were more complicated than I was hoping. So, essentially all of the ideas that went into this version of software came from the minds of the people involved in the project. We already have most of the ideas compiled for the field-centric version as well, but I'm sure we will run into some challenges that we have not yet foreseen. After the field-centric version is complete, we will try out a new concept that is specific in solving the challenges involved in this years bunny-bot off-season event. the main challenge to the game is collecting and herding 6" foam dodge balls, while only using a three sided corral. After bunny-bots, we will do our best to publish a white paper about several aspects of the project as well as post the designs so that others can use them. Edit: Here's a link to us playing with 1717 http://youtu.be/X-Jm1vQ_bSk?t=24m26s |
Re: Team 2471 swerve drives
Quote:
http://forums.usfirst.org/showthread...re-season-code |
Re: Team 2471 swerve drives
They look great. Very nicely done! Great job managing the mass.
I'm glad our designs were helpful. |
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
How much pushing power does this have? I have always liked this idea but it never seems practical if you are going up against any mildly strong defensive team. I feel like you could be smelling those motors after a small pushing battle.
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
Pushing performance is tied to how the CIMs are geared. At 17 FPS like these modules, probably not as pushy as a shifting drive or at a lower speed. CG is also a factor as ideally it should be low enough that tipping off of a wheel or two isn't as easy in a pushing match. Best of luck on getting the code on this up to 1717's standards. The vast majority of swerves never get there, but with time in the off season to prepare it's totally possible. I love the mechanical design, especially the gearbox made from a single piece of extrusion. |
Re: Team 2471 swerve drives
Quote:
When many tall geared offensive robots try to get around a defensive one, they dodge left or right early. To do this they must slow down a little. Then the slower D-bot (defensive robot) begins to move in that direction. The D-bot is not fast enough to get directly in the way of the O-bot, (offensive robot) but it can run into the side of the O-bot. In most situations this costs the O-bot a few seconds because the friction between their bumpers is high enough that it is difficult to get unstuck. Now if an S-bot (swerve bot) has an defender in the way, it can head full speed directly at the D-bot without giving away which direction it is planning to go. Then, with just a few feet left between, the S-bot can dodge on way or the other without slowing down, their is no D-bot that I know of that would be able to accelerate fast enough to get in the S-bot's way. Now, lets say that S-bot wants to play defense. They still will never have to get in a pushing match. Because S-bot is most likely as fast as any robot it will face, S-bot just predicts where O-bot wants to go then just sits in the way. In our programming, every time you let up off the joy sticks, the wheels make an X formation. So to push S-bot when it is not moving would require that O-bot have more traction than S-bot and Have so much torque that It can Break loose S-bots wheels. So in conclusion, we will not be able to push other robots but they won't be able to push us either, and we will be able to change direction almost instantly while moving at high speed. PS. sorry for the long post, but I just find it strange that many people think a swerve robot would be easy to push. |
Re: Team 2471 swerve drives
Quote:
On a side note, as light as the gearbox is right now, another change I am considering for the season is the wall thickness. As it stands, it has .25" wall, and I think the welded frame of the robot would fall apart before the box would see a dent. I'm thinking of .1875" or .125". I know that that .1875" would be strong enough, (I've personally jumped up and down on a piece) but the rest of the robot frame is always made from CNC'd .125". Quote:
|
Re: Team 2471 swerve drives
These swerve modules are really neat. I like how you have pocketed out plate on the wheel holder.
I'd keep the bottom plate at 0.25". The top plate could probably be 0.1875", or maybe eve 0.125", but the bottom plate has to handle the load from your thrust bearing. To save weight you could cut away some of the bottom plate that goes around the CIM motor. In the first picture you could probably remove quite a bit of material from the side. You could get creative with the shape of the plates. The only sides that need to be flat are the ones that you are welding to, so you could do something that isn't a square. Also, it's probably worth making the swerve modules stronger than they need to be. We also make our robot's frame out of 0.125" thick aluminum, but we've dented it before. If the swerve modules get dented, it's not good. |
Re: Team 2471 swerve drives
Quote:
Quote:
|
Re: Team 2471 swerve drives
Quote:
Quote:
Quote:
In conclusion, I'm not saying that swerve is a bad drivetrain. There are clear advantages like precise movement and not telegraphing moves. However, I personally find that a 6wd can accomplish your same goals with good drivers, lots of practice, and a few small additions. |
Re: Team 2471 swerve drives
Quote:
Quote:
Quote:
Originally, I was just trying to make the point that in general, it is harder for any given D-bot to form a pushing match against a swerve robot than a 6wd bot. |
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
4 wheel independently steered swerve allows several moves that are not possible with a non omni-directional drive. First a simple side slip. When approaching a defender just as they are about to hit side slip and go on your way. A improved version is the role out maneuver. Same as a slip except as the side slip begins add a chassis roll to it. Its all most impossible to get into a "well driven swerve". Our 2013 driver was very good at this. Look how far he took us. The defender does have more of a chance in a tight restricted area. Walls can be death and field structures. This year the pyramid sides formed a restricted zone. We could go under the pyramid and many times performed the roll out in this zone or went under the pyramid and on our way. Swerve only provides a competitive advantage if the driver is well trained and skilled enough to use the additional degrees of freedom provided by swerve. Alignment in the game is a big advantage to swerve. This year alignment to the feeder station and alignment for shooting were greatly simplified by swerve. So even if you manage to build a swerve system and mechanically get it right your only about half way there. The driver interface and driver training are just as hard. We recognized this and have been working very hard training our rookie drivers for 2014.
|
Re: Team 2471 swerve drives
Gdeaver alluded to the importance of swerve/omni Driver Interface (DI), and that segues into a question I've been wondering about lately. Does anyone know of a team who has implemented a DI mode I will call1 a HaloAR (AR=Auto Rotate), as described in this thread posts 5, 6, and 9? 1until someone informs me that such DI has already been named |
Re: Team 2471 swerve drives
Quote:
The proposed DI is somewhat similar to the system we will try to implement after we get a regular field-centric drive working. It is also quite similar to a DI that we have planed, and may end up using in future seasons. I will just explain the one that we are implementing this off season right now. As I mentioned earlier, the primary challenge this off-season competition, is herding multiple 6" foam dodge balls with a three sided corral. The fact that you can only use a three sided corral means that if the robot were to drive straight forward at speed and the stop, the balls that are inside would roll out. The solution to this problem was difficult to determine, but it is relatively simple to explain. There will be standard field-centric dive code running (one joystick gives field heading, the other gives rotation), but there will be another piece of code that will be added to the rotational part. The code will use an accelerometer to tell which direction we are accelerating, then is will run a control loop to make the front of the robot face in the direction of acceleration to automatically for any motion that the drive makes in field space. Probably, there will be a button that must be held down to enable this driving code, because for some operations in this game, the driver will want to control orientation. Feedback on if you think it will work or not, and why would be appreciated. |
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
Here's an example. Driver presses left on the joystick causing the the robot to accelerate left in field space. The robot automatically rotates to be facing left, just as it would if the code followed joystick position. Then, as the driver approaches where he wants to be, he slowly lets up on the joystick. with code that is tied to the joystick, the robot would continue to be facing left until it came to a stop. this would allow any balls that are being corralled to escape. If the code is tied to acceleration, then as the driver lets up on the joystick, the robot will be accelerating to the right and so the robot will turn around to and catch the balls. As far as I can tell, this sort of thing applies to all situations, so the driver ideally won't have to worry about orienting the robot to move the balls around. |
Re: Team 2471 swerve drives
I'm not trying to grief here, but 28 pounds for the drivetrain sounds horrendous! I do not know how much our mecanum drivetrain weighed, but I know that it is well under 28 pounds!
|
Re: Team 2471 swerve drives
Quote:
Look at it this way, there's over 15 lbs of motors. Maby someone will point out that there is a swerve that weighs much less, and prove me wrong. |
Re: Team 2471 swerve drives
The first post shows it on the weighing scale.
Also, mecanum gave all the performance we needed. Your robot gets as good as your drivers get. Crappy drivers and a million dollar robot would be worth pennies. Great driver and ten dollar robot would make the robot worth millions, (if you think of it in money). In this case, the money is the points! Also, doesn't swerve have a high latency? As of what I know, holonomic drive can have very little latency |
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
No, it's even more. Add the motor controllers and wire to that weight. Yes, there is a big buy in for swerve. For this reason I would tell the largest majority of First teams to look at the cad models and learn but, do not do swerve. It is not for you. Perfect a 6 wheel drive and devote the rest of the teams resources to scoring mechanisms. There are a few teams that have the resources and ability to pursue swerve or other complex drives. The poster appears to have the capability and commitment to do swerve. The rewards can be big. Putting aside the competition aspect of swerve and think how much knowledge and skill a swerve project can give students.
Yes, swerve does affect the weight budget of the robot. That leads to another favorite subject of mine. How do you build light weight strong structures to make up for the weight that was put into the swerve? Composites. I try my best to get as many students as possible to assist in at least 1 composite project. |
Re: Team 2471 swerve drives
Quote:
Oh, yeah, one more thing to add. It's been said many times before, but not in this thread (at least as far as I can see). You've probably already figured this out, but swerve is a ton of work, not just in terms of design or programming, but also in terms of raw manufacturing time and effort. Be careful before you decide (especially before the season) that because swerve is so awesome and you've done it in the offseason that you should do it in-season. Just in terms of manufacturing and assembly time, you could essentially free up enough time to do a full manipulator iteration in season by choosing a WCD or an off the shelf drivetrain over swerve. All in all, cool swerve, and it looks like you've had fun building it! Congratulations, you've succeeded where many have failed. |
Re: Team 2471 swerve drives
If done correctly, mecanum will also get the same things done. Our robot was able to push the other robots around at competition. With locking mecanum, we will be able to stun the other teams when we enable it and sideload ourselves, making it impossible for us to be moved! I will inquire about how much our drivetrain weighs tomorrow, when we have robotics.
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Locking mecanum makes your mecanums into regular solid wheels, giving you a greater traction.
If you want traction, here's what to do next: A claw drive system that uses claws to pull the robot along. Things can easily get impractical :( :deadhorse: :deadhorse: :deadhorse: :deadhorse: |
Re: Team 2471 swerve drives
Locking mecanums doesn't change the interaction between your wheels and the ground(traction). Swerve can run much higher traction wheels. Furthermore, it still doesn't change the fact that a swerve can run two speeds.
|
Re: Team 2471 swerve drives
Quote:
Quote:
|
Re: Team 2471 swerve drives
Very impressive drive system. Now that you have one iteration done and currently testing, you can continue to develop and make improvements to put yourselves further ahead than a large majority of teams for the 2014 season (assuming that a swerve drivetrain is beneficial next year...) Abuse it until you find what breaks!
I am curious about the Black and Decker gearboxes you used. Do you have more details on what model you purchased and what modifications you needed to make? I'm a fan of cheap off the shelf components like this. Quote:
|
Re: Team 2471 swerve drives
Quote:
Quote:
|
Re: Team 2471 swerve drives
While being pushed from the side it does increase traction, however from what I understand it does not increase traction while pushing head on. Regardless, swerve can run super grippy wheels that mecanum cannot(2" wide rough top).
|
Re: Team 2471 swerve drives
Where is the 28 pound number coming from. OP says it weighs 37 pounds in his first post.
|
Re: Team 2471 swerve drives
Quote:
Quote:
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
On a side note, here is a render of a future frame I CAD'd. It is built with a 110" perimeter. The swerves are 3" wide and 9.375" long. Sorry for the low quality render, but it was my first time trying to making a render. ![]() |
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
That's pretty cool. It seems much easier to build because the parts are more spread apart! |
Re: Team 2471 swerve drives
Quote:
When turning, the current heading is updated to the current compass. When not turning, the PI loop is closed loop to hold the heading (which helps reduce affect of gyro drift). At initialization, the robot snaps a zero heading. At any time the driver can press a "hat" button to command the heading to be one of the primary orientation (plus maybe feed station). The PI loop will drive the orientation while the driver continues to command XY translations. We have this working with our asymmetric Killough drive, but only have about 30min of testing under our belt. Focus has moved to a similar fusion PD loop for X and Y with a follower wheel for velocity error P and an accelerometer for the differential error D. |
Re: Team 2471 swerve drives
This is partially off topic, but if you were trying to lock direction/orientation using a gyro or accelerometer, would you use a coprocessor or would you use the cRIO? Don't you need to continuously monitor it to make sure that the results are accurate? Also, what about some mechanism that works like an array of optical mice? I guess that the FPS would be a tad high for the mice sensors, but it should be able to gather movement!
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
|
Re: Team 2471 swerve drives
Quote:
The X,Y movement will use something similar to a mouse. We are using a 3D printed fork assembly to mount two orthogonal un-driven VEX 2.75 omni-wheels with VEX encoders tied to the cRIO FPGA to measure in/s. We are not using encoders on the driven wheels given the amount of slip we expect from a Killough drive. |
Re: Team 2471 swerve drives
Quote:
We originally mounted it on the main electronics board - which worked fine for debugging I2C and gave accurate compass readings... until we drove the motors. We moved it to about 18" above the motors and that seems to be fine. We have not tested it with other robots on the field yet, but given 18" was enough we are hopeful it will not be an issue. |
Re: Team 2471 swerve drives
Awesome design! Question for ya, have you had any problems with plastic gears?
|
Re: Team 2471 swerve drives
After comparing the "~37lbs" to other drivetrains, THAT IS VERY LIGHT FOR A SWERVE DRIVETRAIN (I think I needed those caps :)). I think that that may be around how heavy the KOP chassey should be! Good work Bryce and Team 2471!
|
Re: Team 2471 swerve drives
Quote:
On a side not the pocketing on then modules for the encoders was an amazing idea. The weight of the swerve is the lightest I have ever seen and will only be getting litter by the time of next season. |
Re: Team 2471 swerve drives
Quote:
|
| All times are GMT -5. The time now is 14:17. |
Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi