Code covered by the BSD License  

Highlights from
FlightGear Route Manager

image thumbnail
from FlightGear Route Manager by Johann Schweikl
Matlab functions accessing FlightGear to remotely control an aircraft's route and track its position

[lat_deg, lon_deg, alt_ft, gnd_elev_m, head_deg, ...
function [lat_deg, lon_deg, alt_ft, gnd_elev_m, head_deg, ...
    pitch_deg, yaw_deg, roll_deg]=get_pos(host, port)
% [LAT_DEG, LON_DEG, ALT_FT, GND_ELEV_M, HEAD_DEG, PITCH_DEG,
% YAW_DEG, ROLL_DEG]=GET_POS(HOST, PORT)
% 
% Read aircraft position and orientation from Flightgear over socket
% connection (HOST, PORT).
% Run Flightgear on HOST (e.g. '127.0.0.1' = localhost) with
% parameter "--props = PORT".
%
% Function returns:
% -----------------
% POSITION:
% - Latitude degree
% - Longitude degree
% - Altitude feet
% - Ground elevation meter
%
% ORIENTATION:
% - Heading degree
% - Pitch degree
% - Yaw degree
% - Roll degree

import java.net.Socket
import java.io.*

fg_socket = Socket(host, port);
out = PrintWriter(fg_socket.getOutputStream(), true);
in = BufferedReader(InputStreamReader(fg_socket.getInputStream()));


%% Position of aircraft
% Latitude degree
out.println(sprintf('get /position/latitude-deg\r\n'));
lat_deg_str = char(in.readLine());
j = findstr(lat_deg_str,'''');
lat_deg = str2double(lat_deg_str(j(1)+1:j(2)-1));

% Longitude degree
out.println(sprintf('get /position/longitude-deg\r\n'));
lon_deg_str = char(in.readLine());
j = findstr(lon_deg_str,'''');
lon_deg = str2double(lon_deg_str(j(1)+1:j(2)-1));

% Altitude feet
out.println(sprintf('get /position/altitude-ft\r\n'));
alt_ft_str = char(in.readLine());
j = findstr(alt_ft_str,'''');
alt_ft = str2double(alt_ft_str(j(1)+1:j(2)-1));

% Ground elevation meter
out.println(sprintf('get /position/ground-elev-m\r\n'));
gnd_elev_m_str = char(in.readLine());
j = findstr(gnd_elev_m_str,'''');
gnd_elev_m = str2double(gnd_elev_m_str(j(1)+1:j(2)-1));


%% Orientation of aircraft
% Heading deg
out.println(sprintf('get /orientation/heading-deg\r\n'));
head_deg_str = char(in.readLine());
j = findstr(head_deg_str,'''');
head_deg = str2double(head_deg_str(j(1)+1:j(2)-1));

% Pitch deg
out.println(sprintf('get /orientation/pitch-deg\r\n'));
pitch_deg_str = char(in.readLine());
j = findstr(pitch_deg_str,'''');
pitch_deg = str2double(pitch_deg_str(j(1)+1:j(2)-1));

% Yaw deg
out.println(sprintf('get /orientation/yaw-deg\r\n'));
yaw_deg_str = char(in.readLine());
j = findstr(yaw_deg_str,'''');
yaw_deg = str2double(yaw_deg_str(j(1)+1:j(2)-1));

% Roll deg
out.println(sprintf('get /orientation/roll-deg\r\n'));
roll_deg_str = char(in.readLine());
j = findstr(roll_deg_str,'''');
roll_deg = str2double(roll_deg_str(j(1)+1:j(2)-1));


out.close();
in.close();
fg_socket.close();

end

Contact us at files@mathworks.com