配置与控制不同的无人机


多旋翼飞行器

现在的outdoor3.launch是车辆的仿真,搜索rover(车辆),发现有四个地方出现了rover,对应修改,这里修改成solo
由于地面高度较高,需要把launch文件中初始z位置设为1
sdf的value也得完全修改 <arg name="sdf" value="solo_stereo_camera"/>

cd ~/PX4_Firmware/launch/
gedit outdoor3.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/outdoor3.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>
     <!-- solo_0 -->
     <group ns="solo_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="0"/>
            <arg name="z" value="1"/>
            <arg name="R" value="0"/>
            <arg name="P" value="0"/>
            <arg name="Y" value="0"/>
            <arg name="vehicle" value="solo"/>
            <arg name="sdf" value="solo_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  -->

启动仿真程序

cd ~/PX4_Firmware
roslaunch px4 outdoor3.launch 

然后启动通信脚本,solo代表子机型,0代表飞机的编号

cd ~/XTDrone/communication
python multirotor_communication.py solo 0

再启动键盘控制脚本,solo代表子机型,1代表飞机的个数,vel代表速度控制。虽然多旋翼飞行器提供了速度控制和加速度控制两种键盘控制方式,但手动控制速度比较方便,加速度控制在后面的高级运动规划任务中比较有用。

cd ~/XTDrone/control/keyboard
python multirotor_keyboard_control.py solo 1 vel

对于多旋翼飞行器,Offboard控制起飞很容易,给一个大于0.3m/s的期望z向速度即可,因此可以不使用Takeoff模式(按键中的v),Takeoff模式的相关参数(起飞高度,起飞速度)需要在rcS设置,比较麻烦。
不知道为什么下图红框部分描述的不对,应该是控制无人机上升下降的速度的
应该是 increase/drcrease upward velocity


通过修改一下路径的代码可以改正 /XTDrone/control/keyboardmultirotor_keyboard_control.py
修改后如下图所示在这里插入图片描述
不断按i把期望z向速度加到0.3m/s以上,然后按b切到offboard模式,再按t解锁即可起飞,飞到合适的高度后,按s即可实现悬停。
在这里插入图片描述


固定翼飞行器

固定翼飞行器的配置与仿真启动方法与多旋翼飞行器类似,不过由于固定翼需要较大的空间,我们换用outdoor2.launch(需要修改里面的机型)。
注意:1.plane下面没有子类,也没有速度控制和加速度控制之分。2.固定翼无人机请使用GPS定位,详情见PX4飞控EKF配置章节

cd ~/PX4_Firmware/launch/ 
gedit outdoor2.launch

现在的outdoor2.launch是车辆的仿真,搜索rover,发现有四个地方出现了rover,只需对应改成需要的机型(plane)即可。特别注意sdf文件,由于同一种机型可能配备不同的传感器,所以sdf文件的命名会随之不同,您需要在~/PX4_Firmware/Tools/sitl_gazebo/models/文件夹下寻找所需的sdf文件(plane)。

<?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/outdoor2.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>
     <!-- plane_0 -->
     <group ns="plane_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="0"/>
            <arg name="z" value="0"/>
            <arg name="R" value="0"/>
            <arg name="P" value="0"/>
            <arg name="Y" value="0"/>
            <arg name="vehicle" value="plane"/>
            <arg name="sdf" value="plane"/>
            <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  -->

启动仿真程序:

 roslaunch px4 outdoor2.launch 

启动通信脚本:0表示0号固定翼

cd ~/XTDrone/communication/ 
python plane_communication.py 0

启动键盘控制脚本:1表示一架固定翼

cd ~/XTDrone/control/keyboard
python plane_keyboard_control.py 1

固定翼需要用takeoff模式起飞。如果不希望有影子,可以吧Gazebo scene里的shadows关掉.
在这里插入图片描述
固定翼的offboard模式,通过设置航点位置,飞机会先飞到航点(setpoint)附近,然后盘旋。

注意:1.切Offboard之前先s,这样才会飞到航点盘旋,如果是按k,飞机会无动力滑翔。2.设置航点(setpoint)高度尽量超过20m,否则有可能撞地面。

推荐起飞流程:v起飞->t解锁->先设置航点位置然后o载入航点->s盘旋->b切换offboard模式
在这里插入图片描述
设置航点(0,0,21),盘旋效果演示:
(这里航机点是通过w/x,a/d,i/,控制输入的,一开始我还以为是直接输入数组,真是犯了愚蠢的错误)
在这里插入图片描述
设置航点(0,0,21),盘旋效果演示:

固定翼飞机盘旋效果

后面这一部分还没试过,另外下面提到的网址报错404打不开,哭T…T
也可以通过地面站设置航点,使用mission模式飞行一段时间后,再切到offboard模式。固定翼的航线规划有很多讲究,这里不再过多讨论,有兴趣的朋友可以自行查阅相关文献

着陆可通过landmissionreturn三种模式进行,详见https://docs.px4.io/main/en/flying/fixed_wing_landing.html(这个网站404),不过PX4的官网可以打开https://docs.px4.io/main/en/,不知道里面的Flying-Manual Flying板块是不是就是404网站想要表达的

可垂直起降固定翼飞行器

VTOL的配置和其他机型一样,但是操作是所有机型里最麻烦的,因为它有两个模态,多旋翼模态和固定翼模态。这里我们以tailsitter(尾座式飞行器)为例,进行介绍。

outdoor2.launch对应修改成vtol

cd ~/PX4_Firmware/launch/ 
gedit outdoor2.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/outdoor2.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>
     <!-- tailsitter_0 -->
     <group ns="tailsitter_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="0"/>
            <arg name="z" value="0"/>
            <arg name="R" value="0"/>
            <arg name="P" value="0"/>
            <arg name="Y" value="0"/>
            <arg name="vehicle" value="tailsitter"/>
            <arg name="sdf" value="tailsitter"/>
            <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  -->
roslaunch px4 outdoor2.launch 
cd ~/XTDrone/communication
python vtol_communication.py tailsitter 0

运行通信脚本后,会显示multirotor,这说明初始化是在多旋翼模态,我们也将以这种模态起飞。

在这里插入图片描述

然后启动控制脚本,这里的vel是说明多旋翼模态下我们使用速度控制。固定翼模态的控制方法与固定翼是一样的。

cd ~/XTDrone/control/keyboard
python vtol_keyboard_control.py tailsitter 1 vel

由于目前处于多旋翼模态,我们可以像控制多旋翼飞行器一样控制它。
在这里插入图片描述

在切换到固定翼模式前,需要发送合适的setpoint,切换模式后立刻发送loiter,然后飞机就会以固定翼模式飞到setpoint进行盘旋。
在这里插入图片描述

可垂直起降固定翼飞行器

无人车

无人车的配置与控制方法同上,需要注意只能控制前进速度(不能倒车)和转角。

cd ~/PX4_Firmware/launch/
gedit outdoor3.launch
roslaunch px4 outdoor3.launch
cd ~/XTDrone/communication
python rover_communication.py 0
cd ~/XTDrone/control/keyboard
python rover_keyboard_control.py 1

在这里插入图片描述

在这里插入图片描述

无人车

  • 15
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值