A C++ Module for new robotics-based product of ACME Robotics using high-quality engineering practices to detect and track Humans and return their position in the robot's reference frame.
- Aneesh Chodisetty - 117359893
- Bhargav Kumar Soothram - 117041088
- Joseph Pranadeer Reddy Katakam - 117517958
- Introduction
- Deliverables
- Proposal Documentation
- Development Process
- UML Diagrams
- Dependencies
- Tools
Object detection and tracking is a computer vision task that has become essential for many robot applications. The object detection and tracking is the base for autonomous robots in specific. Suppose there is a autonomous delivery robot that is on a mission, it has to identify objects, track them, convert their coordinates to the robot's frame of reference and then try to avoid it. This project is foucussed on solving this problem using existing state-of-art object detection algorithms.
As per Acme Robotic's requirement, we will use the input from a monocular camera to detect and track an object. This object is then converted to the robot's frame of reference. This package is then used by Acme in their robotics-based product that will be lauched next year.
Our system uses YOLOv3 model that is trained using COCO dataset and is built using C++. COCO dataset is a large-scale object detection, segmentation, and captioning dataset. Our system takes an image from a monocular camera, pre-processes the image, passes this image to the trained model, filters out the human object with the highest confidence and then outputs the location of the object in the robot's frame of reference.
- Proposal Documentation
- UML Diagrams
- Project Package with demonstrated OOPs concepts
- CI using GitHub
- Code Coverage using Coveralls
- Unit Tests using Google Test Framework
- Developer Level Documentation
- Static code analysis with cppcheck
- Google C++ Style guide with cpplint validation
- The project proposal document can be found here.
- The proposal video can be found here.
- The quadchart can be found here.
Agile software development model will be used for the development process where tasks will be tracked using a backlog table. The software is designed in a Test-Driven Development fashion and implemented using Pair programming technique. The tasks will be outlined for every sprint and after each sprint, the roles of the pair-programming group will be interchanged.
- Using the Software Engineering Practices, all design and development work was followed Agile Iterative Process (AIP) where product backlog, iteration backlog, and work log were maintained usign appropriate measure. The Sheet can be accessed here
- Each sprint's notes and reviews have been documented here
- The project video
-
The class diagram can be found here.
-
The flow of our system is as follows:
Name | Version | License |
---|---|---|
Ubuntu | 20.04(LTS) | FSF Licenses |
C++ | 14 | Creative Commons Attribution-ShareAlike 3.0 Unported License |
OpenCV | 4.6.0 | Apache License 2.0 |
Cmake | 3.16.3 | BSD 3-clause License |
Usage/Type | Tool name | License |
---|---|---|
IDE | Visual Studio Code | MIT License |
CI pipeline | Github CI | Creative Commons Attribution 4.0 |
Code coverage | Coveralls | Coveralls, LLC |
Running tests | Gtests | BSD 3-Clause "New" or "Revised" License |
# Install minimal prerequisites (Ubuntu 18.04 as reference)
sudo apt update && sudo apt install -y cmake g++ wget unzip
# Download and unpack sources
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
unzip opencv.zip
# Create build directory
mkdir -p build && cd build
# Configure
cmake ../opencv-4.x
# Build
cmake --build .
# install
sudo make install
git clone https://github.com/z-Ash-z/Human_detection_and_tracking.git
cd <repository path>
mkdir build
cd build
cmake ..
make
cd <repository path>/build
./app/human_detect_and_track_app
cd <repository path>/build
./test/cpp-test
To install doxygen run the following command:
sudo apt-get install doxygen
To generate the doxygen documents:
doxygen doxygen.config
The documents generated are store in ./docs/doxygen
folder.
- Depends on lighting conditions
- Low fps
- Identified human is highly sensitive to threhold