Giter VIP home page Giter VIP logo

mros's Introduction

mROS

A lightweight runtime environment of ROS1 nodes onto embedded systems

Supported Platform

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-mbed as gitsubmodule
  • opencv-lib
    • located at opencv-lib as gitsubmodule
  • 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

Features

  • Topic based publish/subscribe communication with host devices (such as laptop)
  • Automatic generation of header files for customized message types

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_IPADDR as the IP address of the host PC
    • Set the value of MROS_NODE_IPADDR as the IP address of the embedded device,
      or set the value of MROS_NODE_USE_DHCP as 1
(Optional) For generation of customized message
  • Describe GEN_MSGS = true on app's Makefile
  • Edit app's JSON file such as mros_ws/custom_pubsub/msg_app.json for 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"
    ]
    
  • python2 and jinja2 python 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 = false or comment-out such as #USE_TRUESTUDIO = true on Makefile
  • $ make
For TrueSTUDIO
  • Specify and open mros_ws as workspace
  • Import mros_ws/* such as string_pubsub
  • Describe USE_TRUESTUDIO = true on 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 String type.
  • 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 / blue can 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
  • 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
  • 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

References

mros's People

Contributors

esm-tmori avatar ken551 avatar moritomoya avatar takasehideki avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

mros's Issues

construct README.md

README.md doc becomes too long.
We should describe README doc separately for each item.

related: #24 #25

add documents for customizing configuration

We should describe the method to configure the environment mROS apps.
We can setup the environments by editing mros_ws/<app>/mros_cofig files.
e.g.:

  • IP of ROS master
  • how to determine IP of mROS (DHCP or static)
  • priority for mROS user task
  • memory size for topics

Visual Studio Codeへの移行

IDE環境をTrueSTUDIOからVisual Studio Codeに移行させる
理由:

  • TrueSTUDIOの最近バージョンではOpenOCD連携ができなくなった模様
    • VSCodeなら頑張れば連携可能
  • コンパイラの共存を考えなくて良い
    • 現状は arm-none-eabi / arm-atollic-eabi の両方をテストする必要があった
    • arm-none-eabi だけにしたい
  • 頑張れば settings.json 次第でMacでも動作サポートできる

branchの整理

branchが多くなりすぎている
mergeしたもの,デモ用の一時的なもの,もう開発が進まないもの,などを削除していって,整理する.

Melodic support

We are planning to support Melodic to be connected from mROS nodes.
First, we check whether mROS can communicate to Melodic environment. If it is not possible, we should refine the stack of mROS.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.