当前位置: 首页 > news >正文

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下午

相关文章:

  • 论文算法学习记录(4):视锥体-- Frustum Culling
  • RobotSlamApplication(1):第一个三方库--Eigen3库的使用
  • 论文算法学习实现(5):动态障碍物的检测和剔除2
  • ubuntu学习技巧2:Terminal命令学习
  • RobotSlamApplication(2): 视觉SLAM中常用的一些第三方库简介
  • C++11回顾学习(1): 语法简要回顾和通俗解释
  • 菜鸟专学:从头到尾创建自己的SLAM系统
  • 菜鸟专学:Eigen--Sophus--CV--三种不同库对矩阵的操作方式
  • ROS回顾学习(7):ubuntu下设置(ROS)程序开机自启动
  • RTAB-Map学习和测试详解
  • ROS回顾学习(8): 项目研究中遇到问题和难点记录
  • 菜鸟专学:明确自己编程习惯的变量命名法
  • OpenCV第一讲: 常规函数和类的使用 -- HighGui Core模块
  • kinect V2 驱动安装说明
  • C++11回顾学习(2): 一些常用的函数和小技巧
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • Android优雅地处理按钮重复点击
  • idea + plantuml 画流程图
  • JavaScript标准库系列——Math对象和Date对象(二)
  • JavaScript函数式编程(一)
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • miaov-React 最佳入门
  • PAT A1120
  • Python 反序列化安全问题(二)
  • SpiderData 2019年2月16日 DApp数据排行榜
  • WePY 在小程序性能调优上做出的探究
  • Zepto.js源码学习之二
  • 编写符合Python风格的对象
  • 从PHP迁移至Golang - 基础篇
  • 大主子表关联的性能优化方法
  • 分享一份非常强势的Android面试题
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 基于axios的vue插件,让http请求更简单
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 前言-如何学习区块链
  • 什么是Javascript函数节流?
  • 译自由幺半群
  • 原生Ajax
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 《天龙八部3D》Unity技术方案揭秘
  • Hibernate主键生成策略及选择
  • Java数据解析之JSON
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • #大学#套接字
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (27)4.8 习题课
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (MATLAB)第五章-矩阵运算
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (分布式缓存)Redis分片集群
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (十二)springboot实战——SSE服务推送事件案例实现