Quote:
Originally Posted by Ether
A more likely cause is that the rectangular bot had poorer weight distribution or the frame wasn't flexible enough to keep traction on all 4 wheels or the rollers were binding. There's no kinematic reason why mec needs to be square in order to rotate properly.
|
Quote:
Originally Posted by efoote868
Quickly sketching the vectors on a napkin, it looks like to me that wheels in a square will optimize spinning (maximize total torque on robot) for a particular wheel distance d from center of robot; perhaps you could comment?
|
Let's consider the ideal case first, in order to understand the physics: mec wheels with no roller friction and no roller axial or radial free play; floor surface is non-compliant (ignore carpet compression and stretching).
Refer to attached sketch
First, the kinematics (ideal):
Let P be the perimeter of the rectangle formed by the centers of the 4 wheels:
P = 2*(Lwb+Ltw);
Let r be the wheel radius
For a given vehicle rotation speed omega_v (radians/sec) of a vehicle rotating in-place about the center of the aforementioned rectangle (i.e. Vx=0 and Vy=0), the wheel rotational speed omega_w (rad/sec) will be given by
omega_w = (1/r)*K*omega_v
.... (see page 7 of my mec kinematics paper)
... where K = (Lwb+Ltw)/2 = P/4;
solving for omega_v and substituting for K:
omega_v = (1/K)*r*omega_w = (4/P)*r*omega_w;
So you can see that the vehicle rotation speed for a given wheel rotational speed, is the same for all rectangles with the same perimeter.
Now, the forces and torques (ideal):
wheel torque: tau;
carpet force component in plane of wheel and floor: Ff = tau/r;
total carpet force in direction of mec roller axis: Fr = Ff*sqrt(2) = (tau/r)*sqrt(2);
Let the ratio f be defined as: f = Ltw/Lwb;
theta = atan(f);
.... (see sketch)
alpha = pi/4 - theta;
carpet force component in direction of vehicle rotation: Fv = Fr*cos(alpha) = (tau/r)*sqrt(2)*cos(alpha);
distance from center of rectangle to center of wheel: D = (1/2)*sqrt(Lwb^2+Ltw^2);
P = 2*(Ltw+Lwb) = 2*Lwb*(f+1) => Lwb = (1/2)*(P/(1+f)) & Ltw = f*(1/2)*(P/(1+f));
so D becomes:
D = (1/2)*sqrt(((1/2)*(P/(1+f)))^2+(f*(1/2)*(P/(1+f)))^2);
D = P*sqrt(1+f^2)/(4*(1+f));
torque about center of rectangle: Tv = Fv*D;
Tv = ((tau*sqrt(2))/r)*cos(alpha)*(P*sqrt(1+f^2)/(4*(1+f)));
Tv = ((tau*sqrt(2))/r)*cos(pi/4 - theta)*(P*sqrt(1+f^2)/(4*(1+f)));
Tv = ((tau*sqrt(2))/r)*cos(pi/4 - (atan(f)))*(P*sqrt(1+f^2)/(4*(1+f)));
using:
cos(pi/4-atan(f)) = (1+f)/(sqrt(2)*sqrt(1+f^2));
... Tv simplifies to:
Tv = ((tau*sqrt(2))/r)*((1+f)/(sqrt(2)*sqrt(1+f^2)))*(P*sqrt(1+f^2)/(4*(1+f)));
Tv = (P*tau)/(4*r);
Now that I've done all that trig and algebra, here's a much quicker way:
carpet force component in plane of wheel and floor: Ff = tau/r;
total carpet force in direction of mec roller axis: Fr = Ff*sqrt(2) = (tau/r)*sqrt(2);
carpet force component in direction of wheel axis: Fa = tau/r;
torque around center of rectangle:
Tv = (tau/r)*(Ltw/2) + (tau/r)*(Lwb/w) = (tau/r)*(Ltw+Lwb)/2 = (tau/r)*(P/4);
So the torque on the vehicle is the same for all rectangles with the same perimeter.
Now consider the non-ideal case with roller free play, roller friction, and carpet compression and stretching.
This will be an intuitive explanation.
In the case where Ltw >> Lwb (very wide configuration), the fore/aft component of the wheel translational motion is much larger than the strafing component.
In the case where Lwb >> Ltw (very long narrow configuration), the strafing component of the wheel translational motion is much larger than the fore/aft component.
Since a non-ideal mec wheel is considerably less efficient in the strafing direction, you'll see more losses when trying to rotate when Lwb >> Ltw.
Bottom line:
For the small deviations from square typically seen with FRC mec bots, and for properly functioning mec wheels on a frame that's sufficiently flexible to maintain traction on all 4 wheels, the bot should turn fine - and certainly better than a skid-steer with the same dimensions.