agent-less and lightweight communication library compatible with rclcpp for embedded devices

Overview

mros2

mros2 (formally mROS 2) realizes an agent-less and lightweight runtime environment compatible with ROS 2 for embedded devices. It consists of basic APIs for pub/sub communication, RTPS protocol, UDP/IP stack, and real-time kernel. Embedded nodes can now communicate directly with native ROS 2 nodes via topic!

This repository maintains the communication layer of mROS 2, that mainly offers pub/sub APIs compatible with rclcpp for embedded devices. ROS 2 is a de-fact platform for the robot system development, and provides pub/sub communication infrastructure with the DDS/RTPS protocol.

Features

  • Agent-less: a node on mROS 2 autonomously discovers communication nodes on the host with the feature of embeddedRTPS. It means no agent/bridge is required for pub/sub communication from the embedded devices.
  • Lightweight: mROS 2 APIs are implemented by C++ to be operated on the embedded devices. All software stacks are also implemented only in C/C++.
  • Real-time: mROS 2 employs the real-time kernel (e.g., TOPPERS kernel) as the runtime platform in order to enhance the real-time capability.

Supported platform

Since this repository itself only maintains the communication layer of mROS 2, we also publish the implementation on the embedded board using this layer and the embedded kernel. Please see each repository to learn how to use it.

name kernel board
mros2-asp3-f767zi TOPPERS/ASP3 STM32 NUCLEO-F767ZI
mros2-mbed Mbed OS 6 Mbed enabled boards having an Ethernet port (See detail)

Please let us know if you have a request for a support of board/kernel, or if you could implement this layer on another platform.

License

The source code of this repository itself is published under Apache License 2.0.
Please note that this repository contains embeddedRTPS and its third party libraries as the submodule, and also check their Licenses.

