ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

You can simply remove the .asBt() part. Multiplication of tf::StampedTransform by tf::Transform will return tf::Transform.

You can simply remove the .asBt() part. Multiplication of tf::StampedTransform by tf::Transform will return tf::Transform.

EDIT

Both Bullet and tf have almost identical interfaces, but the type names differ. So you have to convert everything using POD-types, for example floats array.

To convert btTransform to tf::Transform do something like this:

btTransform bt_transform;
tf::Transform tf_transform;
float gl_matrix[15];

bt_transform.getOpenGLMatrix(gl_matrix);
tf_transform.setFromOpenGLMatrix(gl_matrix);

Or you can do this component-wise by separately extracting quaternion and origin vector from Bullet transform and setting them back to tf transform. But I think the above method is cleaner.