GithubHelp home page GithubHelp logo

ros / geometry Goto Github PK

View Code? Open in Web Editor NEW
171.0 25.0 272.0 1.91 MB

Packages for common geometric calculations including the ROS transform library, "tf". Also includes ROS bindings for "bullet" physics engine and "kdl" kinematics/dynamics package.

CMake 1.40% C++ 74.25% Python 24.30% Shell 0.06%

geometry's People

Contributors

adnanmunawar avatar bulwahn avatar buzzer avatar de-vri-es avatar dirk-thomas avatar dlu avatar hershwg avatar isucan avatar jacquelinekay avatar jbohren avatar jfaust avatar kejxu avatar kwatts avatar lauralindzey avatar mehwang avatar michaelgrupp avatar michaelkorn avatar mikaelarguedas avatar mikeferguson avatar mikepurvis avatar mirzashah avatar mmwise avatar piyushk avatar salihmarangoz avatar sloretz avatar stwirth avatar tfoote avatar tlau avatar vrabaud avatar wjwwood avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

geometry's Issues

tf_prefix backwards compatibility?

http://www.ros.org/wiki/hydro/Migration#tf2.2BAC8-Migration.Removal_of_support_for_tf_prefix states that tf_prefix is deprecated but "should keep working in the cases where tf_prefix was previously used".

In groovy, the TransformBroadcaster called tf::resolve() by itself to resolve frame_ids in transforms which are not fully resolved. This is not the case anymore currently in hydro. Is this a bug or should the user call tf::resolve() before filling the TransformStamped data structure in cases where tf_prefix is needed (e.g. for simulating multiple robots in one Gazebo instance)? What is the recommended solution in such cases if tf_prefix support is totally dropped?

tf_prefix is currently not working with the static_transform_publisher for the same reason, too.

If both, the user and TransformBroadcaster, would call tf::resolve(), would this lead to multiply prefixed frame_ids now?

'EIGEN3_INCLUDE_DIR-NOTFOUND' not set properly

When building tf with catkin_make, the build stops with this error.

CMake Error at /home/pi/ros_catkin_ws/devel/share/kdl_conversions/cmak /kdl_conversionsConfig.cmake:
106 (message):
  Project 'kdl_conversions' specifies 'EIGEN3_INCLUDE_DIR-NOTFOUND' as an
  include dir, which is not found.  It does neither exist as an absolute
  directory nor in
  '/home/pi/ros_catkin_ws/src/tf/kdl_conversions/EIGEN3_INCLUDE_DIR-NOTFOUND'.
  Ask the maintainer 'Tully Foote <[email protected]>' to fix it.
Call Stack (most recent call first):
  /home/pi/ros_catkin_ws/devel/share/catkin/cmake/catkinConfig.cmake:75 (find_package)
  tf/tf_conversions/CMakeLists.txt:5 (find_package)


CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
EIGEN3_INCLUDE_DIR
   used as include directory in directory /home/pi/ros_catkin_ws/src/tf/eigen_conversions
   used as include directory in directory /home/pi/ros_catkin_ws/src/tf/kdl_conversions

make: *** [cmake_check_build_system] Error 1
Invoking "make cmake_check_build_system" failed

tf package: Transformer::lookupTwist(...) results seem to be wrong

Originally filed here: https://code.ros.org/trac/ros-pkg/ticket/5309

The results I get from Transformer::lookupTwist(...) are not w.r.t. the reference_frame as the documentation claims them to be.

To reproduce: I have two frames: /EE (the moving endeffector) and /Base (the static global world frame). I want to know the relative velocity of /EE, i.e. not expressed in /Base but in the frame /EE. According to the documentation I have to call:

tf_listener.lookupTwist("/EE", "/Base", "/EE", tf::Point(0,0,0), "/EE", ...)
, which means /EE is the tracking frame, /Base the observation frame, /EE the reference frame, and /EE the reference_point frame. But the resulting velocity is according to the /Base frame, NOT /EE!

I suppose the bug is in line 555 of tf.cpp:

lookupTransform(reference_frame,tracking_frame,target_time,inverse);
It should be replaced by:

lookupTransform(reference_frame,observation_frame,target_time,inverse);
At least in my case this solves the problem, but i'm not 100% sure, if this is always true, somebody should re-check.

