CAVE/PSMove

From ETC Public Wiki
Jump to: navigation, search

This page introduces how to use PSMove in the CAVE space, especially for simulating cursor navigation.

What is PSMove?

PlayStation Move is a motion-sensing game controller platform by Sony Computer Entertainment (SCE), first released for the PlayStation 3 (PS3) video game console. Based around a handheld motion controller wand, PlayStation Move uses inertial sensors in the wand to detect its motion, and the wand's position is tracked using a PlayStation webcam (PlayStation Eye for the PlayStation 3, PlayStation Camera for the PlayStation 4). For more information, please visit: [1]

How to use PSMove in the Cave space

The motion of the PSMove is detected by its inertial sensors, and the position is tracked by PlayStation webcam. Because the PlayStation webcam in the Cave is tilted towards the ground, the position information is not accurate in the Cave. We cannot map the PSMove position to the virtual CAVE correctly. If you want to use PSmove like a cursor in the Cave, we recommend to use rotation angles to simulate cursor navigation.

How to implement PSMove cursor in the Cave

There are three screens in the Cave, the left screen, the front screen and the right screen. For each screen, there are four edges, two vertical edges and two horizontal edges. We just use the vertical edges here, so there are four edges which are useful, the left edge of the left screen(edge A), the right edge of the left screen(edge B), the left edge of the right screen(edge C) and the right edge of the right screen(edge D).
Stand in the center of the Cave, hold the PSMove horizontally, and record the PSMove euler angles of these four edges. A will be around 249. B will be 332. If the euler angle is between 249 and 332, it means you are pointing the left screen. the center of the front screen will be 0(360), and the C will be 38. If euler angle is between 332 and 360 or between 0 and 38, you are pointing the front screen. D will be 135, so if the euler angle is between 38 and 135, you are pointing the right screen. That's how to detect which screen you are pointing at.
In order to get the vertical information, you need to record the euler angles for the upper edge of the front screen and the bottom edge of the front screen.
Then how to trace where are you pointing exactally? There are two functions called get_percentageX and get_percentageY. They will interpolate the position of the PSMove horizontally and vertically. You use these interpolating information to calculate the screen position for the cursor.

Instruction for the Example Project

If you want to see how the position detection works in the virtual Cave scene, see the scene PSMove-CAVE for details. There are 2 modes to switch in the scene. See PSMoveExample_Revised4CAVE.cs to get the details.
For the PSmove cursor, see the scene 2ndway for details.

Instruction for the calibration

The way you calibrate the PSMove matters! We highly recommend to calibrate PSMove towards the webcam. Tilt the PSMove to keep it parallel to the webcam.

Integration Packages

PSMove in CAVE Example Project