"qrcamera" passed to lookupTransform argument target_frame does not exist.

本文介绍了一个使用ROS的TF2库进行坐标变换监听并控制机器人速度的示例程序。通过查找“qrcamera”到“marker”的变换,程序获取了位置信息,并将这些信息用于控制机器人运动。示例中,机器人被设定为沿x轴正方向以固定速度移动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

$rosrun tf tf_echo qrcamera marker

http://docs.ros.org/indigo/api/tf2_ros/html/c++/classtf2__ros_1_1Buffer.html#acabbd72cae8f49fb3b6ede3be7e34c55

#include <ros/ros.h>
#include <tf2_ros/transform_listener.h>
#include <geometry_msgs/TransformStamped.h>
#include <geometry_msgs/Twist.h>
#include <turtlesim/Spawn.h>

int main(int argc, char** argv){
  ros::init(argc, argv, "my_tf2_listener");

  ros::NodeHandle node;
 
  ros::Publisher turtle_vel =
    node.advertise<geometry_msgs::Twist>("/qrpose", 10);

  tf2_ros::Buffer tfBuffer;
  tf2_ros::TransformListener tfListener(tfBuffer);

  ros::Rate rate(10.0);
  while (node.ok()){
		ros::spinOnce();
    geometry_msgs::TransformStamped transformStamped;
    try{
 ros::Time now = ros::Time::now();
      transformStamped = tfBuffer.lookupTransform("qrcamera", "marker",
                               ros::Time(0), ros::Duration(1));
std::cout<<"transformstamped:\n";
		std::cout<<	transformStamped.transform.translation.x<<",";
		std::cout<<	transformStamped.transform.translation.y<<",";
		std::cout<<	transformStamped.transform.translation.z<<"\n****\n";
    }
    catch (tf2::TransformException &ex) {
      ROS_WARN("%s",ex.what());
      ros::Duration(1.0).sleep();
      continue;
    }

    geometry_msgs::Twist vel_msg;
     
    vel_msg.angular.z = 0;
    vel_msg.linear.x = 0.5 ;
    turtle_vel.publish(vel_msg);
    
    rate.sleep();
  }
  return 0;
};

 

  static tf2_ros::TransformBroadcaster br;

  
    transformStamped.header.stamp = ros::Time::now();
    transformStamped.header.frame_id = "qrcamera";
    transformStamped.child_frame_id = "marker";
    transformStamped.transform.translation.x = bc_cv.getX();
    transformStamped.transform.translation.y = bc_cv.getY();
    transformStamped.transform.translation.z = 0.0;
    tf2::Quaternion q;
        q.setRPY(0, 0, -yaw);
    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);
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值