Line in question is now here: https://github.com/ros/geometry/blob/hydro-devel/tf/src/tf.cpp#L315

Warnings from inner TF2 not wrapped by ROS logging when used via TF.

The first line in the log here is shown for reference, it is what a normal ROS log message looks like. The following lines come from tf2/src/buffer_core.cpp. In that file you can see it is using something called "logWarn()", but apparently this is not connected to the normal ROS logging when used via the older TF API.

[INFO] [WallTime: 1374596992.623081] No target received yet.
Warning: Invalid argument passed to canTransform argument target_frame in tf2 frame_ids cannot be empty
         at line 122 in /tmp/buildd/ros-hydro-tf2-0.4.5-0precise-20130721-0218/src/buffer_core.cpp

a cycle in the dependency tree is generated

From: http://answers.ros.org/question/60768/wierd-tf-tree-when-running-rgb-d-slam/

--EDIT--
@tfoote
I was able to write a tf broadcaster which would imitate the faulty tf tree.
Here is a screenshot of the imitated faulty tree.

The three code snippets that were used were

      broadcaster.sendTransform(
        tf::StampedTransform(
          tf::Transform(odom_quat, tf::Vector3(0.0, 0.0, 0.0)),
          ros::Time::now(),"base_footprint", "map"));
      r.sleep();

      broadcaster.sendTransform(
        tf::StampedTransform(
          tf::Transform(odom_quat, tf::Vector3(0.0, 0.0, 0.0)),
          ros::Time::now(),"map", "base_footprint"));
      r.sleep();

      broadcaster.sendTransform(
        tf::StampedTransform(
          tf::Transform(odom_quat, tf::Vector3(0.0, 1.0, 2.0)),
          ros::Time::now(),"map", "where_mocap_should_be"));
      r.sleep();

Queue size too small in rospy tf_broadcaster

SHA: 90a0fc4

The queue_size is set to 1. I have some code with a couple of transforms broadcast after immediately after each other. This prevents any but the first (usually) from making it out. I set the queue to 100 in order to confirm that was the problem, and everything works fine.

Perhaps queue_size should be a parameter on creation of a python tf_broadcaster?

tf.transformations.quaternion_from_matrix() is misleading

The tf.transformations.quaternion_from_matrix() function says it returns a quaternion from a rotation matrix, but it fails if you give it an actual rotation matrix (element of SO(3)). Instead it requires that the input "rotation matrix" is a 4x4 matrix (element of SE(3)).

If you try passing it a 3x3 rotation matrix, you get the following error:

  File "/opt/ros/hydro/lib/python2.7/dist-packages/tf/transformations.py", line 1206, in quaternion_from_matrix
    M = numpy.array(matrix, dtype=numpy.float64, copy=False)[:4, :4]
IndexError: too many indices

I understand the utility of extracting a quaternion directly from a rigid transform, but it should also accept an actual rotation matrix as input.

https://github.com/ros/geometry/blob/indigo-devel/tf/src/tf/transformations.py#L1196
Related to #49

Lookup would require extrapolation into the future despite waitForTransform

I have the following code in a pointcloud callback

  listener_->waitForTransform(baseFrame_, msg->header.frame_id, msg->header.stamp, ros::Duration(10.0));

  // Convert
  pcl::PointCloud<pcl::PointXYZ> cloud;
  pcl::fromROSMsg(*msg, cloud);

  // Transform
  pcl::PointCloud<pcl::PointXYZ> cloudT;
  pcl_ros::transformPointCloud<pcl::PointXYZ>(baseFrame_, cloud, cloudT, *listener_);

and despite the waitfortransform being there, I get:

[ERROR] [/xtion_qqvga/depth/cliff_detector@transformPointCloud:149]: Lookup would require extrapolation into the future. Requested time 1414987674.082394880 but the latest data is at time 1414987674.078320503, when looking up transform from frame [xtion_depth_optical_frame] to frame [base_link]

all the time.

I have to say that I tried ros::Time(0) instead of the msg->stamp and also I tried using tf::MessageFilters with the same result.

Interestingly, adding a fixed duration to the time makes the errors disappear, but is obviously not a solution.

I'm on Indigo.

Quaternion getAngle() bugged

Sorry for having no example code, but I still want to drop this here.

