当前位置:网站首页>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'))
],
...
边栏推荐
- Nacos source code analysis topic (1) - environment preparation
- KICAD 拉线宽度无法修改,解决方法
- 利用WebShell拿Shell技巧
- 启发式合并、DSU on Tree
- 【LeetCode】144. Preorder Traversal of Binary Tree
- MySQL六脉神剑,SQL通关大总结
- mysql使用on duplicate key update批量更新数据
- AcWing 1053. 修复DNA 题解(状态机DP、AC自动机)
- AcWing 1053. Repair DNA problem solution (state machine DP, AC automata)
- feign调用不通问题,JSON parse error Illegal character ((CTRL-CHAR, code 31)) only regular white space (r
猜你喜欢
随机推荐
微信小程序异步回调函数恶梦和解决办法
利用WebShell拿Shell技巧
就瞎写=感想
因为WiFi原因navicat 无法连接数据库Mysql
微服务:微智能在软件系统的简述
【LeetCode】94.二叉树的中序遍历
240...循迹
MySQL八股文背诵版
analog IC layout-Parasitic effects
2W字!梳理50道经典计算机网络面试题(收藏版)
2022牛客多校三_F G
esp32经典蓝牙和单片机连接,,,手机蓝牙作为主机
29. 删除链表中重复的节点
【LeetCode】104.二叉树的最大深度
MySQL索引优化实战
使用self和_(下划线)的区别
给你一个大厂面试的机会,你能面试上吗?进来看看!
【每日一道LeetCode】——9. 回文数
网络层解析——IP协议、地址管理、路由选择
架构:分布式任务调度系统(SIA-Task)简介









