在单个Docker容器中开发ROS节点? 我目前正在计划一个相当大的ROS项目,它将包含15个节点,它们在Python 2.x或C++中相互开发。我们将尝试将不同的任务隔离为单个节点,以确保单元的可测试性和模块化,并提高未来项目的可重用性

在单个Docker容器中开发ROS节点? 我目前正在计划一个相当大的ROS项目,它将包含15个节点,它们在Python 2.x或C++中相互开发。我们将尝试将不同的任务隔离为单个节点,以确保单元的可测试性和模块化,并提高未来项目的可重用性,python,c++,docker,devops,ros,Python,C++,Docker,Devops,Ros,问题是为每个节点创建docker容器是否值得,是否有任何缺点。最大的好处是,我们可以使用与开发人员PC截然不同的系统来构建机器,然后将节点部署到设备上。Docker将依赖项和环境配置保持在一个可管理的位置,并修复了许多障碍 但这一想法有什么重大缺陷吗?在这种情况下,docker是否会带来显著的性能影响或其他障碍?在docker容器中创建孤立的ROS节点并不像以前那样复杂: 由于工作量不高,我认为在测试、可重用性、集成、交付等方面的改进。。。如果这些点在您的项目范围内,则绝对有争议 因为在

问题是为每个节点创建docker容器是否值得,是否有任何缺点。最大的好处是,我们可以使用与开发人员PC截然不同的系统来构建机器,然后将节点部署到设备上。Docker将依赖项和环境配置保持在一个可管理的位置,并修复了许多障碍


但这一想法有什么重大缺陷吗?在这种情况下,docker是否会带来显著的性能影响或其他障碍?

在docker容器中创建孤立的ROS节点并不像以前那样复杂:

由于工作量不高,我认为在测试、可重用性、集成、交付等方面的改进。。。如果这些点在您的项目范围内,则绝对有争议

因为在Docker中CPU性能并没有缺点,所以您应该更仔细地观察ROS节点的通信,这意味着在容器化ROS节点之间传递消息。在这里,您可以发现两个您应该知道的缺点:

套接字通信: 如中所示,Docker中的网络访问由附加接口完成,这将影响ROS消息的TCP传输。但中的性能分析显示影响很小

Nodelet用法: 由于在现有主机中加载了ROS节点,因此可以改进ROS节点之间的通信。如果使用Docker,就不可能使用Nodelet


总而言之,你必须考虑在ROS节点之间传输哪个消息和多少条消息。如果传输了许多图像或其他大型信息,则绝对建议进行进一步分析。除了对节点进行更复杂的处理外,我找不到反对在分离的Docker容器中使用ROS节点概念的显著要点。

在Docker容器中创建独立的ROS节点并不像以前那样复杂:

由于工作量不高,我认为在测试、可重用性、集成、交付等方面的改进。。。如果这些点在您的项目范围内,则绝对有争议

因为在Docker中CPU性能并没有缺点,所以您应该更仔细地观察ROS节点的通信,这意味着在容器化ROS节点之间传递消息。在这里,您可以发现两个您应该知道的缺点:

套接字通信: 如中所示,Docker中的网络访问由附加接口完成,这将影响ROS消息的TCP传输。但中的性能分析显示影响很小

Nodelet用法: 由于在现有主机中加载了ROS节点,因此可以改进ROS节点之间的通信。如果使用Docker,就不可能使用Nodelet

总而言之,你必须考虑在ROS节点之间传输哪个消息和多少条消息。如果传输了许多图像或其他大型信息,则绝对建议进行进一步分析。除了对节点进行更复杂的处理外,我找不到明显的反对在分离的Docker容器中使用ROS节点的观点