《鸿蒙机器人编程》课件-7-运行ROS程序_第1页
《鸿蒙机器人编程》课件-7-运行ROS程序_第2页
《鸿蒙机器人编程》课件-7-运行ROS程序_第3页
《鸿蒙机器人编程》课件-7-运行ROS程序_第4页
《鸿蒙机器人编程》课件-7-运行ROS程序_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

运行ROS程序课程内容用rosrun运行ROSnode用roslaunch运行ROSnoderoslaunch命令launch启动脚本文件编写2©NXROBO2022运行node的两种方法通过rosrun命令单个node通过roslaunch命令批处理:运行多个node,及参数配置3©NXROBO2022用rosrun运行ROSnode命令rosrun可以运行单一的node,用法如下:如:向node指定参:rosrun还增加了–prefix选项,可实现在gdb中运行node(详细参数请查阅官网/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类文件作为参数roslaunch工具是正常工作是依赖.launch文件的配置值的,以实现node的启动及相关参数的配置。同rosrun一样,roslaunch也可以以arg:=value的形式传递node映射参数,用法如下:如果节点管理器通信端口并非默认埠号,可通过-p参数更改:5$roslaunch<package-name><launch-filename>[args]$roslaunch-p1234packagefilename.launch©NXROBO2022launch文件的示例6©NXROBO2022launch文件启动时取值顺序工具roslaunch对XML档的分析取值是单线处理的;对于包含的其它lanuch文件以深度优先的顺序遍历处理;对于标签则是顺序进行分析取值,所以如果某个参数有多个赋值,最后一次的赋值才会真正使用。7©NXROBO2022launch文件的常用标签<launch>所有launch文件的根元素标签,其它元素的容器<node>ROS节点的标签,用来启动一个节点<param>设置参数服务器上的参数<rosparam>使用rosparam文件设置参数服务器上的参数<remap>声明一个名称的映射<group>把一些东西归为一组,共享一个命名空间<arg>设置launch文件中用的参数<include>包含另一个launch文件8©NXROBO2022Launch文件标签-<node><launch>标签是roslaunch文件的根元素,其它元素都必须在此标签内。<node>标签定义要运行的node及其相关参数。此类标签的定义顺序幷不能保证node的运行完成的顺序。其相关属性如下:pkg="mypackage"Node所在的功能包。type="nodetype"Node的类型,其值与执行程序名相同。name="nodename"Node的名字,不能含有命名空间。args="arg1arg2arg3"(可选)向node传递参数。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自身命名空间中的参数。output="log|screen"(可选)如果设置成'screen',则node产生的stdout/stderr信息打印到屏幕;如果设置成'log',则node产生的stdout/stderr的信息保存到日志文件。默认为'log'。cwd="ROS_HOME|node"(可选)设置工作目录是ROS_HOME变量表示的目录还是Node执行文件所在的目录,默认为ROS_HOME。launch-prefix="prefixarguments"(可选)Node的附加运行参数,与rosrun的--prefix参数功能一样。10©NXROBO2022Launch文件标签-<param><param>用来在参数服务器(ParameterServer)上定义参数,除了可赋常值,还可指定文本文件、二进制文件或命令。如果用于<node>标签下,设置的参数将作为此node的私有参数。其属性有:name="namespace/name"参数名,可加上命名空间,value="value"(可选)为参数赋值,如果此属性不使用,则binfile、textfile和command必须要定义一个。type="str|int|double|bool"(可选)指定参数类型,如果不指定,roslaunch会自动判断参数类型。textfile="$(findpkg-name)/path/file.txt"(可选)读取文本文件内容作为string存储。11©NXROBO2022Launch文件标签-<param>binfile="$(findpkg-name)/path/file"(可选)读取将文件内容作为以base64编码的XML-RPC二进制对象存储。command="(findpkg-name)/arg.txt'"(可选)读取命令的执行输出保存为string。使用示例如下:12<paramname="publish_frequency"type="double"value="10.0"/>©NXROBO2022Launch文件标签-<rosparam>此标签用于通过rosparam的YAML文件从参数服务器加载或转存参数,也可用于销毁参数。如果用于<node>标签中,则当作私有属性处理。销毁和转存操作先于加载操作执行,且先于其它其它参数传送至参数服务器。加载操作会覆盖之前定义的参数。

此标签除了通过YAML档进行参数操作外,还能直接通过YAML类型的字符内容进行操作。其属性有:command="load|dump|delete"(可选,默认为load)此标签的操作命令,分别为加载、转存和销毁。file="$(findpkg-name)/path/foo.yaml"(用于load和dump命令)指定rosparam檔。param="param-name"参数名。ns="namespace"(可选)指定参数的命名空间。subst_value=true|false(可选)选择是否可在YAML内容中含有替代参数。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>标签可以将名字通过参数重映射到node中,用于<launch>、<node>和<group>标签范围内。其属性有:from="original-name"需映射的名字。to="new-name"映像成的目标名字使用示例如下:15<remapfrom="chatter"to="hello"/>©NXROBO2022Launch文件标签-<group>此标签用于对多个node进行设置参数,其ns属性可将一组node置于一个独立的命名空间。其属性如下:ns="namespace"(可选)指定一组node的命名空间,可用全局命名空间,也可用相对命名空间。clear_params="true|false"(可选)是否在运行node前销毁此给命名空间下的所有参数,使用此属性必须先指定ns属性。16©NXROBO2022Launch文件标签-<arg>此标签用于声明arg变量、引用命令行或上层文件的传入参数、将arg变量传入到包含档中。其属性有:name="arg_name"变量名。default="defaultvalue"(可选)变量的默认值。value="value"(可选)为变量赋值,不能与default属性同用。doc="descriptionforthisarg"(可选)变数描述。17©NXROBO2022Launch文件标签-<arg>示例如下:18<includefile="included.launch"><argname="hoge"value="fuga"/></include><launch><!--声明传入的arg变数--><argname="hoge"/><!--取值--><paramname="param"value="$(arghoge)"/></launch>included.launchmy_file.launch©NXROBO2022Launch文件标签-<machine><machine>标签声明可以运行node的机器。一般用于远程机器上运行node,如果所有node全部在本地运行则无需定义此标签。其属性如下:name="machine-name"指定机器的名字,与卷标的machine属性值一致。address=""机器的网络地址或主机名。env-loader="/opt/ros/kinetic/env.sh"指定远程机器的环境变量设置文件。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运行所需要的环境变量,用于<launch>、<include>、<node>和<machine>标签内。如果作为<launch>根元素的子元素,则只对于此标签后声明的node起作用。特别注意下,此标签设置的参数不能在roslaunch内作为变量调用。其属性有:name="environment-variable-name"设置环境变量名。value="environment-variable-value"为环境变量名赋值。21©NXROBO2022Launch文件标签-<include><include>标签用于将其它roslaunch文件导入当前位置,其属性有:file="$(findpkg-name)/path/filename.xml"要导入的文件ns="foo"(可选)在'foo'命名空间下导入档。clear_params="true|false"(可选,默认为:false)运行前删除所有导入档命名空间下的参数。22©NXROBO2022<test>

此标签用于定义运行的测试node,功能与用法<node>标签类似。替代参数roslaunch文件的标签属性可以使用替代参数赋值,替代参数会在node运行之前解析完成。目前支持的替代参数有:$(envENVIRONMENT_VARIABLE)

用当前环境变量来替代某个参数值。如果使用此替代参数,必须保证指定的环境变量存在,否则roslaunch会出错。此环境变量不能使用<env>标签重写。23©NXROBO2022替代参数$(optenvENVIRONMENT_VARIABLE)$(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论