傲睿尔无人机模拟器Simulink模型接入RC遥控器方法分享
RC遥控器接入Simulink模型说明,电脑操作系统是Windows11,Matlab为2023a和2023b版本,其他版本的Matlab应该也是同理接入的。遥控器采用的是富斯i6S(FS-i6s)。
判断遥控器是否支持USB模拟
- 使用 USB 数据线将富斯 i6S 遥控器与电脑连接;
- 按下快捷键Win + R,打开 Windows 运行窗口;
- 在运行窗口中输入命令
joy.cpl,按下回车,打开游戏控制器面板; - 查看面板中是否显示对应遥控器的游戏控制器名称,以此判断是否支持 USB 模拟。

或者右键电脑桌面“开始“图标,然后点击“人体学输入设备”,观察是否有“HID-compliant game controller”这一设备名称。

如果有以上的显示,说明该遥控器是支持USB模拟功能的,能够将其接入进Simulink模型中,操控模型进行仿真。
在Matlab中获取遥控器的值
打开 MATLAB 软件,在编辑器中新建脚本文件,输入以下测试代码,用于读取并显示遥控器通道值:
joy = vrjoystick(1);
while true
[axes, buttons] = read(joy);
disp(axes);
pause(0.02); %遥控器频率
end
保存好以后运行,在命令行窗口会出现遥控器的通道值,拨动摇杆,来判断各摇杆对应的通道数。一般是Roll对应通道1,Pitch对应通道2,Throttle对应通道3,Yaw对应通道4。
在确定好各通道对应的值以后,在编辑器里再次新建脚本文件,并输入以下函数,这个函数可根据需要自行修改:
function rc_input_reader()
% 避免重复启动
% if evalin('base','exist("rc_input_timer", "var")') && ...
% evalin('base','isvalid(rc_input_timer)')
% return;
% end
joy = vrjoystick(1);
assignin('base', 'rc_input', zeros(6,1));
rc_input_timer = timer( ...
'ExecutionMode', 'fixedRate', ...
'Period', 0.01, ...
'BusyMode', 'drop', ... % 不堆积任务
'TimerFcn', @(~,~) update_rc_input(joy));
assignin('base', 'rc_input_timer', rc_input_timer);
start(rc_input_timer);
disp("✅ 遥控器监听器启动");
end
function update_rc_input(joy)
[axes, ~] = read(joy);
assignin('base', 'rc_input', axes');
% disp(axes);
end
function stop_rc_input_timer()
if evalin('base','exist("rc_input_timer", "var")') && ...
evalin('base','isvalid(rc_input_timer)')
stop(evalin('base','rc_input_timer'));
delete(evalin('base','rc_input_timer'));
evalin('base', 'clear rc_input_timer');
disp("�� 遥控器监听器已停止");
end
end
保存好文件以后运行,若命令行窗口出现:
![]()
并且在工作区出现了“rc_input”和“rc_input_timer”这两个变量,则表明此时遥控器的值已经传入进Matlab的工作区了。
![]()
在Simulink中读取遥控器的值
- 在 Simulink 库中找到 Interpreted MATLAB Function 模块(路径:Simulink/User-Defined Functions),将其添加到模型中,模块左侧无需连接任何输入信号。
- 双击打开模块配置界面,直接输入对应通道的变量表达式:
- 横滚 Roll:
rc_input(1) - 俯仰 Pitch:
rc_input(2) - 油门 Throttle:
rc_input(3) - 偏航 Yaw:
rc_input(4)
- 横滚 Roll:
- 确认配置后保存模型,即可实现遥控器数据实时输入 Simulink。

将这些参数设置完成后,即可将“Interpreted MATLAB Function”右侧的输出接口接入进模型对应的控制通道。

模块接入后,运行模型,即可通过遥控器控制模型的运动。
仿真模型设置
最后需要对模型设置,包括初始化和停止仿真时的设置,避免在结束仿真时还一直读取遥控器值,减少性能消耗。
点击Simulink状态栏上的“建模”,然后点击“模型设计”,选择“模型属性”,

然后在点击“回调”,选择“InitFcn”,

将这段函数输入进界面:
% === 初始化遥控器变量 ===
if ~exist('rc_input', 'var')
rc_input = zeros(6,1); % 假设你用的是6个通道
end
% === 启动监听器(timer方式) ===
try
start_rc_input_timer();
catch ME
disp("❌ 启动监听器失败:" + ME.message);
end
保存好后在点击“StopFcn”,

将这段函数输入进界面:
try
stop_rc_input_timer();
catch
disp("⚠️ 停止监听器时出错");
end
保存好设置即可。
武汉傲睿尔科技旗下全系列无人机模拟器(包括SESP‑U1 多旋翼应用仿真培训系统、STS‑H1 电力巡线仿真系统、AUSE‑V1R 消防救援仿真系统、SkyStrike FPV 战术演练系统及SimuUAV 移动端训练 APP),均原生支持本文所述的 “富斯 FS‑i6S 遥控器 + Windows 11+MATLAB 2023a/b+Simulink” 接入方案,可直接沿用该方法实现遥控器与模拟器的实时数据通信与飞行控制。
适配要点
硬件兼容:全系模拟器原生适配富斯 FS‑i6S 遥控器,通过 USB 直连电脑即可被系统识别为游戏控制器,无需额外驱动或加密狗。
软件环境:完全兼容Windows 11操作系统与MATLAB 2023a/2023b版本,其他 MATLAB 版本(如 R2022b、R2024a)亦可无缝适配。
数据链路:模拟器内置Simulink 接口模块,可直接读取 MATLAB 工作区中的rc_input变量,按 ** 通道 1(Roll)、通道 2(Pitch)、通道 3(Throttle)、通道 4(Yaw)** 映射飞行控制指令,实现毫秒级低延迟操控。
即插即用:无需修改模拟器底层代码,仅需在 Simulink 中添加Interpreted MATLAB Function模块并绑定rc_input变量,即可完成遥控器与模拟器的联调,快速投入飞行训练或二次开发。
适用产品列表
SESP‑U1:无人机应用仿真培训系统(教育 / 实训场景)。
STS‑H1/STS‑H1‑TS:电力巡线 / 变电站巡检仿真系统(能源行业场景)。
AUSE‑V1R:消防救援仿真培训系统(应急演练场景)。
SkyStrike:FPV 无人机战术演练系统(竞速 / 特技场景)傲睿尔。
SimuUAV:移动端无人机仿真训练 APP(CAAC 考证 / 便携训练场景)。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)