最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ROS??TF坐標變換基本概念及使用案例

 更新時間:2023年01月03日 11:58:26   作者:K.Fire好好睡覺  
本文介紹了TF坐標變換的基本概念以及TF在ROS中的表示形式,通過古月居的烏龜跟隨的例子,分析了TF樹的廣播器和監(jiān)聽器最基本的書寫形式,從中展示了如何提取和應(yīng)用TF變換的信息,并介紹了5種最常用的TF樹及TF信息的提取工具,感興趣的朋友一起學(xué)習(xí)下吧

前言

TF(TransForm),就是坐標轉(zhuǎn)換,包括了位置和姿態(tài)兩個方面的變換,坐標變換是機器人學(xué)中的概念。

在機器人學(xué)中,無論一個機器人多么復(fù)雜,我們都可以將它的組成抽象成兩部分-連桿和關(guān)節(jié),最典型的機器人是串聯(lián)型機械臂,它的每條臂就是一個比較規(guī)整的關(guān)節(jié),中間連接的電機就是它的關(guān)節(jié),關(guān)節(jié)分為轉(zhuǎn)動關(guān)節(jié)和移動關(guān)節(jié),比如下圖中比較經(jīng)典的PUMA機械臂,可以抽象成很規(guī)整的連桿和關(guān)節(jié)的組成。

在將機器人抽象成關(guān)節(jié)之后,我們就可以使用DH法或改進DH法,為各個關(guān)節(jié)和連桿建立坐標系,而坐標變換就是用來描述我們建立的各個坐標系之間的關(guān)系,以方便人們表達機器人各個關(guān)節(jié)之間的位置關(guān)系。

一、ROS中的TF

雖然我們可以將機器人進行抽象和簡化,拋去它所有復(fù)雜的結(jié)構(gòu),將它抽象成一個個的坐標系,但是一個機器人可能有幾十上百個關(guān)節(jié),如下圖所示,如果我們要自己去計算任意兩個坐標系之間的變換關(guān)系,也是非常非常繁雜的。

于是ROS為我們提供了一個用來方便TF計算的工具-TF樹,TF樹用來維護ROS系統(tǒng)中的機器人以及周圍環(huán)境的所有TF變換關(guān)系,只要你的TF樹是連通的,你就可以提取任意兩個坐標系之間的坐標變換關(guān)系,掌控任何坐標系的位置,ROS中的TF樹考慮到存儲容量問題,只維護最近5秒的TF變換數(shù)據(jù)。

1.監(jiān)聽TF變換

監(jiān)聽TF變換就是獲取TF樹中的坐標變換關(guān)系,這是通過TF類中的TransformListener類實現(xiàn)的,下面以古月居的代碼為例進行說明。

 通過這一頓操作,就可以將兩只海龜?shù)淖鴺俗儞Q讀取出來,存到我們創(chuàng)建的transform類中,方便我們進行其他操作。

2.廣播TF變換

廣播TF變換是用來更新TF樹的,有時我們控制了機器人進行了位置移動,那么ROS怎么知道它新的位置呢?這就需要通過TF廣播器,將最新的機器人位置發(fā)布到TF樹中,仍然以古月居的代碼進行說明。

 我們傳入一個參數(shù)(烏龜節(jié)點名字),就可以發(fā)布這只烏龜相對于世界的坐標變換,當我們知道了兩只烏龜相對于世界的坐標變換,那么也可以根據(jù)公式推出他們之間的坐標變換,因為它們是連通的,兩只烏龜之間的坐標變換,只要烏龜1左乘烏龜2相對于世界變換矩陣的逆即可。

launch文件的編寫

 然后就可以運行l(wèi)aunch文件,查看效果

roslaunch turtle_tf turtle_tf_demo.launch

二、TF常用組件

無論是使用烏龜,還是我們在仿真環(huán)境中創(chuàng)建了一個自己的機器人,ROS為我們提供了各種各樣的工具方便我們查看其中的TF變換,而不需要我們像上面的例子一樣,自己去編寫TF坐標變換的監(jiān)聽和廣播器,下面我以mbot小車為例,展現(xiàn)一下較為復(fù)雜的TF坐標變換關(guān)系和常用工具使用。

先打開一個gazebo仿真環(huán)境

1.tf_monitor

作用:將當前的坐標系轉(zhuǎn)換關(guān)系打印到終端控制臺

