Crates.io | roboxide |
lib.rs | roboxide |
version | 0.1.1 |
source | src |
created_at | 2020-11-24 17:32:42.308361 |
updated_at | 2020-11-24 17:40:48.352674 |
description | A simple ROS-like library for robotics |
homepage | |
repository | https://github.com/AgentMacklin/roboxide |
max_upload_size | |
id | 315889 |
size | 84,745 |
roboxide
is a (very) stripped down library that aims to fulfill the same function as ROS, while leveraging Rust's ecosystem
as much as possible. It is very opinionated about its use of Rust - there is no infrastructure to bridge other languages
with message and service files, client libraries, etc. The main advantages of this are:
Instead of using tools like catkin/colcon and cmake, you can use cargo to build your libraries/nodes. All it takes is a
[[bin]]
or [[lib]]
entry in your Cargo.toml
.
You can use regular Rust structs as messages, instead of creating dedicated message and service files. The only
requirement is they implement serde's Serialize and Deserialize traits, which can easily be done with the #[derive]
macro.
Packages can be uploaded to crates.io, circumventing the need for system dependent package managers. You just need cargo.
This library depends on ZeroMQ, so libzmq
needs to be
installed before building this library. A native Rust
implementation of ZeroMQ is in the works (zmq.rs), but it's not production ready as of
now. Hopefully in the future it will be, so libzmq
won't have to be installed separately to use this library.
Pub/sub is the only messaging mechanism implemented at the moment. You can test it with with some nodes in examples/
.
cargo run --example publisher
cargo run --example subscriber
The subscriber will begin receiving messages.