当前位置:网站首页>ROS2自学笔记:launch文件完整编写流程
ROS2自学笔记:launch文件完整编写流程
2022-08-02 02:55:00 【Raine_Yang】
1 创建launch文件夹
launch文件可以放在任何文件夹下。对于一个对应节点的launch文件可以放在该节点功能包下,但是如果一个launch文件对应多个节点,最好在工作空间里新建一个功能包(ament_cmake和ament_python都可以,只是之后配置会有一点不同)
这里拿ament_cmake功能包举例
在功能包initiator下创建文件夹launch,launch文件夹下创建launch文件,同时删除功能包里原有src和include文件夹
2 编写launch文件
一个简单示例:
from launch import LaunchDescription
from launch_ros.actions import Node
def generate_launch_description():
ld = LaunchDescription()
serial_node = Node(
package = "communicator",
executable = "serial_node",
)
processor_node = Node(
package = "processor",
executable = "processor_node"
)
webcam_node = Node(
package = "webcam",
executable = "camera_node",
)
ld.add_action(serial_node)
ld.add_action(processor_node)
ld.add_action(webcam_node)
return ld
1 from launch import LaunchDescription
from launch_ros.actions import Node
引入必要库
2 def generate_launch_description():
任何launch文件必须包含该函数,该函数会返回一个launchDescription对象
3 serial_node = Node(
package = “communicator”,
executable = “serial_com”,
)
添加要启动的节点,必须配置节点对应功能包和可执行文件名称。节点还有重定向,添加命名空间,设置参数等设置,详见以下文章:
https://blog.csdn.net/Raine_Yang/article/details/125885266?spm=1001.2014.3001.5501
(注:可执行文件名称和节点名称一致,而不是和节点python程序名称一致。如我这里有一个节点camera_node在webcam功能包,webcam文件夹,webcam Python程序里,因此pckage为webcam,executable为camera_node)
4 ld.add_action(serial_node)
将节点加入到LaunchDescription里
3 配置依赖项
在launch文件功能包的package.xml文件下对launch文件要启动的节点所对应功能包进行声明
<exec_depend>communicator</exec_depend>
<exec_depend>webcam</exec_depend>
<exec_depend>processor</exec_depend>
对应ament_cmake功能包,在CMakeLists.txt find_package(ament_cmake REQUIRED)下面加入以下语句以定位launch文件夹位置
install(DIRECTORY
launch
DESTINATION share/${
PROJECT_NAME}
)
对于ament_python功能包在setup.py添加以下语句:
from setuptools import setup
import os
from glob import glob
...
data_files=[
...
(os.path.join('share', package_name), glob('launch/*.launch.py'))
],
...
边栏推荐
猜你喜欢
随机推荐
OC中new和init的区别
PAT甲级打卡-1001-1004
7、MySQL Workbench 导出导入数据库
WebShell连接工具(中国菜刀、WeBaCoo、Weevely)使用
亲身经历过的面试题
四元数、罗德里格斯公式、欧拉角、旋转矩阵推导和资料
AcWing 1053. 修复DNA 题解(状态机DP、AC自动机)
消息队列经典十连问
240...循迹
svm.SVC应用实践1--乳腺癌检测
canal同步Mariadb到Mysql
MySQL修改最大连接数限制
【LeetCode】102. Level order traversal of binary tree
【LeetCode】144. Preorder Traversal of Binary Tree
罗德里格斯公式(Rodrigues‘ Rotation Formula)推导
生成器知道鉴别器在无条件GANs中应该学习什么
AcWing 1053. Repair DNA problem solution (state machine DP, AC automata)
Duplicate entry ‘XXX‘ for key ‘XXX.PRIMARY‘解决方案。
合奥科技网络 面试(含参考答案)
JS中获取对象数据类型的键值对的键与值