Latest version: 3.0.0 (2012-12-12)
Download · ChangeLog

The PS Move API is an open source library for Linux, Mac OS X and Windows to access the Sony Move Motion Controller via Bluetooth and USB directly from your PC without the need for a PS3. Tracking in 3D space is possible using a PS Eye (on Linux and Windows), an iSight camera (on Mac OS X) or any other suitable camera source.

The PS Move API is used as the library implementation of the MoveOnPC project, and has successfully participated in Google Summer of Code 2012. Detailed documentation can be found in my master's thesis about sensor fusion.

Core Features

  • Pairing of Bluetooth controllers via USB
  • Setting LEDs and rumble via USB and Bluetooth
  • Reading inertial sensors and buttons via Bluetooth
  • Tracking up to 5 controllers in 3D space via OpenCV
  • 3D orientation tracking via an open source AHRS algorithm
  • Sensor fusion for augmented and virtual reality applications

Supported Languages

  • Core library written in C for portability and performance
  • SWIG-based bindings for Python, Java, Processing and C#

Example Applications

Need Help?


Architecture

The PS Move API C library is split into three modules. The Core Module is always needed to communicate with the controller. The Vision Tracker Module is optional and only required when the 3D position should be tracked. The Sensor Fusion module is also optional (it requires both the Core and Tracker modules) and can be used for developing virtual and augmented reality applications:

[Library architecture]

On top of the C library, language bindings and modules for existing frameworks have been developed. These are distributed with the PS Move API, and provide the same functionality as the C library. If you are not using Unity, you can use the SWIG-based C# bindings. For Unity users, the UniMove bindings are the recommended way of interfacing with PS Move API - they have recently been updated. Users of the Qt library should use the C library directly:

[Language bindings]

To support the pairing of controllers, network sharing and calibration of the PS Move API for different cameras and environments, a set of core utilities is provided with the PS Move API. Features such as pairing are also available as API functions, so developers can integrate pairing into their own application experience if desired:

[Essential utilities]


Feature Showcase

The PS Move API Showcase video on YouTube gives you a quick overview of what you can do with it - the PS Move API comes with full source code of all example applications shown here:


Downloads

As a library, the PS Move API is aimed at developers. These downloads might not be particularly useful for end users.

Binary releases

These binary releases provide a quick way to try out the PS Move API and start developing applications. For tighter integration and more possibilities, the source code release (see below) should be used.

Developers wanting to use Processing for developing PS Move applications can use our Processing library:

Source code releases

The source code release includes the PS Move API library as well as all the example applications, utilities and language bindings. Build instructions can be found in the README file.

Documentation package

The API documentation for the PS Move API releases can be obtained here as HTML in a ZIP file:


Documentation

Full API documentation for the C library is provided via Doxygen. To build the HTML documentation corresponding to the source release (or Git checkout) you are using, simply run doxygen in the root of your source tree.

Further documentation, as well as a detailed description of the methodology and algorithms used, plus performance measurements and comparisons can be found in my master's thesis about sensor fusion.

Some additional documentation and historic information can be found on the old PS Move API webpage.


Development

The current development version of PS Move API is hosted on Github:

git clone git://github.com/thp/psmoveapi.git

Bug reports should be submitted to the Issue Tracker, patches should be submitted as Pull Request on Github.

For discussions and community support, please subscribe to the PS Move Mailing List.