本文整理汇总了Python中JSBSim_utils.CreateFDM.get_auxiliary方法的典型用法代码示例。如果您正苦于以下问题:Python CreateFDM.get_auxiliary方法的具体用法?Python CreateFDM.get_auxiliary怎么用?Python CreateFDM.get_auxiliary使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类JSBSim_utils.CreateFDM
的用法示例。
在下文中一共展示了CreateFDM.get_auxiliary方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_wind_frame
# 需要导入模块: from JSBSim_utils import CreateFDM [as 别名]
# 或者: from JSBSim_utils.CreateFDM import get_auxiliary [as 别名]
def test_wind_frame(self):
script_path = self.sandbox.path_to_jsbsim_file('scripts',
'ball_chute.xml')
fdm = CreateFDM(self.sandbox)
fdm.load_script(script_path)
fdm.run_ic()
self.assertAlmostEqual(fdm['external_reactions/parachute/location-x-in'],
12.0)
self.assertAlmostEqual(fdm['external_reactions/parachute/location-y-in'],
0.0)
self.assertAlmostEqual(fdm['external_reactions/parachute/location-z-in'],
0.0)
self.assertAlmostEqual(fdm['external_reactions/parachute/x'], -1.0)
self.assertAlmostEqual(fdm['external_reactions/parachute/y'], 0.0)
self.assertAlmostEqual(fdm['external_reactions/parachute/z'], 0.0)
while fdm.run():
Tw2b = fdm.get_auxiliary().get_Tw2b()
mag = fdm['aero/qbar-psf'] * fdm['fcs/parachute_reef_pos_norm']*20.0
f = Tw2b * np.mat([-1.0, 0.0, 0.0]).T * mag
self.assertAlmostEqual(fdm['forces/fbx-external-lbs'], f[0, 0])
self.assertAlmostEqual(fdm['forces/fby-external-lbs'], f[1, 0])
self.assertAlmostEqual(fdm['forces/fbz-external-lbs'], f[2, 0])
m = np.cross(self.getLeverArm(fdm,'parachute'),
np.array([f[0,0], f[1,0], f[2, 0]]))
self.assertAlmostEqual(fdm['moments/l-external-lbsft'], m[0])
self.assertAlmostEqual(fdm['moments/m-external-lbsft'], m[1])
self.assertAlmostEqual(fdm['moments/n-external-lbsft'], m[2])
示例2: test_moment
# 需要导入模块: from JSBSim_utils import CreateFDM [as 别名]
# 或者: from JSBSim_utils.CreateFDM import get_auxiliary [as 别名]
def test_moment(self):
script_path = self.sandbox.path_to_jsbsim_file('scripts',
'ball_chute.xml')
tree, aircraft_name, aircraft_path = CopyAircraftDef(script_path,
self.sandbox)
extReact_element = tree.getroot().find('external_reactions')
moment_element = et.SubElement(extReact_element, 'moment')
moment_element.attrib['name'] = 'parachute'
moment_element.attrib['frame'] = 'WIND'
direction_element = et.SubElement(moment_element, 'direction')
x_element = et.SubElement(direction_element, 'x')
x_element.text = '0.2'
y_element = et.SubElement(direction_element, 'y')
y_element.text = '0.0'
z_element = et.SubElement(direction_element, 'z')
z_element.text = '-1.5'
tree.write(self.sandbox('aircraft', aircraft_name,
aircraft_name+'.xml'))
fdm = CreateFDM(self.sandbox)
fdm.set_aircraft_path('aircraft')
fdm.load_script(script_path)
fdm.run_ic()
mDir = np.array([0.2, 0.0, -1.5])
mDir /= np.linalg.norm(mDir)
self.assertAlmostEqual(fdm['external_reactions/parachute/l'], mDir[0])
self.assertAlmostEqual(fdm['external_reactions/parachute/m'], mDir[1])
self.assertAlmostEqual(fdm['external_reactions/parachute/n'], mDir[2])
fdm['external_reactions/parachute/magnitude-lbsft'] = -3.5
while fdm.run():
Tw2b = fdm.get_auxiliary().get_Tw2b()
mag = fdm['aero/qbar-psf'] * fdm['fcs/parachute_reef_pos_norm']*20.0
f = Tw2b * np.mat([-1.0, 0.0, 0.0]).T * mag
self.assertAlmostEqual(fdm['forces/fbx-external-lbs'], f[0, 0])
self.assertAlmostEqual(fdm['forces/fby-external-lbs'], f[1, 0])
self.assertAlmostEqual(fdm['forces/fbz-external-lbs'], f[2, 0])
m = -3.5 * Tw2b * np.mat(mDir).T
fm = np.cross(self.getLeverArm(fdm,'parachute'),
np.array([f[0,0], f[1,0], f[2, 0]]))
self.assertAlmostEqual(fdm['moments/l-external-lbsft'], m[0, 0] + fm[0])
self.assertAlmostEqual(fdm['moments/m-external-lbsft'], m[1, 0] + fm[1])
self.assertAlmostEqual(fdm['moments/n-external-lbsft'], m[2, 0] + fm[2])
示例3: TestAeroFuncFrame
# 需要导入模块: from JSBSim_utils import CreateFDM [as 别名]
# 或者: from JSBSim_utils.CreateFDM import get_auxiliary [as 别名]
class TestAeroFuncFrame(JSBSimTestCase):
def setUp(self):
JSBSimTestCase.setUp(self)
self.fdm = CreateFDM(self.sandbox)
self.script_path = self.sandbox.path_to_jsbsim_file('scripts',
'x153.xml')
self.tree, self.aircraft_name, b = CopyAircraftDef(self.script_path, self.sandbox)
self.aero2wind = np.mat(np.identity(3));
self.aero2wind[0,0] *= -1.0
self.aero2wind[2,2] *= -1.0
self.auxilliary = self.fdm.get_auxiliary()
def tearDown(self):
del self.fdm
JSBSimTestCase.tearDown(self)
def getTs2b(self):
alpha = self.fdm['aero/alpha-rad']
ca = math.cos(alpha)
sa = math.sin(alpha)
Ts2b = np.mat([[ca, 0., -sa],
[0., 1., 0.],
[sa, 0., ca]])
return Ts2b
def checkForcesAndMoments(self, getForces, getMoment, aeroFunc):
self.fdm.load_script(self.script_path)
self.fdm.run_ic()
rp = np.mat([self.fdm['metrics/aero-rp-x-in'],
-self.fdm['metrics/aero-rp-y-in'],
self.fdm['metrics/aero-rp-z-in']])
result = {}
while self.fdm.run():
for axis in aeroFunc.keys():
result[axis] = 0.0
for func in aeroFunc[axis]:
result[axis] += self.fdm[func]
Fa, Fb = getForces(result)
Tb2s = self.getTs2b().T
Fs = self.aero2wind * (Tb2s * Fb)
Mb_MRC = getMoment(result)
cg = np.mat([self.fdm['inertia/cg-x-in'],
-self.fdm['inertia/cg-y-in'],
self.fdm['inertia/cg-z-in']])
arm_ft = (cg - rp)/12.0 # Convert from inches to ft
Mb = Mb_MRC + np.cross(arm_ft, Fb.T)
Tb2w = self.auxilliary.get_Tb2w()
Mw = Tb2w * Mb.T
Ms = Tb2s * Mb.T
self.assertAlmostEqual(Fa[0,0], self.fdm['forces/fwx-aero-lbs'])
self.assertAlmostEqual(Fa[1,0], self.fdm['forces/fwy-aero-lbs'])
self.assertAlmostEqual(Fa[2,0], self.fdm['forces/fwz-aero-lbs'])
self.assertAlmostEqual(Fb[0,0], self.fdm['forces/fbx-aero-lbs'])
self.assertAlmostEqual(Fb[1,0], self.fdm['forces/fby-aero-lbs'])
self.assertAlmostEqual(Fb[2,0], self.fdm['forces/fbz-aero-lbs'])
self.assertAlmostEqual(Fs[0,0], self.fdm['forces/fsx-aero-lbs'])
self.assertAlmostEqual(Fs[1,0], self.fdm['forces/fsy-aero-lbs'])
self.assertAlmostEqual(Fs[2,0], self.fdm['forces/fsz-aero-lbs'])
self.assertAlmostEqual(Mb[0,0], self.fdm['moments/l-aero-lbsft'])
self.assertAlmostEqual(Mb[0,1], self.fdm['moments/m-aero-lbsft'])
self.assertAlmostEqual(Mb[0,2], self.fdm['moments/n-aero-lbsft'])
self.assertAlmostEqual(Ms[0,0], self.fdm['moments/roll-stab-aero-lbsft'])
self.assertAlmostEqual(Ms[1,0], self.fdm['moments/pitch-stab-aero-lbsft'])
self.assertAlmostEqual(Ms[2,0], self.fdm['moments/yaw-stab-aero-lbsft'])
self.assertAlmostEqual(Mw[0,0], self.fdm['moments/roll-wind-aero-lbsft'])
self.assertAlmostEqual(Mw[1,0], self.fdm['moments/pitch-wind-aero-lbsft'])
self.assertAlmostEqual(Mw[2,0], self.fdm['moments/yaw-wind-aero-lbsft'])
def checkAerodynamicsFrame(self, newAxisName, getForces, getMoment, frame):
aeroFunc = {}
for axis in self.tree.findall('aerodynamics/axis'):
axisName = newAxisName[axis.attrib['name']]
axis.attrib['name'] = axisName
if frame:
axis.attrib['frame'] = frame
aeroFunc[axisName] = []
for func in axis.findall('function'):
aeroFunc[axisName].append(func.attrib['name'])
if (frame == 'BODY' or len(frame) == 0) and (axisName == 'X' or axisName == 'Z'):
# Convert the signs of X and Z forces so that the force
# along X is directed backward and the force along Z is
# directed upward.
product_tag = func.find('product')
value_tag = et.SubElement(product_tag, 'value')
value_tag.text = '-1.0'
self.tree.write(self.sandbox('aircraft', self.aircraft_name,
self.aircraft_name+'.xml'))
self.fdm.set_aircraft_path('aircraft')
#.........这里部分代码省略.........