<font size=2 face="sans-serif">I run the component with valgrind and use
rock-display to transition in the component states (execute hooks), I start
from PRE_OPERATIONAL and go to PRE_OPERATIONAL again going through configure,
start, stop and cleanup and no error are shown (the class destructor is
not called at this point). When calling configure for the second time,
I see an error similar to what I explained before that says I did not free
the memory of the FramePair structure correctly. Here a copy paste of the
error shown in valgrind when calling configure at the second time:</font>
<br>
<br><font size=3>==1343== Thread 10:<br>
==1343== Invalid free() / delete / delete[] / realloc()<br>
==1343==&nbsp;&nbsp;&nbsp; at 0x4C2A4BC: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0x6ACFC4F: RTT::extras::ReadOnlyPointer&lt;base::samples::frame::FramePair&gt;::reset(base::samples::frame::FramePair*)
(ReadOnlyPointer.hpp:154)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0x6ACD956: camera_bb2::Task::configureHook()
(Task.cpp:38)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0x6E21D92: RTT::base::TaskCore::configure()
(in /media/data/robs/dev/install/lib/liborocos-rtt-gnulinux.so.2.6.0)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0x6AB1C6A: camera_bb2::TaskBase::configure()
(TaskBase.cpp:161)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0xB852E6F: _0RL_lcfn_10a79cd5b9c0aa8e_60000000(omniCallDescriptor*,
omniServant*) (in /media/data/robs/dev/install/lib/liborocos-rtt-corba-gnulinux.so.2.6.0)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0xBB92380: omniCallHandle::upcall(omniServant*,
omniCallDescriptor&amp;) (in /usr/lib/libomniORB4.so.1.6)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0xB854C12: RTT::corba::_impl_CTaskContext::_dispatch(omniCallHandle&amp;)
(in /media/data/robs/dev/install/lib/liborocos-rtt-corba-gnulinux.so.2.6.0)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0xBB842DC: omni::omniOrbPOA::dispatch(omniCallHandle&amp;,
omniLocalIdentity*) (in /usr/lib/libomniORB4.so.1.6)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0xBB69247: omniLocalIdentity::dispatch(omniCallHandle&amp;)
(in /usr/lib/libomniORB4.so.1.6)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0xBBACB91: omni::GIOP_S::handleRequest()
(in /usr/lib/libomniORB4.so.1.6)<br>
==1343==&nbsp;&nbsp;&nbsp; by 0xBBAD9CF: omni::GIOP_S::dispatcher() (in
/usr/lib/libomniORB4.so.1.6)<br>
==1343==&nbsp; Address 0x7feffee90 is on thread 1's stack</font><font size=2 face="sans-serif"><br>
</font>
<br><font size=3><u>Note</u>: at the Task.cpp:38 I am doing &quot;output_frame_pair.reset(&amp;frame_pair);&quot;
&nbsp;in the configure hook.<br>
<br>
</font>
<p><font size=2 color=#001fe2 face="Verdana">Martin Azkarate</font>
<p><font size=1 color=#8f8f8f face="Verdana"><b>ESA - European Space Agency</b><br>
Spanish Trainee, TEC-MMA - Automation and Robotics Section </font>
<p><font size=1 color=#8f8f8f face="Verdana"><b>ESTEC - European Space
research and TEchnology Centre</b><br>
Keplerlaan 1, PO Box 299 <br>
NL-2200 AG Noordwijk, The Netherlands <br>
Martin.Azkarate@esa.int | </font><a href=www.esa.int><font size=1 color=#8f8f8f face="Verdana">www.esa.int</font></a><font size=1 color=#8f8f8f face="Verdana">
<br>
Tel +31 71 565 3480 | Mob +31 650 625 564 </font>
<br>
<br>
<br>
<br><font size=1 color=#5f5f5f face="sans-serif">From: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">Alexander Duda &lt;Alexander.Duda@dfki.de&gt;</font>
<br><font size=1 color=#5f5f5f face="sans-serif">To: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">Martin.Azkarate@esa.int</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Cc: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">&quot;rock-dev@dfki.de
&gt;&gt; \&quot;rock-dev@dfki.de\&quot;&quot; &lt;rock-dev@dfki.de&gt;</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Date: &nbsp; &nbsp; &nbsp;
&nbsp;</font><font size=1 face="sans-serif">15/07/2013 18:32</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Subject: &nbsp; &nbsp;
&nbsp; &nbsp;</font><font size=1 face="sans-serif">Re: [Rock-dev]
using FramePair structure to output two &nbsp; &nbsp; &nbsp; &nbsp;frames
&nbsp; &nbsp; &nbsp; &nbsp;together</font>
<br><font size=1 color=#5f5f5f face="sans-serif">Sent by: &nbsp; &nbsp;
&nbsp; &nbsp;</font><font size=1 face="sans-serif">rock-dev-bounces@dfki.de</font>
<br>
<hr noshade>
<br>
<br>
<br><font size=3>On 07/15/2013 06:19 PM, </font><a href=mailto:Martin.Azkarate@esa.int><font size=3 color=blue><u>Martin.Azkarate@esa.int</u></font></a><font size=3>
wrote:</font>
<br><font size=3>Hello there, <br>
<br>
Thank you for your comments, the component is running *almost* properly
now. Long story short, I was not allocating the memory for the FramePair
structure correctly. <br>
<br>
The execution and the data in the output port is correct, however, I still
have a problem when exiting the component. When the destructor Task class
is called I get a pretty ugly error starting by: <br>
<br>
*** glibc detected *** /.../orogen_default__Task: free(): invalid pointer
<br>
<br>
and followed by a backtrace and a memory map. I guess the error has to
do with the fact that I am not de-allocating the memory properly. I tried
doing so in the cleanupHook without success though. Here below is the code
from the Task.cpp (only coded Hooks). How should I de-allocate the memory
for the frame_pair structure? <br>
<br>
&lt;code&gt; <br>
<br>
bool Task::configureHook()<br>
{<br>
 &nbsp; &nbsp;if (! TaskBase::configureHook())<br>
 &nbsp; &nbsp; &nbsp; &nbsp;return false;<br>
 &nbsp; &nbsp;<br>
 &nbsp; &nbsp;index_frame=0;<br>
 &nbsp; &nbsp;<br>
 &nbsp; &nbsp;base::Time t;<br>
 &nbsp; &nbsp;frame_pair.time = t.now(); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp;//! frame_pair is defined in Task.hpp as a FramePair
structure type.<br>
 &nbsp; &nbsp;frame_pair.first.init(_width.value(),_height.value(),_channel_data_depth.value(),_output_format.value());<br>
 &nbsp; &nbsp;frame_pair.second.init(_width.value(),_height.value(),_channel_data_depth.value(),_output_format.value());<br>
 &nbsp; &nbsp;</font><a href=http://frame_pair.id/><font size=3 color=blue><u>frame_pair.id</u></font></a><font size=3>
= 0;<br>
 &nbsp; &nbsp;output_frame_pair.reset(&amp;frame_pair);<br>
<br>
 &nbsp; &nbsp;if (_undistort.value())<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;undistort_image = true;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;stereo_calibration = _calibration_parameters;<br>
 &nbsp; &nbsp;} <br>
