9. 启动 Launch
mainboard 在单进程内加载 DAG、拉起 Component;autolink_launch 解析 .launch、编排多进程。对标 ros2 launch + mainboard。
本文 §9 |
相关文档 |
|---|---|
Component 部署 |
Binary 模式(talker / listener)不经 mainboard;生产部署用 Component + DAG + Launch。
9.1 LoadAll 流程
mainboard 启动后由 ModuleController::LoadAll() 依次加载插件、解析 DAG、实例化 Component;多进程场景下 autolink_launch 为每个 <module> fork/exec 独立 mainboard。
autolink_launch)与加载层(mainboard / LoadAll)分离;Binary talker 不经此路径
autolink_launch · .launch
mainboard -d
--plugin=
module_controller.cpp
AUTOLINK_DAG_PATH
AUTOLINK_LIB_PATH
| 要点 | 说明 |
|---|---|
| 入口 | 多 module 用 .launch;单 DAG 可直接 mainboard -d |
| LoadAll | 插件 → DAG → 加载 .so → Initialize → 调度 Proc |
| 环境变量 | AUTOLINK_DAG_PATH · AUTOLINK_LIB_PATH · AUTOLINK_PLUGIN_* · AUTOLINK_SCHED_CONF |
| 与 Binary | talker / listener 用 main(),不经 mainboard(见 [§9.6](#96-binary-模式)) |
9.2 DAG 配置
.dag 声明 module_library、Component class_name 及输入 channel(或 TimerComponent interval)。
common.dag(common_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.dag(timer_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
}
}
}
字段 |
含义 |
|---|---|
|
Component 动态库( |
|
与 |
|
Component 实例名 → 内部 Node 名 |
|
输入 channel(多路触发 |
|
TimerComponent 周期(ms) |
9.3 autolink_launch
.launch 为 XML,每个 <module> 指定 DAG 与进程名;autolink_launch 解析后为各 module 启动 mainboard。
common.launch:
<autolink>
<module>
<name>common</name>
<dag_conf>/autolink/examples/common_component_example/common.dag</dag_conf>
<process_name>common</process_name>
</module>
</autolink>
timer.launch 结构相同,指向 timer.dag。
启动:
export AUTOLINK_PATH=<prefix>
mainboard -d autolink/examples/cpp/common_component_example/common.dag
# 或
autolink_launch autolink/examples/cpp/common_component_example/common.launch
多 module 的 .launch 可在一个文件中声明多个 <module>,由 autolink_launch 分别起进程。
mainboard 常用参数:
mainboard -d foo.dag
mainboard -d foo.dag --plugin=/path/to/plugins.xml
mainboard -h # 查看 --plugin、DAG 列表等
9.4 部署路径
环境变量总表见 §1.6。Launch / DAG 常用:
变量 |
用途 |
|---|---|
|
|
|
|
|
|
|
调度配置(§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 ( |
mainboard + DAG |
|
|---|---|---|
入口 |
|
|
channel 配置 |
硬编码 |
DAG 可改无需重编译 |
进程模型 |
单 executable |
|
适用 |
学习、工具 |
车载 / 多模块部署 |
导航:← §8 日志 Log · §0 指南 · §10 组件 Component →