Introducing ROStful: ROS over RESTful web services

| No Comments | No TrackBacks
From Ben Kehoe via ros-users@

Hello all,
ROStful is a lightweight web server for making ROS services, topics, and actions available as RESTful web services. It also provides a client proxy to expose a web service locally over ROS.

Here at Berkeley we are working to bring Software as a Service (SaaS) paradigms into robotics. We have created ROStful as a starting point for creating SaaS tools using existing ROS services and actions.

ROStful web services primarily use the rosbridge JSON mapping for ROS messages. However, binary serialized ROS messages can be used to increase performance.

The purpose of ROStful is different from rosbridge: rosbridge provides an API for ROS through JSON using web sockets. ROStful allows specific services, topics, and actions to be provided as web services (using plain get and post requests) without exposing underlying ROS concepts.
The ROStful client proxy, however, additionally provides a modicum of multi-master functionality. The client proxy is a node that connects to a ROStful web service and exposes the services, topics, and actions locally over ROS.

The ROStful server is WSGI-compatible and can therefore be used with most web servers like Apache and IIS.

Try it out (there are no dependencies!), and let us know what you think!

Two minor notes:
Serialized ROS messages are sent with the MIME type 'application/vnd.ros.msg'. If there's a standard anyone else is using, let us know.
In the absence of a standard component description format, ROStful uses an INI-based format that may be of interest for creating such a standard description. See here for details.

No TrackBacks

TrackBack URL:

Leave a comment

Find this blog and more at

Monthly Archives

About this Entry

This page contains a single entry by Tully Foote published on February 24, 2014 4:05 PM.

Announcing ROS Kong 2014 was the previous entry in this blog.

Mathworks Releases TurtleBot Matlab API and Demo is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.