日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

TF添加额外坐标系

發布時間:2023/11/27 生活经验 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TF添加额外坐标系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在以前的教程中,通過添加TF廣播器和TF監聽器來重現小海龜演示。本教程將教你如何向TF樹添加一個額外的坐標框架。這非常類似于創建TF廣播,并且會顯示TF的一些功能。對于許多任務系統來說,在局部框架內更容易理解,例如激光掃描儀的中心位置就是就是掃描儀的frame,TF可以允許為在系統中的每一個傳感器定義一個局部的坐標系,TF 會為每一個坐標系提供一個轉換功能。

TF 是為坐標系建立一個樹形結構,但是這個樹形結構是不允許回環的,意思就是一個完整的TF樹只允許有一個父框架,可以擁有很多個子框架。如圖這個TF結構是有三個框架的:world,turtle1,和turtle2,這兩個turtle都是world框架的子框架,倘若我們需要添加新的子框架的那么這turtle1或者turtle2就成為新添加的子框架的父框架。

那么具體如何在一個TF樹結構中添加新的frame呢?
(1)還是接著在之前創建的my_tf的文件src下創建一個新的文件命名為frame_tf_broadcaster.cpp,添加如下的代碼

//這個文件的寫法與之前的tf的廣播的寫法有些類似的#include <ros/ros.h>
#include <tf/transform_broadcaster.h>int main(int argc, char** argv){ros::init(argc, argv, "my_tf_broadcaster");ros::NodeHandle node;tf::TransformBroadcaster br;  //定義一個廣播tf::Transform transform;    //定義一個transfromros::Rate rate(10.0);   while (node.ok()){transform.setOrigin( tf::Vector3(0.0, 2.0, 0.0) );  //設定transform的坐標原點 ,,從這里可以想像一下,x,y,z只有Y 是寫成2.0可以很明顯的想到transform.setRotation( tf::Quaternion(0, 0, 0, 1) ); //設置transform的方向的角度br.sendTransform(tf::StampedTransform(transform, ros::Time::now(), "turtle1", "carrot1"));rate.sleep();}return 0;
};

(2)打開CMakeList.txt添加編譯

add_executable(frame_tf_broadcaster src/frame_tf_broadcaster.cpp)
target_link_libraries(frame_tf_broadcaster ${catkin_LIBRARIES})

(3)catkin_make
(4)在Launch文件中添加

<node pkg="learning_tf" type="frame_tf_broadcaster"name="broadcaster_frame" />

(5)roslaunch my_tf start_demo.launch
會發現小烏龜的變化
可以看見兩只烏龜的在Y軸的方向上相距2cm這就可以理解為什么程序中為什么是(0.0,2,0.0)了

總結

以上是生活随笔為你收集整理的TF添加额外坐标系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。