Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Extra Discussion (http://www.chiefdelphi.com/forums/forumdisplay.php?f=68)
-   -   pic: FRC488's Octocanum Ver 2.0 (http://www.chiefdelphi.com/forums/showthread.php?t=98137)

AdamHeard 07-11-2011 19:15

Re: pic: FRC488's Octocanum Ver 2.0
 
Quote:

Originally Posted by Ether (Post 1084178)
Other than closed-loop speed control of the 4 wheels (did you do that?), what other closed loop controllers did you use for controlling the drivetrain?


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).

Ether 07-11-2011 19:20

Re: pic: FRC488's Octocanum Ver 2.0
 
Quote:

Originally Posted by JohnGilb (Post 1084183)
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

Were these controls presented to the driver as the interface? i.e., did the driver interface allow the driver to command for example "Translate in direction A with the vehicle pointing in Direction B" ?


JohnGilb 07-11-2011 20:45

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.

Ether 07-11-2011 21:15

Re: pic: FRC488's Octocanum Ver 2.0
 
Quote:

Originally Posted by JohnGilb (Post 1084203)
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

OK, so let me read back to you what I hear you saying:
- You do closed-loop control of the vehicle speed as commanded by the radius1 of joystick #1

- You do closed-loop control of vehicle heading as commanded by the angle2 of joystick #1

- You do open-loop command of rotation rate as commanded by joystick #2 (X, Y, or Z axis?)

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?



JohnGilb 08-11-2011 03:08

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.

pfreivald 08-11-2011 08:48

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!)

Ether 08-11-2011 10:56

Re: pic: FRC488's Octocanum Ver 2.0
 
Quote:

Originally Posted by JohnGilb (Post 1084240)
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.

OK that's pretty clear, thanks.

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?



JohnGilb 08-11-2011 13:17

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.

Ether 08-11-2011 13:55

Re: pic: FRC488's Octocanum Ver 2.0
 
Quote:

Originally Posted by JohnGilb (Post 1084288)
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.

I like it. Nicely done.



Jared Russell 08-11-2011 14:19

Re: pic: FRC488's Octocanum Ver 2.0
 
Quote:

Originally Posted by JohnGilb (Post 1084288)
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.

This is a clever solution. A Kalman Filter would be another good way to combine accurate (but drift-prone) gyro measurements with less precise (but stable) odometry measurements.

JohnGilb 08-11-2011 14:48

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).

AdamHeard 08-11-2011 14:52

Re: pic: FRC488's Octocanum Ver 2.0
 
Quote:

Originally Posted by JohnGilb (Post 1084316)
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).

Mind sharing the model number of that gyro?

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?

Ether 08-11-2011 15:04

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.



AdamHeard 08-11-2011 15:08

Re: pic: FRC488's Octocanum Ver 2.0
 
Quote:

Originally Posted by Ether (Post 1084318)

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.


Wouldn't that only be true while not translating? Translating would shift the center of rotation, would it not?

theprgramerdude 08-11-2011 15:26

Re: pic: FRC488's Octocanum Ver 2.0
 
What's the maximum speed at which you can switch between Mecanums and high-traction wheels? Plus, about many switches can be performed before there becomes a serious air deficiency such that it is unreasonable to switch at all, assuming you have about 3-4 tanks at 120 PSI at the start.


All times are GMT -5. The time now is 11:58.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi