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.
- 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
- Core library written in C for portability and performance
- SWIG-based bindings for Python, Java, Processing and C#
- Use the PS Move as mouse or keyboard on your computer
- Control DJing programs such as Mixxx with the gyroscope (Mixxx patch)
- Point the camera towards the screen and use it as an interactive whiteboard
- Light up the RGB LEDs to create your own Ambient Orb
- Games using PS Move API: J.S. Joust and Edgar Rice Frotteur
- Third party projects: Shake and Rattle, Octopi Wald Street, MPDmove, UniMove, psmoveinput, koffer, Head Tracking Test, Dynamite Juggle, Barrels & Shields, Magnetize Me, Kaliber, MoveP5, Whack-A-Cube, Moshpit Hero, UniMoveX - UniMove Extended, Positional Tracking with Unity and PS Move/PS Eye (video)
- Unity3D support: UniMove C# bindings (Github) (maintained by the Copenhagen Game Collective)
- Community-based support via the PS Move Mailing List
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:
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:
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:
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:
As a library, the PS Move API is aimed at developers. These downloads might not be particularly useful for end users.
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.
- Windows: PS Move API 3.0.0 Windows 7/8 binaries
- Mac OS X: PS Move API 3.0.0 Mac OS X 10.8 binaries
- Ubuntu Linux: PS Move API 3.0.0 Ubuntu 12.10 PPA
- openSUSE: PS Move API for openSUSE (by Mikhail Sapozhnikov)
- Fedora: Fedora 17, Fedora 18 (by Mikhail Sapozhnikov)
Developers wanting to use Processing for developing PS Move applications can use our Processing library:
- Processing: PS Move API 3.0.0 for Processing (Mac OS X only)
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
- Current release: psmoveapi-3.0.0.tar.gz (2012-12-12)
- psmoveapi_2.tar.gz (2011-12-03)
- psmoveapi_1.tar.gz (2011-03-24)
The API documentation for the PS Move API releases can be obtained here as HTML in a ZIP file:
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
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.
The current development version of PS Move API is hosted on Github:
git clone git://github.com/thp/psmoveapi.git
For discussions and community support, please subscribe to the PS Move Mailing List.