You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A C++ module to detect and track humans which outputs location information directly in a robot's reference frame.
8
9
9
10
## Authors
10
-
11
+
Sprint 1 -
11
12
- Arunava Basu (Navigator)
12
13
- Aditi Ramadwar (Driver)
13
14
15
+
Sprint 2 -
16
+
- Arunava Basu (Driver)
17
+
- Aditi Ramadwar (Navigator)
14
18
## Introduction
15
19
Human detection or person detection is the computer vision task of the localization and classification of human being(s) in an image. This is a key part in robotic applications for various reasons such as safety, obstacle avoidance, collaborative robotics, etc.
16
20
@@ -43,8 +47,7 @@ Continuous integration is tracked by using Travis CI and code coverage is tracke
43
47
44
48
Run this command in the root directory to install the dependencies :
45
49
```
46
-
chmod a+x scripts/install_dependencies.sh
47
-
./scripts/install_dependencies.sh
50
+
sh install_dependencies.sh
48
51
```
49
52
50
53
## System Architecture
@@ -54,29 +57,73 @@ The following shows the activity diagram for our proposed schema :
54
57
*Fig 1 : Activity Diagram*
55
58
56
59
The corresponding class diagram can be found [here](https://github.com/llDev-Rootll/Human_Detection_Tracking-CPP/blob/development/UML/revised/Revised_Class_Diagram.pdf).
57
-
## Testing
60
+
61
+
## Output Data Explained
62
+
At the output of the Human Detection module from the `detectHumans` method we get a vector of Rects ('Rect' is a data type in OpenCV).
63
+
64
+
The structure of Rect is: (x, y, z, redundant); It has four parameters,
65
+
the first three parameters indicate the coordinates of a point in terms of robot's reference frame (x, y, z)
66
+
67
+
These coordinates can be extracted from the Rect and used as per application.
68
+
The redundant variable is part of the transformation vector which is not useful for us for showing the location of the human detected.
69
+
70
+
For each person detected in frame, two Rects are created. We are taking two location points of each human detected. To get an estimated location of the human in the entire frame, we need to extract the x, y, z coordinates from both the Rects created where,
71
+
x is the distance of the human from the robot's reference frame,
72
+
y is the horizontal component and
73
+
z is the vertical component.
74
+
75
+
Example:
76
+
If there are two humans detected in a frame, then we will get a vector of four Rects. Consider the output vector variable we got is 'positions'. Size of positions is 4 since in our example 2 humans are detected, then, first human's location will be extracted from Rects positions[0] and positions[1]
77
+
second human's location will be extracted from Rects positions[2] and positions[3]
78
+
Example for location extraction of one of the coordinates of the first human:
79
+
80
+
> x = position[0] (0)
81
+
> y = position[0] (1)
82
+
> z = position[0] (2)
83
+
84
+
## Steps to Run the application
85
+
Run the following commands in the root folder to build and run the Human Detector and Tracker
86
+
87
+
sh getModels.sh
88
+
sh build_with_coverage.sh
89
+
sh run_app.sh
90
+
91
+
## Running Unit tests
58
92
Unit Testing will be used to test each submodule and ensure complete code coverage. For this Google Gtest will be leveraged and identical test classes and methods will be created with minimal modification in order to facilitate testing.
93
+
Execute these commands in the root folder to run the test cases:
94
+
```
95
+
sh run_tests.sh
96
+
```
97
+
## Running cpplint & cppcheck tests
98
+
Run the following command in the root directory to generate cpplint results in **results** folder
59
99
60
-
Additionally, a small test subset of the COCO test data will be used to validate model accuracy.
100
+
sh run_cpplint.sh
101
+
102
+
Run the following command in the root directory to generate cppcheck results in **results** folder
103
+
104
+
sh run_cppcheck.sh
61
105
62
106
## Building without code coverage
63
-
Execute these commands in the root folder :
107
+
Run the following command in the root folder :
64
108
```
65
-
chmod a+x scripts/build_without_coverage.sh
66
-
./scripts/build_without_coverage.sh
109
+
sh build_without_coverage.sh
67
110
```
68
111
## Building with code coverage
69
112
70
-
Execute these commands in the root folder :
113
+
Run these commands in the root folder :
71
114
```
72
115
sudo apt-get install lcov
73
-
chmod a+x scripts/build_with_coverage.sh
74
-
./scripts/build_with_coverage.sh
116
+
sh build_with_coverage.sh
75
117
```
118
+
## Generate Doxygen documentation
119
+
Run the following command in the root folder:
120
+
121
+
sh create_doxy_docs.sh
122
+
76
123
## Phase 1
77
124
78
125
- Defined Robot, HumanDetector and test classes according to the UML diagrams.
79
126
- Implemented all Robot and HumanDetector methods except for transformToRobotFrame method.
80
127
- Definition and implementation of test cases are planned for Phase 2.
81
-
Please refer to the backlog table, [here](https://docs.google.com/spreadsheets/d/1tjJKUd9B4bBSYAHnrwuMjWNl_lUBmqeB6lw7iTNKZSg/edit?usp=sharing), for an exhaustive list tasks completed in Phase 1.
128
+
Please refer to the backlog table, [here](https://docs.google.com/spreadsheets/d/1tjJKUd9B4bBSYAHnrwuMjWNl_lUBmqeB6lw7iTNKZSg/edit?usp=sharing), for an exhaustive list tasks completed in Phase 1.
0 commit comments