实现launch中的find位置

很多launch文件中,都会去调用某个文件作为package的参数。

比如rviz:

    <node launch-prefix="nice" pkg="rviz" type="rviz" name="rviz" args="-d $(find covgrid_slam_ros)/rviz_cfg/covgrid_mapping.rviz" />

其中,$(find covgrid_slam_ros) 用来定位到一个package,增强了项目的可移植性。

那么如何在自己的项目中实现find呢?

其实,find能够在项目中自动寻找后面指定名字的包的路径,因此必不可少的两个要素:CMakeLists.txt和package.xml

1. CMakeLists.txt

CMakeLists.txt中加入项目名称即可

cmake_minimum_required(VERSION 2.8.3)
project(calib_file)

2. package.xml

package.xml中指定name等。要注意其中有一些参数是不可缺少的。比如maintainer等。所以最好把下面所有参数都写上,随便写一些就可以。

<package>
  <name>calib_file</name>
  <version>1.0.0</version>
  <description>for calibration file</description>
  <maintainer email="mjy121225@163.com">MJY</maintainer> 
  <url type="website">http://wiki.ros.org/Robots/Pioneer</url>
  <author email="mjy9dfsf8065@163.com">MJY</author>
  <author>Adept MobileRobots</author>
  <license>BSD</license>
  <run_depend>roslaunch</run_depend>
</package>

这样就可以在launch文件中愉快的使用find找到目标位置了。

如:

        <param name="camera_info_url" type="string" value="file://$(find calib_file)/camera_calibration.yaml" />
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现机器人的自动驾驶模式操作,需要使用ROS的导航功能包。具体而言,需要使用move_base、costmap_2d、global_planner、local_planner等功能包。 首先,在launch文件需要启动以下节点: 1. map_server节点,用于加载地图; 2. amcl节点,用于定位机器人在地图位置; 3. move_base节点,用于规划和执行机器人的运动; 4. rviz节点,用于可视化机器人的运动。 以下是一个简单的示例launch文件,其包括了上述节点的启动以及一些参数的设置: ```xml <launch> <!-- Load the map --> <arg name="map_file" default="$(find my_robot)/maps/my_map.yaml"/> <node name="map_server" pkg="map_server" type="map_server" args="$(arg map_file)"> <param name="frame_id" value="map"/> </node> <!-- Start AMCL --> <node name="amcl" pkg="amcl" type="amcl" output="screen"> <param name="use_map_topic" value="true"/> <param name="initial_pose_x" value="0"/> <param name="initial_pose_y" value="0"/> <param name="initial_pose_a" value="0"/> <param name="odom_model_type" value="diff-corrected"/> <param name="odom_alpha5" value="0.1"/> <param name="update_min_d" value="0.2"/> <param name="update_min_a" value="0.5"/> <param name="min_particles" value="500"/> <param name="max_particles" value="5000"/> <param name="kld_err" value="0.05"/> <param name="kld_z" value="0.99"/> <param name="odom" value="odom"/> <remap from="scan" to="/scan"/> </node> <!-- Start move_base --> <node name="move_base" pkg="move_base" type="move_base" respawn="false" output="screen"> <rosparam file="$(find my_robot)/config/costmap_common_params.yaml" command="load" ns="global_costmap"/> <rosparam file="$(find my_robot)/config/costmap_common_params.yaml" command="load" ns="local_costmap"/> <rosparam file="$(find my_robot)/config/local_costmap_params.yaml" command="load" /> <rosparam file="$(find my_robot)/config/global_costmap_params.yaml" command="load" /> <rosparam file="$(find my_robot)/config/base_local_planner_params.yaml" command="load" /> <rosparam file="$(find my_robot)/config/move_base_params.yaml" command="load" /> </node> <!-- Start RViz --> <node name="rviz" pkg="rviz" type="rviz" args="-d $(find my_robot)/rviz/my_robot.rviz"/> </launch> ``` 在以上这个示例,启动了map_server、amcl、move_base和rviz节点,并设置了各种参数。具体的参数设置可以根据实际情况进行调整。 要将以上内容放到下面,可以直接复制粘贴到一个名为“my_robot_autonomous.launch”的launch文件,并将其的参数和路径修改为实际的情况。然后在终端执行以下命令启动launch文件: ``` roslaunch my_robot my_robot_autonomous.launch ``` 这将启动机器人的自动驾驶模式操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值