ROS入门学习三——launch文件_ros launch文件-程序员宅基地

技术标签: 学习  机器人  

launch作用:便于一次启动多个节点,可启动本地节点和远程节点及修改添加参数服务器参数。

<launch>            //<launch>是所有launch文件的根标签
            
    <node>          //node为子集标签
        
    </node>
</launch>

launch文件的建立

在功能包下,新建launch文件夹 ,在launch文件夹下添加后缀为launch的文件。

 launch文件的启动 

roslaunch 功能包名  launch文件名

一、 launch文件之node标签

<launch>
    <!-- pkg = "包名" -->
    <!-- type = "节点名称,可执行文件名称" -->
    <!-- name = "为节点其别名" -->
    <!-- output = "输出类似 log/screen" -->
    <!-- args = "将参数传递给节点" --> 
    <!-- machine = "启动不同设备上的节点" -->
    <!-- respawn = "退出后是否自动启动" -->
    <!-- required = "节点退出后,关闭roscore" -->
    <!-- ns = "设置节点命名空间,加前缀" -->
    <node pkg="turtlesim" type="turtlesim_node" name="turtle" output="screen"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>

上面例子中launch文件启动时是多线程的,不一定按照节点描述顺序启动。

二、launch文件之include标签

<launch>
   <!-- 用于文件复用,此例将文件node.launch复用 -->
   <!-- file="$(find 功能包名)/launch/launch文件名" -->
   <include file="$(find launch02)/launch/node.launch"  />

</launch>

三、launch文件之remap标签

<launch>
    <node pkg="turtlesim" type="turtlesim_node" name="turtle" output="screen">
        <remap from="/turtle1/cmd_vel" to="/cmd_vel"/>   //将话题"/turtle1/cmd_vel"修改                                                
                                                         //为"/cmd_vel"/>  
    </node>
    <node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
</launch>

四、launch文件之param标签

 <param>标签主要用于在参数服务器上设置参数,参数源可以在标签中通过 value 指定,也可以通过外部文件加载,在<node>标签中时,相当于私有命名空间。

<launch>
    <!-- 格式一,在launch内,node外 -->
    <!-- name为参数名 -->
    <!-- type为参数类型 -->
    <!-- value为参数赋值 -->
    <param name="param_A" type="int" value="100"/>      
    <node pkg="turtlesim" type="turtlesim_node" name="turtle" output="screen">
    <!-- 格式二,在node内 -->
        <param name="param_B" type="double" value="102.3"/>
    </node>
    <node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>

</launch>

' 五、launch文件之rosparam标签

<rosparam>标签可以从 YAML 文件导入参数,或将参数导出到 YAML 文件,也可以用来删除参数,<rosparam>标签在<node>标签中时被视为私有。

  • command="load | dump | delete" (可选,默认 load)

    加载、导出或删除参数

  • file="$(find xxxxx)/xxx/yyy...."

    加载或导出到的 yaml 文件

  • param="参数名称"

  • ns="命名空间" (可选)

  • <launch>
        <!-- 导出服务器参数到文件(find launch02)/launch/params_out.yaml -->
        <rosparam command="dump" file="$(find launch02)/launch/params_out.yaml"/>
        <!-- 删除参数bg_B -->
        <rosparam command="delete" param="bg_B"/>
    
    </launch>

    六、launch文件之group标签

<group>标签可以对节点分组,具有 ns 属性,可以让节点归属某个命名空间

<launch>
    <!-- 节点分组,将不会出现节点覆盖问题 -->
    <group ns="first">
    <node pkg="turtlesim" type="turtlesim_node" name="turtle" output="screen"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
    </group>
    <group ns="second">
    <node pkg="turtlesim" type="turtlesim_node" name="turtle" output="screen"/>
    <node pkg="turtlesim" type="turtle_teleop_key" name="my_key" output="screen"/>
    </group>
</launch>

七、launch文件之args标签

