ROS2学习之旅(10)——创建一个launch文件
2021/7/15 6:08:17
本文主要是介绍ROS2学习之旅(10)——创建一个launch文件,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
当在具有较多节点同时运行的复杂的系统中,打开终端并重新输入配置细节将变得繁杂。
Launch文件允许同时启动和配置多个包含ROS2节点的可执行文件。
使用ros launch
命令运行单个启动文件将立即启动整个系统——所有节点及其配置。
1.准备
创建一个新文件家以存放launch文件:
mkdir launch
创建一个名为turtlesim_mimic_launch.py
的文件,可以通过以下命令实现:
touch launch/turtlesim_mimic_launch.py
还可以使用GUI进入系统的文件目录,并以这种方式创建一个新文件。
在文本编辑器中打开新文件。
2.写launch文件
通过launch文件启动turtlesim
包中的可执行程序,将下列代码粘贴到turtlesim_mimic_launch.py
中:
from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): return LaunchDescription([ Node( package='turtlesim', namespace='turtlesim1', executable='turtlesim_node', name='sim' ), Node( package='turtlesim', namespace='turtlesim2', executable='turtlesim_node', name='sim' ), Node( package='turtlesim', executable='mimic', name='mimic', remappings=[ ('/input/pose', '/turtlesim1/turtle1/pose'), ('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'), ] ) ])
2.1分析launch文件
这些import
语句会引入一些Pythonlaunch
模块:
from launch import LaunchDescription from launch_ros.actions import Node
接下来,开始launch本身的描述:
def generate_launch_description(): return LaunchDescription([ ])
在LaunchDescription
中有一个由三个节点组成的系统,它们都来自turtlesim
包。这个系统的目标是启动两个海龟窗口,让一只海龟模仿另一只海龟的动作。
launch描述中的前两个动作将启动两个turtlesim
窗口:
Node( package='turtlesim', namespace='turtlesim1', executable='turtlesim_node', name='sim' ), Node( package='turtlesim', namespace='turtlesim2', executable='turtlesim_node', name='sim' ),
注意:这两个节点之间的唯一区别是它们的名称空间值(namespace values)。唯一的名称空间允许系统启动两个模拟器,而不存在节点名或主题名冲突。
最后一个节点也来自turturlesim
包,但是是一个不同的可执行文件:mimic
。
Node( package='turtlesim', executable='mimic', name='mimic', remappings=[ ('/input/pose', '/turtlesim1/turtle1/pose'), ('/output/cmd_vel', '/turtlesim2/turtle1/cmd_vel'), ] )
该节点以重映射的形式添加了配置细节。
mimic
的/input/pose
话题被重映射到/turtlesim1/turtle1/pose
,而它的/output/cmd_vel
话题被映射到/turtlesim2/turtle1/cmd_vel
。这意味着mimic
将订阅/turtlesim1/sim
的pose
话题,并将其重新发布为/turtlesim2/sim
的速度控制话题。换句话说,tuertlesim2
会模仿turtlesim1
的动作。
3.ros2 launch
为了启动turtlesim_mimic_launch.py
,进入刚才建立的文件夹并运行以下命令:
cd launch ros2 launch turtlesim_mimic_launch.py
注意:可以直接启动launch文件(如上所示),或者由包提供。当launch文件由包提供时,语法是:
ros2 launch <package_name> <launch_file_name>
两个turtlesim窗口将打开,将看到以下[INFO]
消息,告知启动文件已经启动:
[INFO] [launch]: Default logging verbosity is set to INFO [INFO] [turtlesim_node-1]: process started with pid [11714] [INFO] [turtlesim_node-2]: process started with pid [11715] [INFO] [mimic-3]: process started with pid [11716]
查看系统的运行情况,打开新终端,并在/turtlesim1/turtle1/cmd_vel
话题上运行ros2 topic pub
命令,让第一个海龟移动:
ros2 topic pub -r 1 /turtlesim1/turtle1/cmd_vel geometry_msgs/msg/Twist "{linear: {x: 2.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: -1.8}}"
将会看到两只海龟沿着同一条路线运动:
4.使用rat_graph查看系统
当系统仍在运行时,打开一个新的终端并运行rqt_graph
以更好地了解launch文件中节点之间的关系。
执行命令:
rqt_graph`n__rso2cli_12142`(执行的`ros2 topic pub`)正在将数据发布到左侧的`/turtlesim1/turtle1/cmd_vel`话题,`/turtlesim1/sim`节点订阅了该话题。图的其余部分显示了前面描述的内容:`mimic`订阅`/turtlesim1/sim`的`pose`话题,发布到`/turtlesim2/sim`的`cmd_vel`主题。
5.总结
launch文件通过许多节点和特定的配置细节简化了复杂系统的运行,可以使用Python创建launch文件,并使用ros2 launch
命令运行它们。
注意:
与ROS1一样,同样可以使用XML和YAML来创建launch文件,可以参考:
Using Python, XML, and YAML for ROS 2 Launch Files — ROS 2 Documentation: Foxy documentation
如果给您带来帮助,希望能给点个关注,以后还会陆续更新有关机器人的内容,点个关注不迷路~欢迎大家一起交流学习。
都看到这了,点个推荐再走吧~
未经允许,禁止转载。
这篇关于ROS2学习之旅(10)——创建一个launch文件的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-06TypeScript面试真题详解与实战攻略
- 2024-11-06TypeScript大厂面试真题解析与实战教程
- 2024-11-05Snowflake Cortex大语言模型函数:让AI数据查询更简单高效
- 2024-11-05Azure开发更轻松:VS Code中的GitHub Copilot for Azure公测版
- 2024-11-05Databricks与Snowflake:数据处理实力大比拼
- 2024-11-05Sealos Devbox 使用教程:使用 Cursor 开发一个高仿苹果官网
- 2024-11-05在 etcd 中怎么看有多少客户端在监视特定键 (watch)-icode9专业技术文章分享
- 2024-11-05uniapp 怎么实现返回上一页效果-icode9专业技术文章分享
- 2024-11-05UniApp 中则么实现检查一个 URL 是否以 "http://" 开头功能-icode9专业技术文章分享
- 2024-11-05怎么使用nslookup指定dns解析?-icode9专业技术文章分享