-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Zhi Yan
authored
Mar 15, 2017
1 parent
0a2e790
commit 731d8f1
Showing
100 changed files
with
19,462 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,204 @@ | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
Changelog for package bayes_people_tracker | ||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
1.1.8 (2015-09-03) | ||
------------------ | ||
|
||
1.1.6 (2015-06-24) | ||
------------------ | ||
* 1.1.5 | ||
* updated changelogs | ||
* 1.1.4 | ||
* updated changelogs | ||
* Contributors: Jenkins | ||
|
||
1.1.5 (2015-05-22) | ||
------------------ | ||
|
||
1.1.4 (2015-05-10) | ||
------------------ | ||
|
||
1.1.3 (2015-04-10) | ||
------------------ | ||
|
||
1.1.2 (2015-04-07) | ||
------------------ | ||
|
||
1.1.1 (2015-04-03) | ||
------------------ | ||
|
||
1.0.0 (2015-03-10) | ||
------------------ | ||
* Nicer print | ||
* Adding ability to switch between Extended and Unscented Kalman Filter | ||
* Making simple_tracking template based. | ||
* Changed config file structure and made necessary changes to the code. | ||
* Adding pose, pose_array and people publishers to connection callback. | ||
* * Publishing a pose array for all detected people to have more generic output | ||
* Added missing bayes tracker parameters to launch files and READMEs | ||
* Starting the mdl tracker is now optional when using the robot launch file. `with_mdl_tracker=true` starts the mdl tracker in addition to the bayes tracker. Default is `false` | ||
* forgot (again) to change default detector.yaml in bayes_people_tracker | ||
* adding visualization to rviz via nav_msgs/Path | ||
* Contributors: Christian Dondrup, Ferdian Jovan | ||
|
||
0.1.4 (2015-03-06) | ||
------------------ | ||
* Publishin people_msgs/People and adding orientation. | ||
* forgot to undo my config for detectors.yaml in bayes_people_tracker | ||
* provide online stitching poses into trajectories | ||
* add online trajectory construction from /people_tracker/positions | ||
* Contributors: Christian Dondrup, Ferdian Jovan | ||
|
||
0.1.3 (2015-02-25) | ||
------------------ | ||
|
||
0.1.1 (2015-02-18) | ||
------------------ | ||
|
||
0.1.0 (2015-02-18) | ||
------------------ | ||
* Setting correct version number. The changelogs will be regenerated because the ones from the release branch would not be consistent with the changes made in the devel branch. | ||
* Small bug in ros_debug statment | ||
* Changed launch files to new format. | ||
* Changed launch files to new format. | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.14 (2014-11-23) | ||
------------------- | ||
* Updating changelogs and adjusting version numbers | ||
* 0.0.12 | ||
* Adjusting version number. | ||
* Updated changelogs | ||
* 0.0.3 | ||
* Updated changelogs | ||
* 0.0.2 | ||
* Updated changelog | ||
* 0.0.1 | ||
* Created changelogs | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.13 (2014-10-31 16:14) | ||
------------------------- | ||
* Updating changelogs and manually bumping version number. | ||
* 0.0.11 | ||
* Updated changelogs | ||
* 0.0.10 | ||
* Updating changelog | ||
* 0.0.9 | ||
* Updated changelogs | ||
* 0.0.8 | ||
* Updated changelogs | ||
* 0.0.7 | ||
* Updated changelogs | ||
* 0.0.6 | ||
* Updated changelogs | ||
* 0.0.5 | ||
* Updated changelogs | ||
* 0.0.4 | ||
* Updating changelogs | ||
* Removing the leg_detector from the run_dependencies of the launch package for indigo release. | ||
leg_detector is not released for indigo yet. | ||
* 0.0.3 | ||
* Updated changelogs | ||
* 0.0.2 | ||
* Updated changelog | ||
* 0.0.1 | ||
* Created changelogs | ||
* 0.0.11 | ||
* Updated changelogs | ||
* 0.0.10 | ||
* Updating changelog | ||
* 0.0.9 | ||
* Updated changelogs | ||
* 0.0.8 | ||
* Updated changelogs | ||
* 0.0.7 | ||
* Updated changelogs | ||
* 0.0.6 | ||
* Updated changelogs | ||
* 0.0.5 | ||
* Updated changelogs | ||
* 0.0.4 | ||
* Updating changelogs | ||
* Removing the leg_detector from the run_dependencies of the launch package for indigo release. | ||
leg_detector is not released for indigo yet. | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.12 (2014-10-31 16:07) | ||
------------------------- | ||
* Adjusting version number. | ||
* Updated changelogs | ||
* 0.0.3 | ||
* Updated changelogs | ||
* 0.0.2 | ||
* Updated changelog | ||
* 0.0.1 | ||
* Created changelogs | ||
* Added proper link to paper describing bayes_tracker | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.11 (2014-10-30 11:18) | ||
------------------------- | ||
* Updated changelogs | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.10 (2014-10-30 10:19) | ||
------------------------- | ||
* Updating changelog | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.9 (2014-10-30 09:52) | ||
------------------------ | ||
* Updated changelogs | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.8 (2014-10-30 09:32) | ||
------------------------ | ||
* Updated changelogs | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.7 (2014-10-29 20:40) | ||
------------------------ | ||
* Updated changelogs | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.6 (2014-10-29 20:32) | ||
------------------------ | ||
* Updated changelogs | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.5 (2014-10-29 18:30) | ||
------------------------ | ||
* Updated changelogs | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.4 (2014-10-29 18:22) | ||
------------------------ | ||
* Updating changelogs | ||
* Removing the leg_detector from the run_dependencies of the launch package for indigo release. | ||
leg_detector is not released for indigo yet. | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.3 (2014-10-23) | ||
------------------ | ||
* Updated changelogs | ||
* Added LICENSE files. Fixes `#101 <https://github.com/strands-project/strands_perception_people/issues/101>`_ | ||
* Contributors: Christian Dondrup, Lucas Beyer | ||
|
||
0.0.2 (2014-10-18 17:39) | ||
------------------------ | ||
* Updated changelog | ||
* Contributors: Christian Dondrup | ||
|
||
0.0.1 (2014-10-18 17:28) | ||
------------------------ | ||
* Created changelogs | ||
* Renamed strands_pedestrian_tracking to mdl_people_tracker | ||
This also includes renaming the messages and most of the parameters. | ||
* Forgot to install the config dir. | ||
* Fixed missing things | ||
* Prepared bayes_people_tracker for release. | ||
* Splitting utils package into seperate packages. | ||
* Renamed strands_people_tracker to bayes_people_tracker | ||
* Contributors: Christian Dondrup |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
cmake_minimum_required(VERSION 2.8.3) | ||
project(bayes_people_tracker) | ||
|
||
## Find catkin macros and libraries | ||
## if COMPONENTS list like find_package(catkin REQUIRED COMPONENTS xyz) | ||
## is used, also find other catkin packages | ||
find_package(catkin REQUIRED COMPONENTS | ||
bayes_tracking | ||
geometry_msgs | ||
message_generation | ||
people_msgs | ||
roscpp | ||
std_msgs | ||
tf | ||
visualization_msgs | ||
) | ||
find_package(Boost REQUIRED COMPONENTS thread) | ||
|
||
####################################### | ||
## Declare ROS messages and services ## | ||
####################################### | ||
|
||
add_message_files( | ||
FILES | ||
PeopleTracker.msg | ||
) | ||
|
||
generate_messages( | ||
DEPENDENCIES | ||
std_msgs | ||
geometry_msgs | ||
) | ||
|
||
################################### | ||
## catkin specific configuration ## | ||
################################### | ||
catkin_package( | ||
INCLUDE_DIRS include | ||
CATKIN_DEPENDS bayes_tracking geometry_msgs roscpp std_msgs tf visualization_msgs | ||
) | ||
|
||
########### | ||
## Build ## | ||
########### | ||
|
||
include_directories( | ||
include | ||
${catkin_INCLUDE_DIRS} | ||
${Boost_INCLUDE_DIRS} | ||
) | ||
|
||
add_executable(bayes_people_tracker | ||
src/people_tracker/people_tracker.cpp | ||
) | ||
|
||
add_dependencies(bayes_people_tracker ${PROJECT_NAME}_generate_messages_cpp ${catkin_EXPORTED_TARGETS}) | ||
|
||
target_link_libraries(bayes_people_tracker | ||
${catkin_LIBRARIES} | ||
${Boost_LIBRARIES} | ||
) | ||
|
||
############# | ||
## Install ## | ||
############# | ||
|
||
install(TARGETS bayes_people_tracker | ||
ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} | ||
LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} | ||
RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} | ||
) | ||
|
||
install(DIRECTORY include/${PROJECT_NAME}/ | ||
DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} | ||
FILES_MATCHING PATTERN "*.h" | ||
PATTERN ".git" EXCLUDE | ||
) | ||
|
||
install(DIRECTORY launch | ||
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} | ||
) | ||
|
||
install(DIRECTORY config | ||
DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
The MIT License (MIT) | ||
|
||
Copyright (c) 2014 Christian Dondrup | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy of | ||
this software and associated documentation files (the "Software"), to deal in | ||
the Software without restriction, including without limitation the rights to | ||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of | ||
the Software, and to permit persons to whom the Software is furnished to do so, | ||
subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | ||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR | ||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER | ||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN | ||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,87 @@ | ||
## People Tracker | ||
This package uses the bayes_tracking library developed by Nicola Bellotto (University of Lincoln), please cite with: [10.5281/zenodo.15825](https://zenodo.org/record/15825) and [1] | ||
|
||
The people_tracker uses a single config file to add an arbitrary amount of detectors. The file `config/detectors.yaml` contains the necessary information for the upper_body_detector and the ROS leg_detector (see `to_pose_array` in detector_msg_to_pose_array/README.md): | ||
|
||
``` | ||
bayes_people_tracker: | ||
filter_type: "UKF" # The Kalman filter type: EKF = Extended Kalman Filter, UKF = Uncented Kalman Filter | ||
cv_noise_params: # The noise for the constant velocity prediction model | ||
x: 1.4 | ||
y: 1.4 | ||
detectors: # Add detectors under this namespace | ||
upper_body_detector: # Name of detector (used internally to identify them). Has to be unique. | ||
topic: "/upper_body_detector/bounding_box_centres" # The topic on which the geometry_msgs/PoseArray is published | ||
cartesian_noise_params: # The noise for the cartesian observation model | ||
x: 0.5 | ||
y: 0.5 | ||
matching_algorithm: "NNJPDA" # The algorthim to match different detections. NN = Nearest Neighbour, NNJPDA = NN Joint Probability Data Association | ||
leg_detector: # Name of detector (used internally to identify them). Has to be unique. | ||
topic: "/to_pose_array/leg_detector" # The topic on which the geometry_msgs/PoseArray is published | ||
cartesian_noise_params: # The noise for the cartesian observation model | ||
x: 0.2 | ||
y: 0.2 | ||
matching_algorithm: "NNJPDA" # The algorthim to match different detections. NN = Nearest Neighbour, NNJPDA = NN Joint Probability Data Association | ||
``` | ||
|
||
New detectors are added under the parameter namespace `bayes_people_tracker/detectors`. Let's have a look at the upper body detector as an example: | ||
|
||
### Tracker Parameters | ||
|
||
The tracker offers two configuration parameters: | ||
* `filter_type`: This specefies which variant of the Kalman filter to use. Currently, it implements an Extended and an Unscented Kalman filter which can be chosen via `EKF` and `UKF`, respectively. | ||
* `cv_noise_params`: parameter is used for the constant velocity prediction model. | ||
* specifies the standard deviation of the x and y velocity. | ||
|
||
### Detector Parameters | ||
|
||
* For every detector you have to create a new namespace where the name is used as an internal identifier for this detector. Therefore it has to be unique. In this case it is `upper_body_detector` | ||
* The `topic` parameter specifies the topic under which the detections are published. The type has to be `geometry_msgs/PoseArray`. See `to_pose_array` in detector_msg_to_pose_array/README.md if your detector does not publish a PoseArray. | ||
* The `cartesian_noise_params` parameter is used for the Cartesian observation model. | ||
* specifies the standard deviation of x and y. | ||
* `matching_algorithm` specifies the algorithm used to match detections from different sensors/detectors. Currently there are two different algorithms which are based on the Mahalanobis distance of the detections (default being NNJPDA if parameter is misspelled): | ||
* NN: Nearest Neighbour | ||
* NNJPDA: Nearest Neighbour Joint Probability Data Association | ||
|
||
All of these are just normal ROS parameters and can be either specified by the parameter server or using the yaml file in the provided launch file. | ||
|
||
### Message Type: | ||
|
||
The tracker publishes the following: | ||
* `pose`: A `geometry_msgs/PoseStamped` for the clostes person. | ||
* `pose_array`: A `geometry_msgs/PoseArray` for all detections. | ||
* `people`: A `people_msgs/People` for all detections. Can be used for layerd costmaps. | ||
* `marker_array`: A `visualization_msgs/MarkerArray` showing little stick figures for every detection. Figures are orient according to the direction of velocity. | ||
* `positions`: A `bayes_people_tracker/PeopleTracker` message. See below. | ||
|
||
``` | ||
std_msgs/Header header | ||
string[] uuids # Unique uuid5 (NAMESPACE_DNS) person id as string. Id is based on system time on start-up and tracker id. Array index matches ids array index | ||
geometry_msgs/Pose[] poses # The real world poses of the detected people in the given target frame. Default: /map. Array index matches ids/uuids array index | ||
float64[] distances # The distances of the detected persons to the robot (polar coordinates). Array index matches ids array index. | ||
float64[] angles # Angles of the detected persons to the coordinate frames z axis (polar coordinates). Array index matches ids array index. | ||
float64 min_distance # The minimal distance in the distances array. | ||
float64 min_distance_angle # The angle according to the minimal distance. | ||
``` | ||
|
||
The poses will be published in a given `target_frame` (see below) but the distances and angles will always be relative to the robot in the `/base_link` tf frame. | ||
|
||
### Running | ||
Parameters: | ||
|
||
* `target_frame`: _Default: /base_link_:the tf frame in which the tracked poses will be published. | ||
* `position`: _Default: /people_tracker/positions_: The topic under which the results are published as bayes_people_tracker/PeopleTracker` | ||
* `pose`: _Default: /people_tracker/pose_: The topic under which the closest detected person is published as a geometry_msgs/PoseStamped` | ||
* `pose_array`: _Default: /people_tracker/pose_array_: The topic under which the detections are published as a geometry_msgs/PoseArray` | ||
* `poeple`: _Default: /people_tracker/people_: The topic under which the results are published as people_msgs/People` | ||
* `marker`: _Default /people_tracker/marker_array_: A visualisation marker array. | ||
|
||
You can run the node with: | ||
|
||
``` | ||
roslaunch bayes_people_tracker people_tracker.launch | ||
``` | ||
|
||
This is the recommended way of launching it since this will also read the config file and set the right parameters for the detectors. | ||
|
||
[1] N. Bellotto and H. Hu, “Computationally efficient solutions for tracking people with a mobile robot: an experimental evaluation of bayesian filters,” Autonomous Robots, vol. 28, no. 4, pp. 425–438, 2010. |
Oops, something went wrong.