Go to Post Dwelling on the past does nothing for the future. - Cory [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
Thread Tools Rating: Thread Rating: 3 votes, 5.00 average. Display Modes
  #1   Spotlight this post!  
Unread 17-05-2014, 10:35
billylo's Avatar
billylo billylo is offline
Registered User
FRC #0610 (Coyotes)
Team Role: Mentor
 
Join Date: Mar 2012
Rookie Year: 2012
Location: Toronto
Posts: 161
billylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant future
Thumbs up What's your favorite programming/control system magic this year?

Effective programming/control system techniques almost work like magic. Unlikely mechanical designs, they are frequently hidden from regular observers.

Which cool techniques have you seen or adopted this year that are creative and worth highlighting for your peers?

I saw a few cool ones:
What's your favorite?
__________________
#go610
  #2   Spotlight this post!  
Unread 17-05-2014, 14:37
faust1706's Avatar
faust1706 faust1706 is offline
Registered User
FRC #1706 (Ratchet Rockers)
Team Role: College Student
 
Join Date: Apr 2012
Rookie Year: 2011
Location: St Louis
Posts: 498
faust1706 is infamous around these partsfaust1706 is infamous around these parts
Re: What's your favorite programming/control system magic this year?

I personally love feedback systems. Like in 2012 and 2013, vision would be calculating how far away the robot is to the goal, and the shooter would always be adjusting to be ready to shoot. 341 had this in 2012 and I'm sure again in 2013, we(1706) had it for both years. It is truly amazing.
__________________
"You're a gentleman," they used to say to him. "You shouldn't have gone murdering people with a hatchet; that's no occupation for a gentleman."
  #3   Spotlight this post!  
Unread 17-05-2014, 15:13
brennonbrimhall brennonbrimhall is offline
Free Agent
AKA: Brennon Brimhall
no team
Team Role: Alumni
 
Join Date: Jan 2012
Rookie Year: 2012
Location: Clifton Park, NY
Posts: 222
brennonbrimhall is a name known to allbrennonbrimhall is a name known to allbrennonbrimhall is a name known to allbrennonbrimhall is a name known to allbrennonbrimhall is a name known to allbrennonbrimhall is a name known to all
Re: What's your favorite programming/control system magic this year?

The devil's in the details. Most of my favorite cases of programming are very much behind the scenes:
  • 254's elegant usage of VEX bump switches. You can see them in Barrage's picture on their Aerial Assist page. I assume (based on their placement) that they were used to pulse their intakes when they are grabbing the balls for their famous auto.
  • 254 and 1114 both had a strip of LEDs on their robot that lit up when the flywheel was up to speed for their drivers.
  • Both 987 and 4334 have implemented their own engine to parse out an autonomous scripting language. 4334's engine for Gordian is open source and can be found on GitHub. Though I've never used Gordian, I can imagine that it cuts down on compile/reboot time when writing auto routines.*
  • 33 had a unique catapult design that involved a lead screw that they used to vary their shot. I don't know if they ever did, but this gave them the ability to vary their shot distance on the fly. The only other teams that I know of that could change their shot distance on the fly were all flywheel based (or, per billylo's post, pneumatic).
  • While not used, a sophomore on the team developed some OpenCV for ball detection, with the intention that it would be used in an autonomous mode that would pick up our partner's misses. The ball detection code was written, but the corresponding auto mode was never implemented due to our decision to allocate resources in a manner more consistent with our priority list. Who knows...maybe we'll finally have some time to realize it for some of our off-seasons.

*An aside: I'm curious to see whether or not they (Gordian, and other in-house scripting languages) are displaced with other solutions: the roboRIO is supposed to have Java 8, which should allow usage of Jython and/or Rhino (Java engines for Python and Javascript, respectively) for Java teams.
__________________
Team 20, 2012-2014: 4 blue banners, 5 medals, and 9 team awards.
Church of Jesus Christ of Latter-day Saints, 2014-2016: Missionary, Colorado Denver South Mission.

Last edited by brennonbrimhall : 17-05-2014 at 15:51. Reason: Added links
  #4   Spotlight this post!  
Unread 17-05-2014, 19:41
Pratik Kunapuli's Avatar
Pratik Kunapuli Pratik Kunapuli is offline
Probably browning-out on Astro-Turf
FRC #1648 (G3 Robotics)(EWCP)
Team Role: Mentor
 
