ROS运行管理

参考:
bilibili@Autolabor官方

ROS运行管理

主要问题:

  • 关联多个不同的功能包(package)
  • 相关的ROS节点如何同时启动
  • 功能包、节点、话题、参数等重名
  • 不同主机上的节点如何进行通信

ROS元功能包(metapackage)

将多个功能包可以打包成一个元功能包

概念及作用

​ metapackage在ROS中是一个虚包,没有实质性的内容,但是依赖了其他的功能包,通过这种方式将其他的包组合起来

​ 作用:只需要一个matapackage包就可以把其他相关包一同安装完成

实现(package.xml)

1、新建package.xml

2、添加可执行依赖

<!--声明元功能包依赖于哪些包-->
<exec_depend>pacakage_1</exec_depend>
<exec_depend>pacakage_2</exec_depend>
<exec_depend>pacakage_3</exec_depend>

<!---->
<export>
    <!--不需要实现-->
	<metapackage />
</export>

3、修改CMakeList.txt

!!! 不要有空行,四行连到一起,删掉注释

cmake_minimum_required(VERSION 3.0.2)
project(元功能包的包名)
fing_package(catkin REQUIRED)
catkin_metapackage()

ROS节点运行管理(launch文件)

​ launch文件是xml格式的文件,主要用于同时启动多个节点,以及在参数服务器中设置参数,简化节点的配置与启动,提高ROS程序的启动效率

​ 注:roslaunch命令无法保证按顺序启动节点(多进程启动)

实现

<!--在控制台输出log:warning:此文件已过时,不建议使用-->
<launch deprecated="此文件已过时,不建议使用"> 
    <!--对节点进行分组,让节点归属与某个命名空间-->
    	<group ns="" clear_params="true|false (optional) 慎用!"/>
	<!--启动的节点-->
        <node pkg="功能包名" type="可执行文件名" name="节点名" output="screen | log(default)" />
        <!--args标签的作用与 rosrun pacakege_name node_name argv1 argv2相同-->
        <node pkg="功能包名" type="可执行文件名" name="节点名" args="argv1 argv2"/>

    <!--将另一个xml格式的launch文件导入到当前文件-->
        <!--使用场景:需要重复启动其他launch文件-->
        <include file="$(find 包名)/path/to/launch/.launch"/>

        <node pkg="功能包名" type="可执行文件名" name="节点名" output="screen">
            <!--将一个功能包中的话题修改为另一个话题-->
            <remap from="原话题" to="要修改成为的话题"/>
        </node>
    
    <!--在参数服务器上设置参数-->
        <!--1、在node标签前设置参数,参数为:/参数名-->
        <param name="命名空间/参数名" value="" type="str|int|double|bool|yaml"/>
        <node pkg="功能包名" type="可执行文件名" name="节点名" output="screen"/>

        <!--2、单独设置,在node标签内部-->
        <node pkg="功能包名" type="可执行文件名" name="节点名" output="screen">
        <!--参数为:/节点名/参数名-->
        <param name="" type="" value=""/>
        </node>
    <!--从yaml文件中导入或导出参数,使用与param类似,可以在node前,或node中-->
    	<rosparam command="load(default)|dump|delete" file="$(find 包名)/path /to/yaml/.yaml"/>
    <!--动态参数传递-->
    	<arg name="参数名" default="默认值" value="设定值(与default不共存)" doc="参数描述"/>
    	<arg name="car_length" default="0.5" />
    	<param name="A" value="${arg car_length}"/>
		<param name="B" value="${arg car_length}"/>
    	<param name="C" value="${arg car_length}"/>
    	<!--动态参数传递: roslaunch 包名 .launch car_length:=设定值 -->
</launch>

调用

roslaunch 功能包名 文件名.launch

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Smile Hun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值