Лучший способ интегрировать код Cpp с Python - PullRequest
0 голосов
/ 21 марта 2020

Я собираюсь сделать симулятор робота. Симулятор в основном выполнен в Python, кроме части контроллера. Контроллер выполнен в Cpp. Rough diagram of the simulator

Для каждого временного шага в симуляторе модель робота отправляет свои состояния (угол двигателя и т. Д. c ...) в метод python, который охватывает все коды это генерирует желаемое действие в соответствии с изученной политикой, которой должен следовать робот. Метод использует openai Gym и коды машинного обучения. Затем часть контроллера, выполненная в Cpp, получает желаемое действие в качестве входных данных и должна выдавать определенные c команды, которые могут быть поданы на двигатели робота.

Вопрос в том, как лучше всего использовать Cpp код с python. Я надеюсь, что смогу просто отправить вывод из части политики в Contoller, а контроллер выведет команды двигателя. Я просто хочу использовать cpp контроллерную часть, например функцию, например, отдельный черный ящик, если это возможно.

Python - язык интерпретатора, а cpp - язык компилятора. Google предлагает несколько вариантов, таких как: Cpython, Bootst. python или Pybind11. Часть Cpp включает множество #include s, которые связаны с библиотеками, относящимися к контроллеру, и будут использоваться многократно в течение каждого временного шага. Для более быстрого вычисления cpp часть должна быть скомпилирована только один раз.

Любое предложение приветствуется!

1 Ответ

0 голосов
/ 26 апреля 2020

Я решил использовать pybind11 для переноса cpp.

pybind11 довольно универсален, он поддерживает умные указатели, а для тех, кто хочет использовать собственные или векторные, pybind11 преобразует их в numpy и список в python соответственно

...