OpenViBE forum

The OpenViBE community
It is currently Thu Dec 14, 2017 10:09 am

All times are UTC




Post new topic Reply to topic  [ 12 posts ] 
Author Message
PostPosted: Tue Apr 28, 2015 3:37 pm 
Offline

Joined: Tue Apr 07, 2015 11:31 am
Posts: 47
I have a question about the FSettingValueAutoCast function. I don't found its page in the documentation.

What this function returns for a stimulation ? If I well understand, a Stimulation is defined by three things: the code, the date and the name. If it's right, the FSettingValueAutoCast function returns which ones ?

Thanks in advance.
Siméon.

[EDIT]
I have two questions more (a question and a problemn, more precisely). The function for initializate an Encoder/Decoder is :
Code:
m_oSignalDecoder.initialize(*this, 0);

What is the meaning of the 0? The Output/Input id ? Because I don't find the answer here: http://openvibe.inria.fr/tutorial-1-imp ... ssing-box/

And I have a probleme to compile my box, the compiler throws an error :
Code:
/home/simeon/Logiciels/openvibe-1.0.0/contrib/plugins/processing/signal-processing/src/schmittTrigger/ovpCBoxAlgorithmSchmittTrigger.cpp: In member function ‘virtual OpenViBE::boolean OpenViBEPlugins::SignalProcessing::CBoxAlgorithmSchmittTrigger::process()’:
/home/simeon/Logiciels/openvibe-1.0.0/contrib/plugins/processing/signal-processing/src/schmittTrigger/ovpCBoxAlgorithmSchmittTrigger.cpp:182:35: error: no matching function for call to ‘OpenViBEToolkit::TSignalEncoder<OpenViBEPlugins::SignalProcessing::CBoxAlgorithmSchmittTrigger>::encodeHeader(int)’
    m_oSignalEncoder.encodeHeader(0);
                                   ^
/home/simeon/Logiciels/openvibe-1.0.0/contrib/plugins/processing/signal-processing/src/schmittTrigger/ovpCBoxAlgorithmSchmittTrigger.cpp:182:35: note: candidate is:
In file included from /home/simeon/Logiciels/openvibe-1.0.0/toolkit/include/toolkit/ovtk_all.h:35:0,
                 from /home/simeon/Logiciels/openvibe-1.0.0/contrib/plugins/processing/signal-processing/src/schmittTrigger/ovpCBoxAlgorithmSchmittTrigger.h:8,
                 from /home/simeon/Logiciels/openvibe-1.0.0/contrib/plugins/processing/signal-processing/src/schmittTrigger/ovpCBoxAlgorithmSchmittTrigger.cpp:1:
/home/simeon/Logiciels/openvibe-1.0.0/toolkit/include/toolkit/codecs/encoders/ovtkTEncoder.h:62:21: note: OpenViBE::boolean OpenViBEToolkit::TEncoderLocal<T>::encodeHeader() [with T = OpenViBEToolkit::TCodec<OpenViBEPlugins::SignalProcessing::CBoxAlgorithmSchmittTrigger>; OpenViBE::boolean = bool]
   OpenViBE::boolean encodeHeader()
                     ^

But I did the same thing as the tutorial.


Top
 Profile  
Reply with quote  
PostPosted: Mon May 04, 2015 8:26 am 
Offline

Joined: Tue Dec 04, 2012 3:53 pm
Posts: 599
Location: INRIA Rennes, FRANCE
Hi DarkPatate,

the tutorial is out of date in this regard, and we should update it to 1.0 when we have the time.

In the new codec interface, initialize takes the input connector number for decoders
and output connector numbers for encoders. The encodeHeader() no longer needs
this number.


Best,
Jussi


Top
 Profile  
Reply with quote  
PostPosted: Wed May 06, 2015 11:11 am 
Offline

Joined: Tue Apr 07, 2015 11:31 am
Posts: 47
Ok, I'll test later :-)
Thanks!


Top
 Profile  
Reply with quote  
PostPosted: Tue May 26, 2015 9:27 am 
Offline

Joined: Tue Apr 07, 2015 11:31 am
Posts: 47
Hello,
after almost one month, I could change my code. But another error was coming :

