【问题标题】:Linking Data between Simulink and Blender在 Simulink 和 Blender 之间链接数据
【发布时间】:2020-04-05 12:08:08
【问题描述】:

我一直在尝试确定一种在正在运行的 Simulink 模型和 Blender(或 Python)之间链接数据的方法。我不知道从哪里开始,但我确实找到了一个可能已经解决它的软件,如果我能让它安装正确的话;模拟服务器。

我在 StackOverflow 上发现了 SimServer(最初的问题是 here),但是我无法正确安装它,它在 httpwrapper.c 文件中的 mex 期间出错,指出“语法错误;找到 SOCKET' expecting }'" (如果我从 mex 命令中删除 httpwrapper.c 文件,它会以同样的方式在另一个文件上出错)。

有没有办法解决这个问题,还是我应该继续尝试寻找其他解决方案?我觉得另一种解决方案会更可取,并且可能更容易安装到其他机器上。有没有办法可以将正在运行的 Simulink 模型中的信息通过管道传输到文件中,并让 Blender/Python 监视该文件的更改并实时更新 Blender Game 中的模型?

【问题讨论】:

    标签: python hyperlink simulink blender


    【解决方案1】:

    如果您有兴趣从 Simulink 将数据写入文件,有几种方法可以做到这一点。我认为最简单的方法是使用 add_exec_event_listener 添加一个回调来监听你的块的“PostOutputs”事件。在此回调中,您可以从块中访问数据并写入文件。

    您可以在 http://www.mathworks.com/help/simulink/slref/add_exec_event_listener.html 找到 add_exec_event_listener 的文档

    从 Simulink 写入文件的其他方法是

    1. 使用 MATLAB Function 模块。使用您自己的“外部”函数写入文件。
    2. 在 MATLAB 或 C/C++ 中编写 S-Function。

    您可以通过外部程序查看此文件以获取更新。在这种方法中具有实时性是值得怀疑的。写入磁盘中的文件和其他程序注意到更改可能会有延迟。

    【讨论】:

    • 我实际上能够通过将 Simulink 数据(通过 MATLAB 功能块)转储到一个文件并让 Blender 在每次更新时读取它来让它们相互交谈,但我可以做到这一点大约 10 fps(这对我的目的来说很好,只是由于模型的复杂性)。但是,我很想尝试采用 TCP/IP 或 UDP 方法来解决这个问题,因为 Simulink 和 Blender 可能在两台不同的机器上运行。我认为这最终可能是一个更好的方法,但我不介意任何批评或建议。
    • 如果你想尝试UDP,DSP系统工具箱有UDP发送和接收块。
    • 是的,我已经做好了。我只需要在 Blender 中设置一个 UDP 服务器就可以了。谢谢!
    猜你喜欢
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 2011-01-29
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多