launch 文件中的标签解析:
ROS 中,通常参数 param 是指存储在参数服务器中的参数,在编写 launch 文件中,参数往往是不可避免的并且通常使用 <param> 和 <rosparam> 等标签来定义参数,这里简单介绍这些标签的使用及区别:
<param> 标签可以从文件中读取参数,也可以直接定义参数
<rosparam> 标签用于从 yaml 文件中读取并设置参数
这两个标签定义参数后回存在参数服务器中,在 launch 文件被执行时会调用 rosparam 功能包设置参数
此外还有 <arg> 标签可以设置参数,不同的是,<arg> 标签设置的参数作用域仅限与 launch 文件内部使用
Talk Is Cheap, Show Me The Code !!!
<launch>
<!-- 使用 param 直接定义参数 -->
<param name="/use_sim_time" value="false" />
<!-- arg 定义参数,仅在本文件中使用 -->
<arg name="sim" default="true" />
<!-- param 通过加载文件形式,定义参数 -->
<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find marm_description)/urdf/arm.xacro'" />
<node name="arbotix" pkg="arbotix_python" type="arbotix_driver" output="screen">
<!-- rosparam 加载 yaml 文件 定义参数 -->
<rosparam file="$(find marm_description)/config/arm.yaml" command="load" />
<!-- param 直接定义参数>
<param name="sim" value="true"/>
</node>
<node name="gripper_controller" pkg="arbotix_controllers" type="gripper_controller">
<rosparam>
model: singlesided
invert: false
center: 0.0
pad_width: 0.004
finger_length: 0.08
min_opening: 0.0
max_opening: 0.06
joint: finger_joint1
</rosparam>
</node>
<node pkg="robot_state_publisher" type="robot_state_publisher" name="rob_st_pub" />
<include file="$(find marm_moveit_config)/launch/move_group.launch" />
<!-- 启动rviz可视化界面 -->
<node name="rviz" pkg="rviz" type="rviz" args="-d $(find marm_planning)/config/pick_and_place.rviz" required="true" />
</launch>
参数查询:
运行 launch 文件时遇到的问题及警告:
该警告是 ROS 功能包更新出现的,解决方法:
1、安装 joint_state_publisher_gui
sudo apt-get install ros-kinetic-joint-state-publisher-gui
2、修改 launch 文件,将 joint_state_publisher 换成 joint_state_pulisher_gui 即可