Performance: Why coordinate transforms matter
Coordinate transforms affect how quickly and smoothly a robot's position and sensor data update in visualization and control systems.
Jump into concepts and practice - no test required
geometry_msgs::TransformStamped cached_transform = tf_buffer.lookupTransform("base_link", "sensor_frame", rclcpp::Time(0)); while (rclcpp::ok()) { geometry_msgs::PointStamped sensor_point; geometry_msgs::PointStamped transformed_point; tf2::doTransform(sensor_point, transformed_point, cached_transform); // publish or use transformed_point }
while (rclcpp::ok()) { geometry_msgs::PointStamped sensor_point; geometry_msgs::PointStamped transformed_point; // repeatedly lookup transform inside loop geometry_msgs::TransformStamped transform; transform = tf_buffer.lookupTransform("base_link", "sensor_frame", rclcpp::Time(0)); tf2::doTransform(sensor_point, transformed_point, transform); // publish or use transformed_point }
| Pattern | CPU Usage | Latency | Update Rate | Verdict |
|---|---|---|---|---|
| Repeated transform lookup inside loop | High CPU usage | High latency | Low update rate | [X] Bad |
| Cached transform reuse | Low CPU usage | Low latency | High update rate | [OK] Good |
import tf2_ros
import rospy
import geometry_msgs.msg
buffer = tf2_ros.Buffer()
listener = tf2_ros.TransformListener(buffer)
try:
trans = buffer.lookup_transform('base_link', 'camera_link', rospy.Time(0))
print(f"Translation: {trans.transform.translation.x}, {trans.transform.translation.y}, {trans.transform.translation.z}")
except Exception as e:
print("Transform not available")tf2_ros::Buffer tfBuffer;
tf2_ros::TransformListener tfListener(tfBuffer);
geometry_msgs::msg::TransformStamped transformStamped;
try {
transformStamped = tfBuffer.lookupTransform("map", "base_link", tf2::TimePointZero);
} catch (tf2::TransformException &ex) {
RCLCPP_WARN(node->get_logger(), "%s", ex.what());
}
What is the most likely cause of the exception?