strands-project / strands_perception_people

long-term detection, tracking and recognition of people
96 stars 70 forks source link

Adding a filter for the people tracker based on a map #182

Closed cdondrup closed 8 years ago

cdondrup commented 8 years ago

Closes #175

Needs #169 merged

Changes made to bayes_people_tracker:

Changes made to bayes_people_tracker_logging:

Changes made to perception_people_launch:

The people_tracker_filter works as described in issue #175 which means it filters the output of the tracker using a map. By default this is the map published on /map. Hence, this node listens to all the topics published by the bayes_people_tracker and filters out the tracks that are inside obstacles, unknown areas, or off the grid. Additionally, the filter can utilise its own map server and its own "no_people_map" which works similar to the old "no_go_map". Below is an example of a map I used for an experiment to only allow detections in the centre of our lab so I could stay in the black areas without interfeering and to prevent false positives from furniture:

map

In this map, every track that would result in the person being inside the black areas, is filtered out and only the tracks where the person is inside the free space are left.

The results are publish on:

The filter is started by default when starting the people perception but like all the other components of the people perception pipeline, actually does not do any processing unless someone subscribes to one of its published topics. To start it with an especially created map, run:

roslaunch perception_people_launch people_tracker_robot.launch with_tracker_filter_map:=true tracker_filter_map:=my_map.yaml

The map is then publish under /ppl_filter_map.

_Note: Since this node only filters the results, a person that goes into a black area and then leaves it again will have the same uuid if they have been tracked in the mean time. This might mean that a person vanishes in a "no_peoplezone" and then re-appears.

I tested this on Linda and it will also work with the people_tracker_emulator in simulation.

If I remember correctly, @lucasb-eyer @PDuckworth and @ferdianjovan voiced interest in this node, so please feel free to test it.

cdondrup commented 8 years ago

This failed due to #169 not being merged yet:

/var/lib/jenkins/workspace/pr-indigo-strands_perception_people/monitored_vcs/people_tracker_filter/src/filter.cpp:109:28: error: 'bayes_people_tracker::PeopleTracker' has no member named 'velocities'
                     pt_out.velocities.push_back(pt->velocities[i]);

Please retest after merge of #169

marc-hanheide commented 8 years ago

retest this please

marc-hanheide commented 8 years ago

:-( @cdondrup ?

cdondrup commented 8 years ago

Not sure what happened. I rebased now... Let's see if that works.

cdondrup commented 8 years ago

Builds now.