Go to Post Because nothing says safety like carrying a 150lb robot across a field covered in golf balls. - Kevin Sevcik [more]
Home
Go Back   Chief Delphi > FIRST > General Forum
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
 
Thread Tools Rating: Thread Rating: 8 votes, 5.00 average. Display Modes
  #1   Spotlight this post!  
Unread 06-01-2015, 18:49
Ether's Avatar
Ether Ether is offline
systems engineer (retired)
no team
 
Join Date: Nov 2009
Rookie Year: 1969
Location: US
Posts: 8,126
Ether has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond repute
Re: 2015: Year of the Mecanum

Quote:
Originally Posted by Tom Line View Post
After all your meCHanum motor set speeds are calculated, mix in a component from the gyro useing a PID.
My interpretation of the above is:
1) calculate the 4 motor speeds using the X and Y translation commands

2) calculate the motor speeds for rotation using the output from a PID

3) add the the corresponding speeds from (1) and (2).
Wouldn't it be more straightforward to compute the 4 motors speeds just once directly from the X, Y, and rotation commands?


BTW, what's the significance of the CH in caps?

Reply With Quote
  #2   Spotlight this post!  
Unread 06-01-2015, 21:09
alopex_rex's Avatar
alopex_rex alopex_rex is offline
Rainbow Professionalism Dash
AKA: Scott Morton
FRC #0830 (The RatPack)
Team Role: Alumni
 
Join Date: Dec 2014
Rookie Year: 2012
Location: Ann Arbor, MI
Posts: 92
alopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond repute
Re: 2015: Year of the Mecanum

What I was thinking was a way of dealing with imperfect results from mecanum, i.e., if simply using WPILib's mecanum drive function results in the robot turning when it's supposed to be straight strafing. When the driver is trying not to rotate (the "rotate" value would be zero), store the current gyro heading. Then have a PID controller that tries to maintain that gyro heading, by setting the "rotate" argument for the function. So the PID would find the value that counteracts any undesired rotation caused by mechanical issues.
__________________
Ratpack programming lead 2013 - 2015

ἔκλαγξαν δ᾽ ἄρ᾽ ὀϊστοὶ ἐπ᾽ ὤμων χωομένοιο / αὐτοῦ κινηθέντος: ὃ δ᾽ ἤϊε νυκτὶ ἐοικώς. (Ancient Greek nerds unite!)
Reply With Quote
  #3   Spotlight this post!  
Unread 06-01-2015, 21:11
Ben Wolsieffer Ben Wolsieffer is offline
Dartmouth 2020
AKA: lopsided98
FRC #2084 (Robots by the C)
Team Role: Alumni
 
Join Date: Jan 2011
Rookie Year: 2011
Location: Manchester, MA (Hanover, NH)
Posts: 520
Ben Wolsieffer has much to be proud ofBen Wolsieffer has much to be proud ofBen Wolsieffer has much to be proud ofBen Wolsieffer has much to be proud ofBen Wolsieffer has much to be proud ofBen Wolsieffer has much to be proud ofBen Wolsieffer has much to be proud ofBen Wolsieffer has much to be proud of
Re: 2015: Year of the Mecanum

Quote:
Originally Posted by alopex_rex View Post
What I was thinking was a way of dealing with imperfect results from mecanum, i.e., if simply using WPILib's mecanum drive function results in the robot turning when it's supposed to be straight strafing. When the driver is trying not to rotate (the "rotate" value would be zero), store the current gyro heading. Then have a PID controller that tries to maintain that gyro heading, by setting the "rotate" argument for the function. So the PID would find the value that counteracts any undesired rotation caused by mechanical issues.
This is exactly what we did in the past for our mecanum drive, and it worked wonderfully. We didn't have to obsess nearly as much about perfect weight distribution.
__________________



2016 North Shore District - Semifinalists and Excellence in Engineering Award
2015 Northeastern University District - Semifinalists and Creativity Award
2014 Granite State District - Semifinalists and Innovation in Control Award
2012 Boston Regional - Finalists
Reply With Quote
  #4   Spotlight this post!  
Unread 06-01-2015, 21:35
Ether's Avatar
Ether Ether is offline
systems engineer (retired)
no team
 
Join Date: Nov 2009
Rookie Year: 1969
Location: US
Posts: 8,126
Ether has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond repute
Re: 2015: Year of the Mecanum

Quote:
Originally Posted by alopex_rex View Post
What I was thinking was a way of dealing with imperfect results from mecanum, i.e., if simply using WPILib's mecanum drive function results in the robot turning when it's supposed to be straight strafing. When the driver is trying not to rotate (the "rotate" value would be zero), store the current gyro heading. Then have a PID controller that tries to maintain that gyro heading, by setting the "rotate" argument for the function. So the PID would find the value that counteracts any undesired rotation caused by mechanical issues.
See attachment
Attached Thumbnails
Click image for larger version