rosrun tf tf_monitor

 這樣就可以在終端輸出任意兩個坐標系之間的坐標變換,當然也可以查看特定兩個坐標系之間的坐標變換,只需要給它傳入?yún)?shù)

rosrun tf tf_monitor base_link odom

2.tf_echo <source_frame> <target_frame>

作用:把特定的坐標系之間的平移旋轉(zhuǎn)關(guān)系,打印到終端控制臺

rosrun tf tf_echo base_link odom

3.view_frames

作用:輸出當前的tf關(guān)系以pdf的形式輸出到當前目錄下

rosrun tf view_frames

 這個工具是非常方便且常用的

4.roswtf

作用:幫助你找到tf中的錯誤

roswtf

5.Rviz

 當然你也可以通過最牛逼的可視化工具Rviz顯示所有的TF坐標變換,打開一個Rviz,選擇TF即可

6.robot_state_publisher

 robot_state_publisher是機器人的狀態(tài)發(fā)布器,使用參數(shù) robots_description 指定的URDF和來自主題關(guān)節(jié)狀態(tài)的關(guān)節(jié)位置來計算機器人的正向運動學(xué)并通過tf發(fā)布結(jié)果。

它訂閱關(guān)節(jié)狀態(tài)發(fā)布器(joint_state_publisher)節(jié)點發(fā)布的關(guān)節(jié)狀態(tài)主題( sensor_msgs/JointState )將機器人各個關(guān)節(jié)的tf變換發(fā)布到tf樹上,這就不需要我們自己去編寫關(guān)節(jié)狀態(tài)更新的節(jié)點,而只需要在launch文件中,一并啟動這個ROS為我們提供的節(jié)點即可。

<!-- 運行robot_state_publisher節(jié)點,發(fā)布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"  output="screen" >
        <param name="publish_frequency" type="double" value="50.0" />
    </node>

它的參數(shù)如下:

參數(shù)意義
robot_descriptionurdf 機器人描述
tf_prefix為命名空間感知的轉(zhuǎn)換發(fā)布設(shè)置tf前綴
publish_frequency狀態(tài)發(fā)布器的發(fā)布頻率(默認:50)
ignore_timestamp如果為真,則忽略 publish_frequency 和joint_states 的時間戳,并為每個接收到的joint_states 發(fā)布一個tf(默認:false)
use_tf_static設(shè)置是否使用 /tf_static 鎖存的靜態(tài)變換廣播器(默認:true)

三、SLAM中的TF

SLAM中的TF最重要的有兩部分:(1)機器人底盤坐標系(base_frame)與里程計坐標系(odom_frame)之間的變換關(guān)系 和 (2)里程計坐標系(odom_frame)與地圖坐標系(map_frame)之間的變換關(guān)系

(1)的變換關(guān)系主要是由機器人自帶的里程計(如:編碼器、IMU、laser)提供,采用的方法叫里程計位姿估計(Odometry),這一部分的主要作用是讓我們知道了機器人從初始位置(odom_frame)到現(xiàn)在位置(base_frame)的關(guān)系,但是這一部分是相對的,我們不知道環(huán)境信息時,沒法絕對的確定機器人位置,而且單純的使用里程計定位,會產(chǎn)生累計漂移誤差,這就需要使用某些方法確定機器人和環(huán)境之間的位置關(guān)系。

機器人和環(huán)境之間的坐標變換關(guān)系可以由很多方式給出,比如AMCL(自適應(yīng)蒙特卡洛定位)專門用來機器人定位的算法、或者SLAM的方法(如激光雷達的算法gmapping),但是TF數(shù)的結(jié)構(gòu)決定了一個坐標系只能有一個父坐標系(一個人只能認一個爹),base到odom的坐標變換中,base已經(jīng)當做父坐標系了,因此這些定位方法往往給出里程計坐標系(odom_frame)與地圖坐標系(map_frame)之間的變換關(guān)系,即(2),這樣相當于間接給出了base與map之間的關(guān)系,也可以確定機器人的位置,如下圖所示

 這樣也補償了里程計的漂移誤差

總結(jié)

本文介紹了TF坐標變換的基本概念以及TF在ROS中的表示形式(TF樹),通過古月居的烏龜跟隨的例子,分析了TF樹的廣播器和監(jiān)聽器最基本的書寫形式,從中展示了如何提取和應(yīng)用TF變換的信息,并介紹了5種最常用的TF樹及TF信息的提取工具,最后簡要說明了SLAM中最為重要的兩種TF坐標變換。

