Conversions

Converting data across libraries.

The data source/sink is:

Eigen

To go to/from messages, use eigen_conversions (or minkindr_conversions below).

Example:

#include <eigen_conversions/eigen_msg.h>

Eigen::Vector3d my_super_cool_vector(1.0, 2.0, 3.0);
geometry_msgs::Point point_msg;
tf::pointEigenToMsg(my_super_cool_vector, point_msg);
super_cool_publisher_.publish(point_msg);

TF

To go to/from TF, use tf_conversions (or also minkindr_conversions below).

Example:

#include <tf_conversions/tf_eigen.h>

Eigen::Vector3d my_super_cool_vector(1.0, 2.0, 3.0);
tf::Vector3 my_super_cool_vector_tf;
tf::vectorEigenToTF(my_super_cool_vector, my_super_cool_vector_tf);
tf::Transform transform;
transform.setOrigin(my_super_cool_vector_tf);
transform_broadcaster_.sendTransform(
    tf::StampedTransform(transform, ros::Time::now(), "map", "world"));

minkindr (aslam::Transformation)

Please use the minkindr_conversions package in the minkindr_ros repo. This also wraps some of the Eigen/TF conversions for common datatypes (Eigen::Quaterniond, Eigen::Vector3d), so it is a viable alternative to {tf,eigen}_conversions in most cases. It also transforms minkindr Transformations back and forth to both messages and TF.

Example:

OpenCV Image

Please use cv_bridge. This allows very easy conversions to/from ROS messages.

Example:

Last updated

Was this helpful?