• Ros Launch启动管理


    前言、

          ROS通常具有很多的节点,部分节点需要带参启动,部分节点还分布在其他设备上。

          这都需要一个统一的管理策略,ROS通过roslaunch管理分布式节点。放置在launch文件夹中

    launch文件本质是一个以launch为后缀的XML文件,位于launch目录下。

    对于本地进程,ROS通过popen创建管道启动进程,利用POSIX信号来杀死进程,

        对于远程节点, ROS基于SSH来实现远程通信,这导致roslaunch无法保证启动顺序。

    若需要   设置启动顺序时,可通过bash脚本进行顺序启动。

    当没有ROS Master启动时,launch在启动时会自动检测并启动ROS Master节点。

    launch的标签 根标签为launch。

     launch文件 TF坐标变换 QT工具箱 Rviz可视化平台 Gazebo物理仿真环境

    launch文件

    通过xml文件实现多节点的配置和启动(可以自动启动ros master)

    打开很多节点,发布很多数据

    子标签包括node、machine、include、param、rosparam、group、test、arg等。

    子标签下有属性和子标签。

    1. "listener" pkg="example_1" type="listener" output="screen">
    2. "chatter" to="hello"/>
    3. # node name : 节点名字
    4. # pkg : 节点所在的包
    5. # type : 节点类型
    6. # output : 日志输出到屏幕
    7. # remap : 消息输出转移
    1. "xxxxxx" name="xxxxx" type="xxxxx_node">
    2. "xxxxxx" name="xxxxx" type="xxxxx_node">
    3. #pkg :所在功能包的名字
    4. #type :节点的可执行文件名称
    5. #name :节点运行时的名称
    6. #output 输出
    7. #rsspawn 节点失效重新启动
    8. #required 请求的是什么没有不能执行
    9. #ns name space
    10. #args 指节点其中的所有参数
    11. param 可以设置内部参数名测试参数,存储在参数服务器中,相当于全局变量
    12. "output_frame "value="odom"/>
    13. name 参数名
    14. value 参数值
    15. 好的现在我有很多的全局变量 设置起来极其麻烦
    16. params.yaml 中设置所有的参数,并通过命令将所有的参数都加载进当前的params
    17. "params.yaml" command="load" ns="params"/>
    18. 使用rosparam file
    19. launch 内部文件中的局部变量 相当于局部变量只针对launch其中的变量
    20. 重映射ROS计算图资源的命名 改变接口变成自己的接口
    21. from 原命名
    22. to 映射之后的命名
    23. 包含其他launch文件,类似C 语言包含的头文件
    24. file : 包含的其他launch文件的路径

    node必选标签:

    在node标签中,存在多个可用属性,其中name表示节点的名称,name为必选属性;

    pkg表示包名称,pkg为必选属性;

    type表示节点类型,需与节点生成的可执行文件名同名,

    type为必选属性。

    node可选标签:

    respawn表示是否复位,当节点因为某种原因终止运行时,

    若respawn设为true,则roslaunch会重启该节点,

    respawn默认为false。 output表示日志输出的位置,

    若设为log,则输出到日志文件中,若设为screen,则输出到终端上,默认为log。

    clear_params表示是否在启动前删除节点私有名字空间中的所有参数,

    若设为true则删除。launch-prefix表示启动前缀,用于启动gdb、valgrind、xterm、nice等工具。

    "client" pkg="example_3" type="client" output="screen" launch-prefix="valgrind"/>

    rosparam子标签

    rosparam支持load、dump、delete三种参数操作。

    load操作表示加载一个YAML文件,并将其中的参 数存入ROS参数服务器中;

    dump操作表示将ROS参数服务器中的参数存入 YAML文件中;

     delete操作表示删除参数。 file表示YAML文件名;param表示参数名;ns表示 名字空间,为可选属性;subst_value表示是否运行 在YAML文件中使用替代参数,为可选属性。