rososc is a collection of ROS nodes and software utilities for interacting with the Open Sound Control protocol. Open Sound Control is a messaging system for communication with computers and media hardware (synthesizer, tactile instruments, synthesizers, etc) using either the TCP or UDP protocol.

Additionally, most OSC clients leverage the Bonjour/Zero Configuration Networking standard to add automatic resolution of hostnames and network services.


The current (beta) version is 0.2. While most of the functionality and features have been tested, this should still be considered fairly experimental. Please report all bugs and feature requests to the link at the bottom of this page.

Installing on Ubuntu

Due to the way that rosdep works, you must have pip (Python package manager) installed before ROSOSC will install successfully. To accomplish this:

  • sudo apt-get install python-pip



The core functionality of rososc is contained in osc_bridge. Mostly, end users will not interact with this packages, as it mainly provides core functionality to extend to other nodes.

osc_bridge handles the basic interaction with the ROS environment, Bonjour network browsing and registration system, as well as the Open Sound Control protocol.

This package uses txosc, a Python and Twisted implementation of the Open Sound Control protocol, written by Arjan Scherpenisse and Alexandre Quessy. Additionally, it uses the capabilities of pybonjour to handle Bonjour network browsing and registration.


touchosc_bridge provides the connector between the TouchOSC iOS and Android applications. It handles the base interaction between TouchOSC and the device hardware and the ROS system that is running on a host computer. The transactions between the device and ROS are via UDP.

A TouchOSC layout is composed of 1-25 tabpages. Each of these tabpages may contain any number of controls, which are independently addressed over the OSC protocol. A change in any of these controls will be sent to the touchosc_bridge, which will then trigger corresponding callback functions.

touchosc_bridge provides a plugin architecture using Python modules called tabpage handlers. A tabpage handler is set up to receive messages from a tabpage (and it's aliases), and can be used to create new ways of easily interacting with TouchOSC layouts.

Included is a default tabpage handler, which will provide a ROS Publisher and Subscriber for each control in a layout file. Consult the touchosc_bridge documentation for more information.

Included Handlers

rososc currently includes two handlers that you can use with your own project. These are:

  • teleop_handler - for publishing command velocities from an iPhone or iPad to your robot or simulated robot. It includes some deadman capabilities, so velocities zero out when the user is not touching the screen, or closes the app. It also features support for multiple clients, with a client "lockout" feature. Consult the package documentation for more information.

  • diagnostics_handler - for interacting with diagnostics and aggregate diagnostics data being published by your hardware (or simulation). Allows for an at-a-glance look of system status, as well as detailed views for the most recent incoming diagnostics message. Also features the ability to pause data at a point in time to investigate possible failures. Consult the package documentation for more information.


pytouchosc contains a library, PyTouchOSC, for interacting with .touchosc layout files.

It also includes the layoutserver_node, which allows the user to transfer .touchosc layout files to the device.

Getting Started

To get started, it is recommended that you try out the ROSOSC Tutorials. These tutorials show some of the basic and more advanced features of the rososc stack.

Report a Bug

Use Github Issues to report bugs or request features

Use answers.ros.org to Ask Questions about this stack.

Wiki: rososc (last edited 2013-03-09 04:50:27 by MichaelGratton)