[Rock-dev] Envire environment zum Versenden vereinfachen

Stefan Haase stefan.haase at dfki.de
Mon Dec 17 20:25:00 CET 2012


Hi Jakob.

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).
Btw.: event.a.get() is an EnvironmentItem and Pointcloud is an
EnvironmentItem.. so dont we actually perform an downcast here?

The filter:
    /**
     * Event filter to exclude the pointcloud from serialization.
     */
    class EventFilterExcludePointcloud : public envire::EventFilter {
     public:
        bool filter(envire::Event const& event) {
            try {
                envire::Pointcloud* pointcloud =
dynamic_cast<envire::Pointcloud*>(event.a.get());
                if(pointcloud != NULL) {
                    LOG_INFO("Removes event %s", event.id_a.c_str());
                    return false;
                }
            } catch (std::exception& e) {
                LOG_ERROR("Exception using EventFilterExcludePointcloud:
%s", e.what());
                return false;
            }
            return true;
        }
    };

Add it to the emitter:
    mEmitter = new envire::OrocosEmitter(_envire_environment_out);
    mEmitter->setFilter(&mFilterPointcloud);
    mEmitter->useContextUpdates(&mEnv);
    mEmitter->useEventQueue( true );
    mEmitter->attach(&mEnv);


Actually this removes the pointcloud (or at least I do not see it anymore):

*With pointcloud:*

update hook:
        envire::OrocosEmitter emitter(&mEnv, _envire_environment_out);
        emitter.setTime(base::Time::now());
        emitter.flush();


*Without pointcloud:*

configureHook:
    mEmitter = new envire::OrocosEmitter(_envire_environment_out);
    mEmitter->useContextUpdates(&mEnv);
    mEmitter->attach(&mEnv);

updateHook:
    mEmitter->setTime(base::Time::now());
    mEmitter->flush();

Irritated greetings,
Stefan


Am 17. Dezember 2012 15:54 schrieb Jakob Schwendner <
jakob.schwendner at dfki.de>:

> What you can do in order to prevent certain data from being serialized is
> to set-up an event filter.
> http://rock-robotics.org/**stable/api/slam/envire/**
> classenvire_1_1EventHandler.**html<http://rock-robotics.org/stable/api/slam/envire/classenvire_1_1EventHandler.html>
>
> you need to subclass from EventFilter and implement the handle method.
> Now all you need to do is return false for any events containing the
> environment item of type pointcloud data.
>
> I am using this in the visualization of the eslam module.
>
> cheers,
>
> Jakob
>
>
> On 12/17/2012 03:43 PM, Stefan Haase wrote:
>
>> Hi Jakob,
>>
>> 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.
>>
>> 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?
>>
>> 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.
>>
>> Daher noch einmal die Frage: Gibt es eine einfache Methode, die Umgebung
>> ohne die Punktwolke zu senden bzw. sie von der Serialisierung
>> auszuschließen?
>>
>> Viele Grüße,
>> Stefan
>>
>
>


-- 
 Dipl.-Inf. Stefan Haase
 Space Robotics and Animation

Standort Bremen:
 DFKI GmbH
 Robotics Innovation Center
 Robert-Hooke-Straße 5
 28359 Bremen, Germany

 Phone: +49 (0)421 178 45-4108
 Fax:   +49 (0)421 178 45-4150
 E-Mail: Stefan.Haase at dfki.de

 Weitere Informationen: http://www.dfki.de/robotik
 -----------------------------------------------------------------------
 Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH
 Firmensitz: Trippstadter Straße 122, D-67663 Kaiserslautern
 Geschaeftsfuehrung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster
 (Vorsitzender) Dr. Walter Olthoff
 Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
 Amtsgericht Kaiserslautern, HRB 2313
 Sitz der Gesellschaft: Kaiserslautern (HRB 2313)
 USt-Id.Nr.:    DE 148646973
 Steuernummer:  19/673/0060/3
 -----------------------------------------------------------------------
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://www.dfki.de/pipermail/rock-dev/attachments/20121217/5ec9364a/attachment.htm 


More information about the Rock-dev mailing list