Roplat
编译期安全 · 静态确定调度 · 多语言透明互通
Roplat 是一个面向运行期安全的机器人操作平台。它将 ROS 中常见的运行时崩溃——死锁、类型不匹配、拓扑混乱——前移到编译期,让你在 cargo build 通过的那一刻就获得对系统行为的信心。
#[roplat::system]
async fn robot() {
let mut sensor = SensorNode::new();
let mut ctrl = ControllerNode::new();
let mut motor = MotorNode::new();
timer_100hz >> {
sensor >> ctrl >> motor;
};
}
为什么选择 Roplat
-
:material-shield-check:{ .lg .middle } 编译期安全
类型不匹配、死锁环路、拓扑错误——全部在编译期捕获,而非在实验现场崩溃。
-
:material-clock-fast:{ .lg .middle } 零开销确定性
调度图编译期规约为静态代码,节律驱动零堆分配,性能可预测到每个 tick。
-
:material-translate:{ .lg .middle } 多语言透明互通
Rust / C++ / Python 节点在同一系统中无缝协作,类型绑定自动生成,无需手写 FFI。
-
:material-file-tree:{ .lg .middle } 声明式系统 DSL
用
>>操作符声明数据流,用作用域表达并发边界,代码即拓扑图。
核心架构一览
graph LR
subgraph "编译期"
DSL["system! DSL"] --> Parse["解析"]
Parse --> Graph["FlowGraph"]
Graph --> Reduce["图规约 R0-R4"]
Reduce --> Codegen["代码生成"]
end
subgraph "运行期"
Rhythm["Rhythm 节律源"] --> Drive["drive()"]
Drive --> NodeA["Node A"]
Drive --> NodeB["Node B"]
NodeA -->|channel| NodeB
end
Codegen -.-> Drive
与 ROS 2 的核心差异
| 维度 | Roplat | ROS 2 |
|---|---|---|
| 类型检查 | 编译期,泛型约束 | 运行期,MD5 哈希 |
| 调度模型 | 静态确定(图规约) | 动态黑盒(Executor) |
| 死锁检测 | 编译期(通道环路分析) | 无 |
| 内存安全 | Rust 所有权系统保证 | 依赖 C++ 编程纪律 |
| 多语言 | 编译期绑定生成 | 运行时 DDS 序列化 |
| 拓扑表达 | 代码即图(>> DSL) |
Launch XML / YAML |
开始使用
-
新手?从这里开始
-
想快速上手?
-
想理解设计?