I am not able to get a transformation from "base_laser_link" to the "map" frame Although they are connected in the tf view.
TransformPoint always throws an exception.
Also when I use waitForTransform, it will always return 0.
Setting the duration higher won't help either.
Don't know what I could do here...
Here is for example my callback function:
void markerDetectionCallback(const sensor_msgs::LaserScanConstPtr& msg)
{
MarkerDetection detector;
//detector.getPositionOfMarker(msg);
try{
if(listener_.waitForTransform("/map", "/base_laser_link", msg->header.stamp, ros::Duration(1)))
ROS_INFO("transform OK");
else
ROS_ERROR(" Marker node waitForTransform failed");
catch (tf::TransformException ex){
ROS_ERROR("%s",ex.what());
}
}
This also fails :
listener_.transformPoint("map", p1, p1_out);
with Frame id /map does not exist! Frames (1)
tf_monitor
returns this information and looks fine:
RESULTS: for /base_laser_link to /map
Chain is: /map -> /central_server/map -> /odom -> NO_PARENT -> /base_link -> /base_link -> /base_link
Net delay avg = 0.0276587: max = 0.0562334
tf tf_echo /base_laser_link /map
Failure at 1373963487.596705661
Exception thrown:Lookup would require extrapolation into the past. Requested time 1373963487.580510149 but the earliest data is at time 1373963487.796449639, when looking up transform from frame [/map] to frame [/base_link]
The current list of frames is:
Frame /base_link exists with parent /odom.
Frame /odom exists with parent /map.
Frame /map exists with parent /central_server/map.
Frame /central_server/map exists with parent NO_PARENT.
Frame /base_laser_link exists with parent /base_link.
Frame /ultrasonic_left exists with parent /base_link.
Frame /ultrasonic_right exists with parent /base_link.
At time 1373967822.996
- Translation: [-13.529, -29.468, 0.000]
- Rotation: in Quaternion [-0.000, -0.000, 0.286, 0.958]
in RPY [-0.000, -0.000, 0.579]
So tf_echo should be fine.
Originally posted by madmax on ROS Answers with karma: 496 on 2013-07-15
Post score: 0