<arg>标签是用于动态传参,类似于函数的参数,可以增强launch文件的灵活性

<launch>
    <!-- 相当于宏定义,定义参数car_length -->
    <arg name="car_length" default="0.55"/>  

    <param name="A" value="${arg car_length}"/>
    <param name="B" value="${arg car_length}"/>
    <param name="C" value="${arg car_length}"/>

</launch>

也可以动态传参

roslaunch launch02 _arg.launch car_length:=0.6

ROS分布式通信 

ros作为一个分布式的系统,一个运行的ros系统,多个节点可以分布在不同的设备中,并且节点之间可以相互通信。因此,配置需要满足以下条件

所有端口上的所有机器之间必须有完整的双向连接。

每台计算机必须通过所有其他计算机都可以解析的名称来公告自己。

实现:

1.准备

先要保证不同计算机处于同一网络中,最好分别设置固定IP,如果为虚拟机,需要将网络适配器改为桥接模式;首先通过终端输入命令ifconfig,获取本机的ip,掩码、网关,

再将其填入

点击应用即可,所有设备均做以上操作。 

 2.配置文件修改

分别修改不同计算机的 /etc/hosts 文件,在该文件中加入对方的IP地址和计算机名

 主机加入从机的IP及从机的计算机名, 从机加入主机的IP及主机的计算机名,

IP地址查看名: ifconfig

计算机名称查看: hostname

 设置成功后,重启计算机生效,主机可使用命令 ping 从机ip查看连接状态,同理从机

 也可使用命令 ping 从机ip查看连接状态。

 3.配置文件修改

配置主机的 IP 地址

~/.bashrc 追加

export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=主机IP

4.配置从机IP

配置从机的 IP 地址,从机可以有多台,每台都做如下设置:

~/.bashrc 追加

export ROS_MASTER_URI=http://主机IP:11311
export ROS_HOSTNAME=从机IP

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44688770/article/details/128892039

智能推荐

将LGBM用作二分类问题之上_matlablgbm模型-程序员宅基地

文章浏览阅读460次,点赞8次,收藏9次。LGBM(Light Gradient Boosting Machine)可以用于解决二分类问题。事实上,LGBM在实际应用中被广泛用于分类问题,包括二分类问题。在使用LGBM进行二分类问题时,你可以指定目标变量的类型和相关参数。对于二分类问题,你可以使用。指定了二分类问题的目标。你可以根据具体问题和数据集的特点调整其他参数,以优化模型性能。表示使用对数损失作为损失函数,是二分类问题的默认设置。被用于创建一个二分类模型,_matlablgbm模型

Java包装类;基本数据类型与字符串的相互转换_java 基本类型转包装类-程序员宅基地

文章浏览阅读531次。Java包装类;基本数据类型与字符串的相互转换_java 基本类型转包装类

【重构架构设计】_重构设计-程序员宅基地

文章浏览阅读368次,点赞9次,收藏9次。通过以上两个示例,可以看到领域驱动设计的特点:每个领域都有自己的模型(User和Order类),聚合根(User和Order类的实例)和业务逻辑(changePassword、addItem等方法)。引入领域驱动设计(DDD):DDD是一种面向领域模型设计的方法,通过将业务领域划分为多个小的子领域来进行解耦。通过使用微服务架构,可以将系统解耦为多个独立的服务,提高系统的可用性和可伸缩性。通过以上的步骤,可以有效进行业务解耦,提高代码的高可用性和可维护性。在订单管理领域中,专注于订单的信息、行为和业务规则。_重构设计

cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration的解决-程序员宅基地

文章浏览阅读2.3w次,点赞7次,收藏12次。导入了一个工程,编译什么的都还好,但是报了一个XML的错误。cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'dubbo:application'. 具体错误如下:Multiple annotations found at this line: ..._cvc-complex-type.2.4.c: the matching wildcard is strict, but no declaration

