首页 > 其他分享 >CyberRT-其他主线内容

CyberRT-其他主线内容

时间:2025-01-20 17:53:40浏览次数:1  
标签:proto CyberRT 主线 cyber 内容 conf message data class

消息和数据

Message  用Message实现模块间通信,其实现基于protobuf
   cyber/message/message_traits.h
   cyber/message/raw_message_traits.h
   cyber/message/raw_message.h
   cyber/message/arena_message_wrapper.h
   cyber/message/protobuf_factory.h
 
 
cyber/data  data 
    cyber/data/data_visitor.h
	   class DataVisitor : public DataVisitorBase {
	   DataVisitor在Component::Initialize和Reader::Init中都会创建,是实际环境中获取数据的方式。
	     它最终会调用到AllLatest::Fusion函数。
		 每个 DataVisitor 的每个消息种类都会有一个缓存 ChannelBuffer,
	     在初始化的时候这些 ChannelBuffer 都会被加入到 DataDispatcher 中的一张map中。
		 而所有种类的消息还会有一个消息整合体的 ChannelBuffer 
	   
    cyber/data/data_visitor_base.h
	    class DataVisitorBase {

    cyber/data/fusion/all_latest.h
	   #include "cyber/data/channel_buffer.h"
       #include "cyber/data/fusion/data_fusion.h"

    cyber/data/fusion/data_fusion.h
       class DataFusion { 
	cyber/data/cache_buffer.h
	     class CacheBuffer {
	cyber/data/data_dispatcher.h
         class DataDispatcher {		

	cyber/data/channel_buffer.h	
       class ChannelBuffer {
	   
	   
	cyber/data/data_notifier.h   

    有多个种类消息的DataVisitor还是只有一个Notifier对应M0,也就是说只有当M0消息来的时候协程会被唤醒并通过DataFusion来获取整合所有种类的信息
	 DataDispatcher 也是一个全局单例,记录了一个channel_id对应vector<std::weak_ptr<CacheBuffer<std::shared_ptr>>>的map   

基础

 #include "cyber/base/macros.h"		  cyber/base/arena_queue.h   cyber/base/bounded_queue.h  cyber/base/signal.h
 #include "cyber/common/macros.h"    cyber/common/environment.h  cyber/common/file.h cyber/common/log.h
 #include "cyber/io/poll_data.h"	  cyber/io/session.h 
 #include "cyber/time/time.h"
 
common模块 ,是整个cyber的重要的基础模块之一,其他模块基本都对其有所依赖 
cyber/base 
	BoundedQueue,用于实现一个固定大小的线程安全队列,该队列支持多个线程同时进行出队和入队操作 
	signal.h。这份文件中,实现了一个简单的信号-槽机制,也是一种观察者模式的设计,信号-槽机制是一种用于组件之间的事件驱动编程的设计模式

包和tool

cyber/record/record_base.h
cyber/tools/cyber_recorder/recorder.h

性能记录

1.log日志
     基于glog
	cyber/logger/logger.h 
	   class Logger : public google::base::Logger {
	 
2.Event	: 代码插桩+文件打印
  cyber/event/perf_event_cache.h
       class PerfEventCache { 
      PerfEventCache::PerfEventCache() {
      PerfEventCache::AddSchedEvent
      PerfEventCache::AddTransportEvent(
  cyber/event/perf_event.h
        enum class EventType { SCHED_EVENT = 0, TRANS_EVENT = 1, TRY_FETCH_EVENT = 3 };
        event::PerfEventCache::Instance () ==> 创建perf对象 
    	
    	class SchedEvent : public EventBase {
    	class TransportEvent : public EventBase {
		
	Blocker里注册 的回调函数应该都是管理员注册的监控函数
     Blocker是Reader的一个成员,BlockerManager保存了全局的一张channel_name对应Blocker的map		
3.cyber/statistics/statistics.h
#include "third_party/var/bvar/bvar.h"
 #include "third_party/var/bvar/bvar.h
      :bvar是多线程环境下的计数器类库,方便记录和查看用户程序中的各类数值,它利用了thread local存储减少了cache bouncing
    using LatencyVarPtr = std::shared_ptr<::bvar::LatencyRecorder>;
    using StatusVarPtr = std::shared_ptr<::bvar::Status<uint64_t>>;
    using AdderVarPtr = std::shared_ptr<::bvar::Adder<int32_t>>;
    bvar中很重要的一个组件,bvar除了是一个性能优秀的计数器,设计的最重要的使用场景就是监控,
       通过了解bvar::Adder和bvar::LatencyRecorder两个类,	
	百度开源RPC框架brpc源码解析
	
4.cyber/blocker/blocker_manager.h
  Blocker是 Reader的一个成员,BlockerManager保存了全局的一张channel_name对应Blocker的map
  cyber/blocker/blocker.h
     class BlockerBase {	

cyber/blocker/blocker_manager.h
     class BlockerManager {	


 cyber/blocker/intra_reader.h	
 cyber/blocker/intra_writer.h	

proto数据

 两部分proto ,
   一部分放在了 cyber/proto/,
   另外一部分放在了各个模块
      modules/common_msgs/sensor_msgs/pointcloud.proto
	  modules/common_msgs/sensor_msgs/sensor_image.proto
      modules/data/proto/frame.proto	 
cyber/proto/cyber_conf.proto
message CyberConfig {
  optional SchedulerConf scheduler_conf = 1;
  optional TransportConf transport_conf = 2;
  optional RunModeConf run_mode_conf = 3;
  optional PerfConf perf_conf = 4;
}

cyber/proto/component_conf.proto
      ComponentConfig
	  TimerComponentConfig {
cyber/proto/dag_conf.proto
     ComponentInfo  TimerComponentInfo
	  ModuleConfig  DagConfig
cyber/proto/qos_profile.proto	  
	 
cyber/proto/transport_conf.proto	 
	 
cyber/proto/role_attributes.proto
cyber/proto/topology_change.proto

cyber/proto/scheduler_conf.proto
cyber/proto/choreography_conf.proto
cyber/proto/classic_conf.proto

cyber/proto/run_mode_conf.proto
cyber/proto/record.proto

cyber/proto/proto_desc.proto
cyber/proto/parameter.proto
cyber/proto/perf_conf.proto

自动驾驶

 Apollo的bridge模块UDP数据的格式。
    Apollo的bridge模块通过UDP协议发送的基本数据被称为帧,其由首部和数据组成。
	   在UDPBridgeSenderComponent<T>::Proc函数当中,
	    protobuf数据首先进行序列化,然后将其根据参数FRAME_SIZE分割为一个个大小相同的数据块,
		为每个数据块添加首部后,就组成了一个个的帧,然后将所有的帧发送发送
    cyber_launch start /apollo/modules/bridge/launch/bridge_receiver.launch		 

参考

苯苯的嗷呜-CyberRt 源码解读(十六  https://zhuanlan.zhihu.com/p/656700246	 

标签:proto,CyberRT,主线,cyber,内容,conf,message,data,class
From: https://www.cnblogs.com/ytwang/p/18682143

相关文章

  • 网站内容修改后多久生效?
    网站内容修改后,生效时间取决于多个因素,包括网站的缓存机制、服务器配置和网络延迟等。以下是影响网站内容生效时间的主要因素:浏览器缓存: 浏览器缓存是导致内容修改后不立即生效的主要原因之一。浏览器会缓存网页内容,以提高加载速度。当您修改了网站内容后,浏览器可能会继续显示......
  • 如何在网站中快速修改文字内容?
    在网站中修改文字内容是一个常见的维护任务,可以通过以下几种方式进行:通过CMS后台修改: 如果您的网站使用的是内容管理系统(如WordPress、DedeCMS等),您可以通过登录后台,找到相应的页面或文章进行修改。例如,在WordPress中,您可以在“文章”或“页面”菜单中找到需要修改的内容,点击进......
  • WordPress产品导入后内容出现乱码,以及附属一些别的功能
    效果图如下  该插件附带了一个可以把产品描述里面的超链接给去掉,以及有的产品图片点击会在地址栏上面显示图片的路径,在该插件可以进行关闭,并且替换成一个模态窗,还有对产品邮费展示进行了处理,到金额到达包邮的时候,别的邮费进行隐藏下面是该插件源码目录结构duoladuola.......
  • Java访问网页获取返回内容
    前言需要一直关注网站有没有出成绩结果,一直盯着好麻烦的说既然是程序员,应该可以做个定时任务代劳吧代码使用的是seleniumSpringBoot环境,JDK17这只是一个简陋版,做出来不需要太多代码pom.xml<parent><groupId>org.springframework.boot</groupId><art......
  • 如何定位并修改网站的首页内容?(快速找到并安全地修改网站首页内容的指南)
    对于大多数企业来说,网站首页往往是用户访问的第一站,其重要性不言而喻。然而,在实际操作中,很多开发者可能不清楚究竟在哪里可以找到并修改首页的相关文件。本篇将指导您如何准确地定位到首页文件,并采取适当措施进行编辑。答案:要找到并修改网站的首页内容,请按照以下步骤操作:确定......
  • 【陕西省乡镇界】面图层shp格式arcgis数据乡镇名称和编码2020年wgs84坐标无偏移内容测
    标题中的“陕西省乡镇界面图层shp格式arcgis数据乡镇名称和编码2020年wgs84坐标无偏移.zip”表明这是一个地理信息系统(GIS)的数据集,专为陕西省的乡镇区域设计。该数据集以Shapefile(shp)格式提供,是GIS领域中最常用的数据交换格式之一。它包含了乡镇的边界信息,并且每个乡镇都......
  • 在电脑上记录工作内容和日记的软件哪款好用?
    想要在电脑上随手记录工作内容、日记琐事、待办事项、日程安排等,哪款软件简单好用呢?今天来介绍四款常用的电脑桌面记事软件,总有一款是你喜欢的?一、stickynotesStickyNotes是Windows系统自带的便签工具,也叫“便笺”。它以彩色便利贴的形式展现在电脑桌面上,能记录简单文字......
  • 微积分相关教学内容
    微积分相关教学内容数学是一个可以改变自身直觉,使自身直觉更符合客观规律的工具微积分是数学的一个重要分支,主要研究变化率和累计量。它有两个主要的部分:微分学和积分学。1.微分学(DifferentialCalculus)微分学主要研究“变化率”。最基本的概念是导数。可以把导数理......
  • CyberRT_源码与简单功能
    阅读源码首先快速地作了一个每个模块的简单功能介绍,后续会按照程序的顺序对每个模块深入源码学习核心功能:数据通信和任务调度CyberRT采用了基于Component模块和有向无环图(DAG)的动态加载配置 role_attributescyber/proto/role_attributes.proto中定义了两个数据结......
  • 绝区零1.5新版本内容前瞻 耀嘉音、伊芙琳即将上线
    绝区零1.5版本将于1月22日更新上线,前瞻爆料内容也已经新鲜出炉,大家一起来看看吧!一、新代理人角色1.耀嘉音(支援·以太):作为首个限定S级支援代理人,耀嘉音不仅拥有强大的技能设定,还融合了偶像歌手的明星设定。2.伊芙琳(强攻·火):新版本下半卡池新增角色之一,同样可以通过抽卡......