apollo介绍之cyber启动
附赠自动驾驶最全的学习资料和量产经验:链接
cyber组件启动
cyber_launch主要用来启动cyber模块,其中一个launch文件可以有一个或者多个module,每个module 包含一个dag文件,而一个dag文件则对应一个或者多个components。
launch文件中有几个module则会启动几个进程,每个进程有单独的内存空间,比如静态变量等都不会共享。
一个dag文件中可以有一个或者多个components,一个components对应一个协程。协程中的静态变量是共享的,并且全局唯一。
理解了上述原理,我们再详细分析以下2种启动方式。
-
cyber_launch
-
dreamview
实际上上述2种启动方式没有太大区别,都是通过mainboard来启动程序,而一个dag文件对应一个进程,接着根据dag文件中有几个components,生成几个协程,每个components对应一个协程。
下面介绍下cyber_launch的文件结构。
cyber_launch
<cyber>
<module>
<name>planning</name> \ module名称
<dag_conf>/apollo/modules/planning/dag/planning.dag</dag_conf> \ module的dag文件
<process_name>planning</process_name> \ 指定调度文件
</module>
</cyber>
-
module 用于区分模块
-
name 模块名称,主要用来cyber_launch启动的时候显示名称
-
dag_conf module模块对应的dag文件
-
process_name 指定module的调度文件,如果找不到则会提示
dag
下面以velodyne.dag文件为例来进行说明。
module_config {
module_library : "/apollo/bazel-bin/modules/drivers/lidar/velodyne/driver/libvelodyne_driver_component.so"
// 模块的so文件,用于加载到内存
# 128
components { // 第1个组件
class_name : "VelodyneDriverComponent"
config {
name : "velodyne_128_driver" // 名称必须不一样
// 配置文件
config_file_path : "/apollo/modules/drivers/lidar/velodyne/conf/velodyne128_conf.pb.txt"
}
}
# 16_fr