到此這篇關(guān)于ROS TF坐標變換的文章就介紹到這了,更多相關(guān)ros tf坐標變換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • resty更新header控制api版本數(shù)據(jù)源讀寫分離

    resty更新header控制api版本數(shù)據(jù)源讀寫分離

    這篇文章主要介紹了resty的1.2.0-SNAPSHOT版本更新,可以通過header控制api的版本實現(xiàn)數(shù)據(jù)源讀寫分離,有需要的朋友可以借鑒參考下,希望能夠有所幫助<BR>,
    2022-03-03
  • 關(guān)于數(shù)據(jù)處理包dplyr的函數(shù)用法總結(jié)

    關(guān)于數(shù)據(jù)處理包dplyr的函數(shù)用法總結(jié)

    下面小編就為大家?guī)硪黄P(guān)于數(shù)據(jù)處理包dplyr的函數(shù)用法總結(jié)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Flyway的簡單介紹及使用詳解

    Flyway的簡單介紹及使用詳解

    這篇文章主要介紹了Flyway的簡單介紹及使用,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • MobaXterm使用指南(常用功能)

    MobaXterm使用指南(常用功能)

    MobaXterm就是一款SSH客戶端,它幫助我們在Windows操作系統(tǒng)下去連接并操作Linux服務(wù)器,這篇文章主要介紹了MobaXterm使用指南,需要的朋友可以參考下
    2023-05-05
  • git合并部分提交的實現(xiàn)

    git合并部分提交的實現(xiàn)

    在進行Git合并某一次提交時,有時會出現(xiàn)沖突,本文主要介紹了git合并部分提交的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • 詳解VScode自動補全CSS3前綴插件以及配置無效的解決辦法

    詳解VScode自動補全CSS3前綴插件以及配置無效的解決辦法

    這篇文章主要介紹了詳解VScode自動補全CSS3前綴插件以及配置無效的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 從Chrome App看微信小程序的發(fā)展前景

    從Chrome App看微信小程序的發(fā)展前景

    App的了解也許對我們對小程序的發(fā)張和前景的分析帶來一定的幫助。接下來本教程給大家分享從Chrome App看微信小程序,感興趣的朋友可以參考下
    2016-09-09
  • 人工智能開發(fā)語言排行榜: 不死Java, 不朽C/C++, 新貴Python【推薦】

    人工智能開發(fā)語言排行榜: 不死Java, 不朽C/C++, 新貴Python【推薦】

    這篇文章主要介紹了人工智能開發(fā)語言排行榜: 不死Java, 不朽C/C++, 新貴Python,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 2022編程語言需求排名出爐:第一不是Python,也不是Java

    2022編程語言需求排名出爐:第一不是Python,也不是Java

    編程語言的流行程度、發(fā)展前景、就業(yè)市場這些一直都是程序員們非常關(guān)注的話題,需求排名是程序員們關(guān)注學(xué)習(xí)的風(fēng)向標,畢竟是市場經(jīng)濟,學(xué)以致用,如果熱門編程不了解,都不好意思告訴別人你是程序員。編程語言的種類有超過200+,但還有很多不為人知。
    2022-12-12
  • 將來會是Python、Java、Golang三足鼎立的局面嗎

    將來會是Python、Java、Golang三足鼎立的局面嗎

    python的優(yōu)勢在于數(shù)據(jù)處理和人工智能等方向,所以go只可能吞噬Java的份額,很難撼動Python的奶酪,所以將來會是Python、Java、Golang三足鼎立的局面嗎
    2019-04-04

最新評論

无锡市| 舟山市| 鲜城| 惠水县| 天峻县| 长治市| 南充市| 岫岩| 玛曲县| 闸北区| 公主岭市| 武胜县| 余干县| 法库县| 常德市| 德昌县| 雷州市| 安西县| 新宁县| 论坛| 博客| 横峰县| 枣庄市| 白玉县| 宜阳县| 会同县| 吉水县| 泌阳县| 佛山市| 大丰市| 东明县| 牟定县| 宜丰县| 仲巴县| 霍山县| 焉耆| 长岛县| 汽车| 共和县| 宝兴县| 平安县|