ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Thanks to the suggestions of ChuiV, the correct answer to this question is the following:
void publishPose() // publish of the estimate of the state
{
Pdf<ColumnVector> * posterior = filter->PostGet();
ColumnVector pose = posterior->ExpectedValueGet();
SymmetricMatrix pose_cov = posterior->CovarianceGet();
geometry_msgs::PoseStamped pose_msg;
pose_msg.header.frame_id = "world_frame";
pose_msg.pose.position.x = pose(1);
pose_msg.pose.position.y = pose(2);
pose_msg.pose.position.z = pose(3);
static tf2_ros::TransformBroadcaster br;
geometry_msgs::TransformStamped transformStamped;
transformStamped.header.stamp = ros::Time::now();
transformStamped.header.frame_id = "world_frame";
transformStamped.child_frame_id = "base_link";
transformStamped.transform.translation.x = pose(1);
transformStamped.transform.translation.y = pose(2);
transformStamped.transform.translation.z = pose(3);
tf2::Quaternion q;
q.setRPY(0, 0, 0);
transformStamped.transform.rotation.x = q.x();
transformStamped.transform.rotation.y = q.y();
transformStamped.transform.rotation.z = q.z();
transformStamped.transform.rotation.w = q.w();
br.sendTransform(transformStamped);
pose_pub.publish(pose_msg);
}
I hope this could be helpful for other developers in case needed.