MROS
A light-weighted runtime environment for ROS nodes onto embedded micro-controller
Install / Use
/learn @mROS-base/MROSREADME
mROS
A lightweight runtime environment of ROS1 nodes onto embedded systems
Supported Platform
- Embedded board
- Host devices
- ROS Kinetic with Ubuntu 16.04
Development Platform/Tools for Host PC
- IDE: Atollic TrueSTUDIO
- Windows 10 Pro
- Ubuntu 16.04.5
- Currently we tested v.8.0.0, v.9.0.1 and v.9.1.0
- CUI
- macOS High Sierra 10.13.6 / arm-none-eabi version 5.4.1 20160609 (Launchpad distribution)
- Ubuntu 16.04 LTS / gcc-arm-none-eabi version 4.9.3 20150529 (apt package)
- $ sudo apt install gcc-arm-none-eabi
- Ubuntu 14.04.5 LTS / gcc-arm-none-eabi version 4.9.3 20150529 (Launchpad distribution)
Please let us know if you could develop and build another host OS.
SW Components
- asp-gr_peach_gcc-mbed
- Open-source Software Platform Based on TOPPERS/ASP Kernel, mbed and Arduino Library for Renesas GR-PEACH.
- located at
asp_mbed/asp-gr_peach_gcc-mbedas gitsubmodule
- opencv-lib
- located at
opencv-libas gitsubmodule
- located at
- TOPPERS configurator
- located at
asp_mbed/cfg_binary - (for Win) cfg-mingw-static-1_9_6.zip
- (for Linux) cfg-linux-static-1_9_6.gz
- $ sudo apt install libstdc++6 lib32stdc++6
- (for macOS) cfg-osx-static-1_9_5.gz
- located at
Features
- Topic based publish/subscribe communication with host devices (such as laptop)
- Automatic generation of header files for customized message types
- We currently support std_msgs (except for Time, Duration and Header) and sensor_msgs/Image.msg
- In addition, we support
MessageTypesas customized message types for communication. See mros_ws/custom_pubsub as the examples.
How to get
$ git clone --recursive https://github.com/tlk-emb/mROS
--recursive option is mandatory since we use git submodules for SW components
Build
For host device (ROS applications)
source /opt/ros/kinetic/setup.bash
cd ros_catkin_ws/
catkin_make
For embedded device (mROS applications)
Configuring IP adderss
- Edit
mros_ws/<app>/mros_config/mros_sys_config.h- Set the value of
MROS_MASTER_IPADDRas the IP address of the host PC - Set the value of
MROS_NODE_IPADDRas the IP address of the embedded device,
or set the value ofMROS_NODE_USE_DHCPas1
- Set the value of
(Optional) For generation of customized message
- Describe
GEN_MSGS = trueon app's Makefile - Edit app's JSON file such as
mros_ws/custom_pubsub/msg_app.jsonfor the customization of message types if you prefer- Specify headers for message types that are used in your app such as follows
"including_msgs": [ "custom_pubsub/UserTypeTest.h" ]- Specify depending packages for message types such as
"depending_packages": [ "std_msgs", "custom_pubsub" ] python2andjinja2python package is needed to operate the message generation scriptpip install jinja2
For CUI (terminal)
- cd to project dir such as
mros_ws/string_pubsub/ - Describe
USE_TRUESTUDIO = falseor comment-out such as#USE_TRUESTUDIO = trueon Makefile $ make
For TrueSTUDIO
- Specify and open
mros_wsas workspace - Import
mros_ws/*such asstring_pubsub - Describe
USE_TRUESTUDIO = trueon Makefile - You can build and debug the project on GUI
Examples
string_pubsub
- pub/sub communication between host/ROS and embedded/mROS.
- Each message is realized as
Stringtype.
- Each message is realized as
- mROS publishes the distance to obstacle by ultrasonic sensors
- We use SainSmart HC-SR04
- Start/Stop of publication can be switched by USER push-SW
- mROS subscribes the command for blinking LED
red/green/bluecan be published from host/ROS
custom_pubsub
- pub/sub communication with customized MessageType
- custom_pub_sub/UserTypeTest
- PersonName nameVal
- string firstName
- string lastName
- LEDValues ledVal
- float32 red
- float32 green
- float32 blue
- PersonName nameVal
- mROS subscribes the customized message
- Print full name
- Blink LED
- mROS publishes the subscription data to host device
image_publisher
- mROS publishes image data from camera
- GR-PEACH AUDIO CAMERA Shield is needed
- sensor_msgs/Image is used as the communication type
- Host can subscribe the image with
$ rosrun image_view image_view /image:=/image_raw
Limitation & TODO
- Currently we cannot support following primitive types
- Time
- Duration
- Header
- Support the edge detection example application
License
- This repo has been distributed under TOPPERS License
- Submodules (asp_mbed/asp_gr_peach_gcc-mbed and opencv-lib) include another Licenses, such as MIT and GPLv2. Please check them for details.
References
-
Research papers
- mROS: A Lightweight Runtime Environment of ROS 1 nodes for Embedded Devices
- Authors: Hideki Takase, Tomoya Mori, Kazuyoshi Takagi and Naofumi Takagi
- Journal of Information Processing, Vol. 28, pp. 150-160, Feb 2020.
- mROS: A Lightweight Runtime Environment for Robot Software Components onto Embedded Devices
- Authors: Hideki Takase, Tomoya Mori, Kazuyoshi Takagi and Naofumi Takagi
- The 10th International Symposium on Highly-Efficient Accelerators and Reconfigurable Technologies (HEART 2019), Nagasaki, Jun 2019.
- Work-in-Progress: Design Concept of a Lightweight Runtime Environment for Robot Software Components Onto Embedded Devices
- Authors: Hideki Takase, Tomoya Mori, Kazuyoshi Takagi and Naofumi Takagi
- 2018 International Conference on Embedded Software (EMSOFT), pp. 1-3, Turin, Italy, Sep 2018.
- doi: 10.1109/EMSOFT.2018.8537199
- mROS: A Lightweight Runtime Environment of ROS 1 nodes for Embedded Devices
-
Qiita article (in Japanese)
- https://qiita.com/takasehideki/items/7d783ecd605dcee29ee0
Related Skills
node-connect
354.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
112.2kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
354.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
354.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