Join Date: Jan 2013
Rookie Year: 2012
Location: Atlanta, GA
Posts: 143
Pratik Kunapuli is a name known to allPratik Kunapuli is a name known to allPratik Kunapuli is a name known to allPratik Kunapuli is a name known to allPratik Kunapuli is a name known to allPratik Kunapuli is a name known to all
Re: What's your favorite programming/control system magic this year?

254 had code that allowed them to set waypoints on the field and have the computer make a spline in that path. The spline was then translated into different motor curves for each side of the drivetrain. They could literally draw a path and have the robot follow it.

From Kevin Sheridan on /r/frc:
"We generated a path using quintic hermite spline interpolation. This creates two individual paths for the right side of the drivetrain and the left side of the drivetrain. We can tell the path generator the goal location, goal velocity, goal heading, starting location, starting velocity and starting heading. We can also set the max velocity for a path. This way we can set a path using multiple waypoints to navigate to a certain spot on the field in a specific way such as driving in a s-curve."
__________________
Official Driving Record: 101-59-0
2012-2015 Student 341 Miss Daisy
2015-Current Mentor 1648 G3 Robotics

Last edited by Pratik Kunapuli : 17-05-2014 at 19:50.
  #5   Spotlight this post!  
Unread 17-05-2014, 19:43
billylo's Avatar
billylo billylo is offline
Registered User
FRC #0610 (Coyotes)
Team Role: Mentor
 
Join Date: Mar 2012
Rookie Year: 2012
Location: Toronto
Posts: 161
billylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant futurebillylo has a brilliant future
Re: What's your favorite programming/control system magic this year?

Quote:
Originally Posted by Pratik341 View Post
254 had code that allowed them to set waypoints on the field and have the computer make a spline in that path. The spline was then translated into different motor curves for each side of the drivetrain. They could literally draw a path and have the robot follow it
Jaw-dropped.
__________________
#go610
  #6   Spotlight this post!  
Unread 17-05-2014, 20:02
E Dawg E Dawg is offline
... is not done with FRC yet.
AKA: Ethan
FRC #0159 (Alpine Robotics)
Team Role: Mentor
 
Join Date: Feb 2013
Rookie Year: 2012
Location: Fort Collins, CO
Posts: 267
E Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud of
Re: What's your favorite programming/control system magic this year?

Quote:
Originally Posted by Pratik341 View Post
quintic hermite spline interpolation


For the record, my favorite magic so far is our team's quadratic deadband.
  #7   Spotlight this post!  
Unread 17-05-2014, 20:13
SoftwareBug2.0's Avatar
SoftwareBug2.0 SoftwareBug2.0 is offline
Registered User
AKA: Eric
FRC #1425 (Error Code Xero)
Team Role: Mentor
 
Join Date: Aug 2004
Rookie Year: 2004
Location: Tigard, Oregon
Posts: 487
SoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant future
Re: What's your favorite programming/control system magic this year?

Quote:
Originally Posted by E Dawg View Post


For the record, my favorite magic so far is our team's quadratic deadband.
What is that and what do you use it for? My first guess would be that you're trying to do some sort of fancy filter with some sort of funky ripple in the stop band but, my google fu fails me so my best guess is that "quadratic deadband" is just a made-up name.
  #8   Spotlight this post!  
Unread 17-05-2014, 20:29
Thad House Thad House is offline
Volunteer, WPILib Contributor
no team (Waiting for 2021)
Team Role: Mentor
 
Join Date: Feb 2011
Rookie Year: 2010
Location: Thousand Oaks, California
Posts: 1,107
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: What's your favorite programming/control system magic this year?

Quote:
Originally Posted by Pratik341 View Post
254 had code that allowed them to set waypoints on the field and have the computer make a spline in that path. The spline was then translated into different motor curves for each side of the drivetrain. They could literally draw a path and have the robot follow it.

