From: Zouhair M. <zou...@gm...> - 2014-10-13 17:08:43
|
I’m trying to use JSBsim to drive an an Xplane visualization (long story as to why I’m not using FlightGear :p) I’m not doing anything fancy right now, just want to have a cessna172 model. I tried the snippet of code below, but this is the output I get (longitude multiploed by 1e6 on purpose) t = 0.00 , (36.899999, -121404974.000000) IAS = 25.27, theta = 34.52 altMSL = 0.10, t = 0.00 , (36.900000, -121404974.000000) IAS = 14.94, theta = 3.01 altMSL = 0.67, t = 0.00 , (36.900001, -121404974.000000) IAS = 17.00, theta = -8.64 altMSL = 1.19, t = 0.00 , (36.900002, -121404974.000000) IAS = 26.19, theta = -8.57 altMSL = 1.69, t = 0.00 , (36.900003, -121404974.000000) IAS = 37.59, theta = -3.60 altMSL = 2.17, t = 0.00 , (36.900004, -121404974.000000) IAS = 49.59, theta = 0.53 altMSL = 2.65, t = 0.00 , (36.900005, -121404974.000000) IAS = 63.82, theta = 2.34 altMSL = 3.23, t = 0.00 , (36.900007, -121404974.000000) IAS = 79.51, theta = 2.49 altMSL = 3.92, t = 0.00 , (36.900009, -121404974.000000) IAS = 96.02, theta = 1.62 altMSL = 4.70, t = 0.00 , (36.900011, -121404974.000000) IAS = 112.78, theta = 0.37 altMSL = 5.56, Aside from the time always being 0 (I think this is due to the fact that I’m using a newer library that doesn’t have sim-time-sec), it looks like the longitude never changes. I initially thought this might be due to pointing perfectly north, so I tried initializing with a non-zero heading but same thing. I tried using the FGInitialCondition instead of manually setting the latitude, but just setting fgic->SetLongitudeDegIC(-121.404974) results in the longitude always reading 0… Any help would be most welcome :) Cheers, -z P.S. what's the best source for finding out the most recent PropertyValues ? Version info: $uname -a Linux computer 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux $lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04 LTS Release: 14.04 Codename: trusty Jsbsim code (from git) $git show commit eef1ac615c3d804ceaa947e839e921950e93b486 Merge: ad5e22c ae83b77 Author: bcoconni <bcoconni> Date: Fri Sep 12 20:10:04 2014 +0000 Built using: ./autogen.sh --enable-libraries --enable-shared FGFDMExec *FDMExec = new FGFDMExec(); FGFCS* fcs = FDMExec->GetFCS(); FGPropulsion* prop = FDMExec->GetPropulsion(); FDMExec->SetAircraftPath("./aircraft"); FDMExec->SetEnginePath("./engine"); FDMExec->SetSystemsPath("./systems"); FDMExec->LoadModel("c172r", true); // FGInitialCondition* fgic= FDMExec->GetIC(); // fgic->SetVcalibratedKtsIC(100); //// fgic->SetLatitudeDegIC(36.888103); //// fgic->SetLongitudeDegIC(-121.404974); //// fgic->SetPsiDegIC(45); // fgic->SetAltitudeASLFtIC(1000); // // printf("longitude is : %lf \n", fgic->GetLongitudeDegIC()); bool result = FDMExec->RunIC(); FDMExec->SetPropertyValue("position/lon-gc-deg", -121.404974); FDMExec->SetPropertyValue("position/lat-gc-deg", 36.9); FDMExec->SetPropertyValue("attitude/psi-rad", .1); /* run at 100 hz */ double dt = 1./100; FDMExec->Setdt(dt); uint64_t dt_usec = (dt * 1e6); int counter = 0; while(result) { result = FDMExec->Run(); if(isnan(FDMExec->GetPropertyValue("position/h-sl-meters"))) { break; } if(counter++%4 == 1) { printf("t = %.2lf , (%lf, %lf) IAS = %.2lf, theta = %.2lf altMSL = %.2lf, \n", FDMExec->GetPropertyValue("sim-time-sec"), FDMExec->GetPropertyValue("position/lat-gc-deg"), FDMExec->GetPropertyValue("position/lon-gc-deg")*1000000, FDMExec->GetPropertyValue("velocities/u-aero-fps"), FDMExec->GetPropertyValue("attitude/theta-rad")*180/3.14, FDMExec->GetPropertyValue("position/h-sl-meters")); } usleep(dt_usec); /* sleep for 10 ms */ } |