99#include < ed/update_request.h>
1010#include < ed/world_model.h>
1111
12- #include < geolib/ros/tf_conversions .h>
12+ #include < geolib/ros/msg_conversions .h>
1313#include < geolib/Shape.h>
1414
15- #include < tue/profiling/timer.h>
16-
1715#include < opencv2/imgproc/imgproc.hpp>
1816
1917#include < ros/console.h>
2018#include < ros/node_handle.h>
2119
20+ #include " tf2/transform_datatypes.h"
21+
2222#include < iostream>
2323
2424
@@ -45,13 +45,12 @@ void lasermsgToSensorRanges(const sensor_msgs::LaserScan::ConstPtr& scan, std::v
4545 }
4646}
4747
48- LaserPlugin::LaserPlugin () : tf_listener_(0 )
48+ LaserPlugin::LaserPlugin () : tf_buffer_(), tf_listener_(nullptr )
4949{
5050}
5151
5252LaserPlugin::~LaserPlugin ()
5353{
54- delete tf_listener_;
5554}
5655
5756void LaserPlugin::initialize (ed::InitData& init)
@@ -71,7 +70,8 @@ void LaserPlugin::initialize(ed::InitData& init)
7170 // Communication
7271 sub_scan_ = nh.subscribe <sensor_msgs::LaserScan>(laser_topic, 3 , &LaserPlugin::scanCallback, this );
7372
74- tf_listener_ = new tf::TransformListener;
73+ if (!tf_listener_)
74+ tf_listener_ = std::make_unique<tf2_ros::TransformListener>(tf_buffer_);
7575
7676 // pose_cache.clear();
7777}
@@ -89,24 +89,25 @@ void LaserPlugin::process(const ed::WorldModel& world, ed::UpdateRequest& req)
8989
9090 try
9191 {
92- tf::StampedTransform t_sensor_pose ;
93- tf_listener_-> lookupTransform (" map" , scan->header .frame_id , scan->header .stamp , t_sensor_pose );
92+ geometry_msgs::TransformStamped gm_sensor_pose ;
93+ gm_sensor_pose = tf_buffer_. lookupTransform (" map" , scan->header .frame_id , scan->header .stamp );
9494 scan_buffer_.pop ();
9595 geo::Pose3D sensor_pose;
96- geo::convert (t_sensor_pose , sensor_pose);
96+ geo::convert (gm_sensor_pose. transform , sensor_pose);
9797 update (world, scan, sensor_pose, req);
9898 }
99- catch (tf ::ExtrapolationException& ex)
99+ catch (tf2 ::ExtrapolationException& ex)
100100 {
101- ROS_WARN_STREAM_DELAYED_THROTTLE (10 , " ED Laserplugin: " << ex.what ());
101+ ROS_WARN_STREAM_DELAYED_THROTTLE (60 , " ED Laserplugin: " << ex.what ());
102+ ROS_DEBUG_STREAM (" ED Laserplugin: " << ex.what ());
102103 try
103104 {
104105 // Now we have to check if the error was an interpolation or extrapolation error
105106 // (i.e., the scan is too old or too new, respectively)
106- tf::StampedTransform latest_transform;
107- tf_listener_-> lookupTransform (" map" , scan->header .frame_id , ros::Time (0 ), latest_transform );
107+ geometry_msgs::TransformStamped latest_transform;
108+ latest_transform = tf_buffer_. lookupTransform (" map" , scan->header .frame_id , ros::Time (0 ));
108109
109- if (scan_buffer_.front ()->header .stamp > latest_transform.stamp_ )
110+ if (scan_buffer_.front ()->header .stamp > latest_transform.header . stamp )
110111 {
111112 // Scan is too new
112113 break ;
@@ -117,12 +118,12 @@ void LaserPlugin::process(const ed::WorldModel& world, ed::UpdateRequest& req)
117118 scan_buffer_.pop ();
118119 }
119120 }
120- catch (tf ::TransformException& exc)
121+ catch (tf2 ::TransformException& exc)
121122 {
122123 scan_buffer_.pop ();
123124 }
124125 }
125- catch (tf ::TransformException& exc)
126+ catch (tf2 ::TransformException& exc)
126127 {
127128 ROS_ERROR_STREAM_DELAYED_THROTTLE (10 , " ED Laserplugin: " << exc.what ());
128129 scan_buffer_.pop ();
@@ -133,9 +134,6 @@ void LaserPlugin::process(const ed::WorldModel& world, ed::UpdateRequest& req)
133134void LaserPlugin::update (const ed::WorldModel& world, const sensor_msgs::LaserScan::ConstPtr& scan,
134135 const geo::Pose3D& sensor_pose, ed::UpdateRequest& req)
135136{
136- tue::Timer t_total;
137- t_total.start ();
138-
139137 // - - - - - - - - - - - - - - - - - -
140138 // Update laser model
141139
0 commit comments