From 31e32b01e8a29df372b499d92929cb52167ec9c9 Mon Sep 17 00:00:00 2001 From: challenzhou Date: Tue, 5 Nov 2019 11:51:43 +0800 Subject: [PATCH 1/2] enable unit test --- object_analytics_node/CMakeLists.txt | 2 +- .../tests/unittest_segmenter.cpp | 7 +++---- .../tests/unittest_tracking.cpp | 16 +++------------- 3 files changed, 7 insertions(+), 18 deletions(-) diff --git a/object_analytics_node/CMakeLists.txt b/object_analytics_node/CMakeLists.txt index e732196..3c6e472 100644 --- a/object_analytics_node/CMakeLists.txt +++ b/object_analytics_node/CMakeLists.txt @@ -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 diff --git a/object_analytics_node/tests/unittest_segmenter.cpp b/object_analytics_node/tests/unittest_segmenter.cpp index a069c94..1e35281 100644 --- a/object_analytics_node/tests/unittest_segmenter.cpp +++ b/object_analytics_node/tests/unittest_segmenter.cpp @@ -83,13 +83,12 @@ TEST(UnitTestSegmenter, segmenter) { std::unique_ptr impl; impl.reset(new Segmenter(std::unique_ptr(new AlgoProvider()))); - std::shared_ptr obj3ds = - std::make_shared(); + ObjectsInBoxes3D obj3ds; impl->segment(objects_in_boxes2d, cloudMsg, obj3ds); - EXPECT_EQ(static_cast(1), obj3ds->objects_in_boxes.size()); - ObjectInBox3D obj3d = obj3ds->objects_in_boxes[0]; + EXPECT_EQ(static_cast(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)); diff --git a/object_analytics_node/tests/unittest_tracking.cpp b/object_analytics_node/tests/unittest_tracking.cpp index c8b6a55..abc84d2 100644 --- a/object_analytics_node/tests/unittest_tracking.cpp +++ b/object_analytics_node/tests/unittest_tracking.cpp @@ -16,10 +16,10 @@ #include #include #include -#include "object_analytics_node/tracker/tracking.hpp" +#include "tracker/tracking.hpp" TEST(UnitTestTracking, TrackingNomal) { - object_analytics_node::tracker::Tracking t(2, "cat", 0.7, + tracker::Tracking t(2, "cat", 0.7, cv::Rect2d(100, 100, 200, 300)); EXPECT_EQ(t.getObjName(), std::string("cat")); EXPECT_EQ(t.getTrackingId(), int32_t(2)); @@ -28,14 +28,9 @@ TEST(UnitTestTracking, TrackingNomal) { 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, + tracker::Tracking t(2, "", 0.7, cv::Rect2d(100, 100, 200, 300)); EXPECT_EQ(t.getObjName(), std::string("")); EXPECT_EQ(t.getTrackingId(), int32_t(2)); @@ -44,11 +39,6 @@ TEST(UnitTestTracking, TrackingNullName) { 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) From 7689da8b82731ee1fbd35875e600c3320db33c06 Mon Sep 17 00:00:00 2001 From: challenzhou Date: Tue, 5 Nov 2019 13:56:04 +0800 Subject: [PATCH 2/2] fix tracking unit test issue --- .../tracker/tracking.hpp | 5 +---- .../tracker/tracking_manager.hpp | 6 +---- .../src/tracker/tracking.cpp | 5 +---- .../src/tracker/tracking_manager.cpp | 9 +++----- .../tests/unittest_tracking.cpp | 22 ++++++++++++++----- 5 files changed, 22 insertions(+), 25 deletions(-) diff --git a/object_analytics_node/include/object_analytics_node/tracker/tracking.hpp b/object_analytics_node/include/object_analytics_node/tracker/tracking.hpp index 59de9fc..87bf715 100644 --- a/object_analytics_node/include/object_analytics_node/tracker/tracking.hpp +++ b/object_analytics_node/include/object_analytics_node/tracker/tracking.hpp @@ -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. diff --git a/object_analytics_node/include/object_analytics_node/tracker/tracking_manager.hpp b/object_analytics_node/include/object_analytics_node/tracker/tracking_manager.hpp index e243f85..2b0548d 100644 --- a/object_analytics_node/include/object_analytics_node/tracker/tracking_manager.hpp +++ b/object_analytics_node/include/object_analytics_node/tracker/tracking_manager.hpp @@ -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 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. diff --git a/object_analytics_node/src/tracker/tracking.cpp b/object_analytics_node/src/tracker/tracking.cpp index 79ff0a9..10e9ed4 100644 --- a/object_analytics_node/src/tracker/tracking.cpp +++ b/object_analytics_node/src/tracker/tracking.cpp @@ -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()), obj_name_(name), - probability_(probability), tracking_id_(tracking_id), algo_("KCF"), state_(INIT) { - UNUSED(rect); UNUSED(name); } diff --git a/object_analytics_node/src/tracker/tracking_manager.cpp b/object_analytics_node/src/tracker/tracking_manager.cpp index 3b87fe1..61b7e4e 100644 --- a/object_analytics_node/src/tracker/tracking_manager.cpp +++ b/object_analytics_node/src/tracker/tracking_manager.cpp @@ -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 tracker = addTracking( - objs[i].Category_, objs[i].Confidence_, objs[i].BoundBox_); + std::shared_ptr tracker = addTracking(objs[i].Category_); tracker->rectifyTracker(frame, objs[i].BoundBox_); } } @@ -514,12 +513,10 @@ std::vector> TrackingManager::getTrackedObjs() } std::shared_ptr TrackingManager::addTracking( - const std::string & name, - const float & probability, - const cv::Rect2d & rect) + const std::string & name) { std::shared_ptr t = - std::make_shared(tracking_cnt++, name, probability, rect); + std::make_shared(tracking_cnt++, name); if (tracking_cnt == -1) { TRACE_ERR("tracking count overflow"); } diff --git a/object_analytics_node/tests/unittest_tracking.cpp b/object_analytics_node/tests/unittest_tracking.cpp index abc84d2..ef4135a 100644 --- a/object_analytics_node/tests/unittest_tracking.cpp +++ b/object_analytics_node/tests/unittest_tracking.cpp @@ -19,22 +19,32 @@ #include "tracker/tracking.hpp" TEST(UnitTestTracking, TrackingNomal) { - 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 frame = std::make_shared(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); } TEST(UnitTestTracking, TrackingNullName) { - 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 frame = std::make_shared(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);