Name:	mec_drive_straight_with_gyro.png
Views:	396
Size:	19.3 KB
ID:	17764  

Last edited by Ether : 06-01-2015 at 21:40.
Reply With Quote
  #5   Spotlight this post!  
Unread 06-01-2015, 21:42
alopex_rex's Avatar
alopex_rex alopex_rex is offline
Rainbow Professionalism Dash
AKA: Scott Morton
FRC #0830 (The RatPack)
Team Role: Alumni
 
Join Date: Dec 2014
Rookie Year: 2012
Location: Ann Arbor, MI
Posts: 92
alopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond reputealopex_rex has a reputation beyond repute
Re: 2015: Year of the Mecanum

Nice chart--That's exactly what I was trying to describe!
__________________
Ratpack programming lead 2013 - 2015

ἔκλαγξαν δ᾽ ἄρ᾽ ὀϊστοὶ ἐπ᾽ ὤμων χωομένοιο / αὐτοῦ κινηθέντος: ὃ δ᾽ ἤϊε νυκτὶ ἐοικώς. (Ancient Greek nerds unite!)
Reply With Quote
  #6   Spotlight this post!  
Unread 06-01-2015, 21:47
forbes's Avatar
forbes forbes is offline
Software developer
AKA: Evan Forbes
FRC #3507 (Ubotics), 694 (StuyPulse)
Team Role: Mentor
 
Join Date: Apr 2013
Rookie Year: 2012
Location: New York City
Posts: 161
forbes is a splendid one to beholdforbes is a splendid one to beholdforbes is a splendid one to beholdforbes is a splendid one to beholdforbes is a splendid one to beholdforbes is a splendid one to beholdforbes is a splendid one to beholdforbes is a splendid one to behold
Re: 2015: Year of the Mecanum

Quote:
Originally Posted by Ether View Post
See attachment
Thanks, that diagram is helpful.
Reply With Quote
  #7   Spotlight this post!  
Unread 08-01-2015, 13:28
Saberbot's Avatar
Saberbot Saberbot is offline
Ask me about Glentite™
AKA: David Ingraham
FRC #4146 (Saguaro Sabercat Robotics)
Team Role: College Student
 
Join Date: Jan 2012
Rookie Year: 2011
Location: Arizona
Posts: 109
Saberbot is just really niceSaberbot is just really niceSaberbot is just really niceSaberbot is just really nice
Re: 2015: Year of the Mecanum

Quote:
Originally Posted by Ether View Post
See attachment
Wouldn't another option be to treat the feedback loop as the "rate controller" for the yaw axis? The rotation command from the joystick would be sent to the yaw controller. If it the command is zero then it will work as described in the attachment. If the command is greater than zero, then the controller will allow for more predictable rates of rotation based on the joystick command.

I believe this is how yaw control is managed on most RC Multicopters.
__________________
Reply With Quote
  #8   Spotlight this post!  
Unread 08-01-2015, 14:16
Ether's Avatar
Ether Ether is offline
systems engineer (retired)
no team
 
Join Date: Nov 2009
Rookie Year: 1969
Location: US
Posts: 8,126
Ether has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond repute
Re: 2015: Year of the Mecanum

Quote:
Originally Posted by Saberbot View Post
Wouldn't another option be to treat the feedback loop as the "rate controller" for the yaw axis? The rotation command from the joystick would be sent to the yaw controller. If it the command is zero then it will work as described in the attachment.
What you've described1 would work; but if you're trying to hold position, it's best to close the loop on position, not velocity.


1 ... http://www.chiefdelphi.com/media/papers/download/2796 ...... http://www.chiefdelphi.com/media/papers/2390
Reply With Quote
  #9   Spotlight this post!  
Unread 08-01-2015, 14:28
Saberbot's Avatar
Saberbot Saberbot is offline
Ask me about Glentite™
AKA: David Ingraham
FRC #4146 (Saguaro Sabercat Robotics)
Team Role: College Student
 
Join Date: Jan 2012
Rookie Year: 2011
Location: Arizona
Posts: 109
Saberbot is just really niceSaberbot is just really niceSaberbot is just really niceSaberbot is just really nice
Re: 2015: Year of the Mecanum

Quote:
Originally Posted by Ether View Post
What you've described1 would work; but if you're trying to hold position, it's best to close the loop on position, not velocity.


1 ... http://www.chiefdelphi.com/media/papers/download/2796 ...... http://www.chiefdelphi.com/media/papers/2390
That makes sense. Thank you for creating these great resources.
__________________
Reply With Quote
Reply


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 20:32.

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