ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
I solved this there were errors in my code.
2 | No.2 Revision |
I solved this there were errors in my code.code. See below for the example i used :
#include <rclcpp/rclcpp.hpp>
#include <tf2_ros/transform_broadcaster.h>
#include <geometry_msgs/msg/transform_stamped.hpp>
class TFPublisher : public rclcpp::Node
{
public:
TFPublisher()
: Node("tf_publisher")
{
broadcaster_ = std::make_unique<tf2_ros::TransformBroadcaster>(this);
}
void spin()
{
rclcpp::Rate loop_rate(10);
while (rclcpp::ok())
{
geometry_msgs::msg::TransformStamped laser_transform;
laser_transform.header.frame_id = "base_link";
laser_transform.child_frame_id = "base_laser";
laser_transform.header.stamp = rclcpp::Clock().now();
laser_transform.transform.translation.x = 0.0;
laser_transform.transform.translation.y = 0.0;
laser_transform.transform.translation.z = 0.0;
laser_transform.transform.rotation.x = 0.0;
laser_transform.transform.rotation.y = 0.0;
laser_transform.transform.rotation.z = 0.0;
laser_transform.transform.rotation.w = 1.0;
geometry_msgs::msg::TransformStamped imu_transform;
imu_transform.header.frame_id = "base_link";
imu_transform.child_frame_id = "base_imu";
imu_transform.header.stamp = rclcpp::Clock().now();
imu_transform.transform.translation.x = 0.0;
imu_transform.transform.translation.y = 0.0;
imu_transform.transform.translation.z = 0.0;
imu_transform.transform.rotation.x = 0.0;
imu_transform.transform.rotation.y = 0.0;
imu_transform.transform.rotation.z = 0.0;
imu_transform.transform.rotation.w = 1.0;
broadcaster_->sendTransform(laser_transform);
broadcaster_->sendTransform(imu_transform);
rclcpp::spin_some(this->get_node_base_interface());
loop_rate.sleep();
}
}
private:
std::unique_ptr<tf2_ros::TransformBroadcaster> broadcaster_;
};
int main(int argc, char *argv[])
{
rclcpp::init(argc, argv);
auto node = std::make_shared<TFPublisher>();
node->spin();
rclcpp::shutdown();
return 0;
}