I edited my post to reflect this.
Hopefully the rules won’t be overly restrictive and flop bots will be legal next year.
I edited my post to reflect this.
Hopefully the rules won’t be overly restrictive and flop bots will be legal next year.
That was my point as well.
We used LabVIEW. We did most of the work in telop this year, as we didn’t have any control loops. Last year, we mostly used telop to set set-points and ran the control loops in periodic tasks (separate thread).
Our autonomous was structured into discrete VIs that had their own while loop in each one running from autonomous independent. We could then string these VIs together very much like lego programming. For example, we had a drive until ball detected, followed by a kick, followed by drive until ball detected in parallel with wait for 2 second kick retract. It was very easy to move those around as needed.
We had no problems with WPILib. We used Jaguars for most things with PWM control. Programming computers were team supplied.
The only sensor we used in competition was an analog current sensor on our ball herder to detect when a ball was captured. We played with the vision system and had it tracking at home, but didn’t have a chance to integrate it into the rest of our code. We used the tracking part without modification, but changed the auto-aiming to fit the rest of the structure of our code.
We had 4 wheel, 4 CIM motor drive, with two pneumatic tires and 2 omni-wheels. Frame was aluminum tube, welded. Almost all fabrication was manual. Kicker was completely pneumatic using a pre-charged cylinder. We did hang, from the top bar There are no wenches on our team or robot (no winches either). We used a lead screw powered by a CIM to hang. We had a single powered roller on top, and an un-powered roller on the bottom that the ball spun against.
We did a custom LabVIEW dashboard, but we only used a little for debugging, and not really in a match. We only used the kit joysticks. After having problems with the provided hub during build season, we bought our own USB hub. We did not use the cypress.
Most of the problems that I helped other teams with were with loose wires, so make sure everything is tight, and that you periodically check your wires, especially in a high impact game like breakaway.
Would you please elaborate on this? What exactly was the bug?
Can you give a couple of examples of 2010 FRC breakaway functionality which would require (or even benefit from) changing task priority?
In the 2010 FRC LabVIEW framework, all user-created periodic tasks have the same priority, and they are preemptively time-slice multitasked by the O/S. Running these periodic tasks at a reasonable rate, as you suggested, frees up the CPU so that it should have enough throughput to service all the tasks you need, no?
~
Programming
**What language did they use? **
C++
**Threaded code or just poll in the teleop loop? **
We just did everything sequentially in the TeleopPeriodic calls from WPILib.
Did they do something in autonomous? If so, what worked?
Our auto mode was set up so you could select a “main” and secondary function. Main functions included :
Secondary Functions Included:
The secondary functions were smart enough to know what to do based on the first function… so ‘Block the tunnel’ worked from the far zone and the middle zone without having to explicitly tell it to. Everything worked. We kicked 5 balls in auto many times and made 3 from the far zone a few times.
What problems did you encounter, if any, with WPILib?
None. It seemed solid.
Did you download the sources and rebuild WPILib/CanJaguarLib?
No.
CAN or PWM control?
PWM. We only used IFI Victor speed controllers.
Did you use the Classmate for programming your robot or student/school supplied computers?
We did not use the classmate for development.
Robot Design
What sensors were used?
Did you use the vision system?
No.
What drive system?
8 wheel drive. 4" cantilevered wheels. 2 speed (w/ neutral) + power take off drive gearbox
How many motors?
4 CIM to drive. These were also used to hang and self right (which was never used)
1 CIM for kicker winch
1 FP + clutch for ball grabber
**What material was used for the frame (Aluminum, steel, unobtanium)?
**
6061 Alum
How did they control the ball?
Pincher roller with high torque clutch on top roller.
Energy storage for kicker (elastic, pneumatic, motor driven, etc.)?
Trampoline springs. Winch driven by CIM with ratchet and pawl. Dog gear + piston release.
How did you cut your parts (water jet, LASER, mill, hand tools,etc.)?
Most plates initially cut on water jet, finished on CNC mill. CNC mill used for most everything else.
Did you hang? If so, what wenching approach did you use?
Vertical bar. Used power take off from drive for lift with ratchet+pawl to keep suspension.
The Driver Station
Did you reprogram your dashboard code?
Yes. We just added a bunch of indicators to push out sensor values for quick debugging. We used the legacy driver station console lines to print out info about and select our auto mode.
Did you use external controls beyond your joysticks?
We used analog joysticks for the driver and 100% custom controls for the operator. Everything ran through the cypress board.
Any problems in getting the USB to behave?
Sometimes the cypress board would not be recognized by the DS software and we would have to restart the computer or restart the CyProgMini (or whatever) windows service to get it to work.
Also, after a restart the cypress board would lose its configuration data. If we did not start the robot AFTER the driver station was up and running, the correct I/O configuration (which was set from the robot) would not get pushed to the board, and everything would default to a floating input. This one was particularly tricky to figure out.
Did you use any unusual controls like WiiMotes, XBox controllers, etc.?
No.
Did you feel that the Classmate was fast enough?
Not at all. Boot up times were terrible. We wasted so much time waiting for things to boot and sync.
I wrote a system almost identical to this, motivated by how easily the LEGO kids I mentor can write code. I had VI’s to do control on speed for distance, kick, set kick recoil distance, and a few others that I rarely used. The distance control did P control on Speed (in feet/seconds).
We have a policy of integrating sensors into our design. We try to automate the more direct robot control functions to allow the driver and operator to focus on driving, which generally means the fewest button presses necessary to perform a task. We generally don’t do much based on time, but some functions have (e.g. a double-action claw in 2007 would trigger the upper claw 10ms after the lower one, and the roller on this robot would kill the roller after 5 iterations after collection and reset after 20 iterations).
I guess I could post for my team, though I really don’t know all the details. I’ll answer what I can. Most of my answers will be quick.
Programming:
**What language did they use? **
LabVIEW at Kettering and MSC, C++ at Wayne State and the Championship.
That’s right, we had two completely different, functional codes from different programming environments. We decided to try something different this year with such a huge programming team.
Threaded code or just poll in the teleop loop?
I have no idea what this means, though I wrote basically all of the LabVIEW code. Sorry…
Did they do something in autonomous? If so, what worked?
We had many autonomous modes. We have scored from all three zones, and have started out in all three zones in eliminations. It really helped out to have so many autonomous modes. There were major differences between the autonomous modes in C++ and in LabVIEW, but they were meant to do the same thing.
What problems did you encounter, if any, with WPILib?
No problems.
Did you download the sources and rebuild WPILib/CanJaguarLib?
No.
CAN or PWM control?
PWM control.
Did you use the Classmate for programming your robot or student/school supplied computers?
We used our own computers. Using the classmate would have been just terrible.
Robot Design:
NOTE: I was not involved with the robot build. I am a programmer, and definitely not an expert. I’ll try to answer these questions based on what I know, which was gathered from working in the pits or with the practice robot.
What sensors were used?
Encoders on the left and right drive, and potentiometers on the kicker and the arm. One yaw rate gyro that was especially useful in auton. No limit switches. We had a camera that we never used.
Did you use the vision system?
No.
If so, what modifications did you have to make to the code?
N/A
What drive system? Wheels?
8 wheel tank, front and back four wheels were smaller and raised.
How many motors?
4 CIM Drive
2 FP motors for the kicker and arm
2 Window - one for the roller and the other for the shifter, to kick and to shift into arm mode.
What material was used for the frame (Aluminum, steel, unobtanium)?
Water-jetted sheet aluminum. Don’t know the specs.
How did they control the ball?
Pincher, with a static bottom bar and a top roller attached to a belt that slips when a ball is being possessed, but still applies torque to the ball.
Energy storage for kicker (elastic, pneumatic, motor driven, etc.)?
Tempered garage door spring.
How did you cut your parts (water jet, LASER, mill, hand tools,etc.)?
Our frame is waterjetted.
Did you hang?
Yes.
If so, what wenching approach did you use?
We used four 200 pound gas struts, and a block and tackle. We wound up the mechanism before every match and used the stored energy to elevate the robot.
The Driver Station
Did you reprogram your dashboard code?
Yes. However, we never ended up using the new dashboard.
Did you use external controls beyond your joysticks?
No.
Any problems in getting the USB to behave?
Yes. Eventually we decided to plug our controllers directly into the Classmate, as there were enough USB ports to do so.
Did you use any unusual controls like WiiMotes, XBox controllers, etc.?
Well we have used only Logitech gamepads for the last couple years. No fancy controllers. We don’t even use joysticks anymore.
Did you feel that the Classmate was fast enough?
We hated the Classmate. The one FIRST gave us decided to crash during two matches at Wayne State, disabling us for the rest of those matches. And the bootup time was way too slow.
Anything else?
We had a lot of problems this year. There were a whole lot of issues we had to face in order to come out on top. But those problem solving steps were part of what makes FIRST Robotics so fun.
Any techniques that you feel might be beneficial to others in the future?
Well we scouted a lot. Our scouting team is huge and that definitely impacted how we did at our competitions.
I’m sorry that my answers were so short, but hopefully this gives some insight into Team 67.
I have most of these questions answered from team 25.
**Programming:
What language did they use? **
We used C/C++, with the provided WindRiver Licenses
Did they do something in autonomous? If so, what worked?
We attempted to have enough versatility to score from all zones. We had an onboard switch and up to 7 auto modes programmed to do so.
What problems did you encounter, if any, with WPILib?
We had a couple of problems while working with encoders. We got some code errors referring to the directory in WPILib. We ended up giving up on encoders, and working with other sensors.
You’ll see our big problems recorded here:
http://www.chiefdelphi.com/forums/search.php?searchid=2951632
Did you download the sources and rebuild WPILib/CanJaguarLib?
We only had the updated version of WPILib to work with. Any new version we could get, we immediately refreshed our libraries with it.
CAN or PWM control?
PWMs. We did not use Jaguars at all this year, and only worked with PWMs and Victors.
Did you use the Classmate for programming your robot or student/school supplied computers?
We used a combination of an old school laptop, and a generously donated laptop to work with our programming. We found that the older one just wouldn’t let us connect a drivers station, a CRio, and a laptop simultaneously.
Robot Design:
What sensors were used?
We used two different kinds of sensors. One photogate sensor was placed in the front of our robot to sense a ball.
A limit switch was attached to a gear driven bolt for our kicker, to sense if it was winded up or not (our kicker was winded by two window motors to store energy from surgical tubing).
And a last limit switch for our hanger which we added later on in the season, to sense if our pull up was at its limit.
Did you use the vision system?
No, we felt it would be too tedious a job after the trouble we went through last year, especially with the lack of the classic bright green light
What drive system?
Tank Drive. 6 wheels. The middle ones are not lowered, but we find turning is a breeze anyway.
Wheels?
We use skyway wheels that we tread ourselves at school. This year we had to replace a couple because we ended up shredding the rubber after two regionals :rolleyes:
How many motors?
4 CIMs for the drives
2 Window motors to wind up the kicker
1 worm-gear driven CIM motor for our hanger
2 Fisher-Price motors for our fans
2 servo pin brakes
How did they control the ball?
We used two RC Propeller blades in an air duct to pull air through the robot. We found we could suck in a ball anywhere 10 - 12 inch radius of the opening in the front. It helped with catching them in the corners.
Energy storage for kicker (elastic, pneumatic, motor driven, etc.)?
Elastic. Surgical Tubing.
How did you cut your parts (water jet, LASER, mill, hand tools,etc.)?
Some parts we cut with hand tools, drills, bandsaws etc. Mostly with stuff you find in any high school wood shop. Nothing fancy.
Did you hang?
Yes, we hung from the side bar.
**If so, what wenching approach did you use? **
Side bar. We had to hook onto the side bar, and pull ourselves up.
The Driver Station
Did you reprogram your dashboard code?
nope
Did you use external controls beyond your joysticks?
Nope, this year we used three of the Logitech joysticks.
Any problems in getting the USB to behave?
Except for the provided stop button annoying us in Atlanta, no problems
Did you use any unusual controls like WiiMotes, XBox controllers, etc.?
no, we deprive our drivers of that luxury
Did you feel that the Classmate was fast enough?
We found the reset times excruciatingly long during build season, but learned to adapt.
Anything techniques?
When we cut out parts for our robot, we find it easiest to print out actual size CADs of the parts, and stick them on to our material. This way our measurements are exact, as they are from full sized CADs. Gives us nice lines to follow when cutting, and saves us measuring time. I’m not sure if other teams do it as well, but it’s great for us.
“Lessons learned”
We thought this year’s design, and build process went fairly well, though haunted with some programming bumps in the road.
I hope this helps, please let me know if you have any questions or if I was unclear about anything.
Well we were a division finalist, so I thought you may want our info
Programming:
**What language did they use? **
LabVIEW
Threaded code or just poll in the teleop loop?
I do believe it was a teleop loop. I’m not 100% sure though.
Did they do something in autonomous? If so, what worked?
In Autonomous we shot balls from all 3 zones; we had an autonomous for each zone, and a “sit” autonomous. The modes would tension the kicker, activate the magnet, and kick based on the amount of balls that were in the zone.
We found it beneficial to pre-tension the kicker to save time.
CAN or PWM control?
PWM
Did you use the Classmate for programming your robot or student/school supplied computers?
We use a combination of team and personal laptops. The team laptop contains the master code, while the student laptops contain the code in which they are working on.
Robot Design:
What sensors were used?
Encoders on the drive system (was not used), limit switches for the kicker and arm release, and a pot for the tensioner.
Did you use the vision system?
No.
What drive system? Wheels?
4 Wheel tank drive. 2 Pneumatic wheels in front, 2 omnis in back.
How many motors?
2 CIMs for drive system
1 CIM for winch
2 Window motors for kicker system
2 Fisher Price for magnet and arm release
What material was used for the frame (Aluminum, steel, unobtanium)?
C channel steel.
How did they control the ball?
Single roller on top.
Energy storage for kicker (elastic, pneumatic, motor driven, etc.)?
Variable tension surgical tubing kicker
How did you cut your parts (water jet, LASER, mill, hand tools,etc.)?
Hand tools, mill, lathe.
Did you hang?
Yes.
If so, what wenching approach did you use?
Used a compressed air strut to raise arm, winch and pulley to raise robot, arm falls once winch is engaged.
The Driver Station
Did you reprogram your dashboard code?
No.
Did you use external controls beyond your joysticks?
No.
Any problems in getting the USB to behave?
No.
Did you use any unusual controls like WiiMotes, XBox controllers, etc.?
3 Logitech Joysticks.
Did you feel that the Classmate was fast enough?
The drivers had mixed feelings about it. We did however purchase one with a larger screen (as compared to the KOP one), which may have had a faster processor and battery. The camera functionality was useful when we had one.
Anything else?
We found that designing and prototyping should always be your first steps. Also that it doesn’t take professionally made parts to make a good robot.
Strategy is also your greatest aide in competition.
Any techniques that you feel might be beneficial to others in the future?
Plan, learn, improve, scout, strategize, and have fun!
You know Alex, it would be really cool if you could get that video right-side up =]
I am a mentor on Oz-Ram, 1922. At our first meetings after kickoff we decided our priorities would be speed, agility, and a good kicker. We used mecanum wheels and a wide orientation. We ended up being quick and very maneuverable. We were very good at getting to balls and clearing them into the front zone when we were in the middle or rear and could score well also. We could easily go over the bumps with a little momentum and go through the tunnel sideways. We were #1 seed at BAE, won in Boston and made the semi-finals in the Newton division. Sorry if I am bragging but my point is that with our strategy the mecanums were very much an asset.
We were 5th seed on Archimedes…
Programming:
What language did they use?
C++
Threaded code or just poll in the teleop loop?
We divided the code into a number of different robot subsystems, each of which was called from {Autonomous,Teleop}Periodic. As much code as possible was shared between teleop and autonomous.
Did they do something in autonomous? If so, what worked?
We implemented an autonomous virtual machine which gave us the ability to quickly code many different autonomous modes for all 3 zones, and add more as the season progressed. We had around 20 programs ranging from “kick 5 balls” to “kick 3 and head for the center of the far zone” to “kick 2 balls then block the tunnel”. Of the 20 we regularly ran about 5. I don’t think we ever started in the near zone in any of our matches so far so there are several programs we never tried at a competition. We also had the ability to program a whole number of seconds delay before the autonomous program ran, which proved to be useful on a couple of occasions to make sure we were not in the way of our alliance partners. We used the 5 ball autonomous a lot at GSR and in NC. In Atlanta with a very capable field of robots we did not need it, but were still crossing the bump in autonomous when necessary for match strategy.
What problems did you encounter, if any, with WPILib?
None
Did you download the sources and rebuild WPILib/CanJaguarLib?
Downloaded the source for reference, did not rebuild WPILib. Did rebuild the CAN code so that it did not mind what firmware version number came back from the Jaguars as all of our Jags were returning the same (very) wrong number. Kept up to date with new releases.
CAN or PWM control?
CAN. No problems once we upgraded to the v89 firmware. We had 7 Jaguars on the CANbus.
Did you use the Classmate for programming your robot or student/school supplied computers?
We did not use the Classmate for programming.
Robot Design:
What sensors were used?
Encoders, limit switches, current sensing via the Jaguars, gyro.
Did you use the vision system?
We wrote aiming code but decided that ball pickup was harder than aiming the robot so we used the camera solely for video feedback to the drivers.
If so, what modifications did you have to make to the code?
What drive system?
4 CIMs, AndyMark 2 speed transmissions, pneumatic shift.
Wheels?
9" pneumatic at the front, dual omnis at the back.
How many motors?
9 motors
What material was used for the frame (Aluminum, steel, unobtanium)?
Alumimum
How did they control the ball?
“Active shepherding” units to guide the ball into a suction cup.
Energy storage for kicker (elastic, pneumatic, motor driven, etc.)?
Compression springs.
How did you cut your parts (water jet, LASER, mill, hand tools,etc.)?
Some parts were made on a mill and lathe. Most of the robot was made using hand and power tools.
Did you hang?
No
If so, what wenching approach did you use?
The Driver Station
Did you reprogram your dashboard code?
Yes
Did you use external controls beyond your joysticks?
No
Any problems in getting the USB to behave?
Not once we replaced the KoP hub
Did you use any unusual controls like WiiMotes, XBox controllers, etc.?
Gamepad for kicker control
Did you feel that the Classmate was fast enough?
Yes, once we replaced the default dashboard code
Anything else?
Any techniques that you feel might be beneficial to others in the future?
Which team and which year?
1625 2010
Oh rly? How’d I miss that o_o ?
Programming:
Robot Design:
The Driver Station
Any problems in getting the USB to behave?: No, except once during the finals on Newton when it refused to recognize the stop button.
Any techniques that you feel might be beneficial to others in the future?: Secure the CAN bus cables. During one match a stray wire or hose depressed a tap allowing the cable to come out. Also, during the Newton finals we had watchdog errors most likely because a CAN bus cable (still secured by its tab) had come out slightly.
I’m just looking to try to collect a “lessons learned” from this year’s competition. I’ll collate the results and post them back to CD.
I am not sure what lessons we could learn from just this data. I suggest collecting data from as many teams as possible so you can attempt to control for variables or at least have results to compare the top 20 teams with.
Well, I’m looking for trends. What do many of these teams have in common? Essentially, if there are common characteristics for these top teams, then this is something that others might like to know to improve for future competitions.
For instance, I was not aware of the whole mechanum wheel thing. Seeing that only 1-2 teams have ever made it to the finals with mechanum wheels should give a robot design team some cause for pause. It’s not that a superior design won’t prevail, but perhaps starting out with mechanum may not be a good idea when facing a challenge like Breakaway.
We’ve been getting some great responses so far. I’m on the road at the moment. So, when I get back home, I’ll start collating the data and get some preliminary information back to the group. Thanks and keep the data coming!
Mike
Here are the drivetrain trends. I see a trend for skid steers. I left blank information that I either didn’t know or couldn’t find.
2010
67 – 8 WD long
177 – 8 WD long (articulated is sets of two, front and back)
294 - 6WD long
2009
67 - 6WD wide
111 - 4 wheel crab (non-coaxial), wide
971 - 6WD wide
2008
1114 - 6WD long
217 - 6WD long
148 - three-wheeled crab (coaxial), nonagon-shaped robot
2007
177 - 6WD long
987 - 6WD long
190 - 6WD long
2006
217 - 6WD long
522 - Treads, long
296 - 2WD long, Omnis in front
2005
67 - three-wheeled crab (non-coaxial). Flop bot.
330 - 6WD long
503 – 4WD long, omniwheels in rear
2004
71 - 4WD long
494 - 4WD long
435 - 2WD long, with casters in front
2003
111 - Four-wheeled non-coaxial crab (with dropdown skid for turning)
469 – 4WD Long
65 - 4WD Wide
2002
71 - 4WD flop bot with casters in front
173 - 4WD long
66 – 4WD long
2001
71 - ?
294 - ?
125 - ?
365 - ?
279 - ?
2000
255 - ?
232 - ?
25 - ?
1999
176 - 4WD long w/ Omnis in front
1 - tank treads, long
48 – 4WD, long
1998
45 – 4WD long with Omnis in front.
1997
71 - ?
1996
73 - ?
1995
100 - ?
1994
144 - ?
1993
148 - ?
1992
126 - ?
(I just compiled the information from this thread http://www.chiefdelphi.com/forums/showthread.php?t=77412)
2001
71 - ?
294 - 4WD-long. And still functioning today!
125 - ?
365 - ?
279 - ?
Programming:
What language did they use?
C++
Did they do something in autonomous? If so, what worked?
1: Start far, kick 3 (no bounce)
2: Start far, kick 3 (with bounce)
3: Start far, kick 3 (no bounce), go over bump
4: Start far, kick 3 (with bounce), go over bump
5: Start mid, kick 2
6: Start mid, kick 2, back up, turn toward center
7: Start near, kick 1
8: Start near, plow into net
9: Start near, kick 1, back up, pause 5 sec, move forward, kick anything in path
In all modes we used current sensing to detect the ball and set the maximum distance. This was enormously helpful as we could easily adjust the starting position of the robot and distance from the ball without having to worry. We used mode 1 and 3 the most.
** CAN or PWM control?**
CAN. We had some trouble with the tan jaguars losing their identity, but fixed those with a patch. It definitely cleans up wiring, but you MUST ensure the wires are secure. If you lose 1, you lose them all! This is why we didn’t move in the 2nd match of Newton finals. We’re talking about using PWM for drive and CAN for auxiliary for next year.
** Did you use the Classmate for programming your robot or student/school supplied computers?**
The team recently purchased a dedicated programming laptop.
Robot Design:
** What sensors were used?**
Jaguar current sensing for the intake roller, encoders on left and right drive train, encoder for kicker winch system, 2 limit switches for kicker zero and kicker max.
** Did you use the vision system?**
Yes! - but not the way you would think. We mounted our camera below our bumper so we could see behind those pesky bumps. It was especially helpful in the far end of the field. It also helped us see directly below the drivers station.
** What drive system?**
6WD with a 0.100" lowered center wheel. The center wheel was driven directly and the front/back by a single loop of chain.
** Wheels?**
7" traction wheels - Thank you Northrop Grumman!
** How many motors?**
Drive: 4 CIMs
Intake: 1 CIM
Kicker winch: 2 FP
Pneumatics: 2 for 2 speed transmission, 1 for ratchet release
** What material was used for the frame (Aluminum, steel, unobtanium)?**
Welded aluminum. Mostly 1/16" wall, but 1/8" where we needed it.
** How did they control the ball?**
Pincher design with friction clutch and center back stop. We pulled balls away from many teams - including 1114 and 1902.
** Energy storage for kicker (elastic, pneumatic, motor driven, etc.)?**
flat elastic pulled back by winch and released by ratchet.
** How did you cut your parts (water jet, LASER, mill, hand tools,etc.)?**
Hand, band saw, mill, lathe, water jet, CNC mill
** Did you hang?**
No.
The Driver Station
** Did you reprogram your dashboard code?**
Not to my knowledge.
** Did you use external controls beyond your joysticks?**
We had a heads up LED display, but no external controls
Anything else?
** Any techniques that you feel might be beneficial to others in the future?**
Ensure you have a battery load tester. While we tested our batteries in the lab (plotting the full drain of the battery), having a battery load tester in the pits is crucial. We disposed of 3 batteries after the championship because they were beyond their life! We couldn’t climb over the bump during the finals in LA because of bad batteries.