#1
|
|||
|
|||
Optical Heading reverses
I am using a DK2+optical heading setup with two markers rigidly mounted on the DK2 at 19.5 cm distance. The markers a tracked by a PPT-X system running on PPT studio 2008. It's basically the DK2+optical heading preset.
Sometimes, even when in the best part of my tracking area, but more frequently when near the edges where not all cameras have a good view, the view suddenly rotates by 180 degrees, like my head is facing down my back. I could probably detect this programmatically and rotate it right back, but what is the correct call for this? callign _swap() of the optical heading module is probably not a good idea. Or better yet, how to avoid this? Thanks! |
#2
|
|||
|
|||
When this occurs, are the markers swapping in PPT Studio? We avoid this by using Marker ID markers but I'll see if there are other suggestions.
|
#3
|
|||
|
|||
Hi Jeff,
Its a bit hard to say, as when it reverses i have to pull off the hmd and run to the PPT computer which shows the history of the marker positions. But when i do so, i see that each marker's path remains smooth (no sudden jumps), so i guess it is not a changing of marker ID. Is it possible to assign specific IDs to specific markers? I am not sure what Marker ID markers are. Perhaps a settable 180 deg head rotation is all that i need to do, let me try that as a stopgap measure. All the best, Dee |
#4
|
|||
|
|||
Hi Jeff,
It appears that there indeed is an easy stopgap solution. when i do headLink.postEuler([180,0,0],target=viz.LINK_ORI_OP) does the trick. headLink = vizconnect.getTracker('head_tracker').getLink() where 'head_tracker' is the OpticalHeading module. A possibly relevant thought. I also have the following operator on the headLink: mirrorRotationOperator = headLink.postEuler([0,0,0], target=viz.LINK_FULL_OP) In my setup, participants walk from one side of the room to the other. I then call mirrorRotationOperator.setEuler([180,0,0]) to rotate the room so that they don't have to walk back to the starting position. This flipping of orientation by mirrorRotationOperator happens much more often than the sudden reversals of head orientation. Also, the head orientation reversal can happen at any time. Thought I'd mention it anyway in case its relevant. Thanks! Dee |
#5
|
|||
|
|||
hi Jeff,
I have now confirmed that the markers do not seem to swap IDs (at least, if the 'ppt_left' and 'ppt_right' always refer to the same physical marker). I had the following code run during a run of my experiment: Code:
def debugVizConnectOpticalHeading(): import vizconnect, viztask # collect raw position and orientation info, as well as merged result d=viz.Data(time=viz.tick()) while True: samp = [d.time] + vizconnect.getRawTracker('ppt_left').getPosition() + vizconnect.getRawTracker('ppt_right').getPosition() + vizconnect.getRawTracker('dk2').getEuler() + vizconnect.getRawTracker('head_tracker').getPosition() + vizconnect.getRawTracker('head_tracker').getEuler() # print samp to cmd d = yield viztask.waitDraw() viztask.schedule(debugVizConnectOpticalHeading()) All the best, Dee |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Intersense InertiaCube | Vic | Precision Position Tracker (PPT) | 2 | 06-15-2009 09:36 AM |