1. 程式人生 > >ROS探索總結(十二)——座標系統

ROS探索總結(十二)——座標系統


        建立launch檔案start_demo.launch:
<launch>
    <!-- Turtlesim Node-->
    <node pkg="turtlesim" type="turtlesim_node" name="sim"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="teleop" output="screen"/>


    <node name="turtle1_tf_broadcaster" pkg="learning_tf" type="turtle_tf_broadcaster.py" respawn="false" output="screen" >
      <param name="turtle" type="string" value="turtle1" />
    </node>
    <node name="turtle2_tf_broadcaster" pkg="learning_tf" type="turtle_tf_broadcaster.py" respawn="false" output="screen" >
      <param name="turtle" type="string" value="turtle2" /> 
    </node>


  </launch>


        執行:
$ roslaunch learning_tf start_demo.launch


        可以看到介面中只有移植烏龜了,開啟tf_echo的資訊視窗:
$ rosrun tf tf_echo /world /turtle1 

        world參考系的原點在最下角,對於turtle1的轉換關係,其實就是turtle1在world參考系中所在的座標位置以及旋轉角度。

三、Writing a tf listener

             這一步,我們將看到如何使用tf進行參考系轉換。首先寫一個tf listener(nodes/turtle_tf_listener.py):
#!/usr/bin/env python  
import roslib
roslib.load_manifest('learning_tf')
import rospy
import math
import tf
import turtlesim.msg
import turtlesim.srv

if __name__ == '__main__':
    rospy.init_node('tf_turtle')

    listener = tf.TransformListener() #TransformListener建立後就開始接受tf廣播資訊,最多可以快取10s

    rospy.wait_for_service('spawn')
    spawner = rospy.ServiceProxy('spawn', turtlesim.srv.Spawn)
    spawner(4, 2, 0, 'turtle2')

    turtle_vel = rospy.Publisher('turtle2/command_velocity', turtlesim.msg.Velocity)

    rate = rospy.Rate(10.0)
    while not rospy.is_shutdown():
        try:
            (trans,rot) = listener.lookupTransform('/turtle2', '/turtle1', rospy.Time(0))
        except (tf.LookupException, tf.ConnectivityException, tf.ExtrapolationException):
            continue

        angular = 4 * math.atan2(trans[1], trans[0])
        linear = 0.5 * math.sqrt(trans[0] ** 2 + trans[1] ** 2)
        turtle_vel.publish(turtlesim.msg.Velocity(linear, angular))

        rate.sleep()

相關推薦

ROS探索總結——座標系統

        建立launch檔案start_demo.launch:<launch> <!-- Turtlesim Node--> <node pkg="turtlesim" type="turtlesim_node" name="sim"/>

ROS探索總結——坐標系統

時間 形象 ins left 添加 href node continue 我們 ubuntu 14.04 indigo版本 轉摘自:http://www.guyuehome.com/265 一、tf簡介 1、安裝turtle包 1 rosdep install tu

ROS探索總結——HRMRP機器人的設計

      HRMRP具備豐富的感測器和執行器,在該平臺的基礎上,我們設計並實現了機器人SLAM、自主導航、人臉識別、機械臂控制等功能。在設計開發完成之初,我們參加了2013年的OpenHW大賽,並且獲得了全國一等獎,此外還在中國智慧機器人學術會議上發表學術論文一篇,獲得了會議的十佳論文獎。這個機器人陪伴我走

ROS探索總結——構建完整的機器人應用系統

       當然,該系統對多機器人的支援也是很好的,由於時間有限,我們只做了一個簡單的機器人跟隨實驗。該實驗使用了兩個機器人,除HRMRP機器人之外,還使用樹莓派製作了一個簡單的小型機器人。在實驗中,HRMRP機器人在地圖上自主導航前進,伺服器負責應用的處理與顯示,同時將HRMRP的位置資訊轉發給樹莓派機器

FFmpeg總結用ffmpeg與nginx實現直播多路流並發播放

xxx 開源 conf ref itl rect arc med rtm 圖:撒哈拉沙漠 下載 nginx 和 nginx-rtmp源碼: http://nginx.org/download/nginx-1.5.10.tar.gz https://github.com/a

Linux總結set_uid set_gid stic_bit 軟鏈接 硬鏈接

允許 重新 共享 路徑和 mark bit t權限 忽略 進行 一 set_uid 之前我們修改普通用戶的登陸密碼,都是以管理員身份在操作,比如我們在lv賬戶下,我們使用sudo passwd lv 重置lv賬戶密碼,此時我們直接拿到root權限忽略掉了文件權限的限制。那麽

java基礎學習總結:深入理解java內部類

