《鴻蒙機器人編程》課件-7-運行ROS程序_第1頁
《鴻蒙機器人編程》課件-7-運行ROS程序_第2頁
《鴻蒙機器人編程》課件-7-運行ROS程序_第3頁
《鴻蒙機器人編程》課件-7-運行ROS程序_第4頁
《鴻蒙機器人編程》課件-7-運行ROS程序_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

運行ROS程序課程內(nèi)容用rosrun運行ROSnode用roslaunch運行ROSnoderoslaunch命令launch啟動腳本文件編寫2?NXROBO2022運行node的兩種方法通過rosrun命令單個node通過roslaunch命令批處理:運行多個node,及參數(shù)配置3?NXROBO2022用rosrun運行ROSnode命令rosrun可以運行單一的node,用法如下:如:向node指定參:rosrun還增加了–prefix選項,可實現(xiàn)在gdb中運行node(詳細參數(shù)請查閱官網(wǎng)/roslaunch/Tutorials/RoslaunchNodesinValgrindorGDB):4$rosrun<package><executable>$rosrunbeginner_tutorialshello$rosrunbeginner_tutorialshello_my_param:=value$rosrun–prefix‘gdb-exrun–args’my_packagemy_node?NXROBO2022用roslaunch運行ROSnode工具roslaunch是管理node的啟動與停止的,一般需要一個或多個后綴為.launch的xml類文件作為參數(shù)roslaunch工具是正常工作是依賴.launch文件的配置值的,以實現(xiàn)node的啟動及相關參數(shù)的配置。同rosrun一樣,roslaunch也可以以arg:=value的形式傳遞node映射參數(shù),用法如下:如果節(jié)點管理器通信端口并非默認埠號,可通過-p參數(shù)更改:5$roslaunch<package-name><launch-filename>[args]$roslaunch-p1234packagefilename.launch?NXROBO2022launch文件的示例6?NXROBO2022launch文件啟動時取值順序工具roslaunch對XML檔的分析取值是單線處理的;對于包含的其它lanuch文件以深度優(yōu)先的順序遍歷處理;對于標簽則是順序進行分析取值,所以如果某個參數(shù)有多個賦值,最后一次的賦值才會真正使用。7?NXROBO2022launch文件的常用標簽<launch>所有l(wèi)aunch文件的根元素標簽,其它元素的容器<node>ROS節(jié)點的標簽,用來啟動一個節(jié)點<param>設置參數(shù)服務器上的參數(shù)<rosparam>使用rosparam文件設置參數(shù)服務器上的參數(shù)<remap>聲明一個名稱的映射<group>把一些東西歸為一組,共享一個命名空間<arg>設置launch文件中用的參數(shù)<include>包含另一個launch文件8?NXROBO2022Launch文件標簽-<node><launch>標簽是roslaunch文件的根元素,其它元素都必須在此標簽內(nèi)。<node>標簽定義要運行的node及其相關參數(shù)。此類標簽的定義順序幷不能保證node的運行完成的順序。其相關屬性如下:pkg="mypackage"Node所在的功能包。type="nodetype"Node的類型,其值與執(zhí)行程序名相同。name="nodename"Node的名字,不能含有命名空間。args="arg1arg2arg3"(可選)向node傳遞參數(shù)。machine="machine-name"(可選)在指定的機器上運行node。respawn="true"(可選)如果值為真,則node退出后自動重新啟動。9?NXROBO2022Launch文件標簽-<node>respawn_delay="30"(可選,默認為0)如果設置respawn為真,則偵測到node退出后延時多少秒node重新啟動。required="true"(可選)如果node死掉,則殺死整個roslaunch進程。ns="foo"(可選)在"foo"命名空間中啟動node。clear_params="true|false"(可選)在運行node前刪除所有node自身命名空間中的參數(shù)。output="log|screen"(可選)如果設置成'screen',則node產(chǎn)生的stdout/stderr信息打印到屏幕;如果設置成'log',則node產(chǎn)生的stdout/stderr的信息保存到日志文件。默認為'log'。cwd="ROS_HOME|node"(可選)設置工作目錄是ROS_HOME變量表示的目錄還是Node執(zhí)行文件所在的目錄,默認為ROS_HOME。launch-prefix="prefixarguments"(可選)Node的附加運行參數(shù),與rosrun的--prefix參數(shù)功能一樣。10?NXROBO2022Launch文件標簽-<param><param>用來在參數(shù)服務器(ParameterServer)上定義參數(shù),除了可賦常值,還可指定文本文件、二進制文件或命令。如果用于<node>標簽下,設置的參數(shù)將作為此node的私有參數(shù)。其屬性有:name="namespace/name"參數(shù)名,可加上命名空間,value="value"(可選)為參數(shù)賦值,如果此屬性不使用,則binfile、textfile和command必須要定義一個。type="str|int|double|bool"(可選)指定參數(shù)類型,如果不指定,roslaunch會自動判斷參數(shù)類型。textfile="$(findpkg-name)/path/file.txt"(可選)讀取文本文件內(nèi)容作為string存儲。11?NXROBO2022Launch文件標簽-<param>binfile="$(findpkg-name)/path/file"(可選)讀取將文件內(nèi)容作為以base64編碼的XML-RPC二進制對象存儲。command="(findpkg-name)/arg.txt'"(可選)讀取命令的執(zhí)行輸出保存為string。使用示例如下:12<paramname="publish_frequency"type="double"value="10.0"/>?NXROBO2022Launch文件標簽-<rosparam>此標簽用于通過rosparam的YAML文件從參數(shù)服務器加載或轉存參數(shù),也可用于銷毀參數(shù)。如果用于<node>標簽中,則當作私有屬性處理。銷毀和轉存操作先于加載操作執(zhí)行,且先于其它其它參數(shù)傳送至參數(shù)服務器。加載操作會覆蓋之前定義的參數(shù)。

