[python] 'New Improved' Four Bar Linkage Analysis

  • From: Michael Rienstra <ageless@xxxxxxxxxxxxx>
  • To: python@xxxxxxxxxxxxx
  • Date: Wed, 8 Sep 2004 10:03:04 -0700

Hello All,

I guess everyone is on vacation except for me! :)

So I made some new models, slightly more accurate than the last, and here's what I came up with:

First, I'll define what's what:

The coordinate system has y running along the main front frame members, and x is side-to-side (parallel to the wheel axis). Keep in mind that y is at an angle relative to the ground.

G = ground link (under the seat, distance between the pivots attached to the rear frame)
S = side links (connecting linkages, distance between pivots)
C = coupler link (distance between the pivots attached to the front frame)


R = distance from the coupler link to the center of the wheel, this is a constant and for the geometries I'm discussing it has a value of 33 cm (to allow a 520 mm / 24" wheel, although maybe I should rethink this as it is very hard to find good tyres...).

R = 33 cm

Y = shortest distance along the y axis between G and C, I use this to find the lengths of S and C (given G and Y), and I also measure it at different steering angles to see how close the wheel will get to the seat (Y always gets smaller when steering, so this could be a problem).

YDiff = the change in Y, i.e. how much shorter it got, meaning that the coupler link and the trailing edge of the tyre are now closer to the seat. Smaller is better. It is zero when the steering angle is zero by definition.

VrOfy = the offset of the virtual pivot from the center of the wheel along the y axis. It is zero when the steering angle is zero for the geometries that I am looking at. As it increases (approaching the seat) it mimics center pivot steering, which also means a slight self-centering effect. In general (particularly at small steering angles) smaller is probably better.

VrOfx = the offset of the virtual pivot from the center of the wheel along the x axis. It is zero when the steering angle is zero for the geometries that I am looking at. It can be seen as the x component of the lever arm along which forces acting on the wheel in the y axis will exert torque on the virtual pivot, causing unwanted steering. Smaller is better.

AxOfy = The offset of the center of the wheel along the y axis. It is zero when the steering angle is zero by definition. This is almost the same thing as VrOfx, since forces acting on the wheel in the y axis will be more likely to cause unwanted steering if the wheel moves sharply back as the steering angle increases.It may just be another way of measuring VrOfx, but as you will see they aren't 100% in agreement with each other so I'm not entirely sure.

AxOfx = The offset of the center of the wheel along the x axis. It is zero when the steering angle is zero by definition. I think this might make the bike hard to steer, particularly at low speeds or when stopped, because the wheel's contact patch has to move as the steering angle changes. Of course, the normal Python has this same effect, only to a greater degree (since you are swinging the contact patch through an arc as you steer), and I haven't heard anyone complain about it, so this might not be an issue. Still, smaller is probably better, particularly when it comes to balancing at very low speeds or making crazy parking lot maneuvers. The more I think about it, it seems like this will just mean that your CoG will move and the tyres will stay still -- I assume that this what happens when you steer the python sharply when stopped -- it bends in the middle, so steering left will move your weight to the right, rather than forcing the front wheel's contact patch to move to the left (or I suppose since most of your weight is in the front it would be more likely that the rear wheel's contact patch would move to the left, but in any case your weight would shift before either of those things would happen).

_______________

The three models I studies are as follows:

Narrow:
G = 10 cm
Y* = 25 cm
S = 25.1 cm
C = 5.7 cm

Square:
G = 25 cm
Y* = 25 cm
S = 25.6 cm
C = 14.2 cm

Short:
G = 25 cm
Y* = 10 cm
S = 10.4 cm
C = 19.2 cm

_______________
*: this is the value of Y when the steering angle is zero, it will decrease as steering angle increases.


To make your own models, start with G and Y, and find S and C using the following equations:

GIF image



_______________

Here are the values I obtained for the three models. Keep in mind that the margin of error is somewhat large, particularly for VrOfy & VrOfx, although I measured pretty carefully, and these models were 6/10 of actual size. The point is look for trends, but the numbers could be a little off.

The first number is for a steering angle of 10 degrees, the second is for a steering angle of 20 degrees.

Narrow:
YDiff = 1 cm - 6.4 cm
VrOfy = 1.5 cm - 9.1 cm
VrOfx = 12.2 cm - 18.6 cm
AxOfy = 1 cm - 2.4 cm
AxOfx = 0.5 cm - 2.4 cm

Square:
YDiff = 2.2 cm - 5.2 cm
VrOfy = 5 cm - 13.1 cm
VrOfx = 14.1 cm - 22.5 cm
AxOfy = 1.2 cm - 4.8 cm
AxOfx = 0.4 cm - 1.8 cm

Short:
YDiff = 3.5 cm - 7.5 cm
VrOfy = 15.7 cm - 28.8 cm
VrOfx = 18.5 cm - 21.2 cm
AxOfy = 2.2 cm - 6.3 cm
AxOfx = 1.5 cm - 6.8 cm

_______________

Whew! Those are the numbers... Maybe I'll try to figure out the margin of error at some point, but not now! Sorry that the presentation isn't more usable -- it would be better if they were in a table or something, with all of the definitions off to the side, so that it wouldn't be necessary to scroll up and down constantly in order to make comparisons or find out what something means. Too bad most email programs don't have an easy way to view two different parts of the same email simultaneously (well, it's not that hard to do...).

So here's a rough analysis:

YDiff: Narrow is best at 10 degrees, but Square is better at 20 degrees. No clear trend, more data needed.

VrOfy: Narrow is best, followed by Square. Clear trend.

VrOfx = Narrow is best, followed by Square at 10 degrees, or Short at 20 degrees. A little hazy, but I think Narrow will remain the best when more data is available.

AxOfy = Narrow is best, followed by Square. Pretty clear trend.

AxOfx = Square is best, followed by Narrow. Pretty clear trend.

Bottom Line: A relatively narrow linkage is looking like the best option overall. Exactly how narrow depends on:

1) What sort of steering angle is considered acceptable: with the Narrow geometry as given above, if the diameter of the pivot is 3 cm, and the width of the side linkages is 2.5 cm, the maximum steering angle is 37 degrees, which seems like plenty to me, particularly if the wheelbase is keep fairly short. These numbers have some room to play around with.

2) How big of a value of Y is considered acceptable: with Y = 25 cm / 10", the linkage will extend under the seat almost to the rear seat attachment point, which isn't necessarily the absolute maximum, but it seems like it would be structurally and aesthetically detrimental to go any further. Shorter would be better.

_______________

I'd love to get feedback on this, as I'm hoping to start build a prototype this week, although my tendency it to plan and plan and plan and never actually get started!

Michael

Other related posts:

  • » [python] 'New Improved' Four Bar Linkage Analysis