內部類 內部類也是語法糖,是因為它僅僅是一個編譯時的概念,outer.java裡面定義了一個內部類inner,一旦編譯成功,就會生成兩個完全不同的.class檔案了,分別是outer.class和outer$inner.class。所以內部類的名字完全可以和它的外部類名字相同。 內部類分為四

Android Multimedia框架總結CodeC部分之OMXCodec與OMX事件回撥流程

前言:上篇文中分析到AwesomePlayer到OMX服務,曾介紹到,OMX服務主要完成三個任務: NodeInstance列表的管理,NodeInstance的操作, 事件的處理。最後這個事件處理就是今天放大看的內容。要一步一步一Codec,事件傳遞必不可

FFmpeg總結用ffmpeg與nginx實現直播多路流併發播放

編譯安裝: cd nginx-1.5.10 ./configure –with-http_ssl_module –add-module=../nginx-rtmp-module-master make make install 瀏覽器輸入loc

springboot學習總結BeanDefinitionRegistryPostProcessor向spring容器中註冊bean

strac autowired true all 方法 brush autowire tee sync (一)功能 實現了BeanDefinitionRegistryPostProcessor接口的類,可以在覆寫的postProcessBeanDefinitionRegi

作業系統知識點總結檔案系統知識點總結

磁碟結構 引導控制塊(Boot Control Block)包括系統從該分割槽引導作業系統所需要的資訊。如果 磁碟沒有作業系統,那麼這塊的內容為空。它通常為分割槽的第一塊。UFS稱之為引導塊(Boot Block); NTFS 稱之為分割槽引導扇區(Partition B

Android 系統啟動原理art 虛擬機器

一、虛擬機器的啟動 Android 是一個 Linux 的虛擬機器,當虛擬機器啟動的時候,會執行手機根目錄下的 init.rc(實際上就是 .sh 檔案) 這個可執行檔案。 在 init.rc 中,有一行 on init 執行命令。這是呼叫 in

遊戲開發入門遊戲開發全總結

通過遊戲開發入門系列的學習,是不是對遊戲開發有了一個比較清晰的認識? 在最後一篇裡面,博主試著概括性的對遊戲開發做一個總結,歡迎各位提出意見來完善這篇部落格~ 遊戲模組總結: 遊戲邏輯模組系統:各種武器,狀態,技能,揹包,戰鬥等邏輯系統 動畫模組系

軟工1816 · 作業Beta答辯總結

組長部落格 宣傳視訊 github團隊專案倉庫 本組成員 隊員姓名與學號 124 王彬(組長) 206 趙暢 215 胡展瑞 320 李恆達 131 佘嶽昕 431 王源 206 陳文垚 209 陳志煒 225 林煌偉 Beta部落格彙總

《喬布斯傳》經典摘錄之iphone【天線門】事件(解決、總結、分析)...

此部分內容主要講iphone【天線門】事件如何解決、總結和分析 週五 , 蘋果在公司禮堂舉辦了新聞釋出會 , 喬布斯採納了麥肯納的意見 。 他 沒有卑躬屈膝 , 也沒有道歉 , 只表示蘋果理解這個問題並會盡力改正 , 這樣他就 得以平息問題 。 接著 , 他話題一轉

系統學習機器學習之神經網路 --人工神經網路總結

本來這篇還缺個RBM,但RBM在DBN中使用,暫時放在深度學習那裡。這裡看到一篇非常好的總結,儲存下來。 轉自:http://blog.csdn.net/fengbingchun/article/details/50274471 本文主要對人工神經網路基礎進行了描述,主要包

ROS學習--編寫一個簡單的釋出器publisher

1.mkdir -p ~/catkin_ws/src/beginner_tutorials/src 先在beginner_tutorials下建立一個src。 -p的意思是如果路徑中有不存在的資料夾,則建立 2。在新建的資料夾裡面新建cpp檔案,talker

慕課網實戰·高併發探索:併發容器J.U.C -- AQS元件 鎖:ReentrantLock、ReentrantReadWriteLock、StempedLock

特別感謝:慕課網jimin老師的《Java併發程式設計與高併發解決方案》課程,以下知識點多數來自老師的課程內容。 jimin老師課程地址:Java併發程式設計與高併發解決方案 ReentrantLock java中有兩類鎖,一類是Synchron

ROS探索總結——使用smartcar進行模擬

<?xml version="1.0"?> <robot name="smartcar" xmlns:xacro="http://ros.org/wiki/xacro"> <property name="M_PI" value="3.14159"/> <!-

Hibernate中的多表操作1:單向多對一

art 保存 int gen round t對象 情況 映射文件 拋出異常 由“多”方可知“一”方的信息,比如多個員工使用同一棟公寓,員工可以知道公寓的信息,而公寓無法知道員工的信息。 案例一: pojo類 public class Department {