mROS
                                
                                 mROS copied to clipboard
                                
                                    mROS copied to clipboard
                            
                            
                            
                        A light-weighted runtime environment for ROS nodes onto embedded micro-controller
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" ]
- python2and- jinja2python package is needed to operate the message generation script- pip 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