Rust library provides a standalone implementation of the ROS (Robot Operating System) core

Overview

ROS-core implementation in Rust

Rust License Rust CI

This Rust library provides a standalone implementation of the ROS (Robot Operating System) core. It allows you to run a ROS master and communicate with other ROS nodes without relying on an external ROS installation. You can use this library to build ROS nodes entirely in Rust, including publishers and subscribers, without needing to use any other ROS dependencies.

Examples

Standalone ROS core

To start the ROS core, run the following command:

# start the ros-core
RUST_LOG=debug cargo run

And run any of your ROS stack, eg., the python chatter example.

Talker/Listener

This example creates a single binary which contains:

  • ROS core
  • ROS publisher
  • ROS subscriber

To run the talker/listener example, execute the following command:

RUST_LOG=info ROSRUST_MSG_PATH=`realpath examples/chatter/msgs` cargo run --example chatter --release
# Stop by Ctrl+C and Ctrl+Z
kill -9 %1

This example creates a single binary that includes a standalone implementation of the ROS core, as well as a ROS publisher and ROS subscriber. This implementation is inspired by the official chatter python example from the ROS wiki, which demonstrates a simple communication between two nodes using ROS messages. You can stop the program by using Ctrl+C and Ctrl+Z.

Debugging with official ROS docker image

To showcase that this ROS core implementation can be used with official ROS publishers and subscribers in Python, we have provided a debugging script that launches a ROS Docker image and runs a talker and listener example. To run the script, execute the following commands:

# change directory to debugging folder
cd debugging
# make the script executable
chmod +x run.sh
# execute the script
./run.sh

This script will download the official ROS Docker image and launch a container with a ROS environment. Then, it will run a Python script that uses the ROS talker and listener nodes to communicate with the standalone ROS core implementation from this repository. This is intended as an example of how to use the standalone ROS core (ros-core-rs) implementation with other ROS nodes, but it is not necessary to use this script to use the standalone implementation on its own.

Contributions

We welcome contributions to this project! If you find a bug or have a feature request, please create an issue on the GitHub repository. If you want to contribute code, feel free to submit a pull request.

You might also like...
A rust library that provides pseudo-reflection for structs and enums

Treeflection treeflection_derive Treeflection runs a command stored as a string on a tree of structs, collections and primitive types. Commands A comm

This is the Rust course used by the Android team at Google. It provides you the material to quickly teach Rust to everyone.

Comprehensive Rust 🦀 This repository has the source code for Comprehensive Rust 🦀 , a four day Rust course developed by the Android team. The course

Crabzilla provides a simple interface for running JavaScript modules alongside Rust code.

Crabzilla Crabzilla provides a simple interface for running JavaScript modules alongside Rust code. Example use crabzilla::*; use std::io::stdin; #[i

An API for getting questions from http://either.io implemented fully in Rust, using reqwest and some regex magic. Provides asynchronous and blocking clients respectively.

eithers_rust An API for getting questions from http://either.io implemented fully in Rust, using reqwest and some regex magic. Provides asynchronous a

alto provides idiomatic Rust bindings for OpenAL 1.1 and extensions (including EFX).

alto alto provides idiomatic Rust bindings for OpenAL 1.1 and extensions (including EFX). WARNING Because Alto interacts with global C state via dynam

This blog provides detailed status updates and useful information about Theseus OS and its development

The Theseus OS Blog This blog provides detailed status updates and useful information about Theseus OS and its development. Attribution This blog was

A typesafe, flexible, simple, and user-friendly unit system library for Rust that has good error messages.

uy A typesafe, flexible, simple, and user-friendly unit system library for Rust that has good error messages. Usage uy not only stores the unit of a v

Fegeya Elitebuild, small, powerful build system. Written in Rust.
Fegeya Elitebuild, small, powerful build system. Written in Rust.

Fegeya Elitebuild Small, powerful, work-in-progress build system. Written in Rust. Features: No functions (all are built-ins) All variables are global

An i386 operation system written in pure rust for fun and no profit.

OrustS An i386 operation system written in pure rust (for fun and no profit). This operation system is under active developing. Checklist implement a

Owner
Patrick Wieschollek
Patrick Wieschollek
Rust 核心库和标准库的源码级中文翻译,可作为 IDE 工具的智能提示 (Rust core library and standard library translation. can be used as IntelliSense for IDE tools)

Rust 标准库中文版 这是翻译 Rust 库 的地方, 相关源代码来自于 https://github.com/rust-lang/rust。 如果您不会说英语,那么拥有使用中文的文档至关重要,即使您会说英语,使用母语也仍然能让您感到愉快。Rust 标准库是高质量的,不管是新手还是老手,都可以从中

wtklbm 493 Jan 4, 2023
ArbOS operating system, to run at Layer 2 on Arbitrum chains. Also a compiler for Mini, the language in which ArbOS is written.

ArbOS and Mini compiler ArbOS is the "operating system" that runs at Layer 2 on an Arbitrum chain, to manage the chain's operation, maintain security,

Offchain Labs 88 Nov 6, 2022
Operating system based off of blog_os, with the goal of running wasm modules as executables

yavkOS - A OS that attempts at running WASM modules as userspace programs Recommended Development Environment You need nix with the flakes, and nix-co

Yavor Kolev 12 Apr 1, 2023
Core Temporal SDK that can be used as a base for language specific Temporal SDKs

Core SDK that can be used as a base for all other Temporal SDKs. Getting started See the Architecture doc for some high-level information. This repo u

temporal.io 136 Dec 21, 2022
Core libraries, services and CLIs for Monetæ

Core libraries, services and CLIs for Monetæ

monetæ 1 Nov 1, 2021
Purplecoin Core integration/staging tree

ℙurplecoin Official implementation of Purplecoin, the first stateless cryptocurrency. Requires Rust Nightly >=v1.63.0. WARNING The source code is stil

Purplecoin 5 Dec 31, 2022
Purplecoin Core integration/staging tree

ℙurplecoin Official implementation of Purplecoin, the first stateless cryptocurrency. Requires Rust Nightly >=v1.63.0. WARNING The source code is stil

Purplecoin 8 Jan 12, 2023
Repo for apps for the Pocket RISC-V core for Analogue Pocket/OpenFPGA. Multiple branches.

This is a repo meant to host Rust programs for agg23's Pocket RISC-V platform. While Rust can be built out of the openfpga-litex repo directly, this r

null 3 Dec 12, 2023
A radix tree implementation for router, and provides CRUD operations.

radixtree A radix tree implementation for router, and provides CRUD operations. Radixtree is part of treemux, on top of which updates and removes are

Zhenwei Guo 2 Dec 19, 2022
Elemental System Designs is an open source project to document system architecture design of popular apps and open source projects that we want to study

Elemental System Designs is an open source project to document system architecture design of popular apps and open source projects that we want to study

Jason Shin 9 Apr 10, 2022