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

Revision history [back]

click to hide/show revision 1
initial version

Here is the tested version of the code in C++

tf2::BufferCore buffer_core;

//Transformation from map to drone coordinates
geometry_msgs::TransformStamped transform1;
transform1.header.frame_id = "map";
transform1.child_frame_id = "drone";
transform1.transform.translation.x = 0;
transform1.transform.translation.y = 1; // 1 meter East
transform1.transform.translation.z = 1; // 1 meter Up
transform1.transform.rotation = tf::createQuaternionMsgFromRollPitchYaw(0, 0, 0.7854); // 45degrees to the left
//const bool is_static = true;
buffer_core.setTransform(transform1, "default_authority", true);

//Transformation from drone to visual target coordinates
geometry_msgs::TransformStamped transform2;
transform2.header.frame_id = "drone";
transform2.child_frame_id = "target";
transform2.transform.translation.x = 1.4142; // square root of 2 forward
transform2.transform.translation.y = 0;
transform2.transform.translation.z = 0;
transform2.transform.rotation = tf::createQuaternionMsgFromRollPitchYaw(0, 0, 0);
//const bool is_static = true;
buffer_core.setTransform(transform2, "default_authority", true);

geometry_msgs::TransformStamped ts_lookup;
ts_lookup = buffer_core.lookupTransform("map", "target", ros::Time(0));

ROS_INFO("%f, %f, %f", ts_lookup.transform.translation.x, ts_lookup.transform.translation.y, ts_lookup.transform.translation.z);

output: 1, 2, 1 (North, East, Up)

Here is the tested version of the code in C++

#include <tf2/buffer_core.h>
...

tf2::BufferCore buffer_core;

//Transformation from map to drone coordinates
geometry_msgs::TransformStamped transform1;
transform1.header.frame_id = "map";
transform1.child_frame_id = "drone";
transform1.transform.translation.x = 0;
transform1.transform.translation.y = 1; // 1 meter East
transform1.transform.translation.z = 1; // 1 meter Up
transform1.transform.rotation = tf::createQuaternionMsgFromRollPitchYaw(0, 0, 0.7854); // 45degrees to the left
//const bool is_static = true;
buffer_core.setTransform(transform1, "default_authority", true);

//Transformation from drone to visual target coordinates
geometry_msgs::TransformStamped transform2;
transform2.header.frame_id = "drone";
transform2.child_frame_id = "target";
transform2.transform.translation.x = 1.4142; // square root of 2 forward
transform2.transform.translation.y = 0;
transform2.transform.translation.z = 0;
transform2.transform.rotation = tf::createQuaternionMsgFromRollPitchYaw(0, 0, 0);
//const bool is_static = true;
buffer_core.setTransform(transform2, "default_authority", true);

//Transformation from map to visual target coordinates
geometry_msgs::TransformStamped ts_lookup;
ts_lookup = buffer_core.lookupTransform("map", "target", ros::Time(0));

ROS_INFO("%f, %f, %f", ts_lookup.transform.translation.x, ts_lookup.transform.translation.y, ts_lookup.transform.translation.z);

output: 1, 2, 1 (North, East, Up)

Here is the tested version of the code in C++

#include <tf2/buffer_core.h>
...

tf2::BufferCore buffer_core;

//Transformation from map to drone coordinates
geometry_msgs::TransformStamped transform1;
transform1.header.frame_id = "map";
transform1.child_frame_id = "drone";
transform1.transform.translation.x = 0;
transform1.transform.translation.y = 1; // 1 meter East
transform1.transform.translation.z = 1; // 1 meter Up
transform1.transform.rotation = tf::createQuaternionMsgFromRollPitchYaw(0, 0, 0.7854); // 45degrees to the left
//const bool is_static = true;
buffer_core.setTransform(transform1, "default_authority", true);

//Transformation from drone to visual target coordinates
geometry_msgs::TransformStamped transform2;
transform2.header.frame_id = "drone";
transform2.child_frame_id = "target";
transform2.transform.translation.x = 1.4142; // square root of 2 forward
transform2.transform.translation.y = 0;
transform2.transform.translation.z = 0;
transform2.transform.rotation = tf::createQuaternionMsgFromRollPitchYaw(0, 0, 0);
//const bool is_static = true;
buffer_core.setTransform(transform2, "default_authority", true);

//Transformation from map to visual target coordinates
geometry_msgs::TransformStamped ts_lookup;
ts_lookup = buffer_core.lookupTransform("map", "target", ros::Time(0));

ROS_INFO("%f, %f, %f", ts_lookup.transform.translation.x, ts_lookup.transform.translation.y, ts_lookup.transform.translation.z);

output: 1, 2, 1 (North, East, Up)

Here is the tested version of the code in C++

#include <tf2/buffer_core.h>
...

tf2::BufferCore buffer_core;

//Transformation from map to drone coordinates
geometry_msgs::TransformStamped transform1;
transform1.header.frame_id = "map";
transform1.child_frame_id = "drone";
transform1.transform.translation.x = 0;
transform1.transform.translation.y = 1; // 1 meter East
transform1.transform.translation.z = 1; // 1 meter Up
transform1.transform.rotation = tf::createQuaternionMsgFromRollPitchYaw(0, 0, 0.7854); // 45degrees to the left
//const bool is_static = true;
buffer_core.setTransform(transform1, "default_authority", true);

//Transformation from drone to visual target coordinates
geometry_msgs::TransformStamped transform2;
transform2.header.frame_id = "drone";
transform2.child_frame_id = "target";
transform2.transform.translation.x = 1.4142; // square root of 2 forward
transform2.transform.translation.y = 0;
transform2.transform.translation.z = 0;
transform2.transform.rotation = tf::createQuaternionMsgFromRollPitchYaw(0, 0, 0);
//const bool is_static = true;
buffer_core.setTransform(transform2, "default_authority", true);

//Transformation from map to visual target coordinates
geometry_msgs::TransformStamped ts_lookup;
ts_lookup = buffer_core.lookupTransform("map", "target", ros::Time(0));

ROS_INFO("%f, %f, %f", ts_lookup.transform.translation.x, ts_lookup.transform.translation.y, ts_lookup.transform.translation.z);

output: 1, 2, 1 (North, East, Up)