Code:
[ 97%] Built target openvibe-acquisition-server
CMakeFiles/openvibe-plugins-contrib-signal-processing.dir/src/schmittTrigger/ovpCBoxAlgorithmSchmittTrigger.cpp.o: dans la fonction « OpenViBEToolkit::TBoxAlgorithm<OpenViBE::Plugins::IBoxAlgorithm>::processInput(unsigned int) »:
/home/simeon/Logiciels/openvibe-1.0.0/contrib/plugins/processing/signal-processing/src/schmittTrigger/ovpCBoxAlgorithmSchmittTrigger.cpp:58: définitions multiples de « ioIndexes »
CMakeFiles/openvibe-plugins-contrib-signal-processing.dir/src/ovp_main.cpp.o:/home/simeon/Logiciels/openvibe-1.0.0/openvibe/include/openvibe/plugins/ovIPluginObject.h:53: défini pour la première fois ici
collect2: error: ld returned 1 exit status
make[2]: *** [contrib/plugins/processing/signal-processing/libopenvibe-plugins-contrib-signal-processing.so.1.0.0] Erreur 1
make[1]: *** [contrib/plugins/processing/signal-processing/CMakeFiles/openvibe-plugins-contrib-signal-processing.dir/all] Erreur 2
make: *** [all] Erreur 2


I don't understand, the “...Trigger.cpp:58: définitions multiples de « ioIndexes »”, ioIndexes is only defined in ovpCBoxAlgorithmSchmittTrigger.h (outside the class). Moreover, in cpp file, on line 58, there are only the uninitialize function. Maybe it's another problem of version ?

Thanks in advance,
Siméon.


Attachments:
ovpCBoxAlgorithmSchmittTrigger.h [10.54 KiB]
Downloaded 152 times
ovpCBoxAlgorithmSchmittTrigger.cpp [10.96 KiB]
Downloaded 153 times
Top
 Profile  
Reply with quote  
PostPosted: Tue May 26, 2015 9:35 am 
Offline

Joined: Tue Dec 04, 2012 3:53 pm
Posts: 599
Location: INRIA Rennes, FRANCE
It looks like a problem with the global variable. I'd advice against using one. Consider putting it as a member instead.

Happy hacking,
J.


Top
 Profile  
Reply with quote  
PostPosted: Tue May 26, 2015 11:20 am 
Offline

Joined: Tue Apr 07, 2015 11:31 am
Posts: 47
Indeed, that was the problem, thank you !

[EDIT] But my box doesn't work. If I don't find find the solution, I'll be back ;-)


Top
 Profile  
Reply with quote  
PostPosted: Wed May 27, 2015 2:53 pm 
Offline

Joined: Tue Apr 07, 2015 11:31 am
Posts: 47
Hello,
I have some difficulties to make my box working. I don't understand how the data are structured, because the online tutorial is different than the comment code generated by the SkeletonGenerator.

I understand the data as in the enclosed PNG file, is it right ? For me, the chunk are like the packet in TCP protocol. They are processed separately.

How can I get and set the data of a channel, to check the ith value, or modified it.

The designer give me the error :
Code:
[ ERROR ] At time 0.000 sec <Box algorithm::(0x69147b45, 0x17d69263) aka Trigger> Caller tried to set a 0-dimensional matrix. Only 2-dimensional matrices are supported (e.g. [rows X cols]).
[ ERROR ] At time 0.062 sec <Box algorithm::(0x69147b45, 0x17d69263) aka Trigger> Buffer database reports an error. Its possible that the inputs given to the Signal Display are not supported by it.


Trigger is the display block just after my block. The process function code is almost the same as in my previous message.

Thanks in advance for your answers!


Attachments:
openvibe.png
openvibe.png [ 35.49 KiB | Viewed 3106 times ]
Top
 Profile  
Reply with quote  
PostPosted: Tue Jun 09, 2015 9:19 am 
Offline

Joined: Tue Apr 01, 2014 8:22 am
Posts: 71
Hi,

About the comparison with TCP is close to the reality. All chuncks are independent from each other, and mark with a timestamps (that replace the sequence number).

If the stream type is a signal (which derived from Streamed Matrix), the matrix is 2-dimensional [N x M] with N the amount of channel, and M the amount of sample by channel. In the case of the streamed matrix you can have a matrix of any dimension that you want.

In your code, when you encode the header, the matrix of your encoder is 0-dimensional. So OpenViBE prevent you from doing such operation. Before calling the header encoding, you should set to the right dimension your matrix.

