这可能是非常基本的东西,但到目前为止我还没能在其他任何地方得到答案。我想使用roslaunch连续运行map_server和rviz以便可视化地图。以下是我的启动文件的样子 -
<launch>
<node name="mapServer" pkg="map_server" type="map_server"
args="/home/<user_name>/catkin_ws/src/mapwork/img/map.yaml"/>
<node name="visualizer" pkg="rviz" type="rviz"/>
</launch>
它有效,但我不想硬编码.yaml文件位置,我更喜欢一种方式,我可以使用yaml的相对位置和启动文件。有关如何做到这一点的任何想法?
(启动文件的位置是 - / home//catkin_ws/src/mapwork/launch/map.launch)
答案 0 :(得分:1)
从您的启动文件中我假设mapwork
是一个包。如果是这种情况,您可以使用find
包命令,如下所示:
<launch>
<node name="mapServer" pkg="map_server" type="map_server"
args="$(find mapwork)/img/map.yaml"/>
<node name="visualizer" pkg="rviz" type="rviz"/>
</launch>
$(find mapwork)
部分将在source setup.bash
中运行/home/<user_name>/catkin_ws
后返回包的路径。
此find命令类似于ros python调用rospack find mapwork
。