ROS回顾学习(6): launch文件参数集锦及优化

1.在ros launch文件中添加gdb编译参数

	launch-prefix="xterm -e gdb -ex run --args "
	如:
		<node pkg="basic_visual_map" type="basic_visual_map" name="basic_visual_map" output="screen"
			launch-prefix="xterm -e gdb -ex run --args" />
	
	"重要参数":
	
	常用参数:
		--r  	代表run
		--q	 	退出调试
		--bt 	追踪错误起源
		--b		设置断点, 如b function name, 在某函数处设置断点
	
	非常用参数——"断点调试"
		--n		"next", 运行下一行代码
		--c		"continue", 继续运行直到下一个断点
		--f		"finish", 运行完当前程序
	
	"rosrun node node" gdb 调试
	rosrun --prefix 'gdb -ex run --args'  package_name  node_name

2.rosrun 运行参数添加到launch文件中运行

	N1: ros::init(argc, argv, "cloudMap");
		ros::NodeHandle nh("~");
		std::string file_name;
		nh.param<std::string>("file_name", file_name, "../cfg/camera.txt");
	
	放入launch文件中:
<launch>
    <node pkg="cloudMapSaved"  name="cloudMap_node"  type="cloudMap_node" output="screen" >
        <param name="file_name"  type="string" value="/home/ian/catkin_ws/src/map_optimized/cfg/camera.txt"/>  
    </node>
</launch>
	
	N2: argc=3  
		argv[0]="map_server"  
		argv[1]="-f"  
		argv[0]="test"  
	
	如: rosrun map_server map_saver map:=/<Map Topic> -f PATH_TO_YOUR_PACKAGE/mymap
	
	放入launch文件中:
<launch>
		<!--打开已经存在的地图-->
   <node pkg="map_server" name="map_server"  type="map_server"  
   								args="$(find DataSets)/map/willow-full-0.025.pgm" />   
    	<!--保存现创建的地图-->
  <node pkg="map_server" name="map_server"  type="map_saver"  args="-f $(find DataSets)/map/newmap" />
    	
   <node name="rosplay" pkg="rosbag" type="play"
   							 args="--clock --hz=10 $(find DataSets)/simple_driving_test_indexed.bag" />
</launch>

3. launch文件中常使用的参数模板

	<!--
	    集合launch各种各样的参数和元素,初始化一个launch文件模块,以后缺少或不熟悉某个参数可以直接从此文件中获取或者当做参考文件.
	    注意:该模板文件无法运行,参数和id都是随机选取,没有指定文件,需要按照自己的要求进行修改!,以下以rtabmap_ros包为参照。
								                                                      Author: Ian
								                                            星期四, 18. 七月 2019 08:59下午 
	-->
<launch>
	     <!--定义默认参数-->
	 <arg name="stereo"          default="false"/>
	 <arg name="frame_id"        default="camera_link" />

	     <!--添加gdb调试参数,当前默认参数是执行gdb调试 -->
	 <arg name="launch_prefix"      default="xterm -e gdb -ex run --args"/>

	     <!-- 一个参数依赖另一个参数 -->
	 <arg     if="$(arg stereo)" name="approx_sync"  default="false"/>  
	 <arg unless="$(arg stereo)" name="approx_sync"  default="true"/>   

	     <!--执行rosrun跑节点文件 type/name:为可执行文件的名称,也就是cmake编译得到的二进制文件 -->
	 <node pkg="rtabmap_ros" type="rgbd_odometry" name="rgbd_odometry" output="screen" 
	     										launch-prefix="$(arg launch_prefix)">

		<!--更改cpp文件中的相关参数, 若已定义默认参数,可直接使用$(arg frame_id)方式对参数进行引用 -->
	<param name="frame_id"   type="string"      value="$(arg frame_id)"/>

		<!--重新映射话题,将原来的话题数据映射到新的话题上,from为原始话题,to为新的话题-->
	<remap from="odom_topic"      to="/T265/odom/frame" />
	</node>

	<!--执行rosrun时,有时候会在后面添加参数文件,比如摄像头的配置文件(ORB_SLAM2就是这样的), 那么在launch文件如何添加参数 -->
	<node pkg="rtabmap_ros"  type="rgbd_odometry" name="rgbd_odometry"  output="screen" 
								args="$(find rtabmap_ros)/config/camera.yaml" />

</launch>

参考文献

[1]. rosrun+roslaunch+传递参数

Author: Ian
星期一, 22. 七月 2019 10:49下午
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱发呆de白菜头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值