Skip to content

Commit d4bf5b2

Browse files
tf broadcast
1 parent 6392db2 commit d4bf5b2

File tree

3 files changed

+38
-8
lines changed

3 files changed

+38
-8
lines changed

launch/extended_object_detection_oakd_example.launch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
<param name="subscribe_depth" value="true"/>
1919
<param name="rate_limit_sec" value="0.1"/>
2020
<param name="publish_image_output" value="true"/>
21-
<param name="publish_markers" value="true"/>
22-
23-
21+
<param name="publish_markers" value="true"/>
22+
<param name="broadcast_tf" value="true"/>
23+
2424
<remap from="camera/image_raw" to="/oak/rgb/image"/>
2525
<remap from="camera/info" to="/oak/rgb/camera_info"/>
2626
<remap from="depth/image_raw" to="/oak/stereo/depth"/>

src/extended_object_detection_node/eod_node.cpp

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <math.h>
77
#include <visualization_msgs/MarkerArray.h>
88
#include "geometry_utils.h"
9+
#include <geometry_msgs/TransformStamped.h>
910

1011

1112
geometry_msgs::Vector3 fromCvVector(cv::Vec3d cv_vector){
@@ -43,7 +44,8 @@ EOD_ROS::EOD_ROS(ros::NodeHandle nh, ros::NodeHandle nh_p){
4344
nh_p_.param("publish_image_output", publish_image_output, false);
4445
nh_p_.param("use_actual_time", use_actual_time, false);
4546
nh_p_.param("publish_markers", publish_markers, false);
46-
47+
nh_p_.param("broadcast_tf", broadcast_tf, false);
48+
4749
std::string object_base_path;
4850
nh_p_.getParam("object_base",object_base_path);
4951

@@ -259,6 +261,33 @@ void EOD_ROS::detect(const eod::InfoImage& rgb, const eod::InfoImage& depth, std
259261
complex_objects_pub_.publish(complex_msg);
260262
#endif
261263

264+
if(broadcast_tf){
265+
geometry_msgs::TransformStamped trsfrm;
266+
trsfrm.header = header;
267+
int id = 0;
268+
std::string prev_name = "";
269+
for( auto& bo : simples_msg.objects){
270+
if( prev_name != bo.type_name)
271+
id = 0;
272+
trsfrm.child_frame_id = bo.type_name + "_" + std::to_string(id);
273+
trsfrm.transform = bo.transform;
274+
transform_broadcaster_.sendTransform(trsfrm);
275+
id++;
276+
prev_name = bo.type_name;
277+
}
278+
#ifdef USE_IGRAPH
279+
for( auto& cbo : complex_msg.objects){
280+
if( prev_name != cbo.complex_object.type_name)
281+
id = 0;
282+
trsfrm.child_frame_id = cbo.complex_object.type_name + "_" + std::to_string(id);
283+
trsfrm.transform = cbo.complex_object.transform;
284+
transform_broadcaster_.sendTransform(trsfrm);
285+
id++;
286+
prev_name = cbo.complex_object.type_name;
287+
}
288+
#endif
289+
}
290+
262291
if(publish_markers){
263292
visualization_msgs::MarkerArray mrk_array_msg;
264293
int id_cnt = 0;
@@ -293,7 +322,6 @@ void EOD_ROS::detect(const eod::InfoImage& rgb, const eod::InfoImage& depth, std
293322
frame_sequence++;
294323
}
295324

296-
297325
extended_object_detection::BaseObject EOD_ROS::eoi_to_base_object( std::string name, int id, eod::ExtendedObjectInfo* eoi, const cv::Mat& K){
298326
//ROS_INFO("Forming...");
299327
extended_object_detection::BaseObject bo;

src/extended_object_detection_node/eod_node.h

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <message_filters/subscriber.h>
1010
#include <message_filters/synchronizer.h>
1111
#include <message_filters/sync_policies/approximate_time.h>
12+
#include <tf2_ros/transform_broadcaster.h>
1213

1314
#include <std_msgs/Header.h>
1415
#include <sensor_msgs/Image.h>
@@ -63,13 +64,15 @@ class EOD_ROS{
6364
#ifdef USE_IGRAPH
6465
ros::ServiceServer set_complex_objects_srv_;
6566
#endif
67+
tf2_ros::TransformBroadcaster transform_broadcaster_;
6668

6769
// params
6870
bool subscribe_depth;
6971
double rate_limit_sec;
7072
bool publish_image_output;
7173
bool use_actual_time;
7274
bool publish_markers;
75+
bool broadcast_tf;
7376

7477
// vars
7578
int frame_sequence;
@@ -96,12 +99,11 @@ class EOD_ROS{
9699

97100
visualization_msgs::Marker base_object_to_marker_arrow(extended_object_detection::BaseObject& base_object, const cv::Mat& K, std_msgs::Header header, cv::Scalar color, int id);
98101
visualization_msgs::Marker base_object_to_marker_frame(extended_object_detection::BaseObject& base_object, const cv::Mat& K, std_msgs::Header header, cv::Scalar color, int id);
99-
visualization_msgs::Marker base_object_to_marker_text(extended_object_detection::BaseObject& base_object, const cv::Mat& K, std_msgs::Header header, cv::Scalar color, int id);
100-
102+
visualization_msgs::Marker base_object_to_marker_text(extended_object_detection::BaseObject& base_object, const cv::Mat& K, std_msgs::Header header, cv::Scalar color, int id);
101103
int find_simple_obj_index_by_id(int id);
102104
#ifdef USE_IGRAPH
103105
int find_complex_obj_index_by_id(int id);
104-
#endif
106+
#endif
105107

106108
// EOD
107109
eod::ObjectBase * object_base;

0 commit comments

Comments
 (0)