ros中launch啟動文件的使用方法


launch文件:通過XML文件實現多節點的配置和啟動(可自動啟動ROS Master)

launch文件中包含很多標簽和屬性

*launch文件語法

<launch>
        <node pkg="turtlesim" name = "sim1" type="turtlesim_nade"/>
        <node pkg="turtlesim" name = "sim2" type="turtlesim_node"/>
</launch>

 <launch>  launch文件中的根元素采用<launch>標簽定義

        啟動節點

        <node pkg="package-name"type="executable-name"name="node-name"/>

                                   * pkg: 節點所在的功能包名稱

 <node>              * type:節點的可執行文件名稱

        * name: 節點運行時的名稱

        * output 、respawn、required 、ns 、args

 

參數設置

<paran>/

<rosparam>

設置ROS系統運行中的參數,存儲在參數服務器中

<param name="output_frame"value="odom"/>

*name:參數名

*value:參數值

加載參數文件中的多個參數

<rosparam file="params.yaml" command="load" ns=  "params"/>

<arg>
launch文件內部的局部變量,僅限於launch文件使用
<arg name="arg-name" default="arg-value"/>
* name: 參數名
* value: 參數值

調用如下
<param name="foo" value="$(arg arg-value"/>
<node name="node" pkg="package"type="type" args="$(arg arg-name)"/>

 

重映射

標簽<remap>
重映射RoS計算圖資源的命名
<remap from="/turtlebot/cmd_vel"to="/cmd_vel"/>
*from :原命名
* to : 映射之后的命名

嵌套

<include>
包含其他launch文件,類似C語言中的頭文件包含
<include file="$(dirname)/other.launch"/>
*file :包含的其他launch文件路徑

 

我習慣的在src目錄下創建對應的功能包,為了更好的管理代碼空間

$ cd ~/catkin_ws/src

$ catkin_create_pkg  learning_launch

下面介紹一些launch文件的應用例子

例1:simple.launch

 1 <launch>
 2     <node pkg="learning_topic" type="person_subscriber" name="talk   er" output="screen" />
 3     <node pkg="learning_topic" type="person_publisher" name="liste   ner" output="screen" /> 
 4 </launch>

 這個launch文件比較簡單,用一個根標簽包含兩個node標簽,啟動兩個node節點,啟動launch文件如下,觀察到兩個節點並行運行。而且不需要再去啟動roscore,已經自動啟動了。

 qqtsj  ~  roslaunch learning_launch simple.launch 
... logging to /home/qqtsj/.ros/log/a8e85210-44bd-11ea-aa0f-9822efa1466f/roslaunch-qqtsj-Nitro-AN515-51-21388.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://qqtsj-Nitro-AN515-51:35961/

SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.3

NODES
  /
    listener (learning_topic/person_publisher)
    talker (learning_topic/person_subscriber)

auto-starting new master
process[master]: started with pid [21398]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to a8e85210-44bd-11ea-aa0f-9822efa1466f
process[rosout-1]: started with pid [21409]
started core service [/rosout]
process[talker-2]: started with pid [21412]
process[listener-3]: started with pid [21414]
[ INFO] [1580539196.883750317]: Publish Person Info: name:Tom  age:18  sex:1
[ INFO] [1580539197.883984881]: Publish Person Info: name:Tom  age:18  sex:1
[ INFO] [1580539197.884465911]: Subcribe Person Info: name:Tom  age:18  sex:1
[ INFO] [1580539198.883864113]: Publish Person Info: name:Tom  age:18  sex:1
[ INFO] [1580539198.884350887]: Subcribe Person Info: name:Tom  age:18  sex:1

 

 例2: turtlesim_parameter_config.launch

 1 <launch>                                                          
 2 
 3     <param name="/turtle_number"   value="2"/>
 4 
 5     <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_no   de">
 6         <param name="turtle_name1"   value="Tom"/>
 7         <param name="turtle_name2"   value="Jerry"/>
 8 
 9         <rosparam file="$(find learning_launch)/config/param.yaml"    command="load"/>
