<div dir="ltr"><div>2014-02-25 18:15 GMT+01:00 Gabriel Alcantara&nbsp;<span dir="ltr">&lt;<a href="mailto:alcantara@poli.ufrj.br" target="_blank">alcantara@poli.ufrj.br</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div dir="ltr">Hi Sylvain,<div><br></div><div>I am coding the orogen/octomap package and the opaque type is really consuming me. Eduardo is also helping me.</div><div><br></div><div>What I understood from the opaque type is that we need to encapsulate the octomap, so the orocos can understand this type, am I right?! So I tried to put them as an attribute of an opaque_type_octomap. I got a bunch of compilation erros, even with the gccxml.</div>
<div><br></div><div>Then I tried to do something as a ROS msg and encapsulate like that. I could run the rock-orogen-create, but not the amake. I got this error&nbsp;</div><div><div><br></div><div>&nbsp;error: &lsquo;bool orogen_typekits::fromCORBA(octotype::Task_STATES&amp;, const orogen::octotype::Corba::Task_STATES&amp;)&rsquo; redeclared as different kind of symbol<br>
</div><div><br></div><div>the code is in this git&nbsp;</div><div><br></div><div><a href="https://github.com/OpenLEAD/OrogenOctomap.git" target="_blank">https://github.com/OpenLEAD/OrogenOctomap.git</a></div></div></div></blockquote>
<div>&nbsp;</div></div><div><br></div>I found the problem ...<div>&nbsp;1. you did not include any header that define octomap::OcTree. Newer versions of orogen (in next and master) generate an error about it, but I guess you are using stable.</div>
<div>&nbsp;2. OcTree.h cannot be loaded by gccxml (they use a tr1 header a.k.a. some C++11 code), and therefore cannot be loaded by orogen itself. This is a major issue. I am going to start with replacing gccxml with clang ASAP, as gccxml is going to really hold us back in the next years.</div>
<div><br></div><div>In the meantime, you will have to do it &quot;the ROS way&quot; :(:</div><div>&nbsp;- create the intermediate type and the conversion functions</div><div>&nbsp;- use the intermediate type directly on the ports (i.e. never the opaque) and convert manually inside the C++ code (in the orogen tasks)</div>
<div><br></div><div>It sucks, but will allow you to go forward</div><div><br></div><div>Sylvain</div><div class="gmail_extra"><br><br></div></div>