while (fdm.Run()) { double lat = fdm.GetProperty("position/lat-deg"); double lon = fdm.GetProperty("position/lon-deg"); double roll = fdm.GetProperty("attitude/roll-rad"); // Send these to your OpenGL/Unreal engine } return 0; } JSBSim exposes a property tree via Socket or HTTP . Enable the socket server in your script:
<?xml version="1.0"?> <runscript> <use aircraft="c172" initialization="reset"/> <run start="0" end="60" dt="0.01"> <property value="20.0"> simulation/sim-time-sec </property> <!-- Start at 20 sec --> <property value="140.0"> velocities/vc-kts </property> <!-- 140 knots --> <property value="0.1"> fcs/elevator-cmd-norm </property> <!-- Pull back slightly --> <!-- Define a landing at 40 seconds --> <event name="Flaps Down" time="40"> <set value="1.0"> fcs/flaps-cmd-norm </set> </event> </run> </runscript> jsbsim tutorial
Introduction: Why JSBSim? In the world of flight simulation, the "physics engine" that dictates how an aircraft responds to control inputs, wind gusts, and atmospheric conditions is known as the Flight Dynamics Model (FDM). While many simulators rely on black-box, pre-compiled DLLs or lookup tables, JSBSim stands apart as an open-source, highly modular, and mathematically rigorous FDM. while (fdm
Create my_first_flight.xml :
JSBSim --realtime --nice --logdir=output --script=scripts/c1723.xml Note: You need an external visualizer (like FlightGear or your own OpenGL app) to see the graphics. Navigate to aircraft/c172/ . The main file is c172.xml . Open it. While many simulators rely on black-box, pre-compiled DLLs
Run it: