ROS launch文件
ROS launch文件
- 1.arg标签
- 2.group标签
- 3.param标签
- 4.ns标签
<!--指明了一个 xml 的版本><?xml version="1.0"?><launch><!-- support multi robot --><arg name="robot_name" default=""/> <!-- support multi robot --><!-- robot frame --><arg name="base_frame" default="base_footprint" /> <arg name="odom_frame" default="odom" /><arg name="imu_frame" default="imu" /> <!-- pub topic --><arg name="odom_topic" default="odom" /><!-- do NOT use '/' in topic name--><arg name="imu_topic" default="imu" /><arg name="battery_topic" default="battery" /><!-- sub topic --><arg name="cmd_vel_topic" default="cmd_vel" /> <!-- do NOT use '/' in topic name--><arg name="ackermann_cmd_topic" default="ackermann_cmd" /><!-- config param --><arg name="pub_imu" default="False" /><arg name="sub_ackermann" default="False" /><arg name="pub_sonar" default="False" /><!-- base control node --><!--ros namespace name can NOT be empty,so need evaluate use multi robot or not--><group if="$(eval robot_name == '')"><node name="base_control" pkg="base_control" type="base_control.py" output="screen"><param name="baudrate" value="115200"/> <param name="port" value='/dev/move_base'/><param name="base_id" value="$(arg base_frame)"/> <!-- base_link name --><param name="odom_id" value="$(arg odom_frame)"/> <!-- odom link name --><param name="imu_id" value="$(arg imu_frame)"/> <!-- imu link name --><param name="sub_ackermann" value="$(arg sub_ackermann)"/> <!-- sub ackermann topic or not --></node></group>--><group unless="$(eval robot_name == '')"><group ns="$(arg robot_name)"><node name="base_control" pkg="base_control" type="base_control.py" output="screen"><param name="baudrate" value="115200"/> <param name="port" value='/dev/move_base'/><param name="base_id" value="$(arg robot_name)/$(arg base_frame)"/> <!-- base_link name --><param name="odom_id" value="$(arg robot_name)/$(arg odom_frame)"/> <!-- odom link name --><param name="imu_id" value="$(arg robot_name)/$(arg imu_frame)"/> <!-- imu link name --><param name="sub_ackermann" value="$(arg sub_ackermann)"/> <!-- sub ackermann topic or not --></node></group></group></launch>
1.arg标签
这里面arg标签用来在 launch 文件中声明参数。
default的内容则是对参数赋值。如无参数传入则使用 launch 文件中定义的值。
也可在启动launch文件时传入参数的值。
传入 pub_imu 的值为 true
roslaunch base_control base_control.launch pub_imu:=ture
2.group标签
group标签会将group里的内容划分成一个组。
里面用到了一个if unless语句,如下。意思是如果robot_name为空,执行第一个group的内容;否则执行第二个。
<group if="$(eval robot_name == '')"><group unless="$(eval robot_name == '')">
下面这个代码:节点的名称name、该节点所在的包名pkg,节点的可执行文件type、输出方式output,“screen”表示输出在当前终端屏幕。
<node name="base_control" pkg="base_control" type="base_control.py" output="screen">
3.param标签
下面这个代码:param标签也是用来声明参数。
param声明的变量是节点所接收的,用来设置传入节点的参数,arg的参数是launch文件所接收的。
参数的值是通过value直接传入的。
可以传入固定值,如下。
<param name="baudrate" value="115200"/>
可以传入参数,如下。下面这个value值是arg标签声明的参数base_frame
<param name="base_id" value="$(arg base_frame)"/> <!-- base_link name -->
<param name="odom_id" value="$(arg odom_frame)"/> <!-- odom link name -->
4.ns标签
第二个group里面还有group标签,对应ns。
<group unless="$(eval robot_name == '')"><group ns="$(arg robot_name)">
以imu_id话题为例,传入robot_name为abc,查看话题列表显示的就是abc/imu_id,这样可防止话题名重名。
下面是之前写的一个例子https://blog.csdn.net/qq_40828914/article/details/120977892
<group ns="turtlesim1"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group><group ns="turtlesim2"><node pkg="turtlesim" name="sim" type="turtlesim_node"/></group>
此处我们创建了两个分组,并以命名空间(namespace)标签来区分,其中一个名为turtulesim1
,另一个名为turtlesim2
,两个分组中都有相同的名为sim
的turtlesim节点。这样可以让我们同时启动两个turtlesim模拟器,而不会产生命名冲突。
ROS launch文件相关推荐
- ROS学习(七):ROS launch 文件
ROS launch 文件: 为了方便.高效地操作多个节点,可以编写 .launch 文件,然后用 roslaunch 命令运行. launch文件的格式是: <launch> ... & ...
- ROS - launch文件
launch文件是个XML格式的文件,而XML格式文件是由各种标签标识组成的. <launch><node pkg="prometheus_demo" type= ...
- ros launch文件编写和节点启动顺序控制
ROS可以通过launch文件进行节点的管理.初始参数的设置,但是launch文件不能指定节点的启动顺序,因此本文简单介绍下通过launch进行节点启动管理,通过shell来控制节点启动顺序. 1,我 ...
- ROS中launch文件使用笔记
1. 常用标签 <launch> <!--根标签--> <node> <!--需要启动的node及其参数--> <include> < ...
- linux开机启动roscore,树莓派ubuntuMate系统中开机自启动ROS的launch文件
0x00 为何需要开机自启动launch文件 在ROS开发后期阶段由于功能已经趋于稳定,因此就需要系统在一上电启动后就自动把ROS下的各节点程序加载运行,这样就省去了我们还得手动输入roslaunch ...
- ROS笔记(9) launch文件
ROS笔记(9) launch文件 1. 简介 2. launch 3. node 4. param 5. rosparam 6. arg 7. remap 8. include 9. 简单的 lau ...
- Ros学习——launch文件解析
launch文件的重点是:节点(node)元素的集合. roslaunch 则是让所有的节点共享同一个终端. 1.标签(元素)说明 1. group标签 2. node标签 <group ns= ...
- ROS:launch文件的语法规范
在ROS应用中,一般涉及多个节点,而每个节点又有很多参数需要设置.为了方便.高效地操作多个节点,可以编写 .launch 文件,然后用roslaunch命令运行. 注意:存储启动文件的目录不一定必须命 ...
- ROS | launch启动文件的使用
ROS | launch启动文件的使用 1. launch文件功能 2. launch文件语法 2.1 <launch>标签 2.2 <node>标签 2.3 <para ...
最新文章
- Python画出心目中的自己
- 走到尽头的技术-MVC
- 删除python类中所有未使用的方法?
- 用python进行股票数据分析_利用python进行股票数据分析
- J2EE 领域的一些技术框架结构图
- 2019Q1中高端人才报告:薪资TOP10,平均年薪超23万元
- 云鲸扫拖一体机器人说明书_云鲸小白鲸扫拖一体机器人好用吗?真实的测评带你走进智能化家居时代...
- 作为技术人员,年会中尽量找熟人喝酒
- 海康IP摄像头rtsp解码(ubuntu上使用)
- python制作录屏软件_自制录屏软件,不到30行代码(仅供学习研究)
- 从《学书津梁》看五体创作思路(篆书)
- jquery.nicescroll参数说明
- Hive考试练习题前75分答案
- 【报告分享】2021中国消费者洞察-埃森哲(附下载)
- 升级Mac内置的vim
- C语言数据的输入输出
- 计算机视觉算法岗 面试经验 (转载)
- Matlab中的while循环
- symbian 模拟器 相关
- 树洞外链更新至2.2-支持本地/远程储存,新增用户系统
热门文章
- Linux新安装后设置root密码
- 如何用c语言从txt文件中读取数据
- 转学到斯坦福大学计算机专业,斯坦福大学转学申请条件有哪些?
- 数字图像处理基础与应用 第四章
- log4j:WARN No appenders could be found for logger (org.apache.ibatis.logging.LogFactory). log4j:WARN
- 解释器android,Android的设计模式-解释器模式
- 前端处理带t的时间_适合家用的跑步机?阿迪达斯轻爵T-19i跑步机测评|adidas|商用机...
- usb连接不上 艾德克斯电源_艾德克斯HT3150联机和IT6720校准联机记
- python打开浏览器并最大化_我需要Selenium以更大的分辨率打开它的Web浏览器(最好是最大化)...
- 忘记mysql数据库名称_忘记MySQL数据库密码的解决办法