2 % Copyright: (C) 2010 RobotCub Consortium
3 % Authors: Vadim Tikhanoff
4 % CopyPolicy: Released under the terms of the LGPLv2.1 or later, see LGPL.TXT
8 import yarp.BufferedPortBottle
15 port=BufferedPortBottle; %port
for reading
"quit" signal
16 port.close; %first close the port just in
case 18 disp(
'Opening port: /matlab/read');
19 port.open(
'/matlab/read');
20 disp(
'The program closes when ''quit'' is received');
24 b = port.read(
false );%use
false to have a non blocking port
25 if (sum(size(b)) ~= 0) %check size of bottle
26 disp(
'received command: ');
27 %disp(b.toString_c());
28 if (strcmp(b.toString_c(),
'quit'))
29 disp(
'Closing matlab ports...');
31 elseif (strcmp(b.toString_c(),
'plot'))
32 disp ('should save:');
36 drawResults(joints(j,:), ee(j,:), axisangle(j,:), center, c1(j,:), c2(j,:), c3(j,:), n1(j,:), n2(j,:), n3(j,:), hand(j,:), cloud);
39 drawResults(best_joints, best_ee, best_axisangle, center, best_c1, best_c2, best_c3, best_n1, best_n2, best_n3, best_hand, cloud);
42 clear joints ee axisangle center dim c1 c2 c3 n1 n2 n3 rotmat hand cloud;
43 elseif (strcmp(b.get(0).asString(), 'best'))
45 main=b.get(1).asList();
47 best_joints=zeros(1,size(main.find('joints').asList()));
48 for j=0:size(main.find('joints').asList())-1
49 best_joints(j+1)=main.find('joints').asList().get(j).asDouble();
52 best_ee=zeros(1,size(main.find('ee').asList()));
53 for j=0:size(main.find('ee').asList())-1
54 best_ee(j+1)=main.find('ee').asList().get(j).asDouble();
57 best_axisangle=zeros(1,size(main.find('axisangle').asList()));
58 for j=0:size(main.find('axisangle').asList())-1
59 best_axisangle(j+1)=main.find('axisangle').asList().get(j).asDouble();
62 best_c1=zeros(1,size(main.find('c1').asList()));
63 for j=0:size(main.find('c1').asList())-1
64 best_c1(j+1)=main.find('c1').asList().get(j).asDouble();
67 best_c2=zeros(1,size(main.find('c2').asList()));
68 for j=0:size(main.find('c2').asList())-1
69 best_c2(j+1)=main.find('c2').asList().get(j).asDouble();
72 best_c3=zeros(1,size(main.find('c3').asList()));
73 for j=0:size(main.find('c3').asList())-1
74 best_c3(j+1)=main.find('c3').asList().get(j).asDouble();
77 best_n1=zeros(1,size(main.find('n1').asList()));
78 for j=0:size(main.find('n1').asList())-1
79 best_n1(j+1)=main.find('n1').asList().get(j).asDouble();
82 best_n2=zeros(1,size(main.find('n2').asList()));
83 for j=0:size(main.find('n2').asList())-1
84 best_n2(j+1)=main.find('n2').asList().get(j).asDouble();
87 best_n3=zeros(1,size(main.find('n3').asList()));
88 for j=0:size(main.find('n3').asList())-1
89 best_n3(j+1)=main.find('n3').asList().get(j).asDouble();
93 tmp=main.find('hand').asList().get(0).asString();
94 best_hand = tmp.toString;
96 disp('now processing bottle:');
98 main=b.get(0).asList();
99 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
100 for j=0:size(main.find('joints').asList())-1
101 joints(counter,j+1)=main.find('joints').asList().get(j).asDouble();
103 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
104 for j=0:size(main.find('ee').asList())-1
105 ee(counter,j+1)=main.find('ee').asList().get(j).asDouble();
107 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
108 for j=0:size(main.find('axisangle').asList())-1
109 axisangle(counter,j+1)=main.find('axisangle').asList().get(j).asDouble();
111 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
112 for j=0:size(main.find('c1').asList())-1
113 c1(counter,j+1)=main.find('c1').asList().get(j).asDouble();
115 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
116 for j=0:size(main.find('c2').asList())-1
117 c2(counter,j+1)=main.find('c2').asList().get(j).asDouble();
119 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
120 for j=0:size(main.find('c3').asList())-1
121 c3(counter,j+1)=main.find('c3').asList().get(j).asDouble();
123 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
124 for j=0:size(main.find('n1').asList())-1
125 n1(counter,j+1)=main.find('n1').asList().get(j).asDouble();
127 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
128 for j=0:size(main.find('n2').asList())-1
129 n2(counter,j+1)=main.find('n2').asList().get(j).asDouble();
131 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
132 for j=0:size(main.find('n3').asList())-1
133 n3(counter,j+1)=main.find('n3').asList().get(j).asDouble();
136 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
138 tmp=main.find('hand').asList().get(0).asString();
139 hand(counter) = tmp.toString;
140 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
143 x3=size(main.find('center').asList());
146 center(j+1)=main.find('center').asList().get(j).asDouble();
149 x4=size(main.find('dim').asList());
152 dim(j+1)=main.find('dim').asList().get(j).asDouble();
155 x11=size(main.find('rotmat').asList());
158 vec(1,j+1)=main.find('rotmat').asList().get(j).asDouble();
160 rotmat = vec2mat(vec,3);
162 x12 =size(main.find('cloud').asList());
163 index =size(main.find('cloud').asList().get(0).asList());
164 cloudVec=zeros(x12,index);
167 cloudVec(j+1,i+1)=main.find('cloud').asList().get(j).asList().get(i).asDouble();
170 cloud = vec2mat(cloudVec,6);
173 counter = counter + 1;
175 disp('finished processing yarp list...');