PX4无人机仿真—多无人机模型launch文件分析

本文主要对单无人机仿真launch文件和XTdrone单个无人机例程launch文件进行分析。启动可通讯的px4模型需运行px4软件在环仿真、启动Gazebo、配置MAVROS。XTdrone例程框架清晰,便于多无人机扩展,还分析了相关文件差异及配置要点。

1. 单无人机仿真launch文件分析

首先还是分析最初官方的 mavros_posix_sitl.launch这个文件,下面是这个文件的文件框架导图

大致分为以下几个步骤:

    1. 声明后续需要的变量,并进行赋值
    2. 引入posix_sitl文件,进行PX4软件在环仿真和运行Gazebo,并将前面定义好的变量值对该launch内成员变量进行赋值,在这个launch文件中,主要是 开启了两个节点,一个是负责启动PX4固件的软件在环仿真,一个是加载无人机对应的Gazebo模型,并且又引入了一个新的launch文件,这个文件主要的功能就是加载一个世界模型,并启动Gazebo。
    3. 引入px4文件,加载mavros相关的参数,

所以总的来说,想要启动一个可以通讯的px4模型,需要运行px4软件在环仿真,启动Gazebo,配置MAVROS这三大步骤。

2. XTdrone单个无人机例程launch文件分析

以indoor01.launch这个文件为例,下面是文件源码

<?xml version="1.0"?>
<launch>
    <!-- MAVROS posix SITL environment launch script -->
    <!-- launches Gazebo environment and 2x: MAVROS, PX4 SITL, and spawns vehicle -->
    <!-- vehicle model and world -->
    <arg name="est" default="ekf2"/>
    <arg name="world" default="$(find mavlink_sitl_gazebo)/worlds/indoor1.world"/>
    <!-- gazebo configs -->
    <arg name="gui" default="true"/>
    <arg name="debug" default="false"/>
    <arg name="verbose" default="false"/>
    <arg name="paused" default="false"/>
    <!-- Gazebo sim -->
    <include file="$(find gazebo_ros)/launch/empty_world.launch">
        <arg name="gui" value="$(arg gui)"/>
        <arg name="world_name" value="$(arg world)"/>
        <arg name="debug" value="$(arg debug)"/>
        <arg name="verbose" value="$(arg verbose)"/>
        <arg name="paused" value="$(arg paused)"/>
    </include>
     <!-- iris_0 -->
     <group ns="iris_0">
        <!-- MAVROS and vehicle configs -->
            <arg name="ID" value="0"/>
            <arg name="ID_in_group" value="0"/>
            <arg name="fcu_url" default="udp://:24540@localhost:34580"/>
        <!-- PX4 SITL and vehicle spawn -->
        <include file="$(find px4)/launch/single_vehicle_spawn_xtd.launch">
            <arg name="x" value="0"/>
            <arg name="y" value="7.5"/>
            <arg name="z" value="0.5"/>
            <arg name="R" value="0"/>
            <arg name="P" value="0"/>
            <arg name="Y" value="0"/>
            <arg name="vehicle" value="iris"/>
            <arg name="sdf" value="iris_stereo_camera"/>
            <arg name="mavlink_udp_port" value="18570"/>
            <arg name="mavlink_tcp_port" value="4560"/>
            <arg name="ID" value="$(arg ID)"/>
            <arg name="ID_in_group" value="$(arg ID_in_group)"/>
        </include>
        <!-- MAVROS -->
        <include file="$(find mavros)/launch/px4.launch">
            <arg name="fcu_url" value="$(arg fcu_url)"/>
            <arg name="gcs_url" value=""/>
            <arg name="tgt_system" value="$(eval 1 + arg('ID'))"/>
            <arg name="tgt_component" value="1"/>
        </include>
    </group>

</launch>
<!--the launch file is generated by XTDrone multi-vehicle generator.py  -->

这个代码框架就比官方mavros_posix_sitl这个启动框架清楚的多,首先在20行之前,是引用了一个自定义的世界模型,并且加载到启动Gazebo的launch文件中,执行到20行,会启动一个引用前面自定义世界模型的Gazebo环境。之后就是分组对无人机进行配置,每个无人机是一组,这样做的好处就是删减新的无人机时,比较方便,且ros相关话题也根据不同的分组进行了区分,在这里进行PX4软件在环仿真和启动mavros通讯节点,在启动软件在环仿真和加载无人机模型时这里用到了另一个launch文件 single_vehicle_spawn_xtd.launch,这个文件是XTdone参考官方single_vehicle_spawn_sdf.launch 自己写的,下面我把这两者的源码附到下面:

这个是官方single_vehicle_spawn_sdf.launch

<?xml version="1.0"?>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值