Сообщения ROS между модулями Python2.7 и Python3

#python #python-3.x #python-2.7 #ros #openai-gym

#python #python-3.x #python-2.7 #ros #openai-тренажерный зал

Вопрос:

В настоящее время я работаю над модулем обучения подкреплению, необходимым для получения и отправки информации о состоянии, действии и вознаграждении из ROS в Python 2.7. Это жесткое ограничение из-за остальной части системы.

Я хотел бы использовать среду OpenAI gym и базовые условия для моего агента обучения с подкреплением, но они поставляются с Python 3.5 .

Мой вопрос как новичка в робототехнике: возможно ли получать сообщения ROS с Py2.7 на Py3.5 и отправлять их обратно в Py2.7? Мне дали совет использовать UDPROS для этой цели, но мне не хватает опыта в том, как это будет выглядеть. Правильно ли это, есть ли лучшие способы?

Разве это не обычная проблема для более крупных систем, которые зависят от устаревшего кода в Python2.7?

Ответ №1:

Я был смущен точно такой же проблемой в течение нескольких дней. Я не уверен, какой дистрибутив ROS вы используете, но я предположил, что он кинетический, поскольку вы упомянули, что он поддерживает только python2.

Я решил проблему на своем ноутбуке (ubuntu 16.0.4, ROS Kinetic), создав виртуальную среду python3 и запустив как ros, так и базовые линии в этой виртуальной среде. Похоже, что когда в среде нет python2, ROS Kinetic все еще может хорошо работать с этими базовыми функциями (такими как публикация и подписка на тему …).

Кроме того, я решил проблему на своем ПК (ubuntu 18, ROS Melodic). Melodic поддерживает python3, так что вы можете запускать базовые и ROS как на python3 таким образом.

Надеюсь, это вам поможет.