9. 启动 Launch

mainboard 在单进程内加载 DAG、拉起 Component;autolink_launch 解析 .launch、编排多进程。对标 ros2 launch + mainboard

本文 §9

相关文档

Component 部署

§0 指南 · §10 组件 Component · §7 插件 Plugin · §1.6 环境变量

Binary 模式(talker / listener)不经 mainboard;生产部署用 Component + DAG + Launch。


9.1 LoadAll 流程

mainboard 启动后由 ModuleController::LoadAll() 依次加载插件、解析 DAG、实例化 Component;多进程场景下 autolink_launch 为每个 <module> fork/exec 独立 mainboard

启动 入口 → mainboard → LoadAll → 运行 编排层(autolink_launch)与加载层(mainboard / LoadAll)分离;Binary talker 不经此路径
多进程编排 autolink_launch · .launch
解析 module fork / exec mainboard
单进程直启 mainboard -d
指定 DAG 可选 --plugin=
mainboard 进程
LoadAll module_controller.cpp
LoadPlugin
解析 DAG AUTOLINK_DAG_PATH
ClassLoader AUTOLINK_LIB_PATH
Init · Proc Component / Timer
要点说明
入口多 module 用 .launch;单 DAG 可直接 mainboard -d
LoadAll插件 → DAG → 加载 .soInitialize → 调度 Proc
环境变量AUTOLINK_DAG_PATH · AUTOLINK_LIB_PATH · AUTOLINK_PLUGIN_* · AUTOLINK_SCHED_CONF
与 Binarytalker / listenermain(),不经 mainboard(见 [§9.6](#96-binary-模式))

9.2 DAG 配置

.dag 声明 module_library、Component class_name 及输入 channel(或 TimerComponent interval)。

common.dagcommon_component_example):

module_config {
    module_library : "autolink/examples/common_component_example/libcommon_component_example.so"
    components {
        class_name : "CommonComponentSample"
        config {
            name : "common"
            readers {
                channel: "/autolink/prediction"
            }
            readers {
                channel: "/autolink/test"
            }
        }
    }
}

timer.dagtimer_component_example):

module_config {
    module_library : "autolink/examples/timer_component_example/libtimer_component_example.so"
    timer_components {
        class_name : "TimerComponentSample"
        config {
            name : "timer"
            interval : 10
        }
    }
}

字段

含义

module_library

Component 动态库(AUTOLINK_LIB_PATH

class_name

AUTOLINK_REGISTER_COMPONENT 注册名一致

config.name

Component 实例名 → 内部 Node 名

readers[].channel

输入 channel(多路触发 Proc

interval

TimerComponent 周期(ms)



9.4 部署路径

环境变量总表见 §1.6。Launch / DAG 常用:

变量

用途

AUTOLINK_DAG_PATH

.dag 文件

AUTOLINK_LIB_PATH

module_library .so

AUTOLINK_LAUNCH_PATH

.launch 文件

AUTOLINK_SCHED_CONF

调度配置(§12

DAG / Launch 中路径多为 安装后绝对路径(如 /autolink/examples/...)。开发时需 cmake --install 或将构建产物路径写入 DAG。


9.5 编译与运行

cmake -S autolink -B build/autolink -DAUTOLINK_BUILD_EXAMPLES=ON
cmake --build build/autolink -j8

export AUTOLINK_PATH=build/autolink   # 或安装前缀
export AUTOLINK_LIB_PATH=build/autolink/lib/autolink/examples/...

# 需有 talker 向 /autolink/prediction、/autolink/test 发数据,Proc 才会触发
mainboard -d build/autolink/share/autolink/examples/common_component_example/common.dag

Timer 示例可独立运行(无输入 channel):

mainboard -d .../timer.dag
# 日志:timer_component_example: Write drivermsg

9.6 Binary 模式

Binary (talker)

mainboard + DAG

入口

main()

Component::Init/Proc

channel 配置

硬编码

DAG 可改无需重编译

进程模型

单 executable

.so 动态加载

适用

学习、工具

车载 / 多模块部署


导航← §8 日志 Log · §0 指南 · §10 组件 Component →