我目前正在研究强化学习模块,该模块需要在Python 2.7中从ROS接收和发送状态,动作和奖励信息。由于系统的其余部分,这是一个严格的约束。
我想为增强学习代理使用OpenAI gym环境和基准,但是这些随Python 3.5+一起提供。
作为一个新颖的机器人专家,我的问题是,是否有可能从Py2.7到Py3.5 +接收ROS消息并将其发送回Py2.7?我曾被建议使用UDPROS来达到此目的,但我缺乏有关其外观的经验。这是正确的方法吗,还有更好的方法吗?
对于依赖Python2.7中的遗留代码的大型系统来说,这不是常见问题吗?
答案 0 :(得分:1)
几天来,我一直对一个完全相同的问题感到困惑。 我不确定您使用的是哪个ROS发行版,但我认为它是Kinetic,因为您提到它仅支持python2。
我已经在笔记本电脑(ubuntu 16.0.4,ROS Kinetic)上创建了python3虚拟环境,并在该虚拟环境中同时运行了ros和基线,从而解决了该问题。看起来,当环境中没有python2时,ROS Kinetic仍可以与这些基本功能(例如发布和订阅主题...)一起很好地工作。
此外,我已经在PC上解决了该问题(ubuntu 18,ROS Melodic)。 Melodic支持python3,因此您可以通过这种方式在python3上同时运行基线和ROS。
希望这对您有帮助。