fastdds和opendds区别
时间: 2023-10-14 11:03:15 浏览: 111
Fast DDS和OpenDDS是两种用于实现分布式系统之间通信的中间件。它们都是基于数据分发服务(DDS)标准的开源实现。
首先,它们的最大区别在于性能和实时性。Fast DDS是一个高性能的DDS实现,它使用一些高效的技术来提高数据传输的速度和吞吐量,因此非常适合需要实时性的应用场景,如医疗设备、机器人等。而OpenDDS在性能上相对较慢,更适合对实时性要求不高的应用场景。
其次,它们的开发者和社区也有所不同。Fast DDS是由移动机器人公司RTI(Real-Time Innovations)开发和维护的,RTI是一个专注于实时通信和数据分配的领先提供商。而OpenDDS是由Object Computing Inc.(OCI)维护的,OCI是一家提供软件开发和咨询服务的公司。
另外,它们的发布模型也有所不同。Fast DDS采用Apache 2.0开源许可证,并在GitHub上公开发布源代码,任何人都可以免费使用和贡献代码。而OpenDDS则采用GNU Lesser General Public License(LGPL)许可证,也提供免费的使用和贡献代码的权限,但对于商业产品的使用可能有一些限制。
最后,它们的文档和资源支持也有所不同。Fast DDS拥有全面的文档和社区支持,RTI提供了详细的用户手册、示例代码和专业的技术支持。而OpenDDS的文档相对较少,资源支持可能稍显不足。
综上所述,Fast DDS和OpenDDS在性能、实时性、开发者和社区、发布模型以及文档和资源支持等方面有所不同。选择哪个取决于具体的应用需求和个人的偏好。
相关问题
fastdds 中的pdp和edp
FastDDS是一个用于实现DDS(Data Distribution Service)标准的开源实现。PDP(Participant Discovery Protocol)和EDP(Endpoint Discovery Protocol)是FastDDS中用于实现DDS标准的两个重要协议。
PDP协议用于在DDS网络中发现新的参与者(即数据发布者或订阅者)。它负责维护一个参与者列表,并确保所有参与者都知道其他参与者的存在。当新的参与者加入到DDS网络时,它会通过PDP协议广播自己的存在信息,其他参与者收到广播后会更新它们自己的参与者列表。
EDP协议用于在DDS网络中发现新的数据读写端点。它负责将读写者和订阅者连接起来,以确保数据能够正确地传输。当一个数据读写者或订阅者加入到DDS网络时,它会通过EDP协议广播自己的存在信息,其他读写者或订阅者收到广播后会更新它们自己的端点列表。
通过PDP和EDP协议,FastDDS能够实现DDS标准中的重要功能,例如数据发布订阅、数据传输可靠性等。
fastdds 2.9版本怎么设置调度策略和优先级
在FastDDS 2.9版本中,可以通过在QoS配置中设置Scheduler类和Priority属性来设置调度策略和优先级。
具体步骤如下:
1. 创建一个QoS对象,例如:
```cpp
eprosima::fastrtps::ParticipantQos qos;
```
2. 设置调度策略,例如:
```cpp
qos.scheduler = eprosima::fastrtps::RoundRobinScheduler::instance();
```
FastDDS 2.9版本支持RoundRobinScheduler和PriorityScheduler两种调度策略。RoundRobinScheduler是默认的调度策略,如果不设置调度器,则默认使用RoundRobinScheduler。
3. 设置优先级,例如:
```cpp
qos.properties().properties().emplace_back("dds.scheduler.priority", "1");
```
这里将优先级设置为1。
注意:优先级的范围是0到255,0是最低优先级,255是最高优先级。
4. 将QoS对象应用于FastDDS实体,例如:
```cpp
eprosima::fastrtps::ParticipantAttributes participant_attributes;
participant_attributes.rtps.setName("MyParticipant");
participant_attributes.rtps.properties = qos.properties().properties();
auto participant = eprosima::fastrtps::Domain::createParticipant(participant_attributes);
```
这里将QoS对象中的属性添加到participant_attributes.rtps.properties中,然后创建FastDDS参与者实体。
以上就是在FastDDS 2.9版本中设置调度策略和优先级的步骤。