如何避免对话冲突-《关键对话》笔记与心得_关键对话 为什么我们会面临关键冲突-程序员宅基地

文章浏览阅读1.9k次。 目录 1~关键对话的含义2~关键对话的目标3~处在关键对话场景下的心理状态4~好公司和差公司的区别5~ 关键对话的重要性6~跟踪表现良好的人行为7~专注于真正想要的结果8~ 谈话禁忌9~决策的四种方式 自勉1~关键对话的含义两个或更多人参与讨论,条件:1)事关重大ps: 个..._关键对话 为什么我们会面临关键冲突

Mac中找不到.bash_profile则自己创建.bash_profile文件_mac 中没有bash_profile-程序员宅基地

文章浏览阅读9.5k次。1.启动Terminal终端工具2.输入cd ~/ 进入当前用户的home目录或cd /Users/YourUserName3. 创建:touch .bash_profile4.打开并编辑:open -e .bash_profile5.保存关闭,其实创建了一个空文件6.更新:source .bash_profile..._mac 中没有bash_profile

随便推点

探秘User-Agents:一个强大的网络嗅探与模拟库-程序员宅基地

文章浏览阅读868次,点赞22次,收藏16次。探秘User-Agents:一个强大的网络嗅探与模拟库项目地址:https://gitcode.com/intoli/user-agents在互联网的世界中,User-Agent 是你的浏览器向服务器透露其身份的一种方式。它包含了浏览器类型、版本信息,甚至操作系统和设备详情。intoli/user-agents 是一个精心打造的Python库,可以帮助开发者轻松地生成、解析和模拟User-A...

顾险峰:当深度学习遇到3D_深度学习 3d成型-程序员宅基地

文章浏览阅读802次。转载自:老顾谈几何(ID:conformalgeometry)作者:顾险峰本文7647字,建议阅读20分钟。本文中顾险峰老师分享了传统几何理论和方法与深度学习融合的相关知识。2019年10月底11月初,国际计算机视觉大会(ICCV 2019)在韩国首尔举行,参会学者多达七千五百多人,创了历史记录。大会接收论文一千多篇,排在前几位的论文关键词是:图像(image),物体(object..._深度学习 3d成型

python入门必看指南_网络安全python-程序员宅基地

文章浏览阅读2.4k次。python编辑器 实用函数汇总 type():查看变量的类型 help():了解一个函数的详细 str():把整型转换成字符串类型 字符串操作指南 通过偏移值来获取你想需要的字符串 len():来获取字符串的长度 ..._网络安全python

深度学习——rain convolutional dictionary network (RCD-Net)-程序员宅基地

文章浏览阅读2.3k次,点赞7次,收藏18次。CVPR2020原论文:A Model-driven Deep Neural Network for Single Image Rain Removal 开源代码:https://github.com/hongwang01/RCDNet1.主要内容:利用卷积字典学习机制去编码雨的形状,以及近端梯度技术设计优化算法,提出了单幅图像的雨卷积字典模型(rain convolutional dictionary model,RCD model)。如下图:Rainy Image(O)=Rain_rain convolutional dictionary network

Centos8使用Kolla-ansible部署Ussuri(乌苏里2020-5-13发布)版本openstack-allinone云平台_centos8 安装openstack kolla-ans-程序员宅基地

文章浏览阅读2.8k次,点赞2次,收藏6次。最近的一个版本更新Victoria 预计2020年10月发布Ussuri暂无法kolla-ansible部署只有TripleO这篇文章用Train版本 19年10月发布生产环境安装Kolla居多DevStack、PackStack主要适用于开发后续补充。_centos8 安装openstack kolla-ans

I2C通讯-程序员宅基地

文章浏览阅读219次。很多传感器喜欢使用I2C进行通讯i2c.ci2c.h调用i2c的函数hrm.chrm.h主函数初始化并调用

推荐文章

热门文章

相关标签