<br>
 &nbsp; &nbsp;return true;<br>
}<br>
<br>
void Task::updateHook()<br>
{<br>
 &nbsp; &nbsp;TaskBase::updateHook();<br>
<br>
 &nbsp; &nbsp;if (_frame_in.read(input_frame)==RTT::NewData)<br>
 &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Frame* left = new Frame(input_frame-&gt;size.width,
input_frame-&gt;size.height, 8, input_frame-&gt;frame_mode);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;Frame* right = new Frame(input_frame-&gt;size.width,
input_frame-&gt;size.height, 8, input_frame-&gt;frame_mode);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;deInterlace(*input_frame,*left,*right);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;FramePair* frame_pair_ptr=output_frame_pair.write_access();<br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;if (undistort_image)<br>
 &nbsp; &nbsp; &nbsp; &nbsp;{<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;frame_helper.setCalibrationParameter(stereo_calibration.camLeft);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;frame_helper.convert(*left, frame_pair_ptr-&gt;first,
0, 0, frame_helper::INTER_LINEAR, true);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;frame_helper.setCalibrationParameter(stereo_calibration.camRight);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;frame_helper.convert(*right,
frame_pair_ptr-&gt;second, 0, 0, frame_helper::INTER_LINEAR ,true);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;}<br>
 &nbsp; &nbsp; &nbsp; &nbsp;else<br>
 &nbsp; &nbsp; &nbsp; {<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;frame_helper.convert(*left, frame_pair_ptr-&gt;first,
0, 0, frame_helper::INTER_LINEAR, false);<br>
 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;frame_helper.convert(*right,
frame_pair_ptr-&gt;second, 0, 0, frame_helper::INTER_LINEAR, false);<br>
 &nbsp; &nbsp; &nbsp; } <br>
<br>
 &nbsp; &nbsp; &nbsp; &nbsp;frame_pair_ptr-&gt;id=index_frame++;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;frame_pair_ptr-&gt;time = input_frame-&gt;time;<br>
 &nbsp; &nbsp; &nbsp; &nbsp;output_frame_pair.reset(frame_pair_ptr);<br>
 &nbsp; &nbsp; &nbsp; &nbsp;_frame_out.write(output_frame_pair);<br>
 &nbsp; &nbsp;}<br>
}<br>
<br>
void Task::cleanupHook()<br>
{<br>
 &nbsp; &nbsp;TaskBase::cleanupHook(); <br>
 &nbsp; &nbsp;<i>/// I tried deleting frame_pair and similar things here...</i><br>
} <br>
<br>
&lt;/code&gt; <br>
<b><br>
Any ideas about what to put in the cleanupHook or class destructor to avoid
the error at exit?</b> </font>
<br><font size=3>This should not happen. Use valgrind to find invalid memory
access or multiple deletion of the same object.<br>
<br>
Greets Alex<br>
<br>
</font>
<br><font size=3><br>
Thanks again for your support,</font>
<p><font size=3>Martin Azkarate </font>
<p><font size=3><b>ESA - European Space Agency</b><br>
Spanish Trainee, TEC-MMA - Automation and Robotics Section </font>
<p><font size=3><b>ESTEC - European Space research and TEchnology Centre</b><br>
Keplerlaan 1, PO Box 299 <br>
NL-2200 AG Noordwijk, The Netherlands </font><font size=3 color=blue><u><br>
</u></font><a href=mailto:Martin.Azkarate@esa.int><font size=3 color=blue><u>Martin.Azkarate@esa.int</u></font></a><font size=3>
| </font><a href=www.esa.int><font size=3>www.esa.int</font></a><font size=3>
<br>
Tel +31 71 565 3480 | Mob +31 650 625 564 <br>
<br>
<br>
<br>
From: &nbsp; &nbsp; &nbsp; &nbsp;Javier Hidalgo Carrió </font><a href=mailto:javier.hidalgo_carrio@dfki.de><font size=3 color=blue><u>&lt;javier.hidalgo_carrio@dfki.de&gt;</u></font></a><font size=3>
<br>
To: &nbsp; &nbsp; &nbsp; &nbsp;</font><a href=mailto:Martin.Azkarate@esa.int><font size=3 color=blue><u>Martin.Azkarate@esa.int</u></font></a><font size=3>
<br>
Cc: &nbsp; &nbsp; &nbsp; &nbsp;</font><a href="mailto:rock-dev@dfki.de"><font size=3 color=blue><u>rock-dev@dfki.de</u></font></a><font size=3>
<br>
Date: &nbsp; &nbsp; &nbsp; &nbsp;15/07/2013 09:39 <br>
Subject: &nbsp; &nbsp; &nbsp; &nbsp;Re: [Rock-dev] using FramePair structure
to output two frames &nbsp; &nbsp; &nbsp; &nbsp;together <br>
Sent by: &nbsp; &nbsp; &nbsp; &nbsp;</font><a href="mailto:rock-dev-bounces@dfki.de"><font size=3 color=blue><u>rock-dev-bounces@dfki.de</u></font></a><font size=3>
</font>
<p>
<hr><font size=3><br>
<br>
<br>
Hello Martin,<br>
<br>
Since you have a segmentation fault (Signal 11). Did you debug the code
with gdb looking to the backtrace?<br>
Here it is explained how to do it:<u><br>
</u></font><font size=3 color=blue><u><br>
</u></font><a href=http://rock.opendfki.de/wiki/WikiStart/Troubleshooting/DebuggingTechniques><font size=3 color=blue><u>http://rock.opendfki.de/wiki/WikiStart/Troubleshooting/DebuggingTechniques</u></font></a><font size=3><br>
<br>
<br>
Nevertheless,:<br>
<br>
 &nbsp; &nbsp; &nbsp; FramePair* frame_pair;<br>
 &nbsp; &nbsp; &nbsp; frame_pair-&gt;time=input_frame-&gt;time;<br>
