百度Apollo系统学习-Cyber实操

本文详细介绍Cyber系统的实操技巧,包括定制module、dag文件、BUILD文件、.launch文件及shed_conf.conf文件的方法,同时讲解如何定义传输数据、启动与停止cyber_launch以及mainboard的运行原理。

Cyber实操

Cyber官方提供的例子都不是很细致,真正使用还是比较困难。本文帮助大家梳理一下实际使用时会用到的一些设置和做法。里面有一些内容可能需要读者回头再去看一下专栏里的其他博客,能方便理解。

  • 定制cyber的module

    1. 定制dag文件
      	module_config {
             
             
      	module_library : "/apollo/bazel-bin/cyber/AD_Middle_Test/cyber/intra_component/libintra.so"
      	components {
             
             
          class_name : "IntraComponent"
          config {
             
             
              name : "intracomponent"# name用来生成协程的名字,如果有channel则为[name]_[channel]
              readers {
             
             
                  channel: "/apollo/prediction"
                  qos_profile:{
             
             # qos设置,在`cyber/proto/qos_profile.proto`中定义
      		history:HISTORY_KEEP_LAST # HISTORY_KEEP_LAST(默认)模式把sample存到depth数量,超过了会用新的数据覆盖旧数据,HISTORY_KEEP_ALL模式把所有sample存在内存,HISTORY_SYSTEM_DEFAULT为fastrtps默认值KEEP_LAST
      		depth:1 # 默认是1,和history::HISTORY_KEEP_LAST配合使用
      		mps:0 # 默认0,每秒的message数量,针对Publisher,用来设置
      		reliability:RELIABILITY_RELIABLE # RELIABILITY_RELIABLE模式(模式)下发送者需要收到接收者的回执,RELIABILITY_BEST_EFFORT不需要回执,延迟更低但有可能有loss,RELIABILITY_SYSTEM_DEFAULT为RELIABLE
      		durability:DURABILITY_VOLATILE # 这部分是处理subscriber订阅前历史数据的策略,DURABILITY_VOLATILE(默认)模式会忽略订阅前的数据(自动驾驶场景其实一般都是这个模式,历史数据没用),DURABILITY_TRANSIENT_LOCAL模式会把subscriber的history用历史数据填满,DURABILITY_SYSTEM_DEFAULT为fastrtps默认值TRANSIENT_LOCAL
      }
      pending_queue_size:1 # 默认为1,指定的是DataVisitor的缓存长度,长度越长信息丢失越少但实时性越差
              }
              readers {
             
             
                  channel: "/apollo/test"
              }
          }
        }
      	timer_components{
             
             
      	class_name:"IntraTimer"
      	config{
             
             
      	name:"intratimer"
      	interval:1 #单位ms,每n ms调用一次,在普通pc上默认最大是65536,最大值会变化,具体见源码
      }
      }
      }
      dag文件展示了该module所需的所有component,并且为每个component指定了reader&writer,因为component自带一个node所以我们不需要在代码里特地再创建reader&writer了。
    2. 定制BUILD文件
      load("//tools:cpplint.bzl", "cpplint")
      
      package(default_visibility = ["//visibility:public"])
      
      cc_binary(
          name = "libintra.so",
      	linkopts = ["-shared"],
      	linkstatic = False,
      	deps = [":intra_component_lib",
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值