View Single Post
  #11   Spotlight this post!  
Unread 20-04-2015, 12:17
billbo911's Avatar
billbo911 billbo911 is offline
I prefer you give a perfect effort.
AKA: That's "Mr. Bill"
FRC #2073 (EagleForce)
Team Role: Mentor
 
Join Date: Mar 2005
Rookie Year: 2005
Location: Elk Grove, Ca.
Posts: 2,373
billbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond reputebillbo911 has a reputation beyond repute
Re: Accuracy of Omni drive?

Quote:
Originally Posted by Dunngeon View Post
Interesting, I didn't realize that teslalab2 was referring to your video.
You are correct, I had made the assumption he was referring to my video based on the sequencing of the posts. So, if my tone was a bit offensive, I apologize.

Quote:
Originally Posted by Dunngeon View Post
The reason I said yes to the PID loop is that if the end goal is to have something be held by the bot, or for the bot to be heavy, our team has had very good success using P-control in those scenarios (very little oscillation, if at all).

In your heading control are you just adding a rotation value to make it rotate in the opposite direction whenever the heading changes to something other than 0 when translating?
The basic code I used for Kiwi drive is:

Code:
Wheel1 = -1/2 X - sqrt(3)/2 Y + R 
Wheel2 = -1/2 X + sqrt(3)/2 Y + R
Wheel3 = X + R
Where X is the x-axis input, Y is the y-axis input, and R is the Rotation input.

When I added the gyro, the code was modified as follows:

Code:
Wheel1 = -1/2 X - sqrt(3)/2 Y + (R + gyro) 
Wheel2 = -1/2 X + sqrt(3)/2 Y + (R + gyro)
Wheel3 = X + (R + gyro)
Fortunately the scale of the gyro input matched the original values in the control that I really didn't need to change it's scale at all. Later experimentation's determined that a P gain of 1.2 yeilded the best overall performance, but leaving the P gain off was sufficient for prototyping and education purposes.

Quote:
Originally Posted by Ether View Post
There's obviously some sort of closed-loop control. So if not PID, then what? TBH maybe?


As seen in the code blocks above, the loop is closed by adding the heading value from the gyro. A "P" gain can be implied to be 1, but for the video, no gain was actually applied. It was simply adding the heading to the rotation input.
__________________
CalGames 2009 Autonomous Champion Award winner
Sacramento 2010 Creativity in Design winner, Sacramento 2010 Quarter finalist
2011 Sacramento Finalist, 2011 Madtown Engineering Inspiration Award.
2012 Sacramento Semi-Finals, 2012 Sacramento Innovation in Control Award, 2012 SVR Judges Award.
2012 CalGames Autonomous Challenge Award winner ($$$).
2014 2X Rockwell Automation: Innovation in Control Award (CVR and SAC). Curie Division Gracious Professionalism Award.
2014 Capital City Classic Winner AND Runner Up. Madtown Throwdown: Runner up.
2015 Innovation in Control Award, Sacramento.
2016 Chezy Champs Finalist, 2016 MTTD Finalist