1. 程式人生 > >ROS 節點 和 命令列傳參

ROS 節點 和 命令列傳參

http://wiki.ros.org/Nodes

節點是有節點型別type的的,節點的型別type就是節點所在包package的資源的名字,包括包package檔案的名字和包package內部可執行檔案的名字。

ROS在package內部搜尋特定名字的可執行程式,並以搜到的第一個為準,所以在一個package內部不要生成同名的不同功能的可執行檔案。

當節點在命令列被啟動時,節點node內的任何一個ROS名字都可以被重新對映。這一個牛逼的特性可以使你在命令列以不同的配置啟動同一個節點。

你可以為私有節點的引數賦值。

對映的引數可以通過以下語法name:=new_name,被傳遞給任何一個節點,例如,將talker節點發布的話題chatter修改為/wg/chatter:

rosrun rospy_tutorials talker chatter:=/wg/chatter    (這裡的chatter是”話題的名字“,而不是指指”話題“,例如話題的名字為"hello" ,可以這麼修改 hello:=/my/hello)

在匹配之前先解析引數,這樣做的結果是你重映射了一個全名,然而在重對映之前,只適用於一個特定的字串,例如,foo:=bar 之前只匹配字串foo,當然也會匹配/<node_namespace>/foo ,解析之後,直接匹配字串,所以你不能用它來重對映部分名字,即foo:=bar 會匹配foo或者/<node_namespace>/foo ,但是不會匹配 foo/bar 。唯一例外的情況是當使用searchParam時,會保留以前的行為,因為searchParam本身工作在未解析的名字上。

示例:

節點名稱空間

重對映引數

匹配名字

最終解析名字

/

foo:=bar

foo/foo

/bar

/baz

foo:=bar

foo/baz/foo

/baz/bar

/

/foo:=bar

foo/foo

/bar

/baz

/foo:=bar

/foo

/baz/bar

/baz

/foo:=/a/b/c/bar

/foo

/a/b/c/bar

ROS_NAMESPACE使得你可以在啟動節點的時候修改節點的名稱空間,這將會有效的重對映節點內的所有名字,當所有的節點在全域性名稱空間啟動時,重對映名稱空間可以把節點的資源都拉到一個子名稱空間去。

注意:為了是這個特定正常工作,在你的專案中應該避免使用全域性名字,而應該使用相對和私有名字。

您可以為一個節點,直接使用一個下劃線命令列_作為字首分配專用引數。 例如:

