0. Communication 通信框架指南
autolink 是 Autonomy 的 分布式通信运行时,对标 Apollo Cyber RT / ROS 2 DDS 层。
本文 §0 |
相关文档 |
|---|---|
上手、环境、工具 |
0.1 文档地图
按角色阅读
角色 |
阅读顺序 |
|---|---|
新手 |
§0.2 → §2 节点 Node → §3 通道 Channel |
写 Component |
|
写 Action / Plugin |
|
选型 / 对比 |
章节目录
§ |
文档 |
内容 |
|---|---|---|
0 |
本指南 |
快速开始、环境变量、CLI、示例索引 |
1 |
分层、数据流、生命周期、环境变量详表 |
|
2 |
通信句柄、生命周期 |
|
3 |
Writer/Reader、QoS、POD、录包 |
|
4 |
RPC 请求–响应 |
|
5 |
长任务 Goal/Feedback/Result |
|
6 |
全局键值参数 |
|
7 |
可插拔算法、描述文件 |
|
8 |
AsyncLogger、宏、GLOG 配置、使用案例 |
|
9 |
DAG 配置、多进程编排、部署路径 |
|
10 |
多输入 |
|
11 |
Time/Rate/Clock、Timer、TimerComponent |
|
12 |
classic / choreography |
|
13 |
ROS2/Cyber 对比、模式选型 |
0.2 快速开始
#include "autolink/autolink.hpp"
int main(int argc, char* argv[]) {
autolink::Init(argv[0]);
auto node = autolink::CreateNode("talker");
auto writer = node->CreateWriter<MyMsg>("/channel/name");
auto reader = node->CreateReader<MyMsg>("/channel/name",
[](const std::shared_ptr<MyMsg>& msg) { AINFO << "rx"; });
autolink::WaitForShutdown();
}
三步环境:
git clone --recurse-submodules <repo>
source autolink/autolink/setup.bash # 设置 PATH、AUTOLINK_PATH 等
export AUTOLINK_PATH=<含 conf/autolink.pb.conf 的目录>
编译示例:
cmake -S autolink -B build/autolink \
-DAUTOLINK_BUILD_EXAMPLES=ON -DAUTOLINK_BUILD_TOOLS=ON
cmake --build build/autolink -j8
详见 autolink/examples/cpp/README.md、autolink/examples/python/README.md。
0.3 全局约束
约束 |
说明 |
|---|---|
先 |
未初始化时 |
|
拓扑内不可重复;多实例加 PID 后缀 |
channel 名完全一致 |
含 |
消息类型一致 |
同 protobuf 或 POD 包装类型 |
回调勿阻塞 |
Reader / |
|
同机多进程须指向同一配置根 |
0.4 核心模块速览
autolink |
ROS 2 |
文档 |
|---|---|---|
Node |
Node |
|
Channel + Writer/Reader |
topic + pub/sub |
|
Service/Client |
Service |
|
Action |
Action |
|
Parameter |
Parameter |
|
PluginManager |
pluginlib |
|
AINFO / glog |
rclcpp logging |
|
Launch (mainboard) |
|
|
Component + DAG |
— |
|
Time / Rate / Timer |
Timer / Clock |
|
Scheduler |
Executor |
消息:算法内 autonomy::commsgs::* struct,边界 ToProto()。详见 commsgs。
0.5 环境变量(常用)
完整说明见 §1.6 环境与路径变量。
变量 |
用途 |
|---|---|
|
运行时根目录(须含 |
|
安装前缀;Python 绑定路径 |
|
|
|
Component |
|
|
|
调度配置文件路径 |
|
插件描述与 |
|
跨主机发现域 ID(默认见 |
|
日志级别与输出目录(见 §8) |
0.6 CLI 工具
构建时加 -DAUTOLINK_BUILD_TOOLS=ON(autolink/tools/):
工具 |
用途 |
|---|---|
|
加载 DAG、启动 Component |
|
解析 |
|
列出 channel 与类型 |
|
查看节点信息 |
|
调试 RPC / Action |
|
实时消息监控 |
|
录包 / 回放 |
录包示例:autolink_recorder record -a -o x.record · play -f x.record(源码 examples/cpp/record.cpp)。
0.7 示例索引
路径均相对于 autolink/examples/。
场景 |
可执行文件 / 脚本 |
源码 |
|---|---|---|
Talker / Listener |
|
|
单进程 POD |
|
|
Service |
|
|
Action |
|
|
Parameter |
|
|
Record |
|
|
Component |
|
|
TimerComponent |
|
|
Python pub/sub |
|
|
Python service |
|
|
Python Time/Rate |
|
|
Python Timer |
|
|