Skip to content

Commit 5fa76ff

Browse files
unify translation solving
1 parent ecbc22c commit 5fa76ff

File tree

3 files changed

+21
-38
lines changed

3 files changed

+21
-38
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ set( EOD_SRC
119119
src/lib/detectors/FaceDlibDetector.cpp
120120
src/lib/detectors/ExtractedInfoIdChecker.cpp
121121
src/lib/detectors/ExtractedInfoStringChecker.cpp
122+
src/lib/detectors/UnitTranslationExtracter.cpp
122123

123124
# lib relations
124125
src/lib/relations/ImageRangeRelation.cpp

src/extended_object_detection_node/eod_node.cpp

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,13 @@
77
#include <visualization_msgs/MarkerArray.h>
88
#include "geometry_utils.h"
99

10-
geometry_msgs::Vector3 getUnitTranslation(cv::Point point, const cv::Mat& K){
11-
geometry_msgs::Vector3 unit_translate;
12-
unit_translate.x = (point.x - K.at<double>(0,2)) / K.at<double>(0,0);
13-
unit_translate.y = (point.y - K.at<double>(1,2)) / K.at<double>(1,1);
14-
unit_translate.z = 1;
15-
return unit_translate;
16-
}
1710

18-
geometry_msgs::Vector3 multiplyVectorScalar(geometry_msgs::Vector3 vector, double scalar){
19-
geometry_msgs::Vector3 new_vector;
20-
new_vector.x = vector.x * scalar;
21-
new_vector.y = vector.y * scalar;
22-
new_vector.z = vector.z * scalar;
23-
return new_vector;
11+
geometry_msgs::Vector3 fromCvVector(cv::Vec3d cv_vector){
12+
geometry_msgs::Vector3 ros_vector;
13+
ros_vector.x = cv_vector[0];
14+
ros_vector.y = cv_vector[1];
15+
ros_vector.z = cv_vector[2];
16+
return ros_vector;
2417
}
2518

2619
geometry_msgs::Point fromVector(const geometry_msgs::Vector3& vector){
@@ -41,16 +34,14 @@ EOD_ROS::EOD_ROS(ros::NodeHandle nh, ros::NodeHandle nh_p){
4134

4235
sub_rgb_.subscribe(*rgb_it_, "camera/image_raw", 10);
4336
sub_info_.subscribe(nh_, "camera/info", 10);
44-
45-
37+
4638
// get params
4739
nh_p_.param("subscribe_depth", subscribe_depth, false);
4840
nh_p_.param("rate_limit_sec", rate_limit_sec, 0.1);
4941
nh_p_.param("publish_image_output", publish_image_output, false);
5042
nh_p_.param("use_actual_time", use_actual_time, false);
5143
nh_p_.param("publish_markers", publish_markers, false);
52-
53-
44+
5445
std::string object_base_path;
5546
nh_p_.getParam("object_base",object_base_path);
5647

@@ -137,12 +128,12 @@ cv::Mat EOD_ROS::getD(const sensor_msgs::CameraInfoConstPtr& info_msg){
137128
void EOD_ROS::rgb_info_cb(const sensor_msgs::ImageConstPtr& rgb_image, const sensor_msgs::CameraInfoConstPtr& rgb_info){
138129
ROS_INFO("Get Image!");
139130

140-
// CHECK RATE
141-
//if( !check_time(rgb_image->header.stamp) ) {
131+
// CHECK RATE
142132
if( !check_time(ros::Time::now()) ) {
143133
ROS_WARN("Skipped frame");
144134
return;
145135
}
136+
// TODO add possibility to exclude old stamp images (if detection goes to slow)
146137

147138
cv::Mat rgb;
148139
try{
@@ -154,19 +145,18 @@ void EOD_ROS::rgb_info_cb(const sensor_msgs::ImageConstPtr& rgb_image, const sen
154145
}
155146

156147
eod::InfoImage ii = eod::InfoImage(rgb, getK(rgb_info), getD(rgb_info) );
157-
detect(ii, eod::InfoImage(), rgb_image->header);
158-
//detect(rgb, cv::Mat(), rgb_image->header);
148+
detect(ii, eod::InfoImage(), rgb_image->header);
159149
}
160150

161151
void EOD_ROS::rgbd_info_cb(const sensor_msgs::ImageConstPtr& rgb_image, const sensor_msgs::CameraInfoConstPtr& rgb_info, const sensor_msgs::ImageConstPtr& depth_image, const sensor_msgs::CameraInfoConstPtr& depth_info){
162152
ROS_INFO("Got RGBD!");
163153

164-
// CHECK RATE
165-
//if( !check_time(rgb_image->header.stamp) ) {
154+
// CHECK RATE
166155
if( !check_time(ros::Time::now()) ) {
167156
ROS_WARN("Skipped frame");
168157
return;
169158
}
159+
// TODO add possibility to exclude old stamp images (if detection goes to slow)
170160

171161
cv::Mat rgb;
172162
try{
@@ -186,11 +176,9 @@ void EOD_ROS::rgbd_info_cb(const sensor_msgs::ImageConstPtr& rgb_image, const se
186176
}
187177
else{
188178
ROS_ERROR_THROTTLE(5, "Depth image has unsupported encoding [%s]", depth_image->encoding.c_str());
189-
}
190-
179+
}
191180
eod::InfoImage ii_rgb = eod::InfoImage(rgb, getK(rgb_info), getD(rgb_info) );
192-
eod::InfoImage ii_depth = eod::InfoImage(depth, getK(depth_info), getD(depth_info) );
193-
181+
eod::InfoImage ii_depth = eod::InfoImage(depth, getK(depth_info), getD(depth_info) );
194182
detect(ii_rgb, ii_depth, rgb_image->header);
195183
}
196184

@@ -267,7 +255,7 @@ extended_object_detection::BaseObject EOD_ROS::eoi_to_base_object( eod::SimpleOb
267255
bo.transform.translation.z = eoi->tvec[0][2];
268256
}
269257
else{
270-
bo.transform.translation = getUnitTranslation(eoi->getCenter(), K);
258+
bo.transform.translation = fromCvVector(eod::get_translation(eoi->getCenter(), K, 1));
271259
}
272260
// rotation
273261
if (eoi->rvec.size() > 0 ){
@@ -291,15 +279,9 @@ extended_object_detection::BaseObject EOD_ROS::eoi_to_base_object( eod::SimpleOb
291279

292280
// translation to rect's corners
293281
geometry_msgs::Vector3 temp_translation;
294-
temp_translation = multiplyVectorScalar(getUnitTranslation(cv::Point(eoi->x, eoi->y), K),bo.transform.translation.z);
295-
bo.rect.cornerTranslates.push_back(temp_translation);
296-
temp_translation = multiplyVectorScalar(getUnitTranslation(cv::Point(eoi->x, eoi->y + eoi->height), K),bo.transform.translation.z);
297-
bo.rect.cornerTranslates.push_back(temp_translation);
298-
temp_translation = multiplyVectorScalar(getUnitTranslation(cv::Point(eoi->x + eoi->width, eoi->y + eoi->height), K),bo.transform.translation.z);
299-
bo.rect.cornerTranslates.push_back(temp_translation);
300-
temp_translation = multiplyVectorScalar(getUnitTranslation(cv::Point(eoi->x + eoi->width, eoi->y), K),bo.transform.translation.z);
301-
bo.rect.cornerTranslates.push_back(temp_translation);
302-
282+
for( auto& corner_p : eoi->getCorners() ){
283+
bo.rect.cornerTranslates.push_back(fromCvVector(eod::get_translation(eod::float2intPoint(corner_p), K, bo.transform.translation.z)));
284+
}
303285

304286
//TODO tracks
305287
return bo;

0 commit comments

Comments
 (0)