此標簽除了通過YAML檔進行參數(shù)操作外,還能直接通過YAML類型的字符內(nèi)容進行操作。其屬性有:command="load|dump|delete"(可選,默認為load)此標簽的操作命令,分別為加載、轉存和銷毀。file="$(findpkg-name)/path/foo.yaml"(用于load和dump命令)指定rosparam檔。param="param-name"參數(shù)名。ns="namespace"(可選)指定參數(shù)的命名空間。subst_value=true|false(可選)選擇是否可在YAML內(nèi)容中含有替代參數(shù)。13?NXROBO2022Launch文件標簽-<rosparam>使用示例如下:14<rosparamcommand="load"file="$(findrosparam)/example.yaml"/><rosparamcommand="delete"param="my/param"/><rosparamparam="a_list">[1,2,3,4]</rosparam><rosparam>a:1b:2</rosparam>?NXROBO2022Launch文件標簽-<remap><remap>標簽可以將名字通過參數(shù)重映射到node中,用于<launch>、<node>和<group>標簽范圍內(nèi)。其屬性有:from="original-name"需映射的名字。to="new-name"映像成的目標名字使用示例如下:15<remapfrom="chatter"to="hello"/>?NXROBO2022Launch文件標簽-<group>此標簽用于對多個node進行設置參數(shù),其ns屬性可將一組node置于一個獨立的命名空間。其屬性如下:ns="namespace"(可選)指定一組node的命名空間,可用全局命名空間,也可用相對命名空間。clear_params="true|false"(可選)是否在運行node前銷毀此給命名空間下的所有參數(shù),使用此屬性必須先指定ns屬性。16?NXROBO2022Launch文件標簽-<arg>此標簽用于聲明arg變量、引用命令行或上層文件的傳入?yún)?shù)、將arg變量傳入到包含檔中。其屬性有:name="arg_name"變量名。default="defaultvalue"(可選)變量的默認值。value="value"(可選)為變量賦值,不能與default屬性同用。doc="descriptionforthisarg"(可選)變數(shù)描述。17?NXROBO2022Launch文件標簽-<arg>示例如下:18<includefile="included.launch"><argname="hoge"value="fuga"/></include><launch><!--聲明傳入的arg變數(shù)--><argname="hoge"/><!--取值--><paramname="param"value="$(arghoge)"/></launch>included.launchmy_file.launch?NXROBO2022Launch文件標簽-<machine><machine>標簽聲明可以運行node的機器。一般用于遠程機器上運行node,如果所有node全部在本地運行則無需定義此標簽。其屬性如下:name="machine-name"指定機器的名字,與卷標的machine屬性值一致。address=""機器的網(wǎng)絡地址或主機名。env-loader="/opt/ros/kinetic/env.sh"指定遠程機器的環(huán)境變量設置文件。default="true|false|never"(可選)設置此機器為node的默認運行平臺。user="username"(可選)登錄到遠程機器的SSH用戶名。password="passwhat"登錄到遠程機器的SSH密碼。timeout="10.0"(可選)遠程運行的超時時間,單位是秒。19?NXROBO2022條件屬性Launch檔中的所有標簽均支持if和unless屬性。形式如下:if=value如果if值為真,則其所在的標簽及其屬性值有效。unless=value如果unless值為假,則其所在的標簽及其屬性值有效。

20?NXROBO2022Launch文件標簽-<env><env>用來設置Node運行所需要的環(huán)境變量,用于<launch>、<include>、<node>和<machine>標簽內(nèi)。如果作為<launch>根元素的子元素,則只對于此標簽后聲明的node起作用。特別注意下,此標簽設置的參數(shù)不能在roslaunch內(nèi)作為變量調(diào)用。其屬性有:name="environment-variable-name"設置環(huán)境變量名。value="environment-variable-value"為環(huán)境變量名賦值。21?NXROBO2022Launch文件標簽-<include><include>標簽用于將其它roslaunch文件導入當前位置,其屬性有:file="$(findpkg-name)/path/filename.xml"要導入的文件ns="foo"(可選)在'foo'命名空間下導入檔。clear_params="true|false"(可選,默認為:false)運行前刪除所有導入檔命名空間下的參數(shù)。22?NXROBO2022<test>

此標簽用于定義運行的測試node,功能與用法<node>標簽類似。替代參數(shù)roslaunch文件的標簽屬性可以使用替代參數(shù)賦值,替代參數(shù)會在node運行之前解析完成。目前支持的替代參數(shù)有:$(envENVIRONMENT_VARIABLE)

用當前環(huán)境變量來替代某個參數(shù)值。如果使用此替代參數(shù),必須保證指定的環(huán)境變量存在,否則roslaunch會出錯。此環(huán)境變量不能使用<env>標簽重寫。23?NXROBO2022替代參數(shù)$(optenvENVIRONMENT_VARIABLE)$(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論