nb:
If you are just modifying a signal without modifying it's deep structure, you can avoid heavy data manipulation (copy/paste) by using the set target reference mechanism, which work like this:
Code:
m_oOutputMatrixEncoder.getInputMatrix().setReferenceTarget(m_oInputMatrixDecoder.getOutputMatrix());

With this mechanism, the matrix of both coder/decoder become a "shared" memory. So you don't need to copy/paste the matrix or even to set the dimension of the matrix.
Be aware that any modification to this matrix will lead to the modification of both matrix (as there are the same), so the previous value will be lost. So depending of your transformation, this mechanism should not be use.

Guillaume

PS: I do not know if your code is up to date, but you init the two encoder by binding them to the same output.
PSS: if you are using the version of the codec toolkit you are using, you just need to use the line
Code:
m_oSignalDecoder.decode(i);

instead of
Code:
m_oSignalDecoder.decode(ioIndexes.inputSignal, i);


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 10, 2015 1:25 pm 
Offline

Joined: Tue Apr 07, 2015 11:31 am
Posts: 47
Thank you for your answer, the problem is solved!

To solve it, I used the
Code:
m_oOutputMatrixEncoder.getInputMatrix().setReferenceTarget(m_oInputMatrixDecoder.getOutputMatrix());
, but if I don't want (not for this case) use it, how I "should set to the right dimension [my] matrix" in the header?

Two other questions: how throwing a stimulation?
And, what is the difference between stimulation and stimulations? Because, in the designer, the output of my box is a stimulation and the triangle is green and not purple as the others stimulations. However I used this type id:
Code:
OV_TypeId_Stimulations
.

Thanks in advance!
Siméon.

[EDIT] Another question, does the epoching box influence the size of chunk?


Top
 Profile  
Reply with quote  
PostPosted: Fri Jun 12, 2015 9:47 am 
Offline

Joined: Tue Apr 01, 2014 8:22 am
Posts: 71
Hi

DarkPatate wrote:
but if I don't want (not for this case) use it, how I "should set to the right dimension [my] matrix" in the header?

Before calling the encodeHeader method, you will need to get the InputMatrix of the encoder and then, set the amount of dimensions and the size of each dimension of the matrix according to your needs.

DarkPatate wrote:
Two other questions: how throwing a stimulation?
And, what is the difference between stimulation and stimulations? Because, in the designer, the output of my box is a stimulation and the triangle is green and not purple as the others stimulations. However I used this type id:
Code:
OV_TypeId_Stimulations
.

Stimulation = One single stilumation / Stimulations = stimulation stream
The encoder of the stimulation stream has a StimulationSet. Each stimulation in this set is send when you use the markOutputAsReadyToSend primitive. Here is a example of how to fill it
Code:
ip_pLabelsStimulationSet->setStimulationCount(1);
ip_pLabelsStimulationSet->setStimulationIdentifier(0, l_oStimulationIdentifier.toUInteger());
ip_pLabelsStimulationSet->setStimulationDate(0, l_ui64EndTime);
ip_pLabelsStimulationSet->setStimulationDuration(0, 0);



DarkPatate wrote:
[EDIT] Another question, does the epoching box influence the size of chunk?

Yes, the size of a chunck will be modify. According to the code, it became SamplingRate * EpochDuration

Guillaume


Top
 Profile  
Reply with quote  
PostPosted: Wed Jun 17, 2015 11:16 am 
Offline

Joined: Tue Apr 07, 2015 11:31 am
Posts: 47
Thanks for your answer :-)

But, I didn't well understand your explanation of the throwing stimulation(s?) method. What is the class of this objet : ip_pLabelsStimulationSet ? To check in the documentation the fonctions parameters. And how to get it from the skeleton code.

Thanks in advance,
Siméon.


Top
 Profile  
Reply with quote  
PostPosted: Wed Jul 01, 2015 8:41 am 
Offline

Joined: Tue Apr 01, 2014 8:22 am
Posts: 71
Hi, sorry for the late reply

ip_pLabelStimulationSet is an object of the class TParameterHandler<IStimulationSet *>
http://openvibe.inria.fr/documentation/ ... ml#details => A TParameterHandler is a wraper around data type to help the manipulation of them. By using the operator '->', which is overload, you get a direct access to the data handle. (casting also work).

Here is the documentation of IStimulationSet http://openvibe.inria.fr/documentation/ ... onSet.html


Guillaume


Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 12 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 2 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Group
Americanized by Maël Soucaze.