Transforming a pointcloud2 in python
I've searched and searched, but can't find a good answer to this. I'm using python so don't have access to pcl_ros
(which seems deprecated anyway?) and other answers are all for older versions of ROS (I'm using kinetic). The tf2_sensor_msgs
looks like it's supposed to do it, but I can't import it directly (no module found). I'm using the tf2_ros
package with a Transform buffer and listener.
self.transform_buffer = tf2.Buffer()
self.transform_listener = tf2.TransformListener(self.transform_buffer)
# Later I try:
pointcloud = self.transform_buffer.transform(pointcloud, 'base_link')
Error:
.... File "/home/zac/mbot/ros/src/mbot_api/src/web_server.py", line 266, in get_laserscan pointcloud = ros_thread.get_velodyne_points_for_time(requested_ts) File "/home/zac/mbot/ros/src/mbot_api/src/web_server.py", line 135, in get_velodyne_points_for_time pointcloud = self.transform_buffer.transform(pointcloud, 'base_link') File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf2_ros/buffer_interface.py", line 63, in transform do_transform = self.registration.get(type(object_stamped)) File "/opt/ros/kinetic/lib/python2.7/dist-packages/tf2_ros/buffer_interface.py", line 202, in get raise TypeException('Type %s if not loaded or supported'% str(key)) TypeException
I'm receiving a PointCloud2 message in the /velodyne frame and I want to transform it into the /base_link frame.