首页 > 解决方案 > 将 Cpp 代码与 Python 集成的最佳方法

问题描述

我要做一个机器人模拟器。模拟器主要是用 Python 制作的,除了控制器部分。控制器是用 Cpp 制作的。 模拟器示意图

对于每个时间步,在模拟器中,机器人模型将其状态(电机角度等)发送到 python 方法,该方法包装所有代码,根据学习的策略生成所需的动作,机器人必须遵循。该方法使用 openai Gym 和机器学习代码。然后在 Cpp 中制作的控制器部分获取所需的操作作为输入,并应输出可以馈送到机器人电机的特定命令。

问题是,在 python 中使用 Cpp 代码的最佳方式是什么。我希望我可以将策略部分的输出发送到控制器,控制器输出电机命令。我只想使用 cpp 控制器部分的功能,如果可能的话,比如单独的黑盒。

Python是解释器语言,cpp是编译器语言。谷歌建议使用一些候选者,如使用 Cpython、使用 Bootst.python 或使用 Pybind11。Cpp部分涉及到很多#include链接到控制器相关库的s,并且在每个时间步都会重复使用。为了更快的计算,我认为应该只编译一次 cpp 部分。

欢迎任何建议!

标签: controlleropenai-gym

解决方案


我决定使用 pybind11 来包装 cpp。

pybind11 非常通用,它支持智能指针,对于那些想要使用 eigen 或 vector 的人,pybind11 分别将它们转换为 python 中的 numpy 和 list


推荐阅读