|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools |
Rating:
|
Display Modes |
|
|
|
#1
|
||||
|
||||
|
Re: pic: FRC488's Octocanum Ver 2.0
Quote:
|
|
#2
|
|||
|
|||
|
Re: pic: FRC488's Octocanum Ver 2.0
Initially, we had 3 closed-loop systems:
Rotational - used a gyro to keep the robot on target heading Translational - used encoders on "follow wheels" (unpowered wheels) to gauge ground speed and keep the robot translating on a target vector Wheel Speed - used encoders on the drive wheels themselves to achieve precise wheel speed control After a while, we actually disabled the wheel speed, as we didn't appear to get much performance improvement from it and we were looking to save on some CPU cycles. |
|
#3
|
||||
|
||||
|
Re: pic: FRC488's Octocanum Ver 2.0
Quote:
|
|
#4
|
|||
|
|||
|
Re: pic: FRC488's Octocanum Ver 2.0
The driver had two joysticks:
1st: X/Y joystick movement controlled X/Y direction & magnitude of the robot relative to the field 2nd: X joystick movement controlled rotational rate relative to the robot So, not exactly what you described, but fairly close. |
|
#5
|
||||
|
||||
|
Re: pic: FRC488's Octocanum Ver 2.0
Quote:
- You do closed-loop control of the vehicle speed as commanded by the radius1 of joystick #1 Am I understanding you correctly? How many follower wheels did you use, and how are they mounted? 1 Do you use sqrt(X^2+Y^2) or max(abs(X),abs(Y))? 2 Do you use atan2(X,-Y) to calculate angle, or something else? |
|
#6
|
|||
|
|||
|
Re: pic: FRC488's Octocanum Ver 2.0
Sorry, I think something got lost in my description.
-We perform closed loop control of X translation as commanded by the X axis of Joystick1 -We perform closed loop control of Y translation as commanded by the Y axis of Joystick1 -We perform open loop control of Robot rotation rate as commanded by the X axis of Joystick2 (however, when desired rotation rate is 0, we perform closed-loop control of robot angle as commanded by the heading we were at when we stopped rotating) This was accomplished with 3 follow wheels and a gyro. Two of the follow wheels were used to track the robot moving forward/backward, and one was placed directly under the center of rotation and used to track the robot strafing. |
|
#7
|
||||
|
||||
|
Re: pic: FRC488's Octocanum Ver 2.0
An interesting design! We've used mecanum for the past two years and were very satisfied with it in many respects, but know that it needs some push to really up our competition level. Thus, we've been working on our own drive (though I didn't know it had a cool name like 'octocanum') which is similar in idea to this.
Thanks for sharing! (And great questions everyone. This is a good thread to follow for anyone considering such shenanigans like we are!) |
|
#8
|
||||
|
||||
|
Re: pic: FRC488's Octocanum Ver 2.0
Quote:
Were the forward/backward follower wheels mounted like this? And, I assume they were omni, correct? Did you ever consider, or try, using the data from the follower wheels to compute rotation rate? |
|
#9
|
|||
|
|||
|
Re: pic: FRC488's Octocanum Ver 2.0
Ether, your follow wheel mounting assumption is correct. They were positioned as in your diagram, and they were omniwheels.
We did use them to calculate a rotation rate, let's call that Rotation_Follow. We also had rotation from the gyro, let's call that Rotation_Gyro. We found that Rotation_Follow wasn't as good as the Rotation_Gyro, we suspect due to minute wheel scrub and small errors accumulating, but it did not suffer from drift. Consequently, we used Rotation_Gyro exclusively, but ignored any change in rotation while Rotation_Follow was 0 (typically at the start of the match before the robot was moving anywhere, or during testing when the robot spent a lot of time on a bench or disabled). This eliminated a large part of our gyro drift. |
|
#10
|
||||
|
||||
|
Re: pic: FRC488's Octocanum Ver 2.0
Quote:
|
|
#11
|
|||||
|
|||||
|
Re: pic: FRC488's Octocanum Ver 2.0
Quote:
|
|
#12
|
|||
|
|||
|
Re: pic: FRC488's Octocanum Ver 2.0
We tried a number of filters (Kalman was unfortunately beyond my reach, never had a strong grasp on linear algebra), but they turned out to be unnecessary - the gyro we used (don't have the model # on me) was incredibly accurate - it usually only drifted ~3 degrees over the course of each match, even through collisions.
The "stationary detection" we did was only necessary when the robot was put on the field but the start of the match was delayed several minutes (yeah, we've all been there). |
|
#13
|
|||||
|
|||||
|
Re: pic: FRC488's Octocanum Ver 2.0
Quote:
Also, you didn't use the pair of follower wheels to try to determine rotation rate while translating, you just used it to detect the complete absence of velocity, correct? |
|
#14
|
||||
|
||||
|
Re: pic: FRC488's Octocanum Ver 2.0
The point midway between the translation follower wheels was said to be the center of rotation of the vehicle. To the extent that is true*, you could extract vehicle rotation while translating. *The center of rotation likely shifts around especially if weight distribution changes as manipulators move. |
|
#15
|
|||||
|
|||||
|
Re: pic: FRC488's Octocanum Ver 2.0
Wouldn't measuring the vehicle's actual velocity be more useful? After all, the drive has no care as to what wheel speed is (especially if that wheel is slipping).
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|