
DORA(面向数据流的机器人架构)中间件开源程序包,旨在简化基于 AI 的机器人应用程序的创建(自动驾驶汽车示例)。它提供低延迟、可组合和分布式数据流功能。应用程序建模为有向图,也称为管道。
DORA一个开源的极其快速和简单的面向数据流的机器人框架,用于管理您的项目和运行复杂的应用程序,用 Rust 编写。面向数据流的机器人体系结构 ( dora-rs ) 是一个框架,可快速简单地创建机器人应用程序。dora-rs 实现声明式 Dataflow 范例,其中任务在作为单个进程隔离的节点之间进行拆分。每个节点都定义其输入和输出以与其他节点连接。数据流范例的优势在于创建一个抽象层,使机器人应
一、软件介绍
文末提供安装包及源码下载
一个极其快速和简单的面向数据流的机器人框架,用于管理您的项目和运行复杂的应用程序,用 Rust 编写。面向数据流的机器人体系结构 ( dora-rs ) 是一个框架,可快速简单地创建机器人应用程序。dora-rs 实现声明式 Dataflow 范例,其中任务在作为单个进程隔离的节点之间进行拆分。每个节点都定义其输入和输出以与其他节点连接。数据流范例的优势在于创建一个抽象层,使机器人应用程序模块化且易于配置。
GitHub作者地址:https://github.com/dora-rs/dora
本文信息均来源于作者GitHub地址
二、软件特点
1、用于启动 Python 和 Rust 机器人项目的单个 CLI。
2、比 ros2 快 10-17 倍。
3、使用干净的 Python API 轻松快速地进行原型设计。
4、支持 macOS、Linux 和 Windows。
5、无需 Rust 即可通过 curl 或 powershell 安装 .
6、包括大量预打包的节点,用于快速原型设计。
7、无需编译即可构建和运行应用程序,超越您最喜欢的语言的本机编译器。
8、通过集成硬件、算法和 AI 模型来简化机器人应用程序的构建,以促进无缝通信。
9、通过支持 Python、C、C++ 和 ROS2 简化硬件和软件的集成,同时确保与零拷贝 Arrow 消息的低延迟通信。
三、安装
使用文末下载提供的独立安装程序或从 crates.io 安装 dora:
带 pip
pip install dora-rs-cli
带货物
cargo install dora-cli
使用 macOS 和 Linux 的 Github 版本
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/dora-rs/dora/main/install.sh | bash
使用 Windows 的 Github 版本
powershell -c "irm https://raw.githubusercontent.com/dora-rs/dora/main/install.ps1 | iex"
开始
运行一些 Python 示例(必须激活 venv):
cd dora/examples/python-dataflow
uv venv --seed
dora build dataflow.yml --uv
dora run dataflow.yml --uv
确保有网络摄像头
要停止数据流,您可以使用 ctrl + c
它提供了多种功能,例如:
TCP 通信和共享内存
节点之间的通信是在同一台机器上使用共享内存,在分布式机器上使用 TCP 来处理的。我们的共享内存实现跨进程跟踪消息,并在过时时丢弃它们。缓存共享内存槽以避免新的内存分配。
箭头消息格式
节点与 Apache Arrow Data Format 通信。
Apache Arrow 是一种用于平面和分层数据的通用内存格式。Arrow 内存格式支持零拷贝读取,可实现闪电般快速的数据访问,而不会产生序列化开销。它定义了一个 C 数据接口,没有任何构建时或链接时依赖性要求,这意味着除了 dora-rs 你最喜欢的语言的原生编译器之外,没有其他编译步骤。
开放遥测
dora-rs 使用 Opentelemetry 来记录您的所有日志、指标和跟踪。这意味着可以使用共享抽象链接数据和遥测数据。
Opentelemetry 是一种开源可观测性标准,它使大多数后端(如 elasticsearch、prometheus、Datadog......
Opentelemetry 独立于语言,与后端无关,可以轻松收集分布式数据,非常适合 dora-rs 应用程序。
热重载
dora-rs 为 Python 实现了热重载,这意味着您可以在 Python 的运行时更改代码,同时保持状态不变。
使用功能标志: --attach --hot-reload ,dora-rs 会监视代码更改并重新加载已修改的节点。
ROS2 桥接器
注意:此功能被标记为不稳定。
免编译 消息传递到 ROS 2
自动转换 ROS 2 消息 <-> 箭头阵列
import pyarrow as pa
# Configuration Boilerplate...turtle_twist_writer = ...
## Arrow Based ROS2 Twist Message## which does not require ROS2 importmessage = pa.array([{
"linear": {
"x": 1,
},
"angular": {
"z": 1
},
}])
turtle_twist_writer.publish(message)
你可能想用 ChatGPT 来写 Arrow Formatting: https://chat.openai.com/share/4eec1c6d-dbd2-46dc-b6cd-310d2895ba15
展示
自编码机器人:Code RAG (WIP)
通过将热重载与检索增强生成 (RAG) 相结合,您可以轻松创建自编码机器人,该 RAG 将从您的提示生成代码修改。请参阅: examples/python-operator-dataflow
Self-Coding Robot 只是机器人技术与 llm 相结合的冰山一角,我们希望能为它提供动力。我们还有很多东西还没有探索,比如:
自调试
记忆
函数调用
Support Matrix
dora-rs Hoped for
Tier 1 Support Python, Rust C, C++, ROS 2
Tier 2 Support C, C++, ROS2
Hot-reloading Python Rust (https://github.com/orgs/dora-rs/discussions/360)
Message Format Arrow Native
Local Communication Shared Memory Custom Middleware, zero-copy GPU IPC, intra-process tokio::channel communication
Remote Communication TCP Custom Middleware, Zenoh
Metrics, Tracing, and Logging Opentelemetry Native logging libraries into Opentelemetry
Data archives Parquet (dora-record)
Visualization and annotation OpenCV rerun.io
Supported Platforms (x86) Windows, macOS, Linux
Supported Platforms (ARM) macOS, Linux
Configuration YAML
软件下载
更多推荐
所有评论(0)