@@ -19,39 +19,26 @@ namespace dynamicgraph {
19
19
struct TransformListenerData {
20
20
typedef Signal<sot::MatrixHomogeneous, int > signal_t ;
21
21
22
+ RosTfListener* entity;
22
23
tf::TransformListener& listener;
23
24
const std::string toFrame, fromFrame;
24
25
tf::StampedTransform transform;
25
26
signal_t signal;
26
27
27
- TransformListenerData (tf::TransformListener& l,
28
+ TransformListenerData (RosTfListener* e,
29
+ tf::TransformListener& l,
28
30
const std::string& to, const std::string& from,
29
31
const std::string& signame)
30
- : listener (l)
32
+ : entity (e)
33
+ , listener (l)
31
34
, toFrame (to)
32
35
, fromFrame (from)
33
36
, signal (signame)
34
37
{
35
38
signal.setFunction (boost::bind (&TransformListenerData::getTransform, this , _1, _2));
36
39
}
37
40
38
- sot::MatrixHomogeneous& getTransform (sot::MatrixHomogeneous& res, int time)
39
- {
40
- static const ros::Time rosTime (0 );
41
- try {
42
- listener.lookupTransform (toFrame, fromFrame, rosTime, transform);
43
- } catch (const tf::TransformException& ex) {
44
- res.setIdentity ();
45
- ROS_ERROR (" Enable to get transform at time %i: %s" ,time,ex.what ());
46
- return res;
47
- }
48
- for (sot::MatrixHomogeneous::Index r = 0 ; r < 3 ; ++r) {
49
- for (sot::MatrixHomogeneous::Index c = 0 ; c < 3 ; ++c)
50
- res.linear ()(r,c) = transform.getBasis ().getRow (r)[c];
51
- res.translation ()[r] = transform.getOrigin ()[r];
52
- }
53
- return res;
54
- }
41
+ sot::MatrixHomogeneous& getTransform (sot::MatrixHomogeneous& res, int time);
55
42
};
56
43
} // end of internal namespace.
57
44
@@ -93,7 +80,7 @@ namespace dynamicgraph {
93
80
signalName % getName () % signame;
94
81
95
82
TransformListenerData* tld = new TransformListenerData (
96
- listener, to, from, signalName.str ());
83
+ this , listener, to, from, signalName.str ());
97
84
signalRegistration (tld->signal );
98
85
listenerDatas[signame] = tld;
99
86
}
0 commit comments