tf

廣播

#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; //創(chuàng)建一個廣播對象或详,它會把變化信息廣播到tf中

  //創(chuàng)建變化信息,并且初始化郭计。為什么/pose可以作為轉(zhuǎn)化信息 霸琴,因為它本身就是全局的,相對于原點的坐標
  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);
  //指出這個變換信息是turtle_name相對world的坐標信息昭伸,并且廣播出去
  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];
  printf("%s",argv[1]);
  ros::NodeHandle node;
  ros::Subscriber sub = node.subscribe(turtle_name+"/pose", 10, &poseCallback);
  ros::spin();
  return 0;
};

監(jiān)聽

#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");  ////等待梧乘,直到服務"spawn"出現(xiàn)。只有這樣才能請求此服務再產(chǎn)生一個turtle
  ros::ServiceClient add_turtle =
    node.serviceClient<turtlesim::Spawn>("spawn");
  turtlesim::Spawn srv;
  add_turtle.call(srv);  //調(diào)用服務再產(chǎn)生一個turtle

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

  tf::TransformListener listener;  //創(chuàng)建一個監(jiān)聽對象

  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;
};

launch file

<launch>
    <!-- 烏龜 Node-->
    <node pkg="turtlesim" type="turtlesim_node" name="sim"/>
    <!-- 控鍵 Node-->
    <node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>
    <!-- Axes -->
    <param name="scale_linear" value="2" type="double"/>
    <param name="scale_angular" value="2" type="double"/>
    <!--廣播變化節(jié)點-->
    <node pkg="learning_tf" type="turtle_tf_broadcaster"
          args="/turtle1" name="turtle1_tf_broadcaster" />
    <node pkg="learning_tf" type="turtle_tf_broadcaster"
          args="/turtle2" name="turtle2_tf_broadcaster" />
    <node pkg="learning_tf" type="turtle_tf_listener"name="listener" />
  </launch>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末庐杨,一起剝皮案震驚了整個濱河市选调,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灵份,老刑警劉巖仁堪,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異填渠,居然都是意外死亡弦聂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門氛什,熙熙樓的掌柜王于貴愁眉苦臉地迎上來莺葫,“玉大人,你說我怎么就攤上這事枪眉∞嗝剩” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵贸铜,是天一觀的道長堡纬。 經(jīng)常有香客問我,道長萨脑,這世上最難降的妖魔是什么隐轩? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮渤早,結(jié)果婚禮上职车,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好悴灵,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布扛芽。 她就那樣靜靜地躺著,像睡著了一般积瞒。 火紅的嫁衣襯著肌膚如雪川尖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天茫孔,我揣著相機與錄音叮喳,去河邊找鬼。 笑死缰贝,一個胖子當著我的面吹牛馍悟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播剩晴,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锣咒,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赞弥?” 一聲冷哼從身側(cè)響起毅整,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绽左,沒想到半個月后悼嫉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡拼窥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年承粤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闯团。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡辛臊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出房交,到底是詐尸還是另有隱情彻舰,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布候味,位于F島的核電站刃唤,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏白群。R本人自食惡果不足惜尚胞,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望帜慢。 院中可真熱鬧笼裳,春花似錦唯卖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至允青,卻和暖如春橄碾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颠锉。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工法牲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人琼掠。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓皆串,卻偏偏與公主長得像,于是被迫代替她去往敵國和親眉枕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 0.創(chuàng)建工作包 $ cd %YOUR_CATKIN_WORKSPACE_HOME%/src$ catkin_cre...
    joey_zhou閱讀 973評論 0 0
  • 本篇教程演示如何建立新坐標系怜森,建立新坐標系與創(chuàng)建tf廣播類似速挑,同時能加強tf功能。 1.為什么添加坐標系 很多實例...
    joey_zhou閱讀 1,414評論 0 0
  • 1. ROS的TF功能包 TF功能包副硅,可以通過廣播TF變換和監(jiān)聽TF變換獲取如下坐標變換關(guān)系: 機器人局部坐標系相...
    提著木劍走天下閱讀 6,916評論 0 1
  • TF介紹 描述 教程介紹了tf的實際應用姥宝,并展示了使用 turtlesim的多機器人示例. 同時介紹了tf_ech...
    joey_zhou閱讀 1,908評論 0 0
  • 《四季交響》 文:甜心 春來春去久不回 夏喜夏憂寂寞催 秋風秋雨細敲窗 冬有冬無花傷悲 昨日穿稠衫 今日添皮襖 南...
    F芳子閱讀 159評論 3 2