<br>
To which object is frame_pair pointing to?<br>
<br>
Regards, <br>
<br>
Javier.<br>
<br>
On 07/12/2013 05:14 PM, </font><a href=mailto:Martin.Azkarate@esa.int><font size=3 color=blue><u>Martin.Azkarate@esa.int</u></font></a><font size=3>
wrote: <br>
Hello,<br>
<br>
I have the following code that works fine to separate two interlaced images
that arrive in a single port and separates them into two frames that are
sent out in two different ports:<br>
<br>
void Task::updateHook()<br>
{<br>
 &nbsp; TaskBase::updateHook();<br>
 &nbsp;<br>
 &nbsp; if (_frame_in.read(input_frame)==RTT::NewData)<br>
 &nbsp; {<br>
 &nbsp; Frame* left = new Frame(input_frame-&gt;size.width, input_frame-&gt;size.height,
8, input_frame-&gt;frame_mode);<br>
 &nbsp; Frame* right = new Frame(input_frame-&gt;size.width, input_frame-&gt;size.height,
8, input_frame-&gt;frame_mode);<br>
 &nbsp; deInterlace(*input_frame,*left,*right);<br>
 &nbsp; Frame* &nbsp;left_gray = new Frame(left-&gt;size.width, left-&gt;size.height,
8, MODE_GRAYSCALE);<br>
 &nbsp; Frame* &nbsp;right_gray = new Frame(right-&gt;size.width, right-&gt;size.height,
8, MODE_GRAYSCALE);<br>
 &nbsp; frame_helper.convertColor(*left,*left_gray);<br>
 &nbsp; frame_helper.convertColor(*right,*right_gray);<br>
 &nbsp; frame_left.reset(left_gray);<br>
 &nbsp; frame_right.reset(right_gray);<br>
 &nbsp; _frame_left.write(frame_left);<br>
 &nbsp; _frame_right.write(frame_right);<br>
 &nbsp; }<br>
}<br>
<br>
void Task::deInterlace(const base::samples::frame::Frame &amp;input, base::samples::frame::Frame
&amp;left, base::samples::frame::Frame &amp;right)<br>
{ <br>
 &nbsp; //! Note: input frame has a data depth of 16bits while the left
and right have a data depth of 8 bits. Bytes in the input frame are mixed
in order, one byte from the left, one byte from the right, and so on. <br>
 &nbsp; //! So in &quot;one pixel&quot; of 16bits of the input frame there
are &quot;two pixels&quot; of 8bits one of each left and right frames.<br>
 &nbsp; uint32_t width=(input.size.width*2);<br>
 &nbsp; uint32_t height=input.size.height;<br>
<br>
 &nbsp; int i = (width*height)-1;<br>
 &nbsp; int j = ((width*height)&gt;&gt;1)-1;<br>
<br>
 &nbsp; while (i &gt;= 0) {<br>
 &nbsp; &nbsp; &nbsp; right.image[j] = input.image[i--];<br>
 &nbsp; &nbsp; &nbsp; left.image[j--] = input.image[i--];<br>
 &nbsp; }<br>
 &nbsp; <br>
 &nbsp; left.copyImageIndependantAttributes(input);<br>
 &nbsp; right.copyImageIndependantAttributes(input);<br>
<br>
}<br>
<br>
input_frame, frame_left and frame_right are ReadOnlyPointers of type Frame
defined in Task.hpp. Rest of the Hooks are empty/default.<u><br>
<br>
Question</u>: Even thought this does the work for me, I would like to know
if this is a correct way of doing it. Mostly regarding the creation of
several Frame pointers and allocation of memory for those in the middle
of the updateHook? (This is actually important because it is related to
the question below)<br>
<br>
Now, I would like to send out both images left and right in a single port
using the structure FramePair, to make sure that they arrive together to
the stereo processing component with a single timestamp for both (as they
were both taken at the same time by a stereo camera). However, I have tried
to replicate the same logic using the FramePair structure and always got
errors in execution (compilation is ok).<br>
<br>
Changing the last part of the updateHook to the following:<br>
<br>
void Task::updateHook()<br>
{<br>
 &nbsp; TaskBase::updateHook();<br>
 &nbsp;<br>
 &nbsp; if (_frame_in.read(input_frame)==RTT::NewData)<br>
 &nbsp; {<br>
 &nbsp; Frame* left = new Frame(input_frame-&gt;size.width, input_frame-&gt;size.height,
8, input_frame-&gt;frame_mode);<br>
 &nbsp; Frame* right = new Frame(input_frame-&gt;size.width, input_frame-&gt;size.height,
8, input_frame-&gt;frame_mode);<br>
 &nbsp; deInterlace(*input_frame,*left,*right);<br>
 &nbsp; Frame* &nbsp;left_gray = new Frame(left-&gt;size.width, left-&gt;size.height,
8, MODE_GRAYSCALE);<br>
 &nbsp; Frame* &nbsp;right_gray = new Frame(right-&gt;size.width, right-&gt;size.height,
8, MODE_GRAYSCALE);<br>
 &nbsp; frame_helper.convertColor(*left,*left_gray);<br>
 &nbsp; frame_helper.convertColor(*right,*right_gray);<br>
 &nbsp; FramePair* frame_pair;<br>
 &nbsp; frame_pair-&gt;id=index_frame++; &nbsp;//! index_frame is defined
in Task.hpp and initialized to 0 in configureHook.<br>
 &nbsp; frame_pair-&gt;time = input_frame-&gt;time;<br>
 &nbsp; frame_pair-&gt;first = *left_gray;<br>
 &nbsp; frame_pair-&gt;second = *right_gray;<br>
 &nbsp; output_frame_pair.reset(frame_pair); //! output_frame_pair is also
a ReadOnlyPointer in Task.hpp<br>
 &nbsp; _frame_out.write(output_frame_pair);<br>
 &nbsp; }<br>
}<br>
<br>
gives me the following error when I run it: Orocos[WARN]: deployment <i>[myTaskContext]</i>
unexpectedly terminated with signal 11<br>
<br>
After trying several ways of assigning the frames's data to the frame_pair
structure without success I understood I was not using FramePair the right
way. So I tried something very simple as:<br>
<br>
void Task::updateHook()<br>
{<br>
 &nbsp; TaskBase::updateHook(); &nbsp; <br>
<br>
 &nbsp; if (_frame_in.read(input_frame)==RTT::NewData)<br>
 &nbsp; {<br>
 &nbsp; &nbsp; &nbsp; FramePair* frame_pair;<br>
 &nbsp; &nbsp; &nbsp; frame_pair-&gt;time=input_frame-&gt;time;<br>
 &nbsp; &nbsp; &nbsp; frame_pair-&gt;id=index_frame++;<br>
 &nbsp; &nbsp; &nbsp; frame_pair-&gt;first.init(1024,768,8,MODE_GRAYSCALE);<br>
 &nbsp; &nbsp; &nbsp; frame_pair-&gt;second.init(1024,768,8,MODE_GRAYSCALE);<br>
 &nbsp; &nbsp; &nbsp; output_frame_pair.reset(frame_pair);<br>
 &nbsp; &nbsp; &nbsp; _frame_out.write(output_frame_pair);<br>
 &nbsp; }<br>
}<br>
<br>
And it gives the same error as above and actually the execution stops before
the end of the updateHook at the line where the first.init() function is
called.<br>
<br>
I make it even simpler:<br>
<br>
void Task::updateHook()<br>
{<br>
 &nbsp; TaskBase::updateHook(); &nbsp; <br>
<br>
 &nbsp; if (_frame_in.read(input_frame)==RTT::NewData)<br>
 &nbsp; {<br>
 &nbsp; &nbsp; &nbsp; FramePair* frame_pair;<br>
 &nbsp; &nbsp; &nbsp; frame_pair-&gt;time=input_frame-&gt;time;<br>
 &nbsp; &nbsp; &nbsp; frame_pair-&gt;id=index_frame++;<br>
 &nbsp; &nbsp; &nbsp; output_frame_pair.reset(frame_pair);<br>
 &nbsp; &nbsp; &nbsp; _frame_out.write(output_frame_pair);<br>
 &nbsp; }<br>
}<br>
<br>
I get the same error when exiting the updateHook.<u><br>
<br>
Question:</u> What is it that I am missing about FramePair structure that
makes it so different to the Frame structure when it comes to memory allocation?
Somebody can put some light in this?<br>
<br>
Thank you very much for your attention,<br>
<br>
Martin</font>
<p><font size=3>Martin Azkarate </font>
<p><font size=3><b>ESA - European Space Agency</b><br>
Spanish Trainee, TEC-MMA - Automation and Robotics Section </font>
<p><font size=3><b>ESTEC - European Space research and TEchnology Centre</b><br>
Keplerlaan 1, PO Box 299 <br>
NL-2200 AG Noordwijk, The Netherlands </font><font size=3 color=blue><u><br>
</u></font><a href=mailto:Martin.Azkarate@esa.int><font size=3 color=blue><u>Martin.Azkarate@esa.int</u></font></a><font size=3>
| </font><a href=www.esa.int><font size=3><u>www.esa.int</u></font></a><font size=3>
<br>
Tel +31 71 565 3480 | Mob +31 650 625 564 </font>
<p><tt><font size=3>This message and any attachments are intended for the
use of the addressee or addressees only. The unauthorised disclosure, use,
dissemination or copying (either in whole or in part) of its content is
not permitted. If you received this message in error, please notify the
sender and delete it from your system. Emails can be altered and their
integrity cannot be guaranteed by the sender.<br>
<br>
Please consider the environment before printing this email.</font></tt><font size=3><br>
<br>
<br>
</font><tt><font size=3><br>
_______________________________________________<br>
Rock-dev mailing list</font></tt><font size=3 color=blue><u><br>
</u></font><a href="mailto:Rock-dev@dfki.de"><tt><font size=3 color=blue><u>Rock-dev@dfki.de</u></font></tt></a><font size=3 color=blue><u><br>
</u></font><a href="http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev"><tt><font size=3 color=blue><u>http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev</u></font></tt></a><font size=3><br>
<br>
</font><tt><font size=3><br>
_______________________________________________<br>
Rock-dev mailing list</font></tt><tt><font size=3 color=blue><u><br>
</u></font></tt><a href="mailto:Rock-dev@dfki.de"><tt><font size=3 color=blue><u>Rock-dev@dfki.de</u></font></tt></a><font size=3 color=blue><u><br>
</u></font><a href="http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev"><tt><font size=3 color=blue><u>http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev</u></font></tt></a><font size=3><br>
</font>
<p><tt><font size=3>This message and any attachments are intended for the
use of the addressee or addressees only. The unauthorised disclosure, use,
dissemination or copying (either in whole or in part) of its content is
not permitted. If you received this message in error, please notify the
sender and delete it from your system. Emails can be altered and their
integrity cannot be guaranteed by the sender.<br>
<br>
Please consider the environment before printing this email.<br>
</font></tt>
<br><font size=3><br>
</font>
<br><tt><font size=3>_______________________________________________<br>
Rock-dev mailing list<br>
</font></tt><a href="mailto:Rock-dev@dfki.de"><tt><font size=3 color=blue><u>Rock-dev@dfki.de</u></font></tt></a><tt><font size=3><br>
</font></tt><a href="http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev"><tt><font size=3 color=blue><u>http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev</u></font></tt></a><tt><font size=3><br>
</font></tt>
<br><font size=3><br>
</font>
<br><tt><font size=3>-- <br>
Dipl.-Ing. Alexander Duda<br>
Unterwasserrobotik<br>
<br>
DFKI Bremen<br>
Robotics Innovation Center<br>
Robert-Hooke-Straße 5<br>
28359 Bremen, Germany<br>
<br>
Phone: +49 (0)421 178-456620<br>
Fax: &nbsp; +49 (0)421 178-454150<br>
E-Mail: </font></tt><a href=mailto:alexander.duda@dfki.de><tt><font size=3 color=blue><u>alexander.duda@dfki.de</u></font></tt></a><tt><font size=3><br>
<br>
Weitere Informationen: </font></tt><a href=http://www.dfki.de/robotik><tt><font size=3 color=blue><u>http://www.dfki.de/robotik</u></font></tt></a><tt><font size=3><br>
-----------------------------------------------------------------------<br>
Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH<br>
Firmensitz: Trippstadter Straße 122, D-67663 Kaiserslautern<br>
Geschaeftsfuehrung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster<br>
(Vorsitzender) Dr. Walter Olthoff<br>
Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes<br>
Amtsgericht Kaiserslautern, HRB 2313<br>
Sitz der Gesellschaft: Kaiserslautern (HRB 2313)<br>
USt-Id.Nr.: &nbsp; &nbsp;DE 148646973<br>
Steuernummer: &nbsp;19/673/0060/3<br>
</font></tt><tt><font size=2>_______________________________________________<br>
Rock-dev mailing list<br>
Rock-dev@dfki.de<br>
</font></tt><a href="http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev"><tt><font size=2>http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev</font></tt></a><tt><font size=2><br>
</font></tt>
<br><PRE>This message and any attachments are intended for the use of the addressee or addressees only. The unauthorised disclosure, use, dissemination or copying (either in whole or in part) of its content is not permitted. If you received this message in error, please notify the sender and delete it from your system. Emails can be altered and their integrity cannot be guaranteed by the sender.

Please consider the environment before printing this email.
</PRE>