打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
tf代码实例

catkin_create_pkg learning_tf tf roscpp rospy turtlesim

#include <ros/ros.h>
#include <tf/transform_broadcaster.h>
#include <turtlesim/Pose.h>

std::string turtle_name;

void poseCallback(const turtlesim::PoseConstPtr& msg)
{
     static tf::TransformBroadcaster br;
     tf::Transform transform;
     transform.setOrigin( tf::Vector3(msg->x, msg->y, 0.0) );
     tf::Quaternion q;
     q.setRPY(0, 0, msg->theta);
     transform.setRotation(q);
     br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "world", turtle_name));
}

int main(int argc, char** argv)
{
   ros::init(argc, argv, "my_tf_broadcaster");
   if (argc != 2){ROS_ERROR("need turtle name as argument"); return -1;};
   turtle_name = argv[1];

   ros::NodeHandle node;
   ros::Subscriber sub = node.subscribe(turtle_name+"/pose", 10, &poseCallback);
   ros::spin();
   return 0;
}


------------------------------------------------------------------------------------------------------------


#include <ros/ros.h>#include <tf/transform_listener.h>#include <geometry_msgs/Twist.h>#include <turtlesim/Spawn.h>int main(int argc, char** argv){  ros::init(argc, argv, "my_tf_listener");  ros::NodeHandle node;  ros::service::waitForService("spawn");  ros::ServiceClient add_turtle =    node.serviceClient<turtlesim::Spawn>("spawn");  turtlesim::Spawn srv;  add_turtle.call(srv);  ros::Publisher turtle_vel =    node.advertise<geometry_msgs::Twist>("turtle2/cmd_vel", 10);  tf::TransformListener listener;  ros::Rate rate(10.0);  while (node.ok()){    tf::StampedTransform transform;    try{      listener.lookupTransform("/turtle2", "/turtle1",                               ros::Time(0), transform);    }    catch (tf::TransformException &ex) {      ROS_ERROR("%s",ex.what());      ros::Duration(1.0).sleep();      continue;    }    geometry_msgs::Twist vel_msg;    vel_msg.angular.z = 4.0 * atan2(transform.getOrigin().y(),                                    transform.getOrigin().x());    vel_msg.linear.x = 0.5 * sqrt(pow(transform.getOrigin().x(), 2) +                                  pow(transform.getOrigin().y(), 2));    turtle_vel.publish(vel_msg);    rate.sleep();  }  return 0;};






本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
机器人系统ROS快速入门总结
ROS教程-广播坐标系
ROS学习(四)发布者与订阅者
ROS教程(一):ROS安装教程(详细图文)
ros 消息发布和订阅
ROS:创建和发布自己的Message
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服