CyberRt源码剖析--01CyberRT是什么
1.1 ROS1 VS ROS2

- ROS2 引入了DDS
- ROS1 需要Master节点来管理通信
发布订阅模型:

ROS2 软件架构

1.2 DDS
Data Distribution Service,也就是数据分发服务,2004年由对象管理组织OMG发布和维护,是一套专门为实时系统设计的数据分发/订阅标准:https://fast-dds.docs.eprosima.com/en/latest/fastdds/library_overview/library_overview.html

DDS软件架构:

从上往下分为三个层级:DDS层、RTPS层、Transport层
可以看见FastDDS现在的架构有四层Application、DDS层、RTPS层Transport层
DDS层是对RTPS层的抽象,可以看见DDS层里有很多角色,如:Publisher、Subscriber、DataWriter、DataReader、Topic、DomainParticipant等,反而搞得很复杂- 而
RTPS层相对而言比较清晰简单RTPSWriter用于发送数据,RTPSReader用于读取数据,RTPSParticipant用于区分不同进程 Transport层则为底层通信实现,可以看见它支持udp、tcp、shm三种通信方式

FastDDS的早期版本其实不叫FastDDS,而是直接叫Fast-Rtps,意味着早期并没有实现DDS协议,并且不支持shm,只支持网络通信,CyberRt使用的就是以前这种只支持网络通信的版本作为不同主机之间的通讯协议,因此对于同主机之间不同进程的通信,CyberRt内部自己实现了基于共享内存的通信方式。
FastRTPS官网:https://fast-rtps.docs.eprosima.com/en/v1.9.4/introduction.html

1.3 CyberRT
源码地址:https://github.com/storypku/CyberRT
源码层级:

CyberRT软件架构:

数据传输: 在一个分布式计算系统中,根据两个节点间的位置关系需要使用不同的传输方式 - INTRA:如果是同进程的,因为在同一地址空间,直接传指针就完了。 - SHM(Shared memory):如果是同一机器上,但跨进程的,为了高效可以使用共享内存。 - RTPS:如果是跨设备的,那就老老实实通过网络传吧。 - HYBRID: 框架需要根据节点间关系选择合适的传输后端。

源码架构:

可以把CyberRT拆分为两个部分
- 分布式通信
- 协程计算框架
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 TimerのBlog!







![Xhyper剖析[6]--中断虚拟化](/2026/01/20/Xhyper%E5%89%96%E6%9E%90-6-%E4%B8%AD%E6%96%AD%E8%99%9A%E6%8B%9F%E5%8C%96/17689244713913.png)
![Xhyper剖析[5]--MMIO虚拟化](/2026/01/20/Xhyper%E5%89%96%E6%9E%90-5-MMIO%E8%99%9A%E6%8B%9F%E5%8C%96/17689243819381.png)
![Xhyper剖析[4]--XhyperCPU虚拟化](/2026/01/20/Xhyper%E5%89%96%E6%9E%90-4-XhyperCPU%E8%99%9A%E6%8B%9F%E5%8C%96/17689241119091.png)
![Xhyper剖析[3]--Xhyper内存虚拟化](/2026/01/20/Xhyper%E5%89%96%E6%9E%90-3-Xhyper%E5%86%85%E5%AD%98%E8%99%9A%E6%8B%9F%E5%8C%96/176892388736321.png)
![Xhyper剖析[2]--Xhyper启动](/2026/01/20/Xhyper%E5%89%96%E6%9E%90-2-Xhyper%E5%90%AF%E5%8A%A8/17689237041079.png)