Skip to content
This repository was archived by the owner on Jan 7, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion object_analytics_node/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()

# add_subdirectory(tests)
add_subdirectory(tests)
endif()

install(DIRECTORY launch
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,9 @@ class Tracking
*
* @param[in] tracking_id ID of this tracking.
* @param[in] name Name of the tracked object.
* @param[in] probability of the tracked object.
* @param[in] rect Roi of the tracked object.
*/
Tracking(
int32_t tracking_id, const std::string & name,
const float & probability, const cv::Rect2d & rect);
int32_t tracking_id, const std::string & name);

/**
* @brief Default destructor.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,14 +113,10 @@ class TrackingManager
* the tracking_cnt automatically increases by one.
*
* @param[in] obj_name Name of the object (e.g. people, dog, etc.).
* @param[in] probability the object.
* @param[in] rect Roi of the tracked object.
* @return Pointer to the tracking added.
*/
std::shared_ptr<Tracking> addTracking(
const std::string & obj_name,
const float & probability,
const cv::Rect2d & rect);
const std::string & obj_name);

/**
* @brief Clean up inactive tracking in the list.
Expand Down
5 changes: 1 addition & 4 deletions object_analytics_node/src/tracker/tracking.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,16 +31,13 @@ const int32_t Tracking::kTrajLength = 30;
#define DEBUG_ID 2

Tracking::Tracking(
int32_t tracking_id, const std::string & name,
const float & probability, const cv::Rect2d & rect)
int32_t tracking_id, const std::string & name)
: tracker_(cv::Ptr<TrackerKCFImpl>()),
obj_name_(name),
probability_(probability),
tracking_id_(tracking_id),
algo_("KCF"),
state_(INIT)
{
UNUSED(rect);
UNUSED(name);
}

Expand Down
9 changes: 3 additions & 6 deletions object_analytics_node/src/tracker/tracking_manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -245,8 +245,7 @@ void TrackingManager::detectRecvProcess(
cv::Rect2d d_rect = objs[i].BoundBox_;
tracker->updateTracker(frame, d_rect, 100.0f, true);
} else {
std::shared_ptr<Tracking> tracker = addTracking(
objs[i].Category_, objs[i].Confidence_, objs[i].BoundBox_);
std::shared_ptr<Tracking> tracker = addTracking(objs[i].Category_);
tracker->rectifyTracker(frame, objs[i].BoundBox_);
}
}
Expand Down Expand Up @@ -514,12 +513,10 @@ std::vector<std::shared_ptr<Tracking>> TrackingManager::getTrackedObjs()
}

std::shared_ptr<Tracking> TrackingManager::addTracking(
const std::string & name,
const float & probability,
const cv::Rect2d & rect)
const std::string & name)
{
std::shared_ptr<Tracking> t =
std::make_shared<Tracking>(tracking_cnt++, name, probability, rect);
std::make_shared<Tracking>(tracking_cnt++, name);
if (tracking_cnt == -1) {
TRACE_ERR("tracking count overflow");
}
Expand Down
7 changes: 3 additions & 4 deletions object_analytics_node/tests/unittest_segmenter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,13 +83,12 @@ TEST(UnitTestSegmenter, segmenter) {

std::unique_ptr<Segmenter> impl;
impl.reset(new Segmenter(std::unique_ptr<AlgoProvider>(new AlgoProvider())));
std::shared_ptr<ObjectsInBoxes3D> obj3ds =
std::make_shared<ObjectsInBoxes3D>();
ObjectsInBoxes3D obj3ds;

impl->segment(objects_in_boxes2d, cloudMsg, obj3ds);

EXPECT_EQ(static_cast<size_t>(1), obj3ds->objects_in_boxes.size());
ObjectInBox3D obj3d = obj3ds->objects_in_boxes[0];
EXPECT_EQ(static_cast<size_t>(1), obj3ds.objects_in_boxes.size());
ObjectInBox3D obj3d = obj3ds.objects_in_boxes[0];

EXPECT_TRUE(obj3d.min == getPoint32(0.1, 0.2, 0.3));
EXPECT_TRUE(obj3d.max == getPoint32(44.1, 44.2, 44.3));
Expand Down
34 changes: 17 additions & 17 deletions object_analytics_node/tests/unittest_tracking.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,39 +16,39 @@
#include <gtest/gtest.h>
#include <cassert>
#include <string>
#include "object_analytics_node/tracker/tracking.hpp"
#include "tracker/tracking.hpp"

TEST(UnitTestTracking, TrackingNomal) {
object_analytics_node::tracker::Tracking t(2, "cat", 0.7,
cv::Rect2d(100, 100, 200, 300));
cv::Mat image = cv::Mat::zeros(640, 480, CV_32F);
timespec stamp;
stamp.tv_sec = 1;
stamp.tv_nsec = 1;
std::shared_ptr<sFrame> frame = std::make_shared<sFrame>(image, stamp);
tracker::Tracking t(2, "cat");
t.rectifyTracker(frame, cv::Rect2d(100,100,200,300));

EXPECT_EQ(t.getObjName(), std::string("cat"));
EXPECT_EQ(t.getTrackingId(), int32_t(2));
EXPECT_NEAR(t.getObjProbability(), 0.7, 0.000001);
EXPECT_EQ(t.getTrackedRect().x, 100);
EXPECT_EQ(t.getTrackedRect().y, 100);
EXPECT_EQ(t.getTrackedRect().height, 300);
EXPECT_EQ(t.getTrackedRect().width, 200);
EXPECT_EQ(t.isDetected(), false);
t.setDetected();
EXPECT_EQ(t.isDetected(), true);
t.clearDetected();
EXPECT_EQ(t.isDetected(), false);
}
TEST(UnitTestTracking, TrackingNullName) {
object_analytics_node::tracker::Tracking t(2, "", 0.7,
cv::Rect2d(100, 100, 200, 300));
cv::Mat image = cv::Mat::zeros(640, 480, CV_32F);
timespec stamp;
stamp.tv_sec = 1;
stamp.tv_nsec = 1;
std::shared_ptr<sFrame> frame = std::make_shared<sFrame>(image, stamp);
tracker::Tracking t(2, "");
t.rectifyTracker(frame, cv::Rect2d(100,100,200,300));

EXPECT_EQ(t.getObjName(), std::string(""));
EXPECT_EQ(t.getTrackingId(), int32_t(2));
EXPECT_NEAR(t.getObjProbability(), 0.7, 0.000001);
EXPECT_EQ(t.getTrackedRect().x, 100);
EXPECT_EQ(t.getTrackedRect().y, 100);
EXPECT_EQ(t.getTrackedRect().height, 300);
EXPECT_EQ(t.getTrackedRect().width, 200);
EXPECT_EQ(t.isDetected(), false);
t.setDetected();
EXPECT_EQ(t.isDetected(), true);
t.clearDetected();
EXPECT_EQ(t.isDetected(), false);
}

int main(int argc, char ** argv)
Expand Down