From Kevin Sheridan on /r/frc:
"We generated a path using quintic hermite spline interpolation. This creates two individual paths for the right side of the drivetrain and the left side of the drivetrain. We can tell the path generator the goal location, goal velocity, goal heading, starting location, starting velocity and starting heading. We can also set the max velocity for a path. This way we can set a path using multiple waypoints to navigate to a certain spot on the field in a specific way such as driving in a s-curve."
That is absolutely incredible. Hopefully they actually release that code, because that would be so cool to read through and learn how it works.
__________________
All statements made are my own and not the feelings of any of my affiliated teams.
Teams 1510 and 2898 - Student 2010-2012
Team 4488 - Mentor 2013-2016
Co-developer of RobotDotNet, a .NET port of the WPILib.
  #9   Spotlight this post!  
Unread 17-05-2014, 20:46
RobotDoktor's Avatar
RobotDoktor RobotDoktor is offline
Cat Herder
FRC #4265 (Secret City)
Team Role: CAD
 
Join Date: Dec 2013
Rookie Year: 2013
Location: United States
Posts: 68
RobotDoktor is just really niceRobotDoktor is just really niceRobotDoktor is just really niceRobotDoktor is just really niceRobotDoktor is just really nice
Re: What's your favorite programming/control system magic this year?

At Championships we had a fairly interesting system controlling our pneumatic catapult pulses. We had a pressure sensor that measured the pressure feeding to our launcher pistons. We used a polynomial function based on collected data that would match pressures to pulse times so that the shot is consistent regardless of pressure. Our programmer could probably tell you more about it if you want.
__________________
Full disclosure: I am not a robot, a doctor, or a German.
  #10   Spotlight this post!  
Unread 17-05-2014, 21:00
Joey1939's Avatar
Joey1939 Joey1939 is offline
Registered User
AKA: Joey Holliday
FRC #1939 (Kuhnigits)
Team Role: Programmer
 
Join Date: Jan 2014
Rookie Year: 2014
Location: Kansas City, Missouri
Posts: 144
Joey1939 has a spectacular aura aboutJoey1939 has a spectacular aura aboutJoey1939 has a spectacular aura about
Re: What's your favorite programming/control system magic this year?

1986 had really simple yet effective targeting system setup. A ultrasonic sensor set low to the ground told them how far away they were from the wall. When the robot was in shooting range, LEDs on the back of the robot lit up to inform the drivers.
  #11   Spotlight this post!  
Unread 17-05-2014, 22:10
MrTechCenter's Avatar
MrTechCenter MrTechCenter is offline
INTENSITY
AKA: Harsharan "Harsh" Dhaliwal
FRC #2073 (Eagleforce)
Team Role: Mentor
 
Join Date: Sep 2011
Rookie Year: 2010
Location: Sacramento, CA
Posts: 559
MrTechCenter has a brilliant futureMrTechCenter has a brilliant futureMrTechCenter has a brilliant futureMrTechCenter has a brilliant futureMrTechCenter has a brilliant futureMrTechCenter has a brilliant futureMrTechCenter has a brilliant futureMrTechCenter has a brilliant futureMrTechCenter has a brilliant futureMrTechCenter has a brilliant futureMrTechCenter has a brilliant future
Re: What's your favorite programming/control system magic this year?

Quote:
Originally Posted by Joey1939 View Post
1986 had really simple yet effective targeting system setup. A ultrasonic sensor set low to the ground told them how far away they were from the wall. When the robot was in shooting range, LEDs on the back of the robot lit up to inform the drivers.
We did the same thing! I'm glad to see that we had the same idea as a famous team.
__________________
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; 2015 Sacramento Regional Innovation in Control
  #12   Spotlight this post!  
Unread 18-05-2014, 00:52
ekapalka's Avatar
ekapalka ekapalka is offline
Registered User
FRC #3216
 
Join Date: Dec 2012
Location: Bermuda
Posts: 277
ekapalka has a spectacular aura aboutekapalka has a spectacular aura about
Re: What's your favorite programming/control system magic this year?

Quote:
Originally Posted by Joey1939 View Post
1986 had really simple yet effective targeting system setup. A ultrasonic sensor set low to the ground told them how far away they were from the wall. When the robot was in shooting range, LEDs on the back of the robot lit up to inform the drivers.
This is quite similar to what we did this year :) Except we used ours as an active aim-assist to put ourselves the correct distance from whatever was in front of us when a button was held. We literally got it working ten minutes after the last match :/ Our autonomous and teleop aim-assist could be reduced down to just a few lines of code using the map() function we replicated from the Arduino language. For both the range was smoothed using a moving average to avoid jittering.

