Overview

The main components of using TouchOSC with ROS are:

  • The TouchOSC app for iPad or iPhones
  • A TouchOSC layout, which is composed of tabpages

  • The touchosc_bridge ROS node, which is composed of tabpage handlers

TouchOSC

From hexler.net:

  • TouchOSC is a modular OSC and MIDI control surface for iPhone / iPod Touch / iPad. It supports sending and receiving Open Sound Control messages over a Wi-Fi network using the UDP protocol.

TouchOSC is published and created by hexler (http://hexler.net), and is available on the [Apple App Store for 4.99](http://itunes.apple.com/app/touchosc/id288120394?mt=8).

TouchOSC allows for the creation of touch interactive control layouts separated onto "tabpages". The app supports up to 25 tabpages in a single layout file. Layouts are created using the freely available [TouchOSC Editor](http://hexler.net/software/touchosc). For more information on all of the controls available, as well as their behavior with ROS, check out the Controls Reference.

Video Demo

Quick Reference

A few links of interest:

Node API

This is the node configuration regardless of which tabpage handlers are loaded. For parameters for individual tabpage handlers, check the respective documentation.

touchosc_bridge

TouchOSC to ROS bridge node

Subscribed Topics

touchosc_bridge/vibrate (std_msgs/Empty)
  • When a message is received, will turn on the vibrate motors of all capable devices for approximately half a second
touchosc_bridge/tabpage (touchosc_msgs/Tabpage)
  • When a message is received, change tabpages on all clients. Populate msg.header.frame_id with an IP address to change the tabpage on a single client.

Published Topics

touchosc_bridge/accxyz (sensor_msgs/Imu)
  • Accelerometer data from iOS clients. msg.header.frame_id will contain the IP address of the sending client.
touchosc_bridge/tabpage (touchosc_msgs/Tabpage)
  • Sent when a client switches tabpages. Contains tabpage name. msg.header.frame_id will contain the IP address of the sending client.
/diagnostics (diagnostic_msgs/DiagnosticArray)
  • Diagnostic information about the state of the touchosc_bridge node. Also includes diagnostic_msgs/DiagnosticStatus messages from each of the registered tabpage handlers.

Parameters

~osc_name (string, default: Test)
  • Name of the node as it will appear in the Bonjour/Zeroconf system.
~port (int, default: 8000)
  • Port that the OSC server will listen on
~regtype (string, default: _osc._udp)
  • Bonjour registration type of the OSC server
~print_fallback (bool, default: False)
  • setting the parameter to "True" will cause unhandled incoming OSC messages to be printed to the console.
~vibrate (bool, default: True)
  • When True, the node will create a touchosc_bridge/vibrate subscriber.
~publish_accel (bool, default: True)
  • When True, the node will publish iPod and iPad accelerometer data on touchosc_bridge/accxyz. Note: "Send Accelerometer Data" must be enabled in the TouchOSC application for this to work
~publish_diag (bool, default: True) ~tabpage_sub (bool, default: True)
  • When True, the node will send tabpage switch messages received on the touchosc_bridge/tabpage topic to clients.
~load_default (bool) ~layout_path or layout_path (string, default: None)
  • A path to a group of layout files to use with touchosc_bridge.
~layouts or layouts (list, default: None)
  • A list of layout files to use with touchosc_bridge
~layout_file or layout_file (path, default: None)
  • Path (including filename) of a layout to use with touchosc_bridge

Wiki: touchosc_bridge (last edited 2011-12-21 18:12:33 by MichaelCarroll)