RSBm » History » Version 4

S. Wrede, 10/15/2011 11:13 AM

1 1 S. Wrede
h1. RSB.m
2 1 S. Wrede
3 3 S. Wrede
We are currently exploring the best way to expose RSB in Matlab. The most straightforward way to do this is to use the Java implementation directly from within Matlab. However, as the Matlab Java interpreter is not able to handle Java's Generic types, we need to wrap around some parts of the RSBJava API which use generics.
4 3 S. Wrede
5 3 S. Wrede
For this, a very preliminary support library for Matlab is available in the Trunk repository: https://code.cor-lab.org/projects/rsb/repository/show/trunk/matlab
6 3 S. Wrede
7 3 S. Wrede
It currently includes a simple example demonstrating the live plotting of rst.JointAngles data.
8 3 S. Wrede
9 3 S. Wrede
After installation of this library, the current steps in using RSB in Matlab are as follows:
10 3 S. Wrede
11 4 S. Wrede
h2. Loading the Java RSB libraries into Matlab
12 3 S. Wrede
13 3 S. Wrede
<pre>
14 3 S. Wrede
javaaddpath /vol/cit/share/java/RSBJava-0.5.0.jar
15 3 S. Wrede
javaaddpath /opt/local/share/java/protobuf.jar
16 3 S. Wrede
javaaddpath /vol/cit/share/java/rstsandbox.jar
17 3 S. Wrede
javaaddpath /vol/cit/share/java/rst.jar
18 3 S. Wrede
javaaddpath /vol/cit/lib/rsb.m-0.5.0.jar
19 3 S. Wrede
rsb.matlab.ConverterRegistration.register()
20 3 S. Wrede
</pre>
21 3 S. Wrede
22 3 S. Wrede
The last call initializes the ProtocolBufferConverter instances with a few selected RST types. This mechanism will definitely be changed as it currently introduces an unwanted dependency (at this stage) to RST.
23 1 S. Wrede
24 1 S. Wrede
h2. Notes
25 1 S. Wrede
26 1 S. Wrede
First successful test of sending data from Matlab to RSB:
27 1 S. Wrede
28 1 S. Wrede
<pre>
29 1 S. Wrede
>> javaaddpath /vol/cit/share/java/RSBJava-0.4.0.jar
30 1 S. Wrede
>> javaaddpath /opt/local/share/java/protobuf.jar
31 1 S. Wrede
>> f = rsb.Factory.getInstance()
32 1 S. Wrede
 
33 1 S. Wrede
f =
34 1 S. Wrede
 
35 1 S. Wrede
rsb.Factory@5c4e0c39
36 1 S. Wrede
 
37 1 S. Wrede
>> s = Scope('/example/informer')
38 1 S. Wrede
 
39 1 S. Wrede
s =
40 1 S. Wrede
 
41 1 S. Wrede
/example/informer/
42 1 S. Wrede
43 2 S. Wrede
>> i = f.createInformer(s)
44 2 S. Wrede
No rsb.conf found in configuration directory '/Users/swrede/.config'
45 2 S. Wrede
No rsb.conf found in working directory '/Users/swrede/Documents/MATLAB'
46 2 S. Wrede
 
47 2 S. Wrede
i =
48 2 S. Wrede
 
49 2 S. Wrede
rsb.Informer@75222b8e
50 2 S. Wrede
51 2 S. Wrede
>> i.activate
52 2 S. Wrede
18.07.2011 18:21:22 rsb.Informer$InformerStateInactive activate
53 2 S. Wrede
INFO: Informer activated: [Scope:/example/informer/,Type:String]
54 2 S. Wrede
>> i.send('RSB')
55 2 S. Wrede
 
56 2 S. Wrede
ans =
57 2 S. Wrede
 
58 2 S. Wrede
Event[id=4145dcfd-aff7-45de-b00f-0c6c315f0ce7, scope=/example/informer/, type =String, metaData=MetaData[senderId = 4d619c1a-b516-4474-9eed-eb216546ff01, createTime = 1311006099963000, sendTime = 1311006099966000, receiveTime = 0, userTimes = {}, userInfos = {}]]
59 1 S. Wrede
</pre>