function copysimoutdatafromturtle(turtle) %for real robot data, turtle=[1:6], for simulator data, turtle='sim' %init if strcmp(turtle,'sim'), simflag=1; turtle='simulation turtle'; else simflag=0; end curdir = cd; %change directory if simflag, cd /home/robocup/svn/trunk/src/Turtle2/Tools/trc; else cd /home/robocup; end answer = questdlg('copy data from robot?'); if ~simflag && isequal(answer,'Yes') % get motion data if exist(['./motion_' turtle '.mat'],'file') delete(['./motion_' turtle '.mat']) end try eval(['!scp robocup@' turtle ':/home/robocup/motion.mat /home/robocup/']) copyfile('/home/robocup/motion.mat',['/home/robocup/motion_' turtle '.mat']) catch end % get strategy data if exist(['./strategy_' turtle '.mat'],'file') delete(['./strategy_' turtle '.mat']) end try eval(['!scp robocup@' turtle ':/home/robocup/strategy.mat /home/robocup/']) copyfile('/home/robocup/strategy.mat',['/home/robocup/strategy_' turtle '.mat']) catch end % get vision data if exist(['./vision_' turtle '.mat'],'file') delete(['./vision_' turtle '.mat']) end try eval(['!scp robocup@' turtle ':/home/robocup/vision_turtle.mat /home/robocup']) copyfile('/home/robocup/vision_turtle.mat',['/home/robocup/vision_' turtle '.mat']) catch end end % plot motion data if simflag, fn='./motion_sim.mat'; else fn=['./motion_' turtle '.mat']; end if exist(fn) k=load(fn); fnames = fieldnames(k); if length(fnames)>0 [X,legenddata] = getdata(k,fnames); dt=1/get_global_par('MOTION_SAMPLE_RATE'); %s t=[0:size(X,1)-1]'*dt; figure plot(t,X) title('motion data') xlabel('time') ylabel('data') legend(legenddata{:}) end else disp(['no motion data found on ' turtle]) end % plot strategy data if simflag, fn='./strategy.mat'; else fn=['./strategy_' turtle '.mat']; end if exist(fn) k=load(fn); fnames = fieldnames(k); if length(fnames)>0 [X,legenddata] = getdata(k,fnames); dt=1/get_global_par('STRATEGY_SAMPLE_RATE'); %s t=[0:size(X,1)-1]'*dt; figure plot(t,X) title('strategy data') xlabel('time') ylabel('data') legend(legenddata{:}) end else disp(['no strategy data found on ' turtle]) end % plot vision data fn=['./vision_' turtle '.mat']; if exist(fn) && ~simflag, k=load(fn); fnames = fieldnames(k); if length(fnames)>0 [X,legenddata] = getdata(k,fnames); dt = 1/get_global_par('VISION_SAMPLE_RATE'); %s t=[0:size(X,1)-1]'*dt; figure plot(t,X) title('vision data') xlabel('time') ylabel('data') legend(legenddata{:}) end elseif ~simflag, disp(['no vision data found on ' turtle]) end cd(curdir) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function [X,legenddata] =getdata(k,fnames) X=[]; legenddata = {}; %loop through variables for i=1:length(fnames) %get data name char dataname = fnames{i}; tmp = eval(['k.' dataname]); %check if it is a struct or numeric "to workspace" if ~isstruct(tmp) x=tmp; else eval(['x=k.' dataname '.signals.values;']) end %conditioning of data x=double(squeeze(x)); if size(x,2)>size(x,1) x=x'; end %add data to collection matrix if i==1 %length of first data matrix determines length of the collection matrix X = x; elseif size(x,1)==size(X,1) X = [X x]; elseif size(x,1)>size(X,1) X = [X x(1:size(X,1),:)]; else X = [X [x;zeros(size(X,1)-size(x,1),size(x,2))]]; end %gather legend data and tagging it according to its size if size(x,2)==1 legenddata=[legenddata dataname]; elseif size(x,2)==2 legenddata=[legenddata [dataname 'x']]; legenddata=[legenddata [dataname 'y']]; elseif size(x,2)==3 legenddata=[legenddata [dataname 'x']]; legenddata=[legenddata [dataname 'y']]; legenddata=[legenddata [dataname 'z']]; else for j=1:size(x,2) legenddata=[legenddata [dataname int2str(j)]]; end end end