许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  matlab控制Flightgear C172滑跑起飞实操

matlab控制Flightgear C172滑跑起飞实操

阅读数 2
点赞 0
article_banner


% 用于与FlightGear飞行模拟器进行数据交换

clc;clear;

% 创建UDP对象

%配置FlightGear服务器参数

flightgearIP = "127.0.0.1"; % FlightGear运行的IP地址

flightgearPort = 5502; % FlightGear接收UDP数据的端口

udpSender = udpport("Datagram", "IPV4");

% % 启动接收回调

matlab控制Flightgear

% 油门测试控制--使用throttle_control.xml 和FixedAltitudeControl2.xml用如下启动命令

% start "" "D:\Program Files\FlightGear 2020.3\bin\fgfs.exe" ^

% fgfs --aircraft=c172p --generic=socket,in,60,127.0.0.1,5502,udp,throttle_control --generic=socket,out,60,127.0.0.1,5501,udp,FixedAltitudeControl2 --lat=37.62 --lon=-122.38 --altitude=0 --heading=90 --vc=0 --timeofday=noon

% % 主循环 - 向FlightGear发送控制命令

for i = 1:1000

% 创建控制数据--以油门控制为例

controls = 1 ; %sin(i/50)

% 将控制数据打包为字节数组

dataBytes = typecast(double(controls), 'uint8');

% matlab中默认的为小端字节,需要转换成和自定义中协议保持一致为大端字节序

data = flip(dataBytes); %转换字节序,

% 发送数据到FlightGear

write(udpSender, data, flightgearIP, flightgearPort);

% 等待一小段时间

pause(0.05);

end

%}

%{

% 使用control_input.xml和FixedAltitudeControl2.xml协议文件

%使用如下启动命令:start "" "D:\Program Files\FlightGear 2020.3\bin\fgfs.exe" ^

%fgfs --aircraft=c172p --generic=socket,in,60,127.0.0.1,5502,udp,control_input --generic=socket,out,60,127.0.0.1,5501,udp,FixedAltitudeControl2 --lat=37.62 --lon=-122.38 --altitude=0 --heading=90 --vc=0 --timeofday=noon

% 主循环 - 向FlightGear发送控制命令

for i = 1:100

% 创建控制数据

% 格式: [副翼, 升降舵, 方向舵, 油门]bbXXxxxxxxx

controls = [0.0, 0.0, 0.0, 0.0]; % 初始控制值

% 修改控制值以进行不同的测试

controls(1) = 2*sin(i); % 副翼正弦波

controls(2) = 1*sin(i) ; % 升降舵余弦波

controls(3) = 5*sin(i) ; % 方向舵正弦波

controls(4) = sin(i) ;

%控制输入数量

ctrl_num = size(controls,2);

dataBytes = zeros(1,ctrl_num);

data = zeros(1,ctrl_num*8);

for k = 1: ctrl_num

% 将控制数据打包为字节数组

if k <= 1

dataBytes = typecast(double(controls(k)), 'uint8');

data(1,k:k*8) = flip(dataBytes);

else

dataBytes = typecast(double(controls(k)), 'uint8');

data(1,(k-1)*8+1:k*8) = flip(dataBytes);

end

end

for k = 1: ctrl_num

% 发送数据到FlightGear

write(udpSender, data, flightgearIP, flightgearPort);

fprintf('发送控制数据: 副翼=%.4f, 升降舵=%.4f, 方向舵=%.4f, 油门=%.4f\n', ...

controls(1), controls(2), controls(3), controls(4));

% 等待时间

pause(0.01);

end

end

%}

delete(udpSender);


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
技术文档
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空