[python] Re: Lean disturbances (and Dirk's code)
- From: mtb@xxxxxxx
- To: python@xxxxxxxxxxxxx
- Date: Sun, 27 Feb 2005 22:22:29 -0800
I was trying to figure out how much centering force there is and so tried
calculate some of the pivot forces directly. I read Dirk's code for a bit,
but realized how rusty my matrix math is. Next, I tried to do something
similar to his charts on:
http://dirkb.dnsalias.net/pythonselfcenter.html
using just x-z plane geometry. It seems to be correct for the angle limits
etc., but disagrees with Dirk's for high turn angles. If anyone can
critique it, please do. Basically, for any given pivot angle, I calculate
the x-z point for the given turn angle. I don't quite see where Dirk used
the wheel radius.
The objective was to then subtract the force of the front mass falling from
the force needed to raise the rear mass. If correct, it seems from this
math that once you put your feet on the pedals the front mass fall could
~balance the rear rise.
I need to add in lean and review Hand's thesis again as well...
Code below, cluttered diagram attached.
Ray
===============================================
trlP2Rear = 110
trlP2Front = -10 ## trail
pivotAngle = 30 * math.pi / 180.0 # deg from vertical
turnAngle = 30 * math.pi / 180.0
rearMassZ = 30
rearMassX = 100
frontMassZ = 40
frontMass2PivotAxis = 20
trlP2Front = -trlP2Front # I use opposite sign
d1 = math.sin(pivotAngle)*trlP2Front
d2 = math.cos(pivotAngle)*d1
d4 = trlP2Front*math.cos(pivotAngle)
## good for pivot rise if trlP2Rear >> trlP2Front, rule of small angles
rise = d2*abs(1-math.sin(turnAngle+math.pi/2.))
if pivotAngle==0: pivotAngle = .00000000001
d5 = rise/math.tan(pivotAngle)
rearFrameRiseAngle = math.atan(rise / (trlP2Rear+trlP2Front-d5))
rearMassHyp = (rearMassZ**2+rearMassX**2)**.5
rearMassAngle = math.asin(rearMassZ/rearMassHyp)
rearMassRise = math.sin(rearMassAngle+rearFrameRiseAngle)* \
rearMassHyp - rearMassZ
frontMassX = ((trlP2Rear + math.cos(pivotAngle)*\
frontMass2PivotAxis*math.cos(turnAngle))**2 +\
frontMassZ**2)**.5
frontMassHyp = (frontMassZ**2+frontMassX**2)**.5
frontMassAngle = math.asin(frontMassZ/frontMassHyp)
frontMassFall = frontMass2PivotAxis*math.sin(turnAngle)* \
math.sin(pivotAngle) -
math.sin(rearFrameRiseAngle)*frontMassHyp
print "riseAngle: %fdeg, mass rise: %fcm" % \
(rearFrameRiseAngle*180/math.pi, rearMassRise)
print "frontMassFall: %fcm" % (frontMassFall)
OUTPUT:
riseAngle: 0.279327deg, mass rise: 0.487159cm
frontMassFall: 4.331108cm
## good for pivot rise if trlP2Rear >> trlP2Front, rule of small angles rise = d2*abs(1-math.sin(turnAngle+math.pi/2.))
OUTPUT: riseAngle: 0.279327deg, mass rise: 0.487159cm frontMassFall: 4.331108cm
Attachment:
pivot.jpg
Description: JPEG image
- Follow-Ups:
- [python] Re: Lean disturbances (and Dirk's code)
- From: Jürgen Mages
- [python] Re: Lean disturbances (and Dirk's code)
- References:
- [python] Lean disturbances (IGNORE PREVIOUS POST)
- From: ebooth
- [python] Re: Lean disturbances
- From: Jürgen Mages
- [python] Lean disturbances (IGNORE PREVIOUS POST)
Other related posts:
- » [python] Re: Lean disturbances (and Dirk's code)
- » [python] Re: Lean disturbances (and Dirk's code)
- » [python] Re: Lean disturbances (and Dirk's code)
- » [python] Re: Lean disturbances (and Dirk's code)
- » [python] Re: Lean disturbances (and Dirk's code)
- » [python] Re: Lean disturbances (and Dirk's code)
- » [python] Re: Lean disturbances (and Dirk's code)
- » [python] Re: Lean disturbances (and Dirk's code)
- » [python] Re: Lean disturbances (and Dirk's code)