Home

Awesome

Menoh ROS Package

ROS inteface of Menoh library by @pfnet-research.

The MenohNodelet loads ONNX model and export input and output as ROS topics.

Thanks to the power of Menoh, it can run neural network models efficiently without GPGPUs.

Installation

Catkin tools

$ mkdir -p catkin_ws/src
$ cd catkin_ws
$ catkin init
$ cd src
$ git clone https://github.com/akio/menoh_ros.git
$ catkin build

APT Package

In preparation now.

Architecture

Following diagram depicts the architecture of MenohNodelet pipeline.

        |
        | Any Input
        V
+-----------------+
| InputNode(let)  |
+-----------------+
        |
        | std_msgs/Float32MultiArray
        V
+-----------------+
| MenohNodelet    |<--- ONNX Model
+-----------------+
        |
        | std_msgs/Float32MultiArray
        V
+-----------------+
| OutputNode(let) |
+-----------------+
        |
        | Any Output
        V

Provided Nodelets

MenohNodelet

MenohNodelet is a core nodelet of this package. This nodelet loads ONNX model file and export them as std_msgs/Float32MultiArray topics. When it receives a input message, it loads the message into the neural network model. After the neural network computes the output, the nodelet translate the output into a ROS message and publish it.

ImageInputNodelet

This nodelet subscribes sensor_msgs/Image and converts it to std_msgs/Float32MultiArray and publishes it to MenohNodelet.

CategoryOutputNodelet

This nodelet subscribes std_msgs/Float32MultiArray and lodas category label data from a textfile. When it receives a message, it compute softmax of the message and publish a corresponding label line as a std_msgs/String.

Example

ROS computation graph version of VGG16 example in Menoh

$ python scripts/retrieve_data.py
$ roslaunch launch/vgg16.launch

See launch/vgg16.launch as an example.

License

This package is available under terms of the MIT License.