launch文件:通过xml文件实现多个结点的启动与配置.包含标签与属性等...,launch文件自动启动roscore;
1launch文件语法
1.1<launch>根标签
<launch>
<node pkg="包名"type="可执行文件名字"name="自己起得名字(相当于充映射命名)"/>
</launch>
属性:output\respawn\required\ns\args
1.2<param>存储在参数服务器,相当于全局变量
<param name="********" value="***"/>#一个参数
<rosparam file="*****" command="load" ns="*****/">#加载参数文件
1.3<arg>仅限于在launch文件内使用,相当于局部变量
<arg name="arg-name" default="arg-value" />
#调用这个局部变量
<param name="foo" value="$(arg arg-name)" />
<node pkg="包名"type="可执行文件名字"name="自己起得名字(相当于充映射命名)" args="$(arg arg-name)" />
1.3<remap>重映射计算图资源的命名
<remap from="gtt" to "gt" />#注意这个地方重命名之后就不存在gtt这个名字了
1.4<include>包含其他launch文件,类似于头文件?这个地方有些疑问,在c语言中,调用头文件可以选择性的调用某个函数,在ros系统中调用launch文件是什么情况?
<include file="$(dirname)/other.launch" />
1.5命名空间与launch启动
roslaunch *** ***
<launch>
<param name="/turtle_number" value="2"/>
<node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node">
<param name="turtle_name1" value="Tom"/>
<param name="turtle_name2" value="Jerry"/>
<rosparam file="$(find learning_launch)/config/param.yaml" command="load"/>
</node>
<node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key" output="screen"/>
</launch>
1.5.1这个地方设计到命名空间的问题,其中/是全局变量 直接命名是相对变量 ~是私有变量
1.5.2注意yaml文件也可以设计命名空间问题
eg
controllers: {
base_controller: {
type: diff_controller,
base_frame_id: base_footprint,
base_width: 0.26,
ticks_meter: 4100,
Kp: 12,
Kd: 12,
Ki: 0,
Ko: 50,
accel_limit: 1.0
}
}
1.5.3以上执行的效果图