Releases: Timocop/PSMoveServiceEx
PSMoveServiceEx v0.14.1
Changes in this version:
- Fixed HMDs not tracking.
- Fixed
test_camera.exeandtest_camera_parallel.exenot working.
PSMoveServiceEx v0.14
Changes in this version:
-
Implemented controller attachments (SlimeVR style).
You can attach controllers to each other, creating joint-based trackers which do not require LEDs to track but still can provide enough tracking information.
This method can be used to make lightweight trackers which are only IMU-based using the parent controller as an absolute root.
Both controllers act like a "bone" and in the middle of both is a joint so the controller that is parented to another can orbit around the joint using its IMU, simulating 6DoF tracking.
This is very useful if you use this method for body tracking such as feet, chest, or arms.
To enable controller attachments switch the positional filter of the giving controller toPositionExternalAttachment.
Requires Virtual Device Manager.

-
Fixed
Unhandled responsein PSMS-EX Tool console. -
Color calibration UI changes.
-
Fixed CAPI not shutting down correctly.
⚠️ RequiresPSMoveClient_CAPI.dllupdate of the program that uses PSMS protocol! -
Changed color calibration
Automatic color detectionbehavior. -
Unbounded tracker fps from main processing thread.
ℹ️ This is a major change! If you encounter any tracking abnormalities please let me know!
The main processing thread will no longer wait for tracker frames which caused a bottleneck in the thread.
Controller and HMD IMUs will be more responsive but optical tracking is still synced with tracker fps.
Virtual Device Manager'sRemote DevicesandVirtual Trackerswill now have proper I/O and are more responsive.
PSMS-EX will no longer freeze when tracker die or hang. -
Removed
tracker poll interval. -
Renamed
Tracker sleeptoProcessing thread sleep.
Special thanks:
Cai VR - Grammar and help with IMU joints. 👍
PSMoveServiceEx v0.13
Changes in this version:
-
Implemented
OrientationExternalfilter.
This filter replaces the PSmove IMU with a external one using I/O. Enables DIY IMUs that are better than PSmove IMUs (for example using Phone IMUs).
Use PSMoveServiceEx Virtual Device Manager to manage remote devices forOrientationExternalfilter and virtual controllers.
Currently only the OwOTrack protocol is supported! Full SlimeVR protocol will be implemented in the future!

-
Virtual controllers will have
OrientationExternalfilter selected by default. -
Added
Test Orientationpreview for virtual controllers. -
Fixed potential crashing when using virtual video input devices.
-
Fixed memory leak when switching orientation and positional filters.
-
Added
PSmove Emulationfeature for virtual controllers (Can be changed in PSMoveServiceEx Virtual Device Manager).
This needs to be enabled if you want to use orientation data with virtual controllers. Otherwise the controller orientation will not be transmitted via its protocol!
PSMoveServiceEx v0.12.6
Changes in this version:
- Added device manager config to advanced settings.
- Fixed random tracker timeout.
- Reverted
Decrease tracker_poll_interval to from 13 to 4 ms.
PSMoveServiceEx v0.12.5
Changes in this version:
- Remove old optical timeout on HMDs.
- Decrease
tracker_poll_intervalfrom13to3ms.
Without the old "optical timeout" method we need to reduce the interval greatly otherwise the tracking will fail randomly (will be investigated).
This will also enable full 187Hz tracking for 240p by default.
PSMoveServiceEx v0.12.4
Changes in this version:
- Fixed HMD
Calibrate Tracker ColorsandCalibrate Tracker Posesbuttons not working. - Fixed non-optimized ROI (region of interest) edge offsets.
PSMoveServiceEx v0.12.3
Changes in this version:
- Implemented ROI tracker edge offsets.
roi_edge_offset
Adds an offset to the ROI (region of interest) on tracker edges.
Adding an slight offset can help avoid tracking jitter nearby tracker edges.
(The default value is 4)
- Increased default occluded area projection regain size from
16to32.
Settings can be changed in Advanced Settings.
PSMoveServiceEx v0.12.2
Changes in this version:
- Added additional occluded area tracker settings.
occluded_area_on_loss_size
Occlusion areas are created when trackers lose their tracking projection.
The tracker will not re-gain its projection if the projection is near the tracker's occlusion area.
This will help avoid position jitter on continuous tracking loss.
(The default value is 4)occluded_area_ignore_trackers
The number of trackers that will ignore occluded areas (sorted by biggest projection).
(The default value is 0)occluded_area_regain_projection_size
The tracker will regain the projection and remove its occlusion if the projection size is bigger than the giving value.
(The default value is 16)
Settings can be changed in Advanced Settings.
PSMoveServiceEx v0.12.1
Changes in this version:
- Added positional filter tip for optical noise calibration.
Optical noise calibration only works for filtersPositionKalmanandComplimentaryOpticalIMU(and its rotation filter counterparts).
- Increase lens distortion calibration capture count and decrease capture waiting time.
- Fixed pose calibration LED bulb of PSmove controller not blinking when color is green.
- Increased prediction power for
PassThruandLowPassOptical. - Some UI fixes.
- Auto-adjust tracker intrinsics by resolution. 240p does now work correctly with pre-computed PSEye intrinsics.
PSMoveServiceEx v0.12
Changes in this version:
- Implemented virtual trackers.
Now you can add your custom video input device to PSMoveServiceEx such as generic webcams!
For this your need PSMoveSerivceEx Virtual Device Manager.
- Automatic color calibration will now fail on virtual trackers and controllers.
- UI changes.
- Implemented color calibration warning and issue notifications.
- Automated distortion calibration.
- Added more pose calibration mat paper formats (Letter, A4, A3) either using 1 paper or 4 papers for bigger play-spaces to get more tracking precision.
- Show occlusion areas.
- Better color calibration sensitivity values.
- Able to keep exposure/gain on automatic color calibration.
- Reworked
Advanced Settings.
You can now edit service config inside PSMS Tool (restart is still required).
- Removed
controller_position_prediction_smoothing.
Obsolete. Usecontroller_position_smoothinginstead. Or use the new and improvedLowPassOpticalfilter.
- Added optical prediction to filters
PassThruandLowPassOptical. LowPassOpticalposition filter is now default for every device (except DualShock4 controllers)- Fixed
LowPassOpticalfilter always being stuck at 60% smoothing. - Fixed
LowPassIMUfilter prediction issues. - Implemented ROI (region of interest) projection prediction.
This will help rapid controller movements on lower tracker fps.
- Default tracker is 30 fps instead of 40 fps now.
- Re-defined "Optical Timeout".
Instead of waiting, disregard past tracking projection instantly if it's not visible anymore and create a new one if the tracking light is visible.
This was probably added in case the tracking light was obscured by something for a short period of time. So the tracker would resume its tracking in the same area where it was occluded instead of analyzing the whole tracker stream again. This creates a bad side effect where the "waiting" will still count as a valid position and will be included in triangulation which makes controllers stuck in place when leaving its ROI (region of interest).
With the newly added optimized ROI (region of interest) and occlusion areas, this should not be needed anymore.
- Added 3D printable adapters.
- Added new pose calibration mats.
- Added lens distortion printable calibration checkerboard.
Known issues
- Virtual trackers will always run at half the polling rate for some reason. This means half of 75 fps. And if you use mixed trackers (PSeyes and virtual) it will use half of the PSeye fps (e.g. PSeye running at 30fps, all virtual trackers will run at 15 fps). Will be investigated.

