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

ROS开发之如何制作launch启动文件?

文章目录

  • 0、引言
  • 1、Launch文件语法
  • 2、Launch示例

0、引言

  笔者因研究课题涉及ROS开发,学习了古月居出品的ROS入门21讲,为巩固launch的知识,本文将ROS的launch启动文件制作一讲内容进行总结。launch文件通过XML文件实现多节点的配置和启动,可自动启动ROS Master,即自动运行roscore命令。

1、Launch文件语法

  在这里插入图片描述
  
  1<launch>节点;

launch文件中的根元素采用<launch>;标签定义。

  
  2<node> 节点;

启动节点
<node pkg="package-name" type="executable-name" name="node-name" />;
pkg: 节点所在的功能包名称
type: 节点的可执行文件名称
name: 节点运行时的名称
**可选属性↓**
output: 指定输出方式,要在终端显示日志信息可用out="screen"
respawn: 当节点异常停止时,是否重启
required: 指定节点是否一定要启动
na: 命名空间
args: launch文件中的参数

  
  3<param>节点;

设置ROS系统运行中的参数,存储在参数服务器中
<param name="output_frame" value="odom"/>;
name: 参数名
value: 参数值

  
  4<arg>节点;

launch文件内部的局部变量,仅限于launch文件使用
<arg name="arg-name" default="arg-value"/>;
name: 参数名
value: 参数值
调用
<param name="foo" value="$(arg arg-name)"/>;
<node name="node" pkg="package" type="type" args="$(arg arg-name)"/>;

  
  5<remap>节点;

重映射ROS计算图资源的命名
<remap from="/turtlebot/cmd_vel" to="/cmd_vel"/>;
from: 原命名
to: 映射之后的命名

  
  更多标签可参见: http://wiki.ros.org/roslaunch/XML

2、Launch示例

  ①创建功能包;

cd ~/catkin_ws/src
catkin_create_pkg learning_launch roscpp rospy tf turtlesim

  在这里插入图片描述
  
  ②发布者和订阅者代码见:ROS开发之如何使用发布者、订阅者和话题消息?;
  ③创建launch文件;
  在新建的功能包下创建launch文件夹,并在该文件夹中打开新终端,并键入:gedit simple.launch,输入以下代码并保存。

<launch>;
<node pkg="learning_topic" type="person_subscriber" name="talker" output="screen" />;
<node pkg="learning_topic" type="person_publisher" name="listener" output="screen" />;
</launch>;

  在这里插入图片描述
  
  ④编译并运行。

cd ~/catkin_ws
catkin_make
或
catkin_make_isolated
source devel/setup.bash
或
source devel_isolated/setup.bash
roslaunch learning_launch simple.launch

  在这里插入图片描述
  
参考资料:
[1] 古月居GYH. 【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程; 2019-07-16 [accessed 2023-04-11].
[2] ros官网. roslaunch/XML; [accessed 2023-04-11].
[3] cacrle. ROS开发之如何使用发布者、订阅者和话题消息?; 2023-04-09 [accessed 2023-04-11].


http://www.kler.cn/news/10100.html

相关文章:

  • windows服务器自带IIS搭建网站并发布公网访问【内网穿透】
  • 怎么恢复永久删除的文件
  • vscode中的配置
  • ARM与C语言的混合编程【嵌入式系统】
  • STC89C52定时器的简介
  • Shader 海面/水面
  • 一次弄懂gzip模块启用和配置指令
  • TypeScript类成员的存取器
  • 《八次危机》速读笔记
  • 【ROS2指南-1】配置ROS2环境
  • 机器学习实战:Python基于K近邻KNN进行分类预测(四)
  • 【举一反三】只出现一次的数字
  • Pandas 秘籍:1~5
  • Nodejs中的fs模块
  • 前脚我的 GPT4 被封,后脚收到了文心一言的邀请账号
  • Java阶段一Day20
  • Linux网络虚拟化2
  • SpringBoot使用Freemarker导出word模板(OpenXML)
  • Spring boot+Vue3博客平台:文章搜索与推荐和文章阅读统计模块
  • HTML - 实现IE浏览器访问网址自动跳转至谷歌浏览器打开
  • 电脑重装了系统开不了机怎么办?
  • 嵌入式入门基础知识有哪些?
  • pytorch张量及其使用——初学者入门必看
  • kruskal重构树
  • 商品列表API接入文档和参数说明
  • Python if 语句、Python3 os.rmdir() 方法
  • angular/react/vue/un-app
  • 全国青少年信息素养大赛2023年python·选做题模拟三卷
  • Android NDK 开发Demo
  • mysql数据库审计(1)