controller - 将 Cpp 代码与 Python 集成的最佳方法
问题描述
我要做一个机器人模拟器。模拟器主要是用 Python 制作的,除了控制器部分。控制器是用 Cpp 制作的。
对于每个时间步,在模拟器中,机器人模型将其状态(电机角度等)发送到 python 方法,该方法包装所有代码,根据学习的策略生成所需的动作,机器人必须遵循。该方法使用 openai Gym 和机器学习代码。然后在 Cpp 中制作的控制器部分获取所需的操作作为输入,并应输出可以馈送到机器人电机的特定命令。
问题是,在 python 中使用 Cpp 代码的最佳方式是什么。我希望我可以将策略部分的输出发送到控制器,控制器输出电机命令。我只想使用 cpp 控制器部分的功能,如果可能的话,比如单独的黑盒。
Python是解释器语言,cpp是编译器语言。谷歌建议使用一些候选者,如使用 Cpython、使用 Bootst.python 或使用 Pybind11。Cpp部分涉及到很多#include
链接到控制器相关库的s,并且在每个时间步都会重复使用。为了更快的计算,我认为应该只编译一次 cpp 部分。
欢迎任何建议!
解决方案
我决定使用 pybind11 来包装 cpp。
pybind11 非常通用,它支持智能指针,对于那些想要使用 eigen 或 vector 的人,pybind11 分别将它们转换为 python 中的 numpy 和 list
推荐阅读
- azure-iot-edge - UpdateTwinAsync 失败
- database - 如何将全局地址存储在数据库中?
- cascade - 如何在 Hybris items.xml 中定义级联删除?
- azure-functions - 异步定时器触发函数
- javascript - 从 Backbone Js View 取消绑定事件,而不影响 DOM
- prestashop-1.7 - Prestashop 1.7 添加产品类型
- wpf - 带有按钮的 WPF 菜单项
- python-3.x - 连接熊猫数据帧的更多pythonic方法
- javascript - 基于值的引导列表组状态(危险、成功、...)
- regex - 为什么 grep 语句中冒号后面的空格字符在 Bash 中不起作用?