Code:
ForwardSpeed = map(rangefinder_distance - target_distance, 0, 200, 0, 1);
The map() function takes an input (in our case from a rangefinder), the minimum expected value of that input, the maximum expected value of that input, the minimum value to output, and the maximum value to output. The input/output ranged aren't exactly set in stone... if the input is greater than expected, the output will also be outside of the expected range (meaning that the above piece of code can be used when too close or too far away from the wall, even though the output should fall between 0 and 1. It just re-maps values from one range to another. We pretty much programmed the entire robot on the fly during competition this year, so the only time we had to test out changes during matches. We ended up running into the wall on more than one occasion due to this...

Last edited by ekapalka : 18-05-2014 at 01:22.
  #13   Spotlight this post!  
Unread 18-05-2014, 02:47
SoftwareBug2.0's Avatar
SoftwareBug2.0 SoftwareBug2.0 is offline
Registered User
AKA: Eric
FRC #1425 (Error Code Xero)
Team Role: Mentor
 
Join Date: Aug 2004
Rookie Year: 2004
Location: Tigard, Oregon
Posts: 487
SoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant futureSoftwareBug2.0 has a brilliant future
Re: What's your favorite programming/control system magic this year?

Quote:
Originally Posted by ekapalka View Post
This is quite similar to what we did this year Except we used ours as an active aim-assist to put ourselves the correct distance from whatever was in front of us when a button was held. We literally got it working ten minutes after the last match :/ Our autonomous and teleop aim-assist could be reduced down to just a few lines of code using the map() function we replicated from the Arduino language. For both the range was smoothed using a moving average to avoid jittering.

Code:
ForwardSpeed = map(rangefinder_distance - target_distance, 0, 200, 0, 1);
The map() function takes an input (in our case from a rangefinder), the minimum expected value of that input, the maximum expected value of that input, the minimum value to output, and the maximum value to output.
I read part way through that and I was like awesome, someone has decided to use map, filter and fold. That's still pretty cool though. We started writing something like that but didn't finish because it didn't fit how we played the game.
  #14   Spotlight this post!  
Unread 19-05-2014, 12:30
E Dawg E Dawg is offline
... is not done with FRC yet.
AKA: Ethan
FRC #0159 (Alpine Robotics)
Team Role: Mentor
 
Join Date: Feb 2013
Rookie Year: 2012
Location: Fort Collins, CO
Posts: 267
E Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud ofE Dawg has much to be proud of
Re: What's your favorite programming/control system magic this year?

Quote:
Originally Posted by SoftwareBug2.0 View Post
What is that and what do you use it for? My first guess would be that you're trying to do some sort of fancy filter with some sort of funky ripple in the stop band but, my google fu fails me so my best guess is that "quadratic deadband" is just a made-up name.
It filters out extraneous values like a normal deadband, but instead of having output values come out linearly after the deadband they scale quadratically. We use it for our drive code.

And yes, the name is made up.

Last edited by E Dawg : 19-05-2014 at 12:57.
  #15   Spotlight this post!  
Unread 19-05-2014, 12:56
Joe Ross's Avatar Unsung FIRST Hero
Joe Ross Joe Ross is offline
Registered User
FRC #0330 (Beachbots)
Team Role: Engineer
 
Join Date: Jun 2001
Rookie Year: 1997
Location: Los Angeles, CA
Posts: 8,600
Joe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond reputeJoe Ross has a reputation beyond repute
Re: What's your favorite programming/control system magic this year?

Quote:
Originally Posted by ekapalka View Post
Our autonomous and teleop aim-assist could be reduced down to just a few lines of code using the map() function we replicated from the Arduino language. For both the range was smoothed using a moving average to avoid jittering.

Code:
ForwardSpeed = map(rangefinder_distance - target_distance, 0, 200, 0, 1);
The map() function takes an input (in our case from a rangefinder), the minimum expected value of that input, the maximum expected value of that input, the minimum value to output, and the maximum value to output. The input/output ranged aren't exactly set in stone... if the input is greater than expected, the output will also be outside of the expected range (meaning that the above piece of code can be used when too close or too far away from the wall, even though the output should fall between 0 and 1. It just re-maps values from one range to another.
This is another way of doing proportional control, (ie the P in PID). It's a nice way to do a first pass to figure out the P constant.
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


All times are GMT -5. The time now is 02:42.

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