一键创建ros2功能包的launch文件

一键创建ros2功能包的launch文件

为了方便一键创建所有的功能包下的launch文件,写了一个脚本文件
其是放在工作空间下运行,例如放在dev_ws下

  1. 脚本会遍历工作空间下的所有功能包
  2. 会在对应功能包下创建一个launch文件夹
  3. 在对应的launch文件夹下创建与功能包相同名字的.launch.py文件
  4. 添加功能包下的所有cpp文件对应的节点

ps:

  1. 本脚本只针对cpp的功能包,cmakelists.txt没有对应修改,需要手动修改
	package="{package_name}",
	executable="{cpp_file_name.replace('.cpp', '')}",
	name="{cpp_file_name.replace('.cpp', '_node')}"
  1. 上面的一部分是需要根据实际情况进行修改,executable可执行文件名,name节点名
  2. 该脚本只进行了简单的创建,后续根据需求可自主开发,有问题大家可以一起交流
import os

def create_launch_files():
    # 获取当前脚本所在的目录
    script_folder = os.path.dirname(__file__)
    src_folder = os.path.join(script_folder, "src")

    # 获取src文件夹下的所有子目录(功能包)
    packages = [d for d in os.listdir(src_folder) if os.path.isdir(os.path.join(src_folder, d))]

    for package_name in packages:
        package_folder = os.path.join(src_folder, package_name)
        cpp_files = [f for f in os.listdir(os.path.join(package_folder, "src")) if f.endswith(".cpp")]

        if cpp_files:
            # 假设cpp文件列表中的第一个文件是主文件,以简化处理
            cpp_file_name = cpp_files[0]

            launch_folder_path = os.path.join(package_folder, "launch")

            # 如果不存在,创建launch文件夹
            os.makedirs(launch_folder_path, exist_ok=True)

            # 创建launch文件内容
            launch_content = f"""
from launch import LaunchDescription
from launch_ros.actions import Node

def generate_launch_description():
    node_dict = []
    # 节点1
    test_node = Node(
        package="{package_name}",
        executable="{cpp_file_name.replace('.cpp', '')}",
        name="{cpp_file_name.replace('.cpp', '_node')}"
    )

    node_dict.append(test_node)

    return LaunchDescription(node_dict)
"""

            # 写入launch文件
            launch_file_path = os.path.join(launch_folder_path, f"{cpp_file_name.replace('.cpp', '')}.launch.py")
            with open(launch_file_path, "w") as launch_file:
                launch_file.write(launch_content)

            print(f"已为 {package_name} 创建 launch 文件: {launch_file_path}")
        else:
            print(f"错误:在 {package_folder} 中未找到 cpp 文件")

if __name__ == "__main__":
    create_launch_files()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值