Sorry for the earlier post.
I realized that I was running an older version of MATLAB (7.1). I have now installed the latest release (2009b) and your function appears to work.
Thanks again for these helpful tools!

Thank you for these good demos, Glen! I found you via the NaturalPoint help forum.

I have downloaded both this package and TT_Tools_demo, hoping to get a developmental "leg up".

I encountered a problem right off the bat with this file. I am using V100R2:FLEX cameras. Currently I have only one camera attached (and no hub). When I attempt to run this function, I receive the following output:

Device Arrived
Device Arrived
Number of cameras = 2
??? Error using ==> registerevent
Input must be a scalar handle.

Error in ==> optitrack_data at 31
registerevent(h2,@frame_events);

The function reports 2 cameras because I have a Hardware Key (for the TT software license) installed; when I remove the key, the camera count drops to 1 but the error is the same. Any thoughts, or is this simply a problem with V100R2:FLEX cameras (as opposed to the TrackIR4 for which you developed this code)?

Thank you Markus!
This has helped me pass a critical practicality hurdle in my Master's Research without spending a week or two reading, writing, and debugging!

Hi Glen. I was trying to use your code with MATLAB 7.11.1 and TT 2.5.3 32 bit. Whenever I run this code on MATLAB my cameras get automatically switched off and get an output of ans = 0. Can you please help me out with this ? Thank you.

Great code
It's Helped me a lot
Now I want to move to newer versions
so I wish to create interface between Simulink to Motive I already succeed to interface between Matlab and Motive through NatNet, I reviewed the sample available with NatNet SDK to do so but I'm having trouble to migrate it to Simulink, I tried using Matlab function block unsuccessfully, it's have problem to use the dll command.
the error i got from Simulink is : Undefined function or variable 'NatNetML.NatNetClientML'.
I want to thanks Glen Lichtwark sample that helped me writing interface to matlab http://www.mathworks.com/matlabcentral/fileexchange/26449-tracking-tools--optitrack-
the code i tried is the follwing:
function [x,y,z,yaw,pitch,roll] = Location_Orinteation_Motive_64bit(RigidBody_ID) %#codegen
coder.extrinsic('â€“sync:on','quaternion','fullfile','NET.addAssembly','addpath')
dllPath = fullfile('c:','NatNetSDK2.5','lib','x64','NatNetML.dll');
assemblyInfo = NET.addAssembly(dllPath);
addpath('E:\Motive')
dllPath = fullfile('c:','NatNetSDK2.5','lib','x64','NatNetML.dll');
assemblyInfo = NET.addAssembly(dllPath);
theClient = NatNetML.NatNetClientML(0); % Input = iConnectionType: 0 = Multicast, 1 = Unicast
% Connect to an OptiTrack server (e.g. Motive)
HostIP = char('127.0.0.1');
theClient.Initialize(HostIP, HostIP); % Flg = returnCode: 0 = Success
% data
frameOfData = theClient.GetLastFrameOfData()
rigidBodyData = frameOfData.RigidBodies(RigidBody_ID)
x=rigidBodyData.x
y=rigidBodyData.y
z=rigidBodyData.y
% angle
q = quaternion( rigidBodyData.qx, rigidBodyData.qy, rigidBodyData.qz, rigidBodyData.qw ); % extrnal file quaternion.m
qRot = quaternion( 0, 0, 0, 1); % rotate pitch 180 to avoid 180/-180 flip for nicer graphing
q = mtimes(q, qRot);
angles = EulerAngles(q,'zyx');
yaw = angles(2) * 180.0 / pi;
pitch = -angles(1) * 180.0 / pi; % must invert due to 180 flip above
roll = -angles(3) * 180.0 / pi; % must invert due to 180 flip above
thanks
Or Hirshfeld
http://il.linkedin.com/pub/or-hirshfeld/4b/79/577/

Comment only