I ran into a bug with getAngle() when continuously getting the robot yaw from tf.

Basically the following code snippet (untested example code) printed two different results:

tf::Stamped<tf::Pose> global_robot_pose;
ros::Time time = ros::Time::now();
tf_listener_->waitForTransform("map", "base_footprint", time, ros::Duration(0.05));
tf_listener_->transformPose("map", time, costmap_robot_pose, "base_footprint", global_robot_pose);

ROS_INFO("getAngle: %f", global_robot_pose.getRotation().getAngle());
ROS_INFO("getYaw: %f", tf::getYaw(global_robot_pose.getRotation());

This happens when the angle goes lower than 0. getAngle() didn't give a negative angle, but just went positive again. The result of getRotation works correctly.

E.g.:

getAngle: 0.01
getYaw: 0.01
getAngle: 0.02
getYaw: -0.02

Eigen: Affine vs. Isometry

Why are *eigenToTF-functions using Eigen::Affine to represent tf::Transformation instead of Eigen::Isometry? Isn't the latter one correct to describe translation+rotation in 3D? Eigen explicitly prohibits conversion from affine to isometry:

// prevent conversions as:
// Isometry = Affine | AffineCompact
EIGEN_STATIC_ASSERT(EIGEN_IMPLIES(OtherMode==int(Affine)||OtherMode==int(AffineCompact), Mode!=int(Isometry)),
                    YOU_PERFORMED_AN_INVALID_TRANSFORMATION_CONVERSION)

So I ask myself if I can somehow still convert it, or if I also should use Affine to represent 3D-Transformations, which doesn't seem right to me.

Best regards,
Sebastian

Rospy: transformBroadcaster.sendTransform cannot be overloaded

Hello,

I recently upgraded my Ubuntu packages (including ros-indigo-geometry), and when I tried to execute a
transformBroadcaster.sendTransform(position, rotation, time, parent, child), I get this error:

TypeError: sendTransform() takes exactly 2 arguments (6 given)

When looking at the source files, I found this commit :

924d688

This seems to rely on python inheritance which I don't think exist.

Maybe this commit should be simply reverted.

Thank you

listener.py can't find sensor_msgs

... although the package is installed.

This is a new bug - saw it today for the first time, when trying to launch the turtlebot simulation:

$ roslaunch turtlebot_gazebo turtlebot_empty_world.launch

[...]

Traceback (most recent call last):
  File "/opt/kobuki_workspace/catkin_ws/install/lib/gazebo_ros/spawn_model", line 31, in <module>
    import tf.transformations as tft
  File "/opt/ros/hydro/lib/python2.7/dist-packages/tf/__init__.py", line 29, in <module>
    from listener import TransformListener, TransformerROS
  File "/opt/ros/hydro/lib/python2.7/dist-packages/tf/listener.py", line 39, in <module>
    import sensor_msgs.msg
ImportError: No module named sensor_msgs.msg

[...]

$ rospack find sensor_msgs 
/opt/ros/hydro/share/sensor_msgs

Strange bug ...

kdl/eigen/msgs conversions with static method overloading

Instead of having separate names for conversion methods pointKDLToMsg and poseKDLToMsg, the functions could have the same name and be overloaded based on the type of arguments. I think This is a good case for method overloading.

tf.transformPose() throws because of timing issues

Hello,
I am trying to make a listener of tf that sends commands to my robot.

I plugged it to /move_base_simple/goal to use the rviz built in panel.

But when I try to send a command, the python node throws with this error:

[ERROR] [WallTime: 1425288368.508838] bad callback: <bound method MoveToListener.callback of <MoveToListener(Thread-1, initial)>>
Traceback (most recent call last):
File "/home/lsouchet/catkin_ws/src/ros_comm/clients/rospy/src/rospy/topics.py", line 697, in _invoke_callback
cb(msg)
File "/home/lsouchet/catkin_ws/src/naoqi_bridge/naoqi_driver/src/naoqi_driver/naoqi_moveto.py", line 48, in callback
robotToTarget1 = self.listener.transformPose("/base_footprint", poseStamped)
File "/opt/ros/indigo/lib/python2.7/dist-packages/tf/listener.py", line 188, in transformPose
mat44 = self.asMatrix(target_frame, ps.header)
File "/opt/ros/indigo/lib/python2.7/dist-packages/tf/listener.py", line 75, in asMatrix
translation,rotation = self.lookupTransform(target_frame, hdr.frame_id, hdr.stamp)
ExtrapolationException: Lookup would require extrapolation into the future. Requested time 1425288368.508244038 but the latest data is at time 1425288368.469716072, when looking up transform from frame [odom] to frame [base_footprint]

Here is the output of the message in question:

z$ rostopic echo /move_base_simple/goal [15-03-02 10:26]
header:
seq: 4
stamp:
secs: 1425288368
nsecs: 508243953
frame_id: odom
pose:
position:
x: -0.0192804336548
y: 0.425947189331
z: 0.0
orientation:
x: 0.0
y: 0.0
z: -0.0167020614301
w: 0.999860510843

And here is the code of my callback (note that I commented the try/except shit to let it throw):

def callback(self, poseStamped):
# Adding this line to reset the message timestamp fixes the issue.
#poseStamped.header.stamp = rospy.Time(0)
#try:
robotToTarget1 = self.listener.transformPose("/base_footprint", poseStamped)
#except (tf.LookupException, tf.ConnectivityException, tf.ExtrapolationException) as e:
# print "Error in transformPose: " + str(e)
# return
quat = robotToTarget1.pose.orientation
(roll,pitch,yaw) = euler_from_quaternion((quat.x, quat.y, quat.z, quat.w))
self.motionProxy.moveTo(robotToTarget1.pose.position.x, robotToTarget1.pose.position.y, yaw)

There appears to be an issue about the timing between the message is published and the transform is processed but I don't understand why.
Is is a real bug or something I did wrong?

Thanks in advance

getRoll and getPitch

Include getRoll and getPitch functions as getYaw is already implemented. For the sake of simplicity.

Boost Signals Deprecated on Ubuntu 14.04

While compiling imu_pipeline, I get a very long warning about boost signals being deprecated via tf/tf.h.

[ 26%] In file included from /usr/include/boost/signals.hpp:9:0,
from /opt/ros/indigo/include/tf/tf.h:45,
from /home/chadrockey/ws/src/imu_pipeline/src/imu_transformer.cpp:35:
/usr/include/boost/signal.hpp:17:4: warning: #warning "Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING." [-Wcpp]

warning "Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING."

frameExists is not backwards compatible

After moving our DRC robot from groovy to hydro, we experienced tons of issues. This all boiled down to a programmer's frequet use of tf_listener.frameExists(frameID) with a frameID string that contains a forward slash. frameExists, should be smart enough to remove the front slash. I've fixed our code to use the tf::remove_front_sl;ash call, but frameExists should be doing this for the passed string (andin pre-hydro releases, probably the actual frame list as well).

SIGBUS on ARM hf

The dreaded serialization bugs attack again. Ref http://answers.ros.org/question/71107/pandaboard-alignment-trap-when-using-tf/

My platform is a linaro ubuntu precise 12.10 on an odroid xu. The other person with the issue is on the Pandaboard. Note that I don't get this error on my Pandaboard with 12.04 and Fuerte.

BackTrace
Program received signal SIGBUS, Bus error.
[Switching to Thread 0xb1aff420 (LWP 14419)]
0xb6f65294 in void ros::serialization::VectorSerializer<geometry_msgs::TransformStamped_<std::allocator >, std::allocator<geometry_msgs::TransformStamped_<std::allocator > >, void>::readros::serialization::IStream(ros::serialization::IStream&, std::vector<geometry_msgs::TransformStamped_<std::allocator >, std::allocator<geometry_msgs::TransformStamped_<std::allocator > > >&) () from /opt/ros/groovy/lib/libtf.so
(gdb) bt
#0 0xb6f65294 in void ros::serialization::VectorSerializer<geometry_msgs::TransformStamped_<std::allocator >, std::allocator<geometry_msgs::TransformStamped_<std::allocator > >, void>::readros::serialization::IStream(ros::serialization::IStream&, std::vector<geometry_msgs::TransformStamped_<std::allocator >, std::allocator<geometry_msgs::TransformStamped_<std::allocator > > >&) () from /opt/ros/groovy/lib/libtf.so
#1 0xb6f65592 in ros::SubscriptionCallbackHelperTboost::shared_ptr<tf::tfMessage_<std::allocator const> const&, void>::deserialize(ros::SubscriptionCallbackHelperDeserializeParams const&) ()

from /opt/ros/groovy/lib/libtf.so
#2 0xb6f0035e in ros::MessageDeserializer::deserialize() () from /opt/ros/groovy/lib/libroscpp.so
#3 0xb6efa376 in ros::SubscriptionQueue::call() () from /opt/ros/groovy/lib/libroscpp.so
#4 0xb6ec4070 in ros::CallbackQueue::callOneCB(ros::CallbackQueue::TLS*) () from /opt/ros/groovy/lib/libroscpp.so
#5 0xb6ec500e in ros::CallbackQueue::callAvailable(ros::WallDuration) () from /opt/ros/groovy/lib/libroscpp.so
#6 0xb6f618f8 in tf::TransformListener::dedicatedListenerThread() () from /opt/ros/groovy/lib/libtf.so
#7 0xb6f61654 in boost::detail::thread_data<boost::_bi::bind_t<void, boost::_mfi::mf0<void, tf::TransformListener>, boost::_bi::list1boost::_bi::value<tf::TransformListener* > > >::run() () from /opt/ros/groovy/lib/libtf.so
#8 0xb6165602 in thread_proxy () from /usr/lib/libboost_thread.so.1.46.1
#9 0xb6c3ded2 in start_thread () from /lib/arm-linux-gnueabihf/libpthread.so.0
#10 0xb62aaf18 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6
#11 0xb62aaf18 in ?? () from /lib/arm-linux-gnueabihf/libc.so.6

Backtrace stopped: previous frame identical to this frame (corrupt stack?)

python quaternion conversion

Hi, I tested the following code but the result is not consistent.

import tf, numpy

rotation = numpy.array([[     0.25668,   -0.938732,   -0.229997, 0],
                        [-0.966142,   -0.242765,   -0.087381, 0],
                        [-0.0261919,   -0.244639,     0.96926, 0],
                        [0, 0, 0, 1]])

quat = tf.transformations.quaternion_from_matrix(rotation)
qmatrix = tf.transformations.quaternion_matrix(quat)
>>> rotation
array([[ 0.25668  , -0.938732 , -0.229997 ,  0.       ],
       [-0.966142 , -0.242765 , -0.087381 ,  0.       ],
       [-0.0261919, -0.244639 ,  0.96926  ,  0.       ],
       [ 0.       ,  0.       ,  0.       ,  1.       ]])
>>> qmatrix
array([[ 0.97885609,  0.04320439, -0.19993532,  0.        ],
       [-0.01115442,  0.98725931,  0.15872818,  0.        ],
       [ 0.20424576, -0.15314188,  0.96686671,  0.        ],
       [ 0.        ,  0.        ,  0.        ,  1.        ]])

orocos_kdl now has cmake rules oroco-kdl

But it find_package(catkin component orocos_kdl) which was removed.

CMake Error at /opt/ros/hydro/share/catkin/cmake/catkinConfig.cmake:72 (find_package):
  Could not find a configuration file for package orocos_kdl.

  Set orocos_kdl_DIR to the directory containing a CMake configuration file
  for orocos_kdl.  The file will have one of the following names:

    orocos_kdlConfig.cmake
    orocos_kdl-config.cmake

Call Stack (most recent call first):
  CMakeLists.txt:4 (find_package)

TransformBroadcaster() does not receive consecutive transformations

I am using the default TF version that comes with Indigo.
The code to reproduce this error:

#!/usr/bin/env python
import rospy
import tf


if __name__ == '__main__':
    rospy.init_node('tftest', log_level=rospy.INFO)

    br = tf.TransformBroadcaster()
    tr = tf.TransformListener()


    rospy.loginfo("Spinning..")
    rospy.sleep(0.2) #This delay seems to be also needed
    while not rospy.is_shutdown():
        curTime = rospy.Time.now()
        #rospy.sleep(0.1)
        br.sendTransform((0,0,0), (0,0,0, 1), curTime, 'frame1', 'frame2')
        #rospy.sleep(0.02) #This delay is needed to retain both transformations
        br.sendTransform((0,0,0), (0,0,0, 1), curTime, 'dummy0', 'dummy')
        tr.waitForTransform('frame1', 'frame2', curTime, rospy.Duration(2))
        print("Got transform")
        rospy.sleep(0.2)

This error occurs if two transformations are sent too close to each others (delay of 0.02 s seems to be enough for my case) It would seem that some buffer is filling up too fast etc. Quick look through the TF code looked like there is a buffer of 100 values so that should not be an issue.

I was getting similar errors to #73 originally, so these might be related.

Warnings in tf

@tfoote What are these about?

/Users/william/nav_ws/src/tf/src/tf.cpp:411:2: warning: skipped porting [-W#warnings]
#warning skipped porting
 ^
/Users/william/nav_ws/src/tf/src/tf.cpp:448:2: warning: skipped porting [-W#warnings]
#warning skipped porting
 ^

eigen_conversions package could be split to reduce dependency pollution

In a source-based project one may want to pull in the Eigen <--> Msg conversions utilities in eigen_conversions without needing to depend on orocos_kdl, which is a pretty big dependency.

I propose splitting this into two packages, perhaps eigen_msg_conversions and eigen_kdl_conversions. To preserve compatibility with existing code, the existing eigen_conversions package could have headers that just include the headers of the new separate packages.

Thoughts? I'd be willing to do this as a pull request once there is agreement on the spec.

TF Publisher in Hydro is Blocking

Ran into this problem while monitoring a large robot using RViz over a WiFi connection that went flakey. Apparently, TF broadcasting in Python / Hydro is still blocking. This means that when the wifi connection got flakey, the Applanix driver (written in Python) blocked, and our controller stopped being able to do any updates.

From what I can tell in ros/ros_comm#169, ros_comm has been updated, and it looks like there are commits in indigo-devel to fix this. Really it's just a matter of adding queue size to the TF publishers, as per the two commits below. Any chance we can get this back ported to hydro? Seems like a problem many other people are going to face, and it's certainly a major problem on this project.

90a0fc4
fd04fd9

Cannot use ros::Time::now() before the first NodeHandle has been created or ros::start() has been called.

Under Hydro the following minimal example

#!/usr/bin/env python

import roslib; roslib.load_manifest('sandbox')
import rospy
import tf

if __name__ == '__main__':
    rospy.init_node("test_tf_listener")
    listener = tf.TransformListener()
    (trans, rot) = listener.waitForTransform('test_1', 'test_2', rospy.Time(0), rospy.Duration(0))

result in this error:

$ rosrun sandbox test_tf_listener.py 
terminate called after throwing an instance of 'ros::TimeNotInitializedException'
  what():  Cannot use ros::Time::now() before the first NodeHandle has been created or ros::start() has been called.  If this is a standalone app or test that just uses ros::Time and does not communicate over ROS, you may also call ros::Time::init()
Aborted (core dumped)

tf.Exception thrown while using waitForTransform when a frame doesn't exist

As reported by other users as well in http://answers.ros.org/question/207039/tfexception-thrown-while-using-waitfortransform a bug seems to have appeared.

waitForTransform throws a tf.Exception if one of the frames doesn't exist yet (which is actually the point of waitForTransform).

The bug appeared recently (after the end of March) but persists even with version 1.11.4, so it is likely NOT in TF. Any idea about the reason?

find_package(tf) mangles catkin_LIBRARIES variable

The Hydro tf package mangles the catkin_LIBRARIES variable if it is included with find_package(tf) instead of find_package(catkin COMPONENTS tf):

cmake_minimum_required(VERSION 2.8.3)
project(bug)
find_package(catkin REQUIRED COMPONENTS roscpp)
message(STATUS "catkin_LIBRARIES before: ${catkin_LIBRARIES}")
find_package(tf REQUIRED) # or tf2 
message(STATUS "catkin_LIBRARIES after: ${catkin_LIBRARIES}")
catkin_package()

results in

-- +++ processing catkin package: 'bug'
-- ==> add_subdirectory(bug)
-- catkin_LIBRARIES before: /opt/ros/hydro/lib/libroscpp.so;/usr/lib/libboost_signals-mt.so;/usr/lib/libboost_filesystem-mt.so;/opt/ros/hydro/lib/librosconsole.so;/opt/ros/hydro/lib/librosconsole_log4cxx.so;/opt/ros/hydro/lib/librosconsole_backend_interface.so;/usr/lib/liblog4cxx.so;/usr/lib/libboost_regex-mt.so;/opt/ros/hydro/lib/libroscpp_serialization.so;/opt/ros/hydro/lib/librostime.so;/usr/lib/libboost_date_time-mt.so;/usr/lib/libboost_system-mt.so;/usr/lib/libboost_thread-mt.so;/usr/lib/x86_64-linux-gnu/libpthread.so;/opt/ros/hydro/lib/libxmlrpcpp.so;/opt/ros/hydro/lib/libcpp_common.so;/opt/ros/hydro/lib/libconsole_bridge.so
-- catkin_LIBRARIES after: 
-- Configuring done

I have no idea where this comes from, but at least I can tell you that it works with tf2_bullet and geometry_msgs, so it's not a general catkin issue.

Boost.signal deprecation warnings

I get these:

In file included from /tmp/perception_pcl/pcl_ros/src/pcl_ros/segmentation/extract_polygonal_prism_data.cpp:39:
In file included from /tmp/perception_pcl/pcl_ros/include/pcl_ros/transforms.h:43:
In file included from /Users/william/hydro/install_isolated/include/tf/transform_listener.h:38:
In file included from /Users/william/hydro/install_isolated/include/tf/tf.h:45:
In file included from /usr/local/include/boost/signals.hpp:9:
/usr/local/include/boost/signal.hpp:17:4: warning: "Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning
      message, define BOOST_SIGNALS_NO_DEPRECATION_WARNING." [-W#warnings]
#  warning                  "Boost.Signals is no longer being maintained and is now deprecated. Please switch to Boost.Signals2. To disable this warning message, define...
   ^

tf::MessageFilter does not work with pcl::PointCloud messages

The header is not compatible.

I can see 2 workarounds:

  • use some template magic to convert the pcl header to ros header when appropriate
  • allow to provide a custom function to get the time and frame of the message (this way it could work with unstamped messages as well)

deduplicate data as it arrives

If new data arrives which provides no new information the linked list could be sparsified. This will make storage smaller and traversal times lower.

Angles package not present??

Angles is not a resident package in the geometry metapackage, but the geometry package.xml has the line

<run_depend>angles</run_depend>

so upon running rosdep it throws and error, "Unable to locate package ros-groovy-angles.

Undefined symbol during link of tf_conversions

Doing a build from source against today's version of tf_conversions, I'm getting this linker error:

Scanning dependencies of target tf_conversions
[ 50%] [100%] Building CXX object CMakeFiles/tf_conversions.dir/src/tf_kdl.cpp.o
Building CXX object CMakeFiles/tf_conversions.dir/src/tf_eigen.cpp.o
Linking CXX shared library /Users/tlau/ros/devel_isolated/tf_conversions/lib/libtf_conversions.dylib
Undefined symbols for architecture x86_64:
  "KDL::Vector::Normalize(double)", referenced from:
      KDL::Rot(KDL::Vector const&) in tf_kdl.cpp.o
  "KDL::Rotation::Quaternion(double, double, double, double)", referenced from:
      tf::quaternionTFToKDL(tf::Quaternion const&, KDL::Rotation&) in tf_kdl.cpp.o
  "KDL::operator*(KDL::Rotation const&, KDL::Rotation const&)", referenced from:
      KDL::operator*(KDL::Frame const&, KDL::Frame const&) in tf_kdl.cpp.o
      KDL::addDelta(KDL::Rotation const&, KDL::Vector const&, double) in tf_kdl.cpp.o
  "KDL::Rotation::GetQuaternion(double&, double&, double&, double&) const", referenced from:
      tf::quaternionKDLToTF(KDL::Rotation const&, tf::Quaternion&) in tf_kdl.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [/Users/tlau/ros/devel_isolated/tf_conversions/lib/libtf_conversions.dylib] Error 1
make[1]: *** [CMakeFiles/tf_conversions.dir/all] Error 2
make: *** [all] Error 2
<== Failed to process package 'tf_conversions': 
  Command '/opt/ros/hydro/env.sh make -j4 -l4' returned non-zero exit status 2

I'm building according to hydro installation instructions on Mac OSX.

Any ideas?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.