33,121
社区成员
ROS框架描述角度的不同:
1. 分为通信和节点来描述:
ROS通信机制分为:(1)订阅者发布者类型 (2)服务(请求/响应)类型 (3)动作类型。
2. 按层次从上到下划分为
(1)应用层,一般需要开发者自己实现
(2)客户端库层(目前的ROS2应该都实现的)
(3)中间件DDS抽象层(目前的ROS2应该都实现的)
(4)DDS实现层(可能是第三方实现)
我的问题是:
1. 从ROS自身的描述来看,NODE节点就是以进程为单位,一般是实现一个单一的功能。但是这个功能最终是靠底层硬件的支持来实现的。但是我看到这个NODE却是放在最顶层的应用层层次里面,需要ROS应用开发者自己来抽象的,这需要如何理解?
2. 协调各个节点的消息交互,我的理解应该是放到应用层的,但是我却看到是DDS在实际提供节点间通信的。那么DDS管节点间通信,那么这些节点都是存在于应用层的,DDS该怎么管呢?应用层不该直接协调各个节点的消息交互或者说是通信吗?
刚刚接粗ROS就遇到这些让我稀里糊涂的问题了。敬请各位大师们指点迷津,谢谢先!
各层不是分隔开来的,他们之所以有不同的层级,是因为处理的事务抽象度不同,不能将上层与底层分隔来看。Node离业务比较近,抽象Node时开发者不必考虑过多的硬件层的东西,只需更多的关注业务逻辑。而DDS主要负责通信管理,它和Node间的接口已由ROS管理,执行各种通信时,只需调用ROS开放的接口即可,使得开发者可以将更多精力放到业务开发中。更深层的可以看一下ROS2的文档和源码,但初学不建议了解太细节的东西。