Launch文件笔记: 一、加载xacro文件

1. 创建launch文件 name.launch.py

2. 导入创建launch文件包       

from launch import LaunchDescription

def generate_launch_description():

    # 创建节点

    return LaunchDescription([
    # 节点。。。

    ])

3. 为了创建节点导包

from launch_ros.actions import Node

4. 创建节点

暂时将URDF参数保存在robot_description中

    # 创建一个状态发布节点
    robot_state_publisher = Node(
        package="robot_state_publisher",
        executable="robot_state_publisher",
        parameters=[{"robot_description": robot_description}] # "robot_description"参数是文件描述路径
    )

  4.1 要声明一个启动文件的参数:

from launch.actions import DeclareLaunchArgument


    # 定义一个启动参数 model
    model_arg = DeclareLaunchArgument(name="model", # 参数名称
        default_value=os.path.join(arduinobot_description_dir, "urdf", "arduinobot.urdf.xacro"),# 参数默认值
        description="Absolute path to robot urdf file" # 参数描述:这是URDF文件的绝对路径
        )

这里为了指定urdf的目录,使用Python的os.path.join函数,导包:

import os

为了获取包'arduinobot_description'的共享目录:

from ament_index_python.packages import get_package_share_directory # 获取包的共享目录

    arduinobot_description_dir = get_package_share_directory("arduinobot_description")

 4.2 生成最终的参数

robot_description参数

    # 通过xacro命令将xacro文件转换为urdf文件
    # 这里使用了ParameterValue来将xacro文件的内容传递给robot_description参数
    robot_description = ParameterValue(Command(["xacro ", LaunchConfiguration("model")]),
                                       value_type=str)

    不能简单地包含机器人的URDF模型的路径,因为没有使用纯URDF约定,而是使用了xacro,所以

还要导入Command将 xacro文件 转换为 URDF.

使用LaunchConfiguration将'modle'里的参数获取出来.

最终robot_description是完整的robot描述.

导包:

from launch_ros.parameter_descriptions import ParameterValue
from launch.substitutions import Command, LaunchConfiguration

5. 发布robot描述:

from launch import LaunchDescription
from launch_ros.actions import Node
from launch.actions import DeclareLaunchArgument
import os # 导包
from ament_index_python.packages import get_package_share_directory # 获取包的共享目录
from launch.substitutions import Command, LaunchConfiguration
from launch_ros.parameter_descriptions import ParameterValue


def generate_launch_description():
    arduinobot_description_dir = get_package_share_directory("arduinobot_description")

    # 定义一个启动参数 model
    # arduinobot_description_dir 是包的共享目录
    model_arg = DeclareLaunchArgument(name="model", # 参数名称
        default_value=os.path.join(arduinobot_description_dir, "urdf", "arduinobot.urdf.xacro"),# 参数默认值
        description="Absolute path to robot urdf file" # 参数描述:这是URDF文件的绝对路径
        )
    
    # 通过xacro命令将xacro文件转换为urdf文件
    # 这里使用了ParameterValue来将xacro文件的内容传递给robot_description参数
    robot_description = ParameterValue(Command(["xacro ", LaunchConfiguration("model")]),
                                       value_type=str)

    robot_state_publisher = Node(
        package="robot_state_publisher",
        executable="robot_state_publisher",
        parameters=[{"robot_description": robot_description}]
    )


    return LaunchDescription([
        model_arg,
        robot_state_publishe,

    ])

6. RVIZ2节点

 rviz_node = Node(
        package="rviz2",
        executable="rviz2",
        name="rviz2",
        output="screen",
        # rviz2的配置文件路径
        arguments=["-d", os.path.join(arduinobot_description_dir, "rviz", "display.rviz")],
    )

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    laocui1

    你的鼓励是我创作的最大动了

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值