Cyber实操
Cyber官方提供的例子都不是很细致,真正使用还是比较困难。本文帮助大家梳理一下实际使用时会用到的一些设置和做法。里面有一些内容可能需要读者回头再去看一下专栏里的其他博客,能方便理解。
-
定制cyber的
module:- 定制dag文件
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,最大值会变化,具体见源码 } } }module所需的所有component,并且为每个component指定了reader&writer,因为component自带一个node所以我们不需要在代码里特地再创建reader&writer了。 - 定制BUILD文件
load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) cc_binary( name = "libintra.so", linkopts = ["-shared"], linkstatic = False, deps = [":intra_component_lib",
- 定制dag文件

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





