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)
  • 确认配置后保存模型,即可实现遥控器数据实时输入 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 考证 / 便携训练场景)。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