rosrun rospy_tutorials talker _param:=1.0 (這裡的param就是在程式碼中定義的可以從通過launch file和命令列改變的引數,傳遞給程式碼中真正使用的引數,注意命令列話題的對映直接進行,不需要在話題前面加_符號

設定 ~param為1.0  ROS使用YAML語法來確定引數的輸入。

其他關鍵字:

__name 是為節點名稱的特殊專門保留的關鍵字。它可以讓你重新對映節點名字,而不用知道節點的真實名字。只能當正在啟動的程式只包含一個節點時使用。

__log是指定該節點的日誌檔案應寫入的位置的保留關鍵字。此關鍵字的使用一般不鼓勵 - 它主要是通過ROS工具,如roslaunch供其使用。

       _ip and __hostname 代表了ROS_IP和ROS_HOSTNAME,這個關鍵字的一般不鼓勵使用,因為它提供了一種用於在環境變數不能設定的特殊情況下的解決方法。

    __master  代表了ROS_MASTER_URI。這個關鍵字一般不鼓勵使用,因為它提供了一種用於在環境變數不能設定的特殊情況下的解決方法。

  __ns 代表了ROS名稱空間的這個關鍵字一般不鼓勵使用,因為它提供了一種用於在環境變數不能設定的特殊情況下的解決方法。

相關推薦

ROS 節點  命令列傳

http://wiki.ros.org/Nodes 節點是有節點型別type的的,節點的型別type就是節點所在包package的資源的名字,包括包package檔案的名字和包package內部可執行檔案的名字。 ROS在package內部搜尋特定名字的可執行程式,並以搜到

python 命令列傳

1. 簡單的寫法: 通過匯入模組sys import sys if __name__ == '__main__': argc = len(sys.argv)     arg0 = sys.argv[0] #... 2. 稍微複雜一點的引數可

ROS中rosrunroslaunch命令的對比

https://blog.csdn.net/hcx25909/article/details/7802754  在ROS中執行節點的命令有兩個:rosrun和roslaunch。         官網上

ProcessBuilder中如何為命令列傳

專案中有個需求是備份資料庫,備份資料庫很自然的想到使用mysqldump進行轉儲,那麼問題的關鍵就變成了如何在java中呼叫mysqldump命令,一搜才知道通過開啟一個本地的程序,來執行該命令即可。 Process的產生有兩種方式:Runtime.getRu

Linux字符集系統語言設置-LANG,locale,LC_ALL,POSIX等命令數詳解

linux lang locale lc_all 博文說明【前言】: 本文將通過個人口吻介紹Linux字符集和系統語言設置,包括LANG,locale,LC_ALL,POSIX等命令及參數詳解的相關知識,在目前時間點【2017年6月21號】下,所掌握的技術水平有限,可能會存在不少知識理解

Shell特殊變量:$0, $#, $*, $@, $?, $$命令

$0 $# $* $@ $? $$ 變量名只能包含數字、字母和下劃線,因為某些包含其他字符的變量有特殊含義,這樣的變量被稱為特殊變量。特殊變量列表變量含義$0當前腳本的文件名$n傳遞給腳本或函數的參數。n 是一個數字,表示第幾個參數。例如,第一個參數是$1,第二個參數是$2。$#傳遞給

命令數解析函數getoptgetopt_long函數【轉】

問題 數組 輸出流 include req pts 容易 -- 得到 原文地址:http://blog.csdn.net/cashey1991/article/details/7942809 getopt和getopt_long函數 平時在寫程序時常常需要對命令行參

VueVux開發WebApp日誌四、繼續完善gulp任務,增加命令

lan 目標 root option kconfig 基本上 ces ref platform 轉載請註明出處:http://www.cnblogs.com/shamoyuu/p/vue_vux_4.html 項目github地址:https://github.co

Shell特殊變量:Shell $0, $#, $*, $@, $?, $$命令

body int 腳本 一個數 color $* 部分 所在 bash Shell特殊變量:Shell $0, $#, $*, $@, $?, $$和命令行參數 特殊變量列表 變量 含義 $0 當前腳本的文件名 $n 傳遞給腳本或函數

傳遞命令數示例代碼 (C Python)

font com 因此 char* tac 示例 std erl __name__ C語言 在 C 語言中, 使用 main 函數的輸入參數 argc 和 argv 傳入命令行參數. argc 為 int 類型, 表示傳入命令行參數的個數 (argument count

【老劉談算法003】命令數的處理獲取——ArgCl函數實現分析

連續 文件中 local get mod 中文註釋 bit 長度 有效 在非匯編語言中,處理並分割命令行參數(CmdLine)一般是由編譯器在可執行文件中預置處理代碼或者調用運行時庫完成,而在匯編中,我們需要手動調用Windows的API——GetCommandLine函數

CentOS6.9下ssh密鑰登錄配置步驟(免密碼登錄)ssh-keygen 命令常用

通過 str ssh 其他 添加 ip地址 login strong 私有 密鑰登錄步驟(免密碼登錄)ssh登錄提供兩種認證方式:口令(密碼)認證方式和密鑰認證方式。其中口令(密碼)認證方式是我們最常用的一種,出於安全方面的考慮,介紹密鑰認證方式登錄到linux/unix的

ROS-4 : ROS節點主題

圖片 ast client pack 一個數 tab 成功 tro span   依照<ROS-3 : Catkin工作空間和ROS功能包>,創建catkin工作空間,並在起src下創建功能包ros_demo_pkg,依賴項為roscpp、std_msgs、ac

ROS-4 : ROS節點主題 ROS-3 : Catkin工作空間ROS功能包

  依照<ROS-3 : Catkin工作空間和ROS功能包>,建立catkin工作空間,並在起src下建立功能包ros_demo_pkg,依賴項為roscpp、std_msgs、actionlib、actionlib_msgs,並構建該空功能包。ROS中節點間的基本通訊方式是topic,即pub

ros節點呼叫gdb偵錯程式呼叫valgrind分析節點

    在很多情況下我們需要呼叫gdb偵錯程式去除錯自己的程式碼。有時候也需要使用valgrind來檢測程式的記憶體洩露情況。下面我們就來介紹如何啟動gdb或者valgrind分析ros節點。     我是使用的launch檔案去啟動r

ROS】cd命令roscd命令的區別,並解決環境變數問題

cd命令和roscd命令都是切換到指定目錄的命令。不同的是,cd是Linux系統的命令,在使用時必須指定目標目錄的完整路徑;而roscd是ros系統中的命令,它可以直接切換到指定目錄(ros系統中的軟體包),而不需要輸入冗長的完整路徑。 例如,要切換到roscpp這個軟體包,兩個命令的格式分

在QT上實現ROS 節點的釋出訂閱

1、安裝ros_qtc_plugin 2、ROS工程建立 2.1、新建工作區,點選New Project 選擇Other Project -> ROS Workspace: 2.2、填寫工作區名稱,選擇路徑。選擇路徑時建議新建同名資料夾,工作區建立時沒

微信小程式開發記錄(四)位址列傳之truefalse的坑

先看看小程式位址列傳參的方法,如下 wxml: <view class="weui-cells weui-cells_after-title" wx:if="{{isNewUser}}"> <navigator url="../addres

最前沿的武器!磁力彈射器磁力彈射槍 DIY 威力強大。視訊!

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!                <script type="text/javascript"src="http://pagead2.googlesyndication.com/pagea

Ubuntu開機自啟ROS節點或執行命令

Ubuntu開機自啟ROS節點或執行命令 自己搭的機器人想讓它每次開機自動啟動相關節點? 介紹兩種方法. 1. 讓Ubuntu開機自動登入tty終端 先確保安裝了mingetty: sudo apt-get install mingetty 然後開啟ttyn配置檔案,