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: ');
28 if (strcmp(b.toString_c(),
'quit'))
29 disp(
'Closing matlab ports...');
31 elseif (strcmp(b.get(0).asString(),
'best'))
33 main=b.get(1).asList();
35 best_joints=zeros(1,size(main.find('joints').asList()));
36 for j=0:size(main.find('joints').asList())-1
37 best_joints(j+1)=main.find('joints').asList().get(j).asDouble();
40 best_ee=zeros(1,size(main.find('ee').asList()));
41 for j=0:size(main.find('ee').asList())-1
42 best_ee(j+1)=main.find('ee').asList().get(j).asDouble();
45 best_xdhat=zeros(1,size(main.find('xdhat').asList()));
46 for j=0:size(main.find('xdhat').asList())-1
47 best_xdhat(j+1)=main.find('xdhat').asList().get(j).asDouble();
50 best_axisangle=zeros(1,size(main.find('axisangle').asList()));
51 for j=0:size(main.find('axisangle').asList())-1
52 best_axisangle(j+1)=main.find('axisangle').asList().get(j).asDouble();
55 best_odhat=zeros(1,size(main.find('odhat').asList()));
56 for j=0:size(main.find('odhat').asList())-1
57 best_odhat(j+1)=main.find('odhat').asList().get(j).asDouble();
60 best_c1=zeros(1,size(main.find('c1').asList()));
61 for j=0:size(main.find('c1').asList())-1
62 best_c1(j+1)=main.find('c1').asList().get(j).asDouble();
65 best_c2=zeros(1,size(main.find('c2').asList()));
66 for j=0:size(main.find('c2').asList())-1
67 best_c2(j+1)=main.find('c2').asList().get(j).asDouble();
70 best_c3=zeros(1,size(main.find('c3').asList()));
71 for j=0:size(main.find('c3').asList())-1
72 best_c3(j+1)=main.find('c3').asList().get(j).asDouble();
75 best_n1=zeros(1,size(main.find('n1').asList()));
76 for j=0:size(main.find('n1').asList())-1
77 best_n1(j+1)=main.find('n1').asList().get(j).asDouble();
80 best_n2=zeros(1,size(main.find('n2').asList()));
81 for j=0:size(main.find('n2').asList())-1
82 best_n2(j+1)=main.find('n2').asList().get(j).asDouble();
85 best_n3=zeros(1,size(main.find('n3').asList()));
86 for j=0:size(main.find('n3').asList())-1
87 best_n3(j+1)=main.find('n3').asList().get(j).asDouble();
91 tmp=main.find('hand').asList().get(0).asString();
92 best_hand = tmp.toString;
94 x3=size(main.find('center').asList());
97 center(j+1)=main.find('center').asList().get(j).asDouble();
100 x4=size(main.find('dim').asList());
103 dim(j+1)=main.find('dim').asList().get(j).asDouble();
106 x11=size(main.find('rotmat').asList());
109 vec(1,j+1)=main.find('rotmat').asList().get(j).asDouble();
111 rotmat = vec2mat(vec,3);
113 x12 =size(main.find('cloud').asList());
114 index =size(main.find('cloud').asList().get(0).asList());
115 cloudVec=zeros(x12,index);
118 cloudVec(j+1,i+1)=main.find('cloud').asList().get(j).asList().get(i).asDouble();
121 cloud = vec2mat(cloudVec,6);
123 drawResults(best_joints, best_ee, best_axisangle, center, best_c1, best_c2, best_c3, best_n1, best_n2, best_n3, best_hand, best_xdhat, best_odhat, cloud);