<div>Hi Jakob.</div><div><br></div><div>I did like you told or at least as I think you told (see below) and it seems to work (no Pointcloud in my visualization-module anymore), but on the second look I realize that it didn't do anything (see a little bit more below).</div>
<div>Btw.: event.a.get() is an EnvironmentItem and Pointcloud is an EnvironmentItem.. so dont we actually perform an downcast here? </div><div><br></div><div>The filter:</div><div> /**</div><div> * Event filter to exclude the pointcloud from serialization.</div>
<div> */</div><div> class EventFilterExcludePointcloud : public envire::EventFilter {</div><div> public:</div><div> bool filter(envire::Event const& event) {</div><div> try {</div><div> envire::Pointcloud* pointcloud = dynamic_cast<envire::Pointcloud*>(event.a.get());</div>
<div> if(pointcloud != NULL) {</div><div> LOG_INFO("Removes event %s", event.id_a.c_str());</div><div> return false;</div><div> }</div><div> } catch (std::exception& e) {</div>
<div> LOG_ERROR("Exception using EventFilterExcludePointcloud: %s", e.what());</div><div> return false;</div><div> }</div><div> return true;</div><div> }</div>
<div> };</div><div><br></div><div>Add it to the emitter:</div><div><div> mEmitter = new envire::OrocosEmitter(_envire_environment_out);</div><div> mEmitter->setFilter(&mFilterPointcloud);</div><div> mEmitter->useContextUpdates(&mEnv);</div>
<div> mEmitter->useEventQueue( true );</div><div> mEmitter->attach(&mEnv);</div></div><div><br></div><div><br></div><div>Actually this removes the pointcloud (or at least I do not see it anymore):</div><div>
<br></div><div><b>With pointcloud:</b></div><div><br></div><div>update hook:</div><div><div> envire::OrocosEmitter emitter(&mEnv, _envire_environment_out);</div><div> emitter.setTime(base::Time::now());</div>
<div> emitter.flush(); </div></div><div><br></div><div><br></div><div><b>Without pointcloud:</b></div><div><br></div><div>configureHook:</div><div><div> mEmitter = new envire::OrocosEmitter(_envire_environment_out);</div>
<div> mEmitter->useContextUpdates(&mEnv);</div><div> mEmitter->attach(&mEnv);</div></div><div><br></div><div>updateHook:</div><div><div> mEmitter->setTime(base::Time::now());</div><div> mEmitter->flush(); </div>
</div><div><br></div><div>Irritated greetings,</div><div>Stefan</div><div class="gmail_extra"><br><br><div class="gmail_quote">Am 17. Dezember 2012 15:54 schrieb Jakob Schwendner <span dir="ltr"><<a href="mailto:jakob.schwendner@dfki.de" target="_blank">jakob.schwendner@dfki.de</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">What you can do in order to prevent certain data from being serialized is to set-up an event filter.<br>
<a href="http://rock-robotics.org/stable/api/slam/envire/classenvire_1_1EventHandler.html" target="_blank">http://rock-robotics.org/<u></u>stable/api/slam/envire/<u></u>classenvire_1_1EventHandler.<u></u>html</a><br>
<br>
you need to subclass from EventFilter and implement the handle method.<br>
Now all you need to do is return false for any events containing the environment item of type pointcloud data.<br>
<br>
I am using this in the visualization of the eslam module.<br>
<br>
cheers,<br>
<br>
Jakob<div class="HOEnZb"><div class="h5"><br>
<br>
On 12/17/2012 03:43 PM, Stefan Haase wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi Jakob,<br>
<br>
ich habe eine Gesamtumgebung (envire::Environment mEnv;), in der ich permanent neue Punkte zur Punktwolke hinzufüge, um mir daraus eine Traversability-Map zu erzeugen.<br>
<br>
Zwecks externer Visualisierung muss ich jetzt aber die Umgebung verschicken und da ich sonst Probleme mit der Größe bekomme, würde ich gerne zuvor die Pointcloud entfernen. Gibt es einen einfachen Weg dies zu tun?<br>
<br>
Ich habe schon versucht, nur die MLS und die Traversability Map an eine zweite Umgebung anzuheften, die Pointclouds vor dem Versenden der Umgebung zu entfernen (detach) und nachträglich wieder hinzuzufügen und noch ein paar andere Sachen, hat leider alles zu Abstürzen geführt.<br>
<br>
Daher noch einmal die Frage: Gibt es eine einfache Methode, die Umgebung ohne die Punktwolke zu senden bzw. sie von der Serialisierung auszuschließen?<br>
<br>
Viele Grüße,<br>
Stefan<br>
</blockquote>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br> Dipl.-Inf. Stefan Haase<br> Space Robotics and Animation<br> <br>Standort Bremen:<br> DFKI GmbH<br> Robotics Innovation Center<br> Robert-Hooke-Straße 5<br>
28359 Bremen, Germany<br> <br> Phone: +49 (0)421 178 45-4108<br> Fax: +49 (0)421 178 45-4150<br> E-Mail: <a href="mailto:Stefan.Haase@dfki.de" target="_blank">Stefan.Haase@dfki.de</a><br> <br> Weitere Informationen: <a href="http://www.dfki.de/robotik" target="_blank">http://www.dfki.de/robotik</a><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.: DE 148646973<br>
Steuernummer: 19/673/0060/3<br> -----------------------------------------------------------------------<br>
</div>