10     </node>
11 
12     <node pkg="turtlesim" type="turtle_teleop_key" name="turtle_te   leop_key" output="screen"/>
13 
14 </launch>
15 
16 

 這個launch文件用於參數設置

 qqtsj  ~  roslaunch learning_launch turtlesim_parameter_config.launch 
... logging to /home/qqtsj/.ros/log/fffc0146-44c2-11ea-aa0f-9822efa1466f/roslaunch-qqtsj-Nitro-AN515-51-23633.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://qqtsj-Nitro-AN515-51:36955/

SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.3
 * /turtle_number: 2
 * /turtlesim_node/A: 123
 * /turtlesim_node/B: hello
 * /turtlesim_node/group/C: 456
 * /turtlesim_node/group/D: hello
 * /turtlesim_node/turtle_name1: Tom                                 
 * /turtlesim_node/turtle_name2: Jerry                               
                                                                     
NODES                                                                
  /                                                                  
    turtle_teleop_key (turtlesim/turtle_teleop_key)                  
    turtlesim_node (turtlesim/turtlesim_node)                        

auto-starting new master
process[master]: started with pid [23643]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to fffc0146-44c2-11ea-aa0f-9822efa1466f
process[rosout-1]: started with pid [23654]
started core service [/rosout]
process[turtlesim_node-2]: started with pid [23661]
process[turtle_teleop_key-3]: started with pid [23662]
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
 qqtsj  ~  rosparam list 
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_qqtsj_nitro_an515_51__36955
/rosversion
/run_id
/turtle_number
/turtlesim_node/A
/turtlesim_node/B
/turtlesim_node/group/C
/turtlesim_node/group/D
/turtlesim_node/turtle_name1
/turtlesim_node/turtle_name2

 

例3:start_tf_demo_c++.launch

 

 1  <launch>                                                         
 2 
 3     <!-- Turtlesim Node-->
 4     <node pkg="turtlesim" type="turtlesim_node" name="sim"/>
 5     <node pkg="turtlesim" type="turtle_teleop_key" name="teleop" o   utput="screen"/>
 6 
 7     <node pkg="learning_tf" type="turtle_tf_broadcaster" args="/tu   rtle1" name="turtle1_tf_broadcaster" />
 8     <node pkg="learning_tf" type="turtle_tf_broadcaster" args="/tu   rtle2" name="turtle2_tf_broadcaster" />
 9 
10     <node pkg="learning_tf" type="turtle_tf_listener" name="listen   er" />
11 
12   </launch>

 這個launch文件是上講說的小海龜跟隨實例,這里不需要開啟5個終端,只需要運行對應的launch文件就可以了

 qqtsj  ~  roslaunch learning_launch start_tf_demo_c++.launch 
... logging to /home/qqtsj/.ros/log/bb367d92-44cd-11ea-aa0f-9822efa1466f/roslaunch-qqtsj-Nitro-AN515-51-25949.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://qqtsj-Nitro-AN515-51:39467/

SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.3

NODES
  /
    listener (learning_tf/turtle_tf_listener)
    sim (turtlesim/turtlesim_node)
    teleop (turtlesim/turtle_teleop_key)
    turtle1_tf_broadcaster (learning_tf/turtle_tf_broadcaster)
    turtle2_tf_broadcaster (learning_tf/turtle_tf_broadcaster)

auto-starting new master
process[master]: started with pid [25959]
ROS_MASTER_URI=http://localhost:11311

setting /run_id to bb367d92-44cd-11ea-aa0f-9822efa1466f
process[rosout-1]: started with pid [25970]
started core service [/rosout]
process[sim-2]: started with pid [25973]
process[teleop-3]: started with pid [25977]
process[turtle1_tf_broadcaster-4]: started with pid [25979]
Reading from keyboard
---------------------------
Use arrow keys to move the turtle.
process[turtle2_tf_broadcaster-5]: started with pid [25981]
process[listener-6]: started with pid [25987]

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM