Difference between revisions of "Playstation Move UDP API"
From Immersive Visualization Lab Wiki
(→Type 'a' message) |
(→Type 'a' message) |
||
Line 85: | Line 85: | ||
|} | |} | ||
*msgType: char - 'a' | *msgType: char - 'a' | ||
− | *msgNo: int - Begins at 0 and increments each 'a' type message | + | *msgNo: int - Begins at 0 and increments each for 'a' type message |
*controller: int - Controller number (starts at 0) | *controller: int - Controller number (starts at 0) | ||
*currButtons: int - Between 0-255. Stores button presses bitwise. | *currButtons: int - Between 0-255. Stores button presses bitwise. |
Revision as of 18:27, 19 January 2016
Contents |
Project Overview
This project is an attempt to create a simple interface to the PS Move API via a local UDP server.
Installation
Download for Windows.
Setting up the Playstation Eye
Adapted from this guide.
- Navigate to /move_api/Install/PS Eye/
- Insert PS Eye into an USB 2.0 port or above. Should appear as 'USB Camera-B4.09.24.1' or something similar in device manager.
- Run Zadig and install libusb-win32 onto 'USB Camera-B4.09.24.1' (Interface 0 on my machine)
- Don't install onto 'Interface 1', this will already have usbaudio installed.
- If no devices appear for installation tick "Options->'List All Devices'"
- Test the performance of the camera with 'test_camera.exe'. Hopefully a video stream appears!
If there is visible tearing/laggy footage:
- Try installing the WinUSB driver with Zadig instead.
- Ensure the Eye is the only USB device connected to the USB hub if possible.
Setting up a Playstation Move Controller
Adapted from this guide.
- Make sure the controller has charge before beginning or you won't be able to pair via bluetooth.
- NOTE: Windows 10 and wall chargers have trouble charging the Move Controller.
- Windows 7 and Mac work from my own testing.
- When the controller is charged pressing the 'PS' button will cause the LED on the controller to flash.
- Navigate to /move_api/Install/PS Move/
- Use the 'psmovepair.exe' utility to save the Bluetooth address to the controller. The util will fail past this point though.
- Warning: This step is easily the most frustrating. The controller seems to pair fairly randomly, once it does pair however you only need to press the 'PS' button to connect the next time. Best of luck!
Run 'psmove-pair-win.exe'.- Press the 'PS' button and allow the utility to run. If the LED stops flashing press the 'PS' button again.
- Basically continue this process until you get a successful connection, there doesn't seem to be a trick to it unfortunately.
- NOTE: If the controller is low on battery a successful connection can look like it's still pairing (flashing LED)
- Once the controller has paired run the 'magnetometer_calibration.exe' utility.
- Rotate the controller until you get a value 250+
- Stand the controller on its end on a flat surface with the 'PS' button facing you.
Using Move Server
Open 'move_udp_server.exe'.
- To calibrate each controller, hold each respectively approx 10cm from the camera.
- At the end of this process you should see 'Server Started'
To listen for data bind to the UDP stream at:
IP: '127.0.0.1' Port: 23459
Data Format
The server sends 2 different messages.
- Type 'a': Move Physical Data (High frequency, around 100hz)
- Type 'b': Move Positional Data (Slower, depends on machine)
Type 'a' message
msgType | msgNo | controller | currButtons | triggerVal | ax | ay | az | gx | gy | gz | mx | my | mz | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Example | a | 1022 | 0 | 128 | 54 | 1.000 | -0.456 | 0.234 | 0.123 | 0.123 | -0.435 | -0.363 | 0.234 | 0.635 |
- msgType: char - 'a'
- msgNo: int - Begins at 0 and increments each for 'a' type message
- controller: int - Controller number (starts at 0)
- currButtons: int - Between 0-255. Stores button presses bitwise.
- CROSS, SQUARE, TRIANGLE, CIRCLE, MOVE, START, SELECT, PS
- eg - 01001000 Means SQUARE and MOVE are pressed.
- triggerVal: int - Between 0-255, 0 means trigger is unpressed, 255 means fully pressed.
- ax, ay, az: float - Accelerometer values. Measured in 'g' m.s-2. Standing the move on its end approx az = -1.
- gx, gy, gz: float - Gyroscope values. Measured in rad.s-1. x-axis pitch, y-axis yaw, z-axis roll.
- mx, my, mz: float - Magnetometer values. Between -1 and 1.
Type 'b' message
msgType | msgNo | controller | tx | ty | tz | ux | uy | trackingMove | |
---|---|---|---|---|---|---|---|---|---|
Example | b | 52313 | 0 | 10.24 | 20.53 | 10.3 | 0.342 | 0.623 | 1 |
- msgType: char - 'b'
- msgNo: int - Begins at 0 and increments each 'b' type message
- controller: int - Controller number (starts at 0)
- tx,ty: float - x and y position of the ps move blob measured in cm from the center of the camera.
- Note that as you move further from the camera you can get further horizontally/vertically
- tz: float - z position of the ps move blob measured in cm.
- ux,uy: float - normalised x and y positions. (between 0 and 1, although the tracker fails around 0.05 and 0.95)
Additional Information
Developers
Software Developer
- Lachlan Smith
Project Advisor
- Jurgen Schulze