Comments
  • header_generator.py generated file with wrong file name

    header_generator.py generated file with wrong file name

    environment

    • Ubuntu 20.04
    • ROS2 foxy
    • mbed OS 6
    • NUCLEO_F767ZI

    When I tried to generate Transform.hpp from Transform.msg with header_generator.py, the generated file name wasTransfor.hpp. Maybe this code is the cause. https://github.com/mROS-base/mros2/blob/d66f3b15bb5f3cdf5f889ab0baa2bd5bd9cb5710/mros2_header_generator/msg_data_generator.py#L16

    rstrip() removes the trailing characters from the string. In this case, it removes ".msg" from Transform.msg, but it removes all combines of.msg such as m, ms , g and so on. Therefore, not Transform.hpp but Transfor.hpp was generated.

    opened by TatsukiNishimura 4
  • Initial (bit rough) porting to Mbed environment.

    Initial (bit rough) porting to Mbed environment.

    As I've reported below, I have some trivial problems to compile your mros2 for Mbed environment. https://www.slideshare.net/smorita1/mros2-on-mbed

    We know to implement an OS abstraction layer for the potability. But, it might be beneficial to port it , without such a layer, to another OS directly, as a first step.

    opened by smoriemb 2
  • Bump to Foxy

    Bump to Foxy

    Current implementation only supports the communication to Dashing distribution on the host. We need to support the communication to Foxy (and Galactic).

    opened by takasehideki 2
  • bump v0.4.0 with newer embeddedRTPS

    bump v0.4.0 with newer embeddedRTPS

    mros2 is going to v0.4.0!! This will fix #4

    • track embeddedRTPS to newer version
      • the biggest contribution is multicast support!!
      • current version in mros2 is 1410a87, that is used in the latest embeddedRTPS-STM32
      • we will use the implementation of the original repository as it is from this version (IOW, no modification is necessary dedicated for mros2)
    • mros2-posix has been published as the new supported platform!!
    • Other minor but important fixes have been made.
    • NOTE: mros2-asp3-f767zi has not been tracked yet,,, (see https://github.com/mROS-base/mros2-asp3-f767zi/issues/74)

    Please just a moment for merging!! We need to revise README, and test this branch v0.4.0 with mros2-mbed (maybe by @s-hosoai). After that, I will merge this PR and create new release/tag as v0.4.0.

    opened by takasehideki 1
  • Bump to Humble Hawksbill

    Bump to Humble Hawksbill

    Humble Hawksbill, that is the latest LTS (until May 2027), has been released!! https://discourse.ros.org/t/ros-2-humble-hawksbill-released/25729

    We should check whether mROS 2 on various platforms work well with this distribution on Ubuntu 22.04. If not, some tasks will happen to follow up the new world.

    opened by takasehideki 1
  • [trial -> failed] merge custom MsgType feature to v0.4.0_rc

    [trial -> failed] merge custom MsgType feature to v0.4.0_rc

    v0.4.0_rc has been prepared to mros2-posix. It does not currently have the feature to treat custom MsgType for Topic communication. This PR tries to realize it.

    opened by takasehideki 1
  • fix for posix cmake build support

    fix for posix cmake build support

    Background

    mros2 is for embedded machines, but I'm trying to run mros2 on Linux process using embeddedRTPS-Linux.

    Problem

    • cmake
      • now CMakeLists.txt is for mbed, but mros2-posix needs some additional commands.
    • warning
      • now address debug print is for 32bit, but mros2-posix is for 64bit. so compile warning is occured.

    Fix

    • cmake
      • cmake_minimum_required and project commands are added
      • cmake-build folder is added
    • warning
      • address debug print is deleted.
    opened by esm-tmori 1
  • fix compile error for posix-mros2

    fix compile error for posix-mros2

    Background

    mros2 is for embedded machines, but I'm trying to run mros2 on Linux process using embeddedRTPS-Linux.

    Problem(compile error for posix mros2)

    1. __dso_handle is not needed
    2. callback_handler is accessing private member data of ReaderCacheChange class

    Fix

    1. __dso_handle is compiled only defined USE_ASP3_FOR_STM macro
    2. use getData() instead of accesing private member data
    opened by esm-tmori 1
  • refactoring mROS2

    refactoring mROS2

    概要

    mROS-base/mros2-asp3-f767zi#33 を参照する.

    変更内容

    関連issuesを参照してください.

    ビルド手順

    mROS-base/mros2-asp3-f767zi#33 を参照する.

    関連issues

    mROS-base/mros2-asp3-f767zi#30:refactoring source tree and submodules mROS-base/mros2-asp3-f767zi#31:plan and status of refactoring directory/file structure mROS-base/mros2-asp3-f767zi#32:Modularization Issue Response

    opened by ryoto-takashima 1
  • remove generation of header_includer

    remove generation of header_includer

    Since it was just included in two stages, mros2.cpp will include templates.hpp which will be generated into platform's workspace directly from mros2.cpp

    opened by takasehideki 0
  • move makefiles to mros2-asp3-f767zi

    move makefiles to mros2-asp3-f767zi

    Since makefiles/ are specific to the target about mros2-asp3-f767zi (mros2 with TOPPERS/ASP3 kernel and STM32CubeMX lib), we decided to move these files to mros2-asp3-f767zi repository.

    opened by takasehideki 0
  • formatten template files for generating header files of msgtype

    formatten template files for generating header files of msgtype

    mros2_header_generator generates the header files of message types for mROS 2. Since the template files for this is not formatted, generated files also will not. We need to format the below template file. https://github.com/mROS-base/mros2/blob/main/mros2_header_generator/header_template.tpl

    opened by takasehideki 0
Releases(v0.4.0)
  • v0.4.0(Oct 18, 2022)

    • track embeddedRTPS to newer version
      • the biggest contribution is multicast support!!
      • current version in mros2 is 1410a87, that is used in the latest embeddedRTPS-STM32
      • we will use the implementation of the original repository as it is from this version (IOW, no modification is necessary dedicated for mros2)
    • mros2-posix has been published as the new supported platform!!
    • Other minor but important fixes have been made
    • NOTE: mros2-asp3-f767zi has not been tracked yet,,, (see https://github.com/mROS-base/mros2-asp3-f767zi/issues/74)

    Full Changelog: https://github.com/mROS-base/mros2/compare/v0.3.2...v0.4.0

    Source code(tar.gz)
    Source code(zip)
  • v0.3.2(Mar 11, 2022)

    What's Changed

    • clear cntPub appropriately by @Hibagon1go in https://github.com/mROS-base/mros2/pull/28
    • remove generation of header_includer by @takasehideki in https://github.com/mROS-base/mros2/pull/29

    Full Changelog: https://github.com/mROS-base/mros2/compare/v0.3.1...v0.3.2

    Source code(tar.gz)
    Source code(zip)
  • v0.2.3.1(Feb 23, 2022)

    For mros2-mbed users, bump embeddedRTPS PR#9 to v0.2.3 (move include/rtps/config.h to each target repository)

    https://github.com/mROS-base/embeddedRTPS/pull/9 https://github.com/mROS-base/embeddedRTPS/commit/c3acc8997b4100a8ca0ec59d89c7f83962e18cc0

    Full Changelog: https://github.com/mROS-base/mros2/compare/v0.2.3...v0.2.3.1

    Source code(tar.gz)
    Source code(zip)
  • v0.3.1(Feb 23, 2022)

    What's Changed

    • move include/rtps/config.h to each target repository in https://github.com/mROS-base/mros2/pull/26
    • fix tiny typo in variable name in https://github.com/mROS-base/mros2/pull/27

    Full Changelog: https://github.com/mROS-base/mros2/compare/v0.3.0...v0.3.1

    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Feb 20, 2022)

    • Support custom MsgTypes for topic communication :tada: by @Hibagon1go #25
      • Since this release is very begining of new feature, the documentation is still poor. And also we recognize there are many issues to improve convenience of usage. Please feel free to ask us and suggest anything you want!
    • Fix CMakeLists and its structure for future releases #24

    Full Changelog: https://github.com/mROS-base/mros2/compare/v0.2.3...v0.3.0

    Source code(tar.gz)
    Source code(zip)
  • v0.2.4(Feb 20, 2022)

    This is a pre-release as a footprint about awesome research results

    • Trial support for custom msgtype. Full support has been published on v0.3.0
    • This work will be published at ETNET 2022.
    Source code(tar.gz)
    Source code(zip)
  • v0.2.3(Dec 23, 2021)

    • use getData() instead of accesing private member data #20 (thanks @esm-tmori !!)
    • remove embeddedRTPS/src/rtps.cpp from cmake/make target #21
    • move target specific code/file to mros2-asp3-f767zi repository
      • the definition of __dso_handle #22 (also related to #20)
      • makefiles/ to specify build objects #23
    Source code(tar.gz)
    Source code(zip)
  • v0.2.2(Dec 16, 2021)

  • v0.2.1(Dec 13, 2021)

  • v0.2.0(Oct 29, 2021)

  • v0.1.4(Sep 13, 2021)

  • v0.1.3(Sep 12, 2021)

  • v0.1.2(Sep 11, 2021)

  • v0.1.1(Aug 19, 2021)

  • v0.1.0(Aug 18, 2021)

Owner
null
Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++, the architecture and usage like Cobalt Strike

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Young 1.4k Jan 3, 2023
Khepri is a Cross-platform agent, the architecture and usage like Coblat Strike but free and open-source.

Khepri Free,Open-Source,Cross-platform agent and Post-exploiton tool written in Golang and C++ Description Khepri is a Cross-platform agent, the archi

Young 1.4k Dec 30, 2022
TiEtwAgent - PoC memory injection detection agent based on ETW, for offensive and defensive research purposes

TiEtwAgent - ETW-based process injection detection This project was created to research, build and test different memory injection detection use cases

Filip Olszak 187 Dec 20, 2022
Identify I2C devices from a database of the most popular I2C sensors and other devices

I2C Detective Identify I2C devices from a database of the most popular I2C sensors and other devices. For more information see http://www.technoblogy.

David Johnson-Davies 21 Nov 29, 2022
An optimized "RTOS" (more than HAL but less than RTOS) for ROV controling and getting sensor data

Nitori-ROV-OS 一个专门为水下机器人(ROV、AUV)进行优化的实时操作系统,暂命名为 Nitori,中文名 荷取 可以通过修改硬件兼容层(Port)进行移植 预计最初版本支持stm32f407和stm32h750,并在实验室目前的水下机器人中进行部署 系统分为四层,六个主要组件: 硬件

Doublues_G 2 Jan 10, 2022
Clean tab-less browser based on webkit2 and GTK4.

Rose Browser Simple browser based on webkit2-5.0/GTK4. Showcase Requirements In order to build rose you need gtk4 and webkit2gtk-5.0. In order to use

Rosé 287 Jan 2, 2023
Online multi-agent trajectory planner using linear safe corridor (LSC)

lsc_planner This package presents an efficient multi-agent trajectory planning algorithm which generates safe trajectories in obstacle-dense environme

Jungwon Park 33 Dec 27, 2022
A repo with the source code for Nullboard Backup Agent

This is a repo with the source code for Nullboard Backup Agent - a small companion utility for Nullboard that lives in the Windows system tray and acts as a storage provider for making automatic backups of NB's boards.

Alexander Pankratov 7 Dec 30, 2022
A Minimal Web Browser with Built-in Adblocker in Less Than 100 Lines of Code

A Minimal QtWebEngine Web Browser with Adblocker How Does It Work This is a minimal network filter implementation using QWebEngineUrlRequestIntercepto

Penk Chen 19 Jul 23, 2022
Itpp - IT++ library mirror/fork. C++ library of mathematical, signal processing and communication classes and functions.

Introduction ************ IT++ is a C++ library of mathematical, signal processing and communication classes and functions. Its main use is in simula

null 19 Oct 20, 2022
A place to collaborate on code for the Embedded.fm book club. Currently reading "STM32 ARM Programming for Embedded Systems".

Welcome to the Book Club Code site! This is a place for the Embedded.fm book club to collaborate and learn together. Repo Structure Guide Top-level fo

Peter Griffin 11 Jul 21, 2022
Embedded Flutter runtime targeting Embedded Linux with Wayland

ivi-homescreen IVI Homescreen for Wayland Strongly Typed (C++) Lightweight Clang 11 Release Stripped = 151k GCC 9.3 Release Stripped = 168k Source run

null 170 Dec 13, 2022
Newlib for Xuantie RISC-V CPU, a lightweight C library for embedded systems.

README for GNU development tools This directory contains various GNU compilers, assemblers, linkers, debuggers, etc., plus their support routines, d

T-Head Semiconductor Co., Ltd. 5 Sep 9, 2022
Microshell - a lightweight pure C implementation of shell emulator dedicated for embedded bare-metal systems.

MicroShell Lightweight pure C implementation of virtual shell, compatible with VT100 terminal. Support root tree, run-time mounting paths, global comm

Marcin Borowicz 110 Jan 5, 2023
Lightweight date, time & cron utilities for embedded systems

Lightweight Date, Time & Cron Platform independent Date, Time & Cron Utility library Read first: Documentation Features Written in ANSI C99 Platform i

Tilen Majerle 17 Oct 31, 2022
An easy to build CO2 Monitor/Meter with Android and iOS App for real time visualization and charting of air data, data logger, a variety of communication options (BLE, WIFI, MQTT, ESP-Now) and many supported sensors.

CO2-Gadget An easy to build CO2 Monitor/Meter with cell phone App for real time visualization and charting of air data, datalogger, a variety of commu

Mariete 30 Dec 17, 2022
CredBandit - Proof of concept Beacon Object File (BOF) that uses static x64 syscalls to perform a complete in memory dump of a process and send that back through your already existing Beacon communication channel

CredBandit CredBandit is a proof of concept Beacon Object File (BOF) that uses static x64 syscalls to perform a complete in memory dump of a process a

anthemtotheego 188 Dec 25, 2022
I/O Testing or PC program <=> Arduino communication

Arduino-CLI This sketch helps you to debug every I/O pin input or output. So you don't have to program yourself only for testing each pin :) Beside of

Athaariq 30 Jan 3, 2022
Cool kernel communication method.

Shared-FlushFileBuffers-Communication Cool kernel communication method. unknowncheats post: https://www.unknowncheats.me/forum/anti-cheat-bypass/44847

null 56 Dec 29, 2022