精华内容
下载资源
问答
  • <p>I tested that the hw type of pxihack v3 is v2M, and the V2M code seems to be closing some spi. I connect PB12 to 3.3v, hw type is v30, lsm303d and l3gd20 can work.</p><p>该提问来源于开源项目:...
  • Pixhawk不通版本

    2019-08-26 10:50:17
    pixhawk2.1原配电源模块只能支持小于等于...地面站软件mission planner稳定版本固件下载链接:https://pan.baidu.com/s/1qPwNV4h_tWW_iSo4bmngjg 提取码:737t pixhawk2 QuadPlane垂直起降机型配置向导:http:/...

    pixhawk2.1原配电源模块只能支持小于等于8S电池30A稳定电流(100A瞬间电流),如果需要使用大型无人机,请选用支持更高电流的电源模块。

    地面站软件mission planner和稳定版本固件下载链接:https://pan.baidu.com/s/1qPwNV4h_tWW_iSo4bmngjg 提取码:737t

    pixhawk2 QuadPlane垂直起降机型配置向导:http://www.moz8.com/thread-94991-1-1.html

    pixhawk2使用说明及相关资料:http://pan.baidu.com/s/1nuDGZP3

    pixhawk教学视频:http://list.youku.com/albumlist/show?id=22847171&ascending=1&page=1

    here+使用说明及相关资料:http://pan.baidu.com/s/1mhRWnZ6

    here+教学视频:http://v.youku.com/v_show/id_XMjcxNDY0NDMxMg==.html?from=s1.8-1-1.2&spm=a2h0k.8191407.0.0&qq-pf-to=pcqq.c2c

    在这里插入图片描述

    引导加载程序(boot loader)升级公告

    为提高pixhack、pixhawk性能及做好IST8310磁力计兼容。现将我司销售的Pixhack v2、Pixhack v3、Pixhawk进行bootloader升级;升级后在线烧录固件mission plnner将自动识别设备为PX4FMU V3(CUAV已于2015年将所有飞控的处理器升级到2M闪存版本;可以完美兼容PX4FMU V3镜像固件),并自动选择烧录PX4FMU v3镜像固件;PX4FMU V3镜像相较与PX4 FMU V2镜像固件更加完整,兼容更多新传感器;建议使用PX4 FMU V3镜像的固件。

    注:

    PX4FMU V3镜像为Ardupilot团队从AC3.5、AP3.8及以上固件,为适配不同闪存的飞控,建立的分支。其适用处理器闪存2M以上的飞控。

    在这里插入图片描述
    Pixhack硬件结构与PIX相同 ,兼容Ardupilot/PX4代码

    CUAV官方手册:http://doc.cuav.net

    CUAV APP地址:fw.cuav.net/apk/HFlight.apk

    地面站下载: http://firmware.ardupilot.org/Tools/MissionPlanner/

    飞控各类视频: http://pan.baidu.com/s/1hq6gIbi

    飞控各类驱动:http://pan.baidu.com/s/1hqrnCHI

    Pixhack网盘资料:http://pan.baidu.com/s/1kVHaKKJ

    PIXHAWK飞控资料:http://pan.baidu.com/s/1c00Plao

    APM/PIX飞控本地烧录资料:http://pan.baidu.com/s/1jGKVNqI

    展开全文
  • 原理图 pixhawk

    2016-03-29 21:05:30
    辛苦分2分 历代px4硬件原理图layout v1和v2版本用eagle打开 v3版本用ad打开 github上下载好慢!
  • PX4学习笔记

    千次阅读 多人点赞 2020-10-04 15:16:50
    硬件照片、示意图 pixhack硬件介绍:https://docs.px4.io/master/en/flight_controller/pixhack_v3.html#pixhack-v3 逻辑图 集 多旋翼控制框架 软件框架 辅助工具、软件、使用方法 查看源码的工具: Source Insight...

    目录

    网址

    • PX4原生固件及其地面站网址
      https://github.com/PX4
      http://px4.io/
      原生固件代码:C++,构架清晰,容易维护修改,多进程
      目前来讲功能方面和细节上不如APM固件

    • AutoPoilt 固件及其地面站网址
      http://ardupilot.org/
      https://github.com/ArduPilot/ardupilot
      https://github.com/ArduPilot/MissionPlanner
      APM固件代码:C++,稳定成熟,功能丰富,发起时间比较早
      系统构架不如原生固件那么清晰,相对来讲不容易维护和修改

    • PIXHAWK控制器硬件
      https://github.com/PX4/Hardware

    PX4.io网页指导

    • 相关官网
      在这里插入图片描述
    • 使用文档、开发文档
      在网页最低端位置
      在这里插入图片描述
      在这里插入图片描述

    Pixhawk、PX4、APM 、 ArduPilot关系

    经常有人将 Pixhawk、PX4、APM 还有 ArduPilot 弄混。这里首先还是简要 说明一下: Pixhawk 是飞控硬件平台,PX4 和 ArduPilot 都是开源的可以烧写到 Pixhawk 飞控中的自驾仪软件,PX4 称为原生固件,专为 Pixhawk 打造。APM(Ardupilot Mega)早期也是一款自驾仪硬件,到 APM3.0 版本,这款基于 Arduino Mega 的 自驾仪已经走到了它的终点。ArduPilot 早期是 APM 自驾仪的固件,Pixhawk 作 为 APM 的升级版,也兼容 ArduPilot 固件,APM 自驾仪卒了之后,ArduPilot 现 在全面支持 Pixhawk,现在大家亲切的称 ArduPilot 固件为 APM。

    硬件照片、示意图

    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    pixhack硬件介绍:https://docs.px4.io/master/en/flight_controller/pixhack_v3.html#pixhack-v3

    逻辑图 集

    多旋翼控制框架

    在这里插入图片描述

    软件框架

    在这里插入图片描述

    辅助工具、软件、使用方法

    • 查看源码的工具:
      Source Insight、 understand
      在这里插入图片描述
    • Ubuntu虚拟机的开发环境和下载地址:
      链接:http://pan.baidu.com/s/1gfJzNKv 密码:o9rx

    source insight新建工程、导入PX4源码

    • step1
      在这里插入图片描述
    • step2
      在这里插入图片描述
    • step3
      在这里插入图片描述
    • step4
      在这里插入图片描述

    source insight 使用技巧

    11

    说明(误区)

    裸机运行

    51单片机,只有一个main函数,main函数中有一个主循环while。
    全部代码被编译成为一个可执行文件

    基于OS运行

    初始化硬件、初始化OS等代码被编译成一个可以行程序,上电后执行。
    如:姿态估计代码、姿态控制算法代码分别被编译成两个独立的可执行程序。这些独立的可执行程序(如windows中的**.exe)由OS以进程的形式执行,OS为这些可执行程序创建进程时,可配置执行频率。

    例子

    负责姿态估计的代码被编译为可执行程序,每一个之可执行程序都有一个入口main函数。
    如该可执行程序中有一个循环,则对应的进程按照频率执行,若没有循环,执行完这段可执行程序后(遇到return),对应的进程即结束。

    可执行程序、应用、源码(代码)、进程、线程、任务

    1

    源码、固件的区分

    源码:即代码,还未编译,可以是多个.c文件(或其他语言的源文件);或是一个工程文件project
    固件(Firmware):已经编译,并把各个已经编译好的文件打包成一个整体,以供烧录进单片机中。
    PX4源码最后编译成以下固件:
    在这里插入图片描述
    Firmware/ROMFS/px4fmu_common/init.d 文件夹下的 rcS 启动脚本(startup script)。 这个脚本位于被编译到固件中的 ROM 文件系统中。这个脚本检测可用的硬件,加载硬件驱动,并且根据你的设置启动系统正常运行所需的有 app(任务软件 , 包括位置和姿态估计,控制遥测等)。所有属于自启动程序的脚本文件可以在 init.d 文件夹中找到。

    计算机组成原理

    1

    何为驱动、处理器通过驱动访问某外设的过程

    作用:只是初始化?(配置寄存器)
    对应的进程:只执行一次?无while死循环?
    LED驱动的入口函数:
    在这里插入图片描述

    C++

    命名空间

    class AttitudeEstimatorQ;
    namespace attitude_estimator_q
    {
    AttitudeEstimatorQ *instance;
    }

    class AttitudeEstimatorQ
    {
    public:

    }

    PX4源码中C++的常用套路

    class AttitudeEstimatorQ;
    namespace attitude_estimator_q
    {
    AttitudeEstimatorQ *instance;
    }

    class AttitudeEstimatorQ
    {
    public:

    }

    先声明有这个类,再定义一个类的对象的指针instance,将这个变量(对象指针)放在一个名为attitude_estimator_q的命名空间中。
    在这里插入图片描述
    _***的变量,以下划线开头的变量或者函数表示类的室友成员。

    编译、汇编、链接

    预编译

    条件编译

    Pixhawk的启动流程

    NUTTX启动(也就是上面的固件代码,汇编语句就是跳转到这个位置来执行stm32_start.c):
    代码位置:Firmware/build_px4fmu-v2_default/px4fmu-v2/Nuttx/nuttx/arch/arm/src/stm32/stm32_start.c
    注意:build_px4fmu-v2_default文件夹要编译整个工程之后才会生成。

    stm32_start.c中处理器执行的第一条指令(px4使用的是stm32,入口在stm32_start.c中)
    stm32_clockconfig() #初始化时钟
    rcc_reset() #复位rcc
    stm32_stdclockconfig() #初始化标准时钟
    rcc_enableperipherals()#使能外设时钟
    stm32_fpuconfig() #配置fpu
    stm32_lowsetup() #基本初始化串口,之后可以使用up_lowputc()
    stm32_gpioinit() #初始化gpio,只是调用stm32_gpioremap()设置重映射
    up_earlyserialinit() #初始化串口,之后可以使用up_putc()
    stm32_boardinitialize()
    stm32_spiinitialize() #初始化spi,只是调用stm32_configgpio()设置gpio
    stm32_usbinitialize() #初始化usb,只是调用stm32_configgpio()设置gpio
    up_ledinit(); #初始化led,只是调用stm32_configgpio()设置gpio

    在stm32_start.c文件中我们会看到这么一句话:
    /* Then start NuttX */
    showprogress(’\r’);
    showprogress(’\n’);
    os_start(); #系统开始启动

    以下是 os_start()内容:
    dq_init() #初始化各种状态的任务列表(置为null)
    g_pidhash[i]= #初始化唯一可以确定的元素–进程ID
    g_pidhash[PIDHASH(0)]= #分配空闲任务的进程ID为0
    g_idletcb= #初始化空闲任务的任务控制块
    sem_initialize()-- #初始化信号量
    dq_init() #将信号量队列置为null
    sem_initholders() #初始化持有者结构以支持优先级继承
    up_allocate_heap() #分配用户模式的堆(设置堆的起点和大小)
    kumm_initialize() #初始化用户模式的堆
    up_allocate_kheap() #分配内核模式的堆
    kmm_initialize() #初始化内核模式的堆
    task_initialize() #初始化任务数据结构
    irq_initialize() #将所有中断向量都指向同一个异常中断处理程序
    wd_initialize() #初始化看门狗数据结构
    clock_initialize() #初始化rtc
    timer_initialize() #配置POSIX定时器
    sig_initialize() #初始化信号
    mq_initialize() #初始化命名消息队列
    pthread_initialize() #初始化线程特定的数据,空函数
    fs_initialize()— #初始化文件系统
    sem_init() #初始化节点信号量为1
    files_initialize() #初始化文件数组,空函数
    net_initialize()-- #初始化网络
    uip_initialize() #初始化uIP层
    net_initroute() #初始化路由表
    netdev_seminit() #初始化网络设备信号量
    arptimer_init() #初始化ARP定时器
    up_initialize()— #处理器特定的初始化
    up_calibratedelay() #校准定时器
    up_addregion() #增加额外的内存段
    up_irqinitialize() #设置中断优先级,关联硬件异常处理函数
    up_pminitialize() #初始化电源管理
    up_dmainitialize() #初始化DMA
    up_timerinit() #初始化定时器中断
    devnull_register() #注册/dev/null
    devzero_register() #注册/dev/zero
    up_serialinit() #注册串口控制台/dev/console和串口/dev/ttyS0
    up_rnginitialize() #初始化并注册随机数生成器
    up_netinitialize() #初始化网络,是arch/arm/src/chip/stm32_eth.c中的
    up_usbinitialize() #初始化usb驱动
    board_led_on() #打开中断使能led,但很快会被其它地方的led操作改变状态
    lib_initialize() #初始化c库,空函数
    group_allocate() #分配空闲组
    group_setupidlefiles() #在空闲任务上创建stdout、stderr、stdin
    group_initialize() #完全初始化空闲组
    os_bringup()------ #创建初始任务
    KEKERNEL_THREAD() #启动内核工作者线程
    board_initialize() #最后一刻的板级初始化
    TASK_CREATE() #启动默认应用程序
    forup_idle() #空闲任务循环
    for( ; ; ) #不应该到达这里(程序不该执行到此)

    • __start 负责STM32 芯片的底层初始化,包括时钟,FPU,GPIO 等单元的初始化;
    • os_start 负责OS 的底层初始化,包括各种队列和进程结构的初始化;
    • os_bringup 负责OS 基本进程的启动以及用户进程的启动,用户启动入口由;(CONFIG_USER_ENTRYPOINT)宏进行指定是执行nsh_main还是user_start。

    PX4工程目录节后分析

    在这里插入图片描述

    大概逻辑

    Pixhawk 整体逻辑大致为:

    1. commander 和 navigator 产生期望位置
    2. position_estimator 估计当前位置
    3. 通过 pos_ctrl 产生期望姿态
    4. attitude_estimator 估计当前姿态
    5. 通过 att_ctrl 产生 PWM 数值
    6. 最后通过 mixer 和 motor_driver 控制电机

    固件下载的过程、原理

    77

    源码分析

    1. Modules中的代码,运行在主处理器F4中;
    2. 二次开发,只需关注Modules和Drivers两个文件夹的源码即可;

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    函数调用结构示意:
    在这里插入图片描述
    官方解析:
    后台任务
    px4_task_spawn_cmd() 用于启动与父任务独立运行的新任务(NuttX)或者新线程(POSIX - Linux/macOS):

    independent_task = px4_task_spawn_cmd(
        "commander",                    // 进程名称
        SCHED_DEFAULT,                  // 调度类型(RR 或 FIFO)
        SCHED_PRIORITY_DEFAULT + 40,    // 调度优先级
        3600,                           // 新任务或线程的堆栈大小
        commander_thread_main,          // 任务(或线程的主函数)
        (char * const *)&argv[0]        // Void 指针传递到新任务
                                        // (这里是命令行参数)
        );
    

    操作系统相关的信息
    NuttX
    NuttX 是在飞控板上运行 PX4 的首选 RTOS 。 它是一个开源软件(BSD 许可), 非常轻量化,运行高效且稳定。

    各模块以任务(Task)模式运行:他们有各自的文件描述列表,但共用一个地址空间。 单个任务可以使用同一个文件描述列表启动单个或者多个线程。

    每一个任务/线程都有一个固定大小的栈堆,并且有一个周期性的任务会定期检查所有栈堆都有足够的可用空间(基于 stack coloring)。

    Linux/MacOS
    在 Linux 或者 macOS 系统上, PX4 在一个单独的进程中运行,各个模块在各自线程中运行(在 NuttX 中任务和线程没有任何区别)。

    mc_pos_control_main.cpp 分析

    task_main函数中:

    • 先订阅UORB消息
      在这里插入图片描述

    编译环境搭建

    Linux编译环境搭建

    请参考PX4开发者手册

    Windows编译环境搭建

    1. 安装 Windows Cygwin 工具链
      该工具链支持:
      编译/上传 PX4到Nuttx目标(Pixhawk系列飞控)
      JMAVSim/SITL 仿真会获得比其他Windows工具链更好的性能
      类型校验,轻便安装,完整的命令行支持和许多其他特性
      Cygwin 工具链 仅支持NuttX/Pixhawk 平台和 jMAVSim仿真平台
    2. Cygwin 工具链下载地址1
      Cygwin 工具链下载地址2(fast)
    3. 双击.msi文件安装
      在这里插入图片描述
    4. 下载PX4源码
    • 在Windows Cygwin安装结束后勾选clone the PX4 repository, build and run simulation with jMAVSim。下载的PX4源码存放在安装目录的home文件夹下。
    • 在Windows Cygwin安装结束后不勾选clone the PX4 repository, build and run simulation with jMAVSim,进入Windows Cygwin的安装目录,双击运行run-console.bat,以启动Cygwin bash控制台,在控制台中运行克隆PX4 Firmware仓库命令(下载的PX4源码存放在安装目录的home文件夹下。):
     git clone --recursive -j8 https://github.com/PX4/Firmware.git
    
    • 自行到GitHub上下载PX4工程源码 ,并移动至Windows Cygwin安装目录下的home目录下。 PX4源码下载网址
    1. 说明
      Cygwin控制台的初始位置是安装目录下的home目录。
      在这里插入图片描述
      下载好的源码:
      在这里插入图片描述
      在这里插入图片描述

    源码大小638.2 Mb,1.11版本。

    运行make 后悔多出一个build目录,运行 make distclean 会清除build目录以及编译过程中的所有中间文件。

    1 编译源码(编译固件)

    先进入Firemare目录,再执行make命令。
    运行编译之前,先运行

    make distclean
    

    1.1 适用平台(编译时的board target)

    在这里插入图片描述

    1.2 选择目标平台后执行编译命令

    The following list shows the build commands for common boards:

    • Pixhawk 4: make px4_fmu-v5_default
    • Pixracer: make px4_fmu-v4_default
    • Pixhawk 3 Pro: make px4_fmu-v4pro_default
    • Pixhawk Mini: make px4_fmu-v3_default
    • Pixhawk 2: make px4_fmu-v3_default
    • mRo Pixhawk: make px4_fmu-v3_default(支持 2MB 闪存)
    • HKPilot32: make px4_fmu-v2_default
    • Pixfalcon: make px4_fmu-v2_default
    • Dropix: make px4_fmu-v2_default
    • MindPX/MindRacer: make airmind_mindpx-v2_default
    • mRo X-2.1: make mro_x21_default
    • Crazyflie 2.0: make bitcraze_crazyflie_default
    • Intel® Aero Ready to Fly Drone: make intel_aerofc-v1_default
    • Pixhawk 1: make px4_fmu-v2_default > Warning You must use a supported version of GCC to build this board (e.g. the same as used by CI/docker) or remove modules from the build. 使用不受支持的 GCC 构建可能会失败,因为 PX4 对飞控板有 1MB 的闪存限制。
      Pixhawk 1 的 2 MB 闪存版: make px4_fmu-v3_default
      在这里插入图片描述
      Linux下编译成功:
      在这里插入图片描述
      固件位置:Firmware/build/px4_fmu-v3_default/px4_fmu-v3_default.px4

    1.3 Uploading Firmware (Flashing the board)

    make px4_fmu-v4_default upload
    

    A successful run will end with this output:

    Erase  : [====================] 100.0%
    Program: [====================] 100.0%
    Verify : [====================] 100.0%
    Rebooting.
    
    [100%] Built target upload
    

    1.4 编译命令解析

    This section shows how make options are constructed and how to find the available choices.
    make命令语法:
    make [ VENDOR_MODEL_VARIANT ] [ VIEWER_MODEL_DEBUGGER_WORLD ]
    例如:
    make px4_fmu-v4_default
    make px4_sitl jmavsim

    • VENDOR: The manufacturer of the board: px4, aerotenna, airmind, atlflight, auav, beaglebone, intel, nxp, etc. The vendor name for Pixhawk series boards is px4.
    • MODEL: The board model “model”: sitl, fmu-v2, fmu-v3, fmu-v4, fmu-v5, navio2, etc.
    • VARIANT: Indicates particular configurations: e.g. rtps, lpe, which contain components that are not present in the default configuration. Most commonly this is default, and may be omitted.

    1.5 更多内容

    如:

    • 编译命令解析
    • 其他硬件target的编译
    • 针对仿真平台的编译
      等问题,详细请参考网站PX4开发者手册

    1.6 编译过程中的常见问题

    General Build Errors
    Many build problems are caused by either mismatching submodules or an incompletely cleaned-up build environment. Updating the submodules and doing a distclean can fix these kinds of errors:

    git submodule update --recursive
    make distclean
    

    更多请参考PX4开发者手册 / troubleshooting

    官方例程的使用

    33

    PX4与Ardupilot的区别

    44

    专业英语词汇、英文缩写(学习代码过程中遇到)

    • task_main_trampoline 中的 trampoline :蹦床,跳床,弹床

    • px4_task_spawn_cmd 中的 spawn :引发;引起;导致;造成

    未解之谜

    • 是否函数名字包含main、并且参数列表为(int argc, char *argv[])的函数都会被单独编译成为一个独立的可执行程序???
      如:
    void AttitudeEstimatorQ::task_main_trampoline(int argc, char *argv[])
    {
    	attitude_estimator_q::instance->task_main();
    }
    

    已解之谜

    00

    1. Linux使用

    1.1 与Windows共享文件

    • 虚拟机设计

    在这里插入图片描述

    • Ubuntu共享文件目录的位置
      位置: /mnt/hgfs/
      / 为根目录。
      在这里插入图片描述
      在这里插入图片描述

    1.2 Ubuntu文件管理器中copy、pastepw、delete的进度显示

    在这里插入图片描述

    1. PX4 系统架构概述

    PX4 由两个主要部分组成:一是 飞行控制栈(flight stack) ,该部分主要包括状态估计和飞行控制系统;另一个是 中间件 ,该部分是一个通用的机器人应用层,可支持任意类型的自主机器人,主要负责机器人的内部/外部通讯和硬件整合。

    所有的 PX4 支持的 无人机机型 (包括其他诸如无人船、无人车、无人水下航行器等平台)均共用同一个代码库。 整个系统采用了 响应式(reactive) 设计,这意味着:

    • 所有的功能都可以被分割成若干可替换、可重复使用的部件。
    • 通过异步消息传递进行通信。
    • 系统可以应对不同的工作负载。

    1.1 顶层软件架构

    下面的架构图对 PX4 的各个积木模块以及各模块之间的联系进行了一个详细的概述。 图的上半部分包括了中间件模块,而下半部分展示的则是飞行控制栈的组件。
    在这里插入图片描述

    1. PX4应用开发

    1.1 hello sky

    hello sky

    1.2 UORB

    The uORB is an asynchronous publish() / subscribe() messaging API used for inter-thread/inter-process communication.
    uORB是用于线程间/进程间通信的异步publish()/subscribe()消息传递API。
    数据被封装成一个UORB消息,C++编程编程中,以结构体为消息载体,进行发布、订阅。
    规则:一个发布者、多个订阅者。

    • 订阅

    在这里插入图片描述

    • 发布

    在这里插入图片描述

    • Topic的读写
      读: 获取该Topic对应的UORB消息。
      写:发布最新(更新)UORB消息。
      通过句柄的方式对Topic进行读写。
      句柄:在程序设计中,句柄是一种特殊的智能指针,当一个应用程序要引用其他系统(如数据库、操作系统)所管理的内存块或对象时,就要使用句柄
      例如:
    //读:
    int sensor_sub_fd = orb_subscribe(ORB_ID(sensor_combined)); 
    struct sensor_combined_s raw; 
    whiletrue{
    int poll_ret = px4_poll(fds, 1, 1000);
    orb_copy(ORB_ID(sensor_combined), sensor_sub_fd, &raw);
    }
    
    //写:
    struct vehicle_attitude_s att;
    orb_advert_t att_pub_fd = orb_advertise(ORB_ID(vehicle_attitude), &att);
    whiletrue{
    att = 传感器硬件接口函数(或驱动);
    orb_publish(ORB_ID(vehicle_attitude), att_pub_fd, &att);
    }
    

    解析:
    在这里插入图片描述
    总结:
    读:
    orb_subscribe( )
    orb_copy( )
    写:
    orb_advertise( )
    orb_publish( )

    1.2.1 Topics

    各应用之间的消息通道被称为 topics ;

    MVLink消息与UORB消息的关系

    • UORB是进程之间的通信机制,遵循订阅、发布主题的原则,这个机制建立在NUttx操作系统之上,UORB消息(message)以C++的结构体作为数据载体,进行发布和订阅。进程(app)之间通信,通过UORB。
    • MALinnk是一种通信协议,该协议广泛应用于地面站(Ground Control Station,GCS)与无人载具(Unmanned vehicles)之间的通信。该协议中,数据的载体被称为消息包(MassagePacket)。消息包则通过串口(或者其他通信接口负责发送,底层实现)。
    • 在飞控中,一些关键的UORB消息通常会包打包成MAVLink的消息包,发送给地面站,如心跳包;飞控也会发送MAVLink消息包给飞控,然后MAVLink消息包被转换成UORB消息发布到对应的Topic中,以便控制飞控,如参数修改,航点写入等。负责打包和发送的进程为MALink_app。发送至地面站的MAVLink消息(包)如下图可在地面站中查看。

    1.3 PX4之UORB开发

    1.MAVLink

    1.1 概述

    • UORB是进程之间的通信机制,遵循订阅、发布主题的原则,这个机制建立在NUttx操作系统之上,UORB消息(message)以C++的结构体作为载体,进行发布和订阅。进程(app)之间通信,通过UORB。
    • MALinnk是一种通信协议,该协议广泛应用于地面站(Ground Control Station,GCS)与无人载具(Unmanned vehicles)之间的通信。该协议中,数据的载体被称为消息包(MassagePacket)。消息包则通过串口(或者其他通信接口负责发送,底层实现)。
    • 在飞控中,一些关键的UORB消息通常会包打包成MAVLink的消息包,发送给地面站,如心跳包;飞控也会发送MAVLink消息包给飞控,然后MAVLink消息包被转换成UORB消息发布到对应的Topic中,以便控制飞控,如参数修改,航点写入等。负责打包和发送的进程为MALink_app。发送至地面站的MAVLink消息(包)如下图可在地面站中查看。

    在这里插入图片描述
    消息包种类、通用的MAVLink消息(包)的定义和用途介绍可以查阅网站https://mavlink.io/en/messages/common.html#messages了解。

    消息包结构封装的信息用于发送消息、接收消息、识别消息种类,而负载信息则用于描述消息所要传达的具体内容,可以理解为信封和信纸的关系

    通过MavLink协议实现通信需要地面站软件和飞行控制软件的协作。地面站软件与飞行控制软件在发送、接收MavLink消息时需要依照预先设定的流程,本文以无人机与地面站连接时通信握手、参数列表请求、参数设定、状态消息包循环收发为例,在第四章介绍。

    1.2 Packets Format(包的结构)

    • MavLink 1.0版本
      在这里插入图片描述
      包中各字段的含义:

    在这里插入图片描述

    • MAVLink 2.0版本
       1234
      包中各字段的含义:
      在这里插入图片描述
      C代码定义:
    uint8_t magic;              ///< protocol magic marker
    uint8_t len;                ///< Length of payload
    uint8_t incompat_flags;     ///< flags that must be understood
    uint8_t compat_flags;       ///< flags that can be ignored if not understood
    uint8_t seq;                ///< Sequence of packet
    uint8_t sysid;              ///< ID of message sender system/aircraft
    uint8_t compid;             ///< ID of the message sender component
    uint8_t msgid 0:7;          ///< first 8 bits of the ID of the message
    uint8_t msgid 8:15;         ///< middle 8 bits of the ID of the message
    uint8_t msgid 16:23;        ///< last 8 bits of the ID of the message
    uint8_t payload[max 255];   ///< A maximum of 255 payload bytes
    uint16_t checksum;          ///< X.25 CRC
    uint8_t signature[13];      ///< Signature which allows ensuring that the link is tamper-proof (optional)
    
    • The minimum packet length is 12 bytes for acknowledgment packets without payload.
    • The maximum packet length is 280 bytes for a signed message that uses the whole payload.

    1.3 Packet 的封装过程

    在这里插入图片描述

    • 包的示例
      本文开始提到MavLink使用消息库的形式定义传输规则,用户可以在在源码中查阅消息库的内容,此处使用Java语言下的消息库作为实例,以便更清晰地展示包结构(MavLink源码自带了多语言的生成器,可从源码中的xml文件转换为对应C,C++,Java等语言的MavLink协议包)。以下表格中,SEQ为计算得出,数值不固定,故用X代替,SYS,COMP两项为笔者使用的Mission Planner地面站设定的系统ID和组件ID,MSG项0代表HEARTBEAT消息的ID,PAYLOAD内存储详细信息,下一章节再介绍,最后的CKA CKB为封包后计算得出,以Y代替。
      在这里插入图片描述
      msg_request_data_stream:数据流请求包,地面站使用该消息包向飞行控制软件提交数据流申请,飞行控制软件收到该消息后将按照设定的参数周期性返回消息包。
      在这里插入图片描述
      例子:
      在这里插入图片描述

    1.4 Packet、messages、commands、enums的关系。

    两个或多个MAVLink系统之间通信的方式:相互收发 Packet 。
    Packet可以分为两类:

    • messages
    • commands
      组成:
      Messages are encoded using message elements.
      Commands are defined as entries in the MAV_CMD enum, and encoded into real messages that are sent using the Mission Protocol or Command Protocol.
      选择:
      如果出现以下情况,请考虑发送message:
    • 所发送的information不适合comand(即,它不适合7个可用的数字字段)。
    • 该消息是另一个协议的一部分。
    • 消息必须广播或流式传输(即不需要ACK)

    如果满足以下条件,请考虑发送command:

    • 该消息应作为任务的一部分执行。
    • 您希望在任务外部使用现有的任务命令。根据自动驾驶仪的不同,您可能可以在两种模式下使用相同的代码来处理消息。
    • 您正在使用MAVLink 1,并且没有新消息的免费ID(MAVLink 1具有比消息ID更大的MAVLink命令免费ID池)。
    • 重要的是,不要错过您的命令消息,因此需要ACK / NACK。使用现有协议确认可能比为确认定义另一个消息更快/更容易。

    否则,可以自由使用任何一种方法。

    Use commands for actions in missions or if you need acknowledgment or retry logic from a request. Otherwise use messages.

    关系:
    messages:
    在这里插入图片描述
    command:
    在这里插入图片描述

    1.5 其他知识点

    区分 information nessages data message-data command enum 的含义即联系。
    message type

    message set 消息集
    message 消息
    消息在XML文件中定义
    大多数地面控制站和自动驾驶仪实现的参考消息集在common.xml中定义
    在这里插入图片描述
    MAVLink方言(Dialects)是XML文件,用于定义协议和特定于供应商的消息,枚举和命令。
    枚举用于定义命名的值,这些值可以用作消息中的选项-例如,定义错误,状态或模式。还有一个特殊的枚举MAV_CMD,用于定义MAVLink命令。
    MAVLink XML文件的大致结构:

    <?xml version="1.0"?>
    
    <mavlink>
    
        <include>common.xml</include>
        <include>other_dialect.xml</include>
    
        <!-- NOTE: If the included file already contains a version tag, remove the version tag here, else uncomment to enable. -->
        <!-- <version>6</version> -->
    
        <dialect>8</dialect>
    
        <enums>
            <!-- Enums are defined here (optional) -->
        </enums>
    
        <messages>
            <!-- Messages are defined here (optional) -->
        </messages>
    
    </mavlink>
    

    MAVLink的enums、 messages,、commands 和 other elements在XML文件中定义,然后使用代码生成器转换为支持的编程语言的库。

    1.4 PX4中MAVLink的使用

    本教程假定你在 msg/ca_trajectory.msg 文件中定义了一个名为 ca_trajectory 的 自定义 uORB 消息,以及在 mavlink/include/mavlink/v2.0/custom_messages/mavlink_msg_ca_trajectory.h 文件中定义了一个名为 ca_trajectory的 自定义 MAVLink 消息。

    此章节旨在说明:如何使用一条自定义uORB消息,并将其作为一条MAVLink消息发送出去。

    展开全文
  • (一)使用商品飞控搭建一台四旋翼

    千次阅读 2017-06-15 11:37:45
    据我了解,很多开始做四旋翼开发的人,都是为了参加...组装一台四旋翼,我们需要机架,四个电机,四个电子调速器,正反桨两对,锂电池,充电器遥控器。 这里我们选择330mm轴距的四轴机架给出推荐的配置。选择如下的

    据我了解,很多开始做四旋翼开发的人,都是为了参加比赛才开始了解四旋翼的,他们本身并不是航模爱好者,在这之前也并没有飞行经验,我认为,在开发四旋翼之前,一定要先组装一台四旋翼,并且掌握好飞行技术。本篇介绍如何用成品飞控组装一台四旋翼飞行器。

    组装一台四旋翼,我们需要机架,四个电机,四个电子调速器,正反桨两对,锂电池,充电器和遥控器。

    这里我们选择330mm轴距的四轴机架给出推荐的配置。选择如下的330mm尼龙塑料机架,很便宜,而且不需要碳纤维机架的调平等对新手不友好的操作,炸鸡成本低,非常适合新手入门使用。


    我建议的330mm轴距采用的电机是飓风2208 1380kv的无刷电机,搭配8寸桨和3s锂电池,可以获得充盈的动力,同时飞机整体大小合适,比较容易调参,并且危险性也相对较小。电机和螺旋桨的参数含义需要弄明白,搞清楚每个参数的影响。注意XXD电机不可选。

    电池推荐使用3s2200mah到3300mah之间,电池品牌的选择非常重要,推荐使用花牌,格氏,达普这几个品牌,注意老虎电池,狮子电池是万万不可使用的,飞行有风险,省钱就是费钱的开始。

    电子调速器推荐使用好盈铂金30A,这款电调适用330mm到680mm级别的四轴,买一次用一辈子。注意XXD电子调速器不可选,曾经在参加航空模型锦标赛时,主办方分发的XXD电调全体缺相还有的着火。。。

    螺旋桨的选择比较随意,不建议用碳纤维桨,用质量好点的塑料桨就可以了。

    另外在组装四轴时需要用到一些其他的配件,魔术贴,尼龙扎带,电池扎带,XT60接头(根据电池来选择T插和XT60,建议使用XT60),硅胶线(14AWG左右),螺丝胶,内六角螺丝刀,电烙铁啥的也就不用说了,建议新手多逛逛淘宝航模店,搞清楚每一个耗材的用处。

    下面重点说一个飞控,成品飞控。

    新手不建议直接APM或者PIX,也不建议没有自稳功能的KK飞控,新手万不可被开源的幌子迷惑。建议新手直接上手QQ飞控,资金稍微充足一点的上手DJI NAZA或者DJI NAZA V2。这几款飞控我都用过,调参很方便,飞行稳定性好,有中文说明书,能够让新手快速开始飞行。

    在熟悉了飞行操控之后,建议直接跳过APM飞控,上手Pixhawk飞控,Pixhawk是目前最强大的开源飞控,配合mission planner或者qGroundcontrol地面站可以实现非常丰富的功能,特别是Pixhawk的日志功能,将会是后面我们验证自己的算法的有力工具,所以如果条件允许,我建议做四轴开发的同学,除了用自己的飞控板搭建一台四旋翼,同时还要有一台用Pixhawk搭建的四轴,通过pixhawk的日志功能验证算法可以降低调试风险,并且日志可以直接转化为MATLAB文件,在matlab中调试,事半功倍。具体方法将在后面介绍。Pixhawk飞控目前市场上的质量层次不齐,建议购买雷迅科技的Pixhack V3,这是最新的Pixhawk硬件版本,并且内置减震,质量也有保障。(不建议新手直接阅读PX4或者Ardupilot的代码,不过驱动部分的代码可以参考)

    总而言之,我对四旋翼开发新手的建议是,先使用QQ,NAZA这样的飞控,组装一台四轴,并飞起来,飞行技术要勤加练习。然后将飞控换位雷迅家的Pixhack V3,并能够调试好,学会使用Pixhawk飞控好地面站的大部分功能,特别是日志分析功能。最后另外搭建一台使用自己的飞控板的四轴,建议两台四轴使用相同配置。


    展开全文
  • 在校准之前请先进到全部参数确定罗盘ID是否数量正确,Pixhawk2 Cube / Pixhack-V3 / UAVS-V3有两个内置罗盘(一般Pixhawk只有1个内置),如果插上一个外置罗盘就必须看到3个不同的罗盘ID,如果不是这样,请检查接线或其它...

    基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第一篇)安装调试

    本文内容大部分来自Kris,我们的K大,在VTOL领域的大牛,在此,非常感谢K大。能引用K大的成果也是自己的荣幸,不便之处还请K大多多包涵,在此引用只是为方便自己日常学习,部分参数表里根据自身情况,增加了修改环节和相应参数。

    先来一张PIX的原理图

    在这里插入图片描述

    1.安装及下载Ardupilot官方固件:

    VTOL固件的来源可分为Ardupilot官方固件及二次开发固件。官方固件分为三种版本(稳定版/测试版/开发者master版本),通常越新的版本功能越多且改掉了已知的bugs(但可能有未知的Bugs! ),如果要刷稳定版只需点击1->2->3(飞机的图示),如下图:在这里插入图片描述
    如果要刷测试版请点击右下方的Beta Firmware,此时飞机图示下方会出现版本编号,当点击飞机图示就会进入刷固件程序.

    如果您想安装开发者DEV版本,可点击Download Firmware就会打开官方下载固件网页(http://firmware.ardupilot.org/),开发者版本是以日期来分类,且支持的飞控板相当多,如果是Pixhawk则为PX4或FMUV3(ChibiOS),找到想下载的固件请点击右键->另存目标(或另存连结为…)以下载固件.
    在这里插入图片描述
    *下载二次开发版本固件(QQ_Group Firmware):
    您可以进入这个Dropbox连结来下载固件(大陆模友请到QQ群文件下载,一样的,这边下载要翻墙):
    https://www.dropbox.com/sh/ircqhf6phsgagk3/AAA_Cw3VwoHm2o_viCWHZJj9a?dl=0

    固件是按照[版本号_日期]来区别新旧版本的,所以您会看见很多个数据夹,每个版本的修改说明在readme.txt内,通常日期越新的功能越多且改掉了已知的Bugs(但可能有未知的Bugs),所以请自行判断要使用什么版本.

    那一种飞控要下载那一种固件则请对照下图:
    .px4是Nuttx(旧OS,效能低)的固件,而.apj是ChibiOS(新OS,效能高)的固件,有些飞控两者皆可刷(如下图),请自行决定要刷那一种.
    注:ChibiOS目前仍在试验阶段,已经可以正常使用了,但也可能有未知的Bugs! 及未完成的功能:
    https://github.com/ArduPilot/ardupilot/issues/8109
    在这里插入图片描述
    注:
    如果您的Pixhawk是没有1mb-flash Bug的飞控,可以刷V3或FMU_V3两种版本,如果检测是有Bug的硬件,则只能刷FMU_V2.apj,检测方法: https://diydrones.com/forum/topics/pixhawk-1mb-flash-limit。
    *安装二次开发版本固件:
    请点击1->2->3(Load custom firmware),再选择您下载的固件,以刷到飞控内.
    在这里插入图片描述
    *刷固件的过程可能出现的错误及排除方法
    1.找不到[Load custom firmware]这个按钮.
    这个是因为MP的高级功能没打开,请打开它.
    在这里插入图片描述

    2.插上飞控后出现"找不到驱动",或”驱动安装失败”,或COM??一直没有出现.
    这个是您计算机驱动安装的问题,可以尝试重新安装最新版的Mission Planner.
    如果无法解决.您应该找计算机专家,这个不在本教程的范围,所以请自己想办法,或换台计算机试试.
    3.加载固件失败,或MP傻在那边没反应,无法顺利刷入.
    可以尝试以下几种方法:
    a.SD卡没有插(或故障),请换一张SD卡.
    b.先不要插上飞控,在选好固件出现提示按[ENTER]后再插上飞控.
    c.先插上飞控按[联机],在联机后按[断开联机],再选择要刷的固件.
    d.先插上电池(以电池供电)在听到开机音后再插上USB,再到步骤c
    e.换条USB线(太长或是接触不良)无法供应足够的电.

    4.刷完后找不到Com??(等很久一直没有出现)
    这个可能是刷了ChibiOS(.apj固件)后会重新安装驱动,而安装驱动出错了,所以也是计算机问题,或许可尝试移除MP再到官网下载最新版本的MP有附最新驱动,如果实在没有能力解决,可以用上面项3的b来刷回Nuttx(.px4)固件.

    5.开机出现奇怪的声音.
    请到官网 http://ardupilot.org/copter/docs/common-sounds-pixhawkpx4.html 听听看是那种声音,上面都有写原因.

    6.RGB LED闪的灯号怪怪的!
    请到官网 http://ardupilot.org/copter/docs/common-leds-pixhawk.html 看看LED是闪那种,上面也有写原因.

    如果您尝试了以上方法仍然失败,那您可能要换个飞控试试了,或许坏了,又或许是不良率.

    垂直起降固定翼 -导入参数

    *下载参数文件:
    您也可以进入Dropbox的Parameters活页夹内有每个机型的参数文件,请按照自己的机型来下载,这个可以节省您很多的调机时间(大陆模友请到QQ群文件下载,一样的,这边下载要翻墙).
    https://www.dropbox.com/sh/ircqhf6phsgagk3/AAA_Cw3VwoHm2o_viCWHZJj9a?dl=0

    *重置参数(恢复出厂值):
    第一次刷固件务必重置参数(只有第一次刷要这么做,以后升级是不必重置的),因为第一次刷上固件后参数内存什么值是不可预期的,所以我们必须重置参数为默认值.
    重置方法很简单,只要按下1->2->3(Reset to Default),再重新开机即可.
    这步骤应该不会出什么错,如果找不到[Full Parameter List],那你就是没仔细看前面写的了.
    在这里插入图片描述
    *导入参数:
    点击1->2->3(Load from file),再选择您下载的机型参数.
    在这里插入图片描述
    这边要特别注意,因为这个步骤要操作好几次,且禁止用数传来导入(大批量更新时数传可能会掉封包):
    第一次导入会出现一大堆的错误(找不到参数名称),这是因为有些参数要先打开才会看到有关的参数,例如Q_Enabled=1后才会看到Q_开头的参数,所以我们导入后按下[Write Params]写入参数->重新开机->再重复一次导入步骤.
    经过几次导入后会发现错误剩下几个(或许没有错误了),此时请改用[Compare Params]比对参数,再按写入并重新开机,应该所有参数都导入完成了,如果还有几个错误那就算了,有可能是新旧版本参数名称不同(或改了),您也可以透过下一章节(参数设置)去核对它.

    警告:
    1.在还没有导入参数或正确设置参数前,不可插上舵机(Servo),因为您有可能把舵机插到490Hz的电调(ESC)Main out或AUX out上,舵机会烧掉.

    2.舵机务必分开供电(以独立的UBEC供电),绝对不能吃飞控的电,这个要特别注意.
    如果没有分开供电,不是舵机不会动,就是飞控在空中断电重新开机.

    3.倾转舵机(尤其是UAVS厂牌),务必以高压(6.0V-8.0V供电,建议用UAVS提供的7.0V UBEC供电),绝对不能插5.0V(5V力量达不到,在大Kg工作时电流增大,可能烧掉机板)

    4.有些飞控的Main out及AUX out最大只能插5.5V,如果您的BEC电压是6V(或更高),不可以插到Main或AUX out,如果不知道,请询问您的飞控厂商.

    5.飞控送的SD卡通常不会太好,最好自己换张16G高速SD卡,以免航测作业时漏POS或出现SD卡写入错误,或Log断续(甚至没有log).

    图片说明:启用VTOL
    在这里插入图片描述
    在这里插入图片描述

    垂直起降固定翼 -校准加速度计

    加速度计校准分为[六面校准 Calibration Accel] 与 [水平校准 Calibration Level]两种,六面校准必须在完全平的桌面做校准,所以请在装机前完成它,当装上飞机后就只需做水平校准即可.

    点击1->2->3(Calibration Accel)做六面校准,再按照图片的摆放方式完成它.
    在这里插入图片描述
    *飞控水平(LEVEL)放置,完成后按[ENTER]或点画面中的[Done]
    在这里插入图片描述
    *飞控朝左(Left)放置,完成后按[ENTER]或点画面中的[Done]
    在这里插入图片描述
    *飞控朝右(Right)放置,完成后按[ENTER]或点画面中的[Done]
    在这里插入图片描述
    *机头朝下(nose down)放置,完成后按[ENTER]或点画面中的[Done]
    在这里插入图片描述
    *机头朝上(nose up)放置,完成后按[ENTER]或点画面中的[Done]
    在这里插入图片描述
    *飞控反面(back)放置,完成后按[ENTER]或点画面中的[Done]
    在这里插入图片描述
    *加速度计校准完成
    在这里插入图片描述

    垂直起降固定翼 -水平校准

    水平校准是在装机完成后以多轴四个电机为水平的基础上进行校准,以确保多轴模式悬停的稳定性,期望达成的目的是以QSTABILIZE(多轴自稳模式)在无风环境下尽可能的不飘移.

    简单的说这个水平就是多轴模式的水平,而固定翼的水平则藉由调整TRIM_PITCH_CD(仰角参数)来完成,这个参数的单位是百分度,例如100表示1度(以多轴的水平抬头1度为固定翼的仰角).

    注:除了以多轴为水平来校准,也可以使用固定翼水平来校准,而多轴与固定翼的角度差则藉由Q_TRIM_PITCH参数来调整,这个参数的单位是度,例如1.2表示1.2度(以固定翼的水平偏差1.2度为多轴水平).

    不管使用那个水平,只要架好水平再按下1->2->3,再等个几秒钟会出现"校准成功”的提示.
    注意:在校准期间请勿移动飞机,请保持静置不动.
    在这里插入图片描述

    垂直起降固定翼 -罗盘校准

    罗盘应该在装机完成后校准,但也可以暂时贴在飞控上先校准试试看,确定都没问题再装机.
    但机装后仍然必须再校准一次(方法一样的),且装机后最好用数传以电池供电来校准(USB可能供电不足).

    在校准之前请先进到全部参数确定罗盘ID是否数量正确,Pixhawk2 Cube / Pixhack-V3 / UAVS-V3有两个内置罗盘(一般Pixhawk只有1个内置),如果插上一个外置罗盘就必须看到3个不同的罗盘ID,如果不是这样,请检查接线或其它问题.
    在这里插入图片描述
    关于罗盘干扰:
    由于垂直起降固定翼(VTOL)在多轴模式的电流很大(>60A)且集中于两侧机翼,很难避开干扰罗盘问题,如果实在无法排除电流磁场干扰,只能禁用两个内置罗盘,只用1个外置或2个外置罗盘.

    关于罗盘安装方向:
    新的固件会自动识别罗盘方向,所以在校准页不需设置方向,如果校准完成发现偏转了90度(由Mission Planner地图可观察到,屏幕正上方为北边),先检查附近是否有干扰,或换个位置做校准.

    关于CANBUS罗盘:
    MP地面站只有3个罗盘位置,如果您有4个罗盘(例如外置GPS1,Pixhawk2内置2,CANBUS*1),则您必须使用COMPASS_TYPEMASK这个参数来关闭一些罗盘,方法请看http://ardupilot.org/plane/docs/parameters.html 搜寻”COMPASS_TYPEMASK”参数,例如您只要CANBUS罗盘,则COMPASS_TYPEMASK=6143(二进制:1011111111111).
    如果您有2个CANBUS罗盘,则必须关闭其中一个(例如CANBUS GPS内置罗盘),因为目前CANBUS上只能有1个罗盘,所以使用参数CAN_D1_UC_MAG_ID=55(指定CANBUS高精度罗盘ID).

    进入罗盘校准页将勾选及设置如下图,再按1->2->3(Start)就可以把飞控及罗盘拿起来转动,只要每个方向都有转到,进度条就会一直增加到100%.
    在这里插入图片描述
    罗盘校准完成,请将飞控重新开机,如果校准失败则检查附近是否有磁性物体,请远离再试.
    在这里插入图片描述

    垂直起降固定翼 -GPS安装/设置

    === GPS安装位置设置(注意:单位是米,0.1米=10公分) ===
    GPS_POS1_X(正值为机头方向,负值则靠机尾方向安装)
    GPS_POS1_Y(正值为靠右翼方向,负值则靠左翼方向安装)
    GPS_POS1_Z(正值为向下,负值则向上方向安装)
    注:方向为人站机尾往机头方向看,第二个GPS方向(GPS_POS2_*)设置同上.

    === 双GPS设置 ===
    GPS_AUTO_SWITCH 自动切换设置(0=无,1=使用收星品质较好者,2=双GPS融合,3=使用第2个GPS)
    如果设置为2(双GPS融合),可以选择融合方式,参数
    GPS_BLEND_MASK
    bit0(1)=水平
    bit1(2)=垂直
    bit2(4)=速度
    例如GPS_BLEND_MASK=5(1+0+4)表示融合水平及速度.

    === CANBUS GPS设置 ===
    如果只有一个GPS(CANBUS GPS):
    GPS_TYPE=9(CANBUS)
    GPS_TYPE2=0(无)
    如果有一般GPS+CANBUS GPS:
    GPS_TYPE=1(一般GPS)
    GPS_TYPE2=9(CAN BUS GPS)
    它们可以藉由GPS_AUTO_SWITCH参数来设置如何自动切换.

    注:通常CAN GPS内有内置罗盘及RGB LED,例如UAV-AI的CAN GPS参数设置如下:
    CAN_P1_DRIVER=1(启用CANBUS1,设置后重新开机才会出现底下CAN参数)
    CAN_D1_PROTOCOL=1
    CAN_D1_UC_MAG_ID=0
    CAN_D1_UC_NODE=10
    CAN_P1_BITRATE=1000000

    垂直起降固定翼 -遥控器校准

    首先确定接线正确,将遥控器接收机的SBUS(或PPM)插到Pixhawk的RCIN接口,并在Mission Planner的遥控器校准页看到打舵方向是正确的,确认方法如下:
    只要记住除了升降舵(PITCH)打杆方向与Mission Planner上的相反(往前推杆=进度条降低,往后拉杆=进度条高),其它信道都是跟随进度条的,如果不是这样请更改遥控器内的通道反向(尽量不要在MP校准页勾选反相,尤其是油门CH3,否则将造成log分析的困扰及延伸的问题),如果遥控器有动过通道微调或END POINT的请还原,有调整遥控器EXP的也请还原.

    如果没有问题,请按下画面上的1>2>3进行校准.
    在这里插入图片描述
    开始校准后请将遥控器每个摇杆打到左右(或上下)的极限来回数次,遥控器上面的开关也来回拨动,此时会在MP看到左右(或上下)的红线,这个红线就是遥控器的最小及最大行程量.
    最后再按下[校准完成],等待数秒后MP会出现一个列表,告诉你每个通道的行程量,这样就完成校准了.
    注意:在设置 飞行模式/失控保护/电调校准/电机测试 前,必须先做遥控器校准.

    垂直起降固定翼 -飞行模式设置

    所有飞行模式请看教程[飞行模式说明],并将参数FLTMODE_CH=5(使用遥控器信道5当模式开关信道),设置模式开关有底下几种:
    在这里插入图片描述
    注意:以下模式开关只针对群固件可以这样设置,如果使用官方固件,请自己使用开关混控方式,由于混控方法每种遥控器不同,请自行到网络上找教学,以下将针对群固件的方式做说明.

    两个三段开关控制5个模式(最简单的方法,任何人都会的):
    1.进到遥控器的信道设置将信道5(CH5)指到一根3段开关(例如SA开关),这个开关最好不是在控制油门的那只手(因为你不会希望控制油门的同时又去切开关).
    2.拨动开关会看到上图的变化,只要把[开关下]选择为FBWA,[开关中]选择为QSTABILIZE,[开关上]选择为QLOITER,其它3个选不到的位置则不管它.
    3.进到遥控器的信道设置将信道7(CH7)指到一根3段开关,这个开关最好在主模式开关的另一只手(可以避免混乱中混错).
    4.将参数 RC7_OPT=104(注意是RC7_OPT而不是RC7_OPTION,别搞错),这样你会多了两个模式可以用,当该开关切到中间=LOITER(固定翼绕圈),开关切到高=RTL(返航,记得将RTL_MODE=1开启混合式RTL).

    操作方法如下:
    a.主模式开关中位(QSTABILIZE多轴自稳)解锁并以多轴起飞.
    b.到达高度后主模式开关高位(QLOITER多轴悬停)并将油门置中再将飞机转头到自己习惯的角度,此时飞机是停在一个点不动.
    c.主模式开关低位(FBWA固定翼自稳),其它舵都别乱动(此时杆位应该都是置中的).
    d.等待转换完成(莫约3-5秒),就可以开始飞你的固定翼.

    如果要转回多轴,直接把开关切到高位(QLOITER)就行了,它会自己控制滑行+煞车再悬停,如果要LOITER或RTL就切另一个开关.

    两个三段开关+一个两段开关控制6个模式(会设置两根开关混控的人):
    1.进到遥控器混控设置将一个两段开关与一个3段开关由通道5混控出6个模式.
    2.将模式选择FBWA/QSTABILIZE/QLOITER/AUTO(有3个),其中的AUTO当成两段开关,只要那根2段开关高位(另一根3段开关不管在那个位置)都是AUTO,这样在混乱中不易搞错,而且当AUTO进行中仍然可以将3段开关预先切到你想”救机”的位置而不会影响目前正在AUTO的任务.
    3进到遥控器的信道设置将信道7(CH7)指到一根3段开关,这个开关最好在主模式开关的另一只手(可以避免混乱中混错).
    4.将参数 RC7_OPT=104(注意是RC7_OPT而不是RC7_OPTION,别搞错),这样你会多了两个模式可以用,当该开关切到中间=LOITER(固定翼绕圈),开关切到高=RTL(返航,记得将RTL_MODE=1开启混合式RTL).

    操作方法与第一种方式一样,只差别在多了一个AUTO(最高优先权的AUTO开关),执行自动作业建议使用此方法,可以确保遥控器失控/断续情况下飞机的稳定性,AUTO模式不会因信号断续被随意改变.

    注:
    除了RC7_OPT=104外,另有RC7_OPT~RC9_OPT功能代号如下:
    0=禁用
    3=3向量Y3专用(低位=后侧单电机推力,中位=前侧双电机推力,高位=前后三电机推力)
    31=(同上功能,但双前拉时尾电机会自动倾回)
    32=(同上功能,双前拉时尾电机会自动倾回,单后推时前拉电机会自动倾回)
    4=4倾转X4专用(低位=后侧双电机推力,中位=前侧双电机推力,高位=前后四电机推力)
    104=开关中位=LOITER(绕圈),开关高位=RTL(自返)
    106=开关中位=FBWB(FBWB定高模式),开关高位=CRUISE(巡航模式)
    109=相机快门触发
    118=QLand 模式(原地多轴模式自降)
    124=航线任务重置(Auto Mission Reset)
    128=继电器1 (开关高位=开, 开关低位=关)
    134=继电器2 (开关高位=开, 开关低位=关)
    135=继电器3 (开关高位=开, 开关低位=关)
    136=继电器4 (开关高位=开, 开关低位=关)
    例如:
    RC7_OPT=104,则遥控器开关CH7在中位时是Loiter模式,开开打到高位是RTL.
    RC9_OPT=109,则遥控器开关CH9打到高位就会拍一张相片(且会存CAM位置).

    垂直起降固定翼 -电调校准

    进行电调校准前,请先确定以下事项:
    1.已做过遥控器校准.
    2.确定Servo?_Function设置与电调插的PWM位置无误,例如Servo9_Function=33则电调1已经正确插在AUX1接口上了,且注意信号线及GND不要上下插反.
    3.飞控已经可以解锁了,如果在室内无GPS不给解锁,请将ARMING_CHECK=0(关闭自检).
    4.有装安全开关的人在校准时也别忘了按,如果要暂时禁用安全开关可将参数BRD_SAFETYENABLE=0.


    VTOL的电调校准方法跟多轴或固定翼不同,请按照以下方法来为电调做油门校准:
    1.拆桨(务必拆桨,安全至上)
    2.插上USB连接到Mission Planner,但不要插上电池.
    3.进到全部参数页将以下参数修改:
    Q_ESC_CAL=1(启用电调校准)
    Q_M_PWM_MAX=2000(电调最大行程PWM)
    Q_M_PWM_MIN=1000(电调最小行程PWM)
    4.多轴QStabilize模式解锁(有装安全开关的,要按安全开关,或BRD_SAFETYENABLE=0禁用安全开关).
    5.油门推到最高,插上电池.
    6.听到发出高位确认音(通常是”滴.滴”两个音),油门收到最低.
    7.听到发出低位确认音,完成.
    8.重新开机(重新开机后Q_ESC_CAL会自己改回0).
    某些电调在步骤6会发出急促滴.滴.滴.~音.
    可能是步骤46太慢了,必须在电调发出告警(约2秒)要完成,所以重复步骤46(某些电调才这样,正常是不会的)


    注:
    a.此方法只会校准多轴电机,如果是4+1(或4+2)机型,则主电机的电调请自己插在接收机校准.
    b.这个方法校准一直失败怎么办?
    那只好采用另一种校准方法了…
    1.请将参数修改如下:
    Q_ESC_CAL=0(关闭电调校准)
    Q_M_PWM_MAX=0(电调最大行程PWM,0=以遥控器接收机的RC3_MAX最大油门值为准)
    Q_M_PWM_MIN=0(电调最小行程PWM,0=以遥控器接收机的RC3_MIN最小油门值为准)
    2.把电调油门线一个一个拆下来插到接收机的CH3(油门).
    3.遥控器油门杆推到最高->插上电池,听到高位确认音将油门收到最低.
    4.听到低位确认音->拔下电池,这样就完成1个电调的校准.
    5.重复步骤2-4直到所有电调校准完毕.
    c.可以观察Mission Planner地面站ServoOut页,看看PWM输出的对不对.

    当电调校准完成后就可以测试电机旋转方向或编号(可以使用MP内的电机测试功能来确认)是否正确了.

    垂直起降固定翼 -电机测试

    注意:进行电机测试前请先做好电调校准且确定飞机可以正常解锁且桨已经拆除.

    打开Misssion Planner进入电机测试页,将Throttle(油门%)输入20%,转动持续时间设置为5秒,如下图:
    在这里插入图片描述
    当按下Test motorA-D(测试电机A-D),电机会以20%油门转动5秒,这边要注意A-D并不是按照电机1-4的编号,而是顺时针方向的,此时可检查电机方向与电调油门是否插对孔,如果不确定编号及转向是否正确,可查看 http://ardupilot.org/copter/docs/connect-escs-and-motors.html 或是教程最后几页的接线图也有电机编号表.

    另外要注意机架类型X与H的分别,这边提到的H机架其实是中文字的”工”,这种H机架在VTOL相当少见(至少我DIY的机架都没有这样的),H机架是由机身穿出转动轴而非固定在机翼上,只要机臂固定在机翼上的几乎都是X型,如果X/H搞错会造成YAW(偏航轴)的控制不良而自旋.

    垂直起降固定翼 -固定翼舵机设置

    新版固件已取消V尾及飞翼旧的混控方式,改以更直观的编号方式来设置,详细编号表在本教程的附录内.
    其中77-80这4个编号就是新的设置编号,左右方向是人站在飞机后面往机头方向看.
    编号:77 功能:飞翼-左舵机(免混控)
    编号:78 功能:飞翼-右舵机(免混控)
    编号:79 功能:V尾-左舵机(免混控)
    编号:80 功能:V尾-右舵机(免混控)
    例如飞翼设置:
    Servo2_Function=77 (飞控的MainOut-2插飞翼左舵机)
    Servo4_Function=78 (飞控的MainOut-4插飞翼右舵机)
    例如V尾设置:
    Servo2_Function=79 (飞控的MainOut-2插V尾左舵机)
    Servo4_Function=80 (飞控的MainOut-4插V尾右舵机)
    舵机行程量:
    Servo?_Min=1100 (舵机的最小行程量)
    Servo?_Max=1900 (舵机的最大行程量)
    Servo?_REVERSED=0 (0=正常,1=舵机反向)
    注意:
    *如果是倒V尾的机型则左右颠倒设置即可(79=右,78=左)
    *Servo1~Servo14都可以用,就喜欢插那就插那,编号对就行了.
    *如果插到Servo13-14(也就是AUX5-6),则要注意BRD_PWM_COUNT=4(默认)要改成6,否则AUX5-6是Relay信号输出而不是PWM信号,插上去当然不会动.
    *编号设置好了务必重新开机,否则不会生效.
    *还没设置好编号前千万别先插舵机上去,因为可能输出不是舵机信号,如果把舵机插到490Hz的电调界面,舵机烧掉是正常的,所以要注意.
    *舵机一定要分开供电,不可以吃飞控的电,直接插上去是不会动的(如果会动,飞控也会随时进入保护模式而断电),所以舵机一定要由外部BEC供电,禁止用飞控的电.

    如何确定舵机方向?
    当插上舵机后有两个方向要设置,分别为[自稳反馈方向]及[遥控器打舵方向],且一定要先确定[自稳反馈方向]正确了才能去设置[遥控器打舵方向].

    如何确定[自稳反馈方向]
    1.用遥控器或地面站把模式设到FBWA模式.
    2.把飞机机头往上抬:
    两片V尾(或飞翼)应该要往下摆,如果不是这样则把该Servo?_REVERSED=1(如果原本已是1,则改为0),就是把舵机反向的意思.
    3.把飞机机头往下:
    两片V尾(或飞翼)应该要往上摆,如果不是这样则把该Servo?_REVERSED=1(如果原本已是1,则改为0),就是把舵机反向的意思.
    左右或Rudder就不必试了,一个方向对了就对了(副翼或飞翼,机翼向上摆则则该副翼舵面要往上翘才正确)

    如何确定[遥控器打舵方向]
    1.用遥控器或地面站把模式设到FBWA模式(或手动模式较易观察).
    2.遥控器升降舵往前推,两片V尾(或飞翼)应该要往下摆,如果不是这样则把遥控器该通道反向.
    3.遥控器升降舵往后拉,两片V尾(或飞翼)应该要往上摆,如果不是这样则把遥控器该通道反向.
    注:遥控器通道反向也可以在RC?_ REVERSED=1设置,但要注意不要连续反了两次,例如RC2_REVERSED=1又再把遥控器通道反向,这样反了两次等于没有反,如果不能确定,则别去动RC?_REVERSED这个参数,让它维持0就好,副翼(或飞翼)也一样,遥控器打向那边则该副翼舵面要往上翘才正确.

    垂直起降固定翼 -倾转舵机设置

    === 倾转舵机有关参数(注:Servo5/Servo6只是范例,您可以自行定义) ===
    SERVO5_FUNCTION=76 (Mainout5插右倾转舵机)
    SERVO5_MIN=1000 (倾转舵机最小行程量)
    SERVO5_MAX=2000 (倾转舵机最大行程量)
    SERVO5_TRIM=1500(此参数无效,因为倾转舵机不会用到中立点这个参数)
    SERVO5_REVERSED=0(倾转舵机反向,0=正常,1=反向)
    SERVO6_FUNCTION=75 (Mainout5插左倾转舵机)
    SERVO6_MIN=1000 (倾转舵机最小行程量)
    SERVO6_MAX=2000 (倾转舵机最大行程量)
    SERVO6_TRIM=1500(此参数无效,因为倾转舵机不会用到中立点这个参数)
    SERVO6_REVERSED=0(倾转舵机反向,0=正常,1=反向)

    Q_TILT_TYPE=2(启用矢量控制)
    Q_TILT_MASK=5(那些电机编号会倾转,这个一个二进制的bits,详细计算方法看附录的参数表)
    Q_TILT_YAW_ANGLE=10(多轴模式用的矢量角度,10=10度)
    Q_TILT_FIX_ANGLE=10(固定翼模式用的矢量角度,10=10度)
    Q_TILT_FIX_GAIN=60(固定翼矢量感度,0=关,60=60%,100=100%)
    Q_TILT_MAX=70(倾转到这个角度等待空速达到,70=70度)
    Q_TILT_RATE_DN=25(向下倾转,转换为固定翼时每1秒倾转几度)
    Q_TILT_RATE_UP=80(向上倾转,转换回多轴时每1秒倾转几度)
    Q_TILT_THR_DN=80(向下倾转,转换为固定翼时最大的油门限制%)
    Q_TILT_THR_UP=35(向上倾转,转换回多轴时最大的油门限制%)

    === 倾转舵机安装 ===
    1.决定Q_TILT_YAW_ANGLE及Q_TILT_FIX_ANGLE:
    这两个角度,一般而言10度是适当的,如果往后倾转10度会打到机翼,或往前10度会卡到机臂(或其它结构),则您必须减小该角度,但不能小于5度,这两个角度只要改变就必须重调Servo?_Min及Servo?_Max(因为角度行程会被改变),所以这两个值最好先决定.
    2.决定安装方向:
    最好不要一正一反安装(log不易看且设置行程常搞错min还是max,有时反向的开机还会弹一下),这个可以经由切换QSTABILIZE与FBWA模式来确定,固定翼一定是水平于机翼中心线,而多轴是垂直于机臂(翼),如果不是这样,则改变SERVO?_REVERSED的值来改变方向.
    3.锁舵机的舵片孔位:
    先将SERVO?_MIN=1000 ,SERVO?_MAX=2000,然后把舵片尽量固定在最接近的舵机孔位上,这个很重要,如果固定错误会造成行程量<900或>2100仍不在控制范围内.
    4.开始调整舵机行程:
    你可以直接输入SERVO?_MIN或SERVO?_MAX的值(反正舵机会移动那个就对了),改变该值舵机就会移动,把舵机调整到水平与垂直(用眼睛看或许有误差,这个可以在空中试飞时若会偏转再来微调).
    也可以直接在Mission Planner的Servo Out页利用键盘的上下键来调整行程(其实也就是直接改变Min及Max的值,意思一样的).
    注:也可以使用舵机测试器来安装,如下图:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    垂直起降固定翼 -遥控信号强度RSSI设置

    有些接收机(例如433Mhz接收机)有遥控信号强度输出接点,可以让Pixhawk显示遥控信号的强度(%).
    而RSSI又分成电压(模拟)及PWM两者,请按照自己的接收机来设置.

    RSSI_TYPE=1(什么类型的RSSI,0=不使用,1=仿真信号,2=PWM信号,3=接收机通信协议)

    仿真信号类型的RSSI:
    RSSI_ANA_PIN=103(模拟信号引脚,Pixhawk的103则为SBUS OUT这个接点)
    RSSI_PIN_HIGH=3.3(模拟的RSSI强度100%时量测电压为多少)
    RSSI_PIN_LOW=0(模拟的RSSI强度0%时量测电压为多少)

    PWM类型的RSSI:
    RSSI_CHANNEL=0(遥控器的第几个CH是RSSI PWM,0=不使用)
    RSSI_CHAN_HIGH=2000(当信号强度为100%时的PWM值)
    RSSI_CHAN_LOW=1000(当信号强度为0%时的PWM值)

    注意:Mission Planner显示的RSSI指的是数传的RSSI,如果要看遥控器的RSSI请选择RxRSSI才是.

    垂直起降固定翼 - 电源模块设置

    === 电源模块参数设置 ===
    BATT_MONITOR=4(电池量测/监控种类,0=禁用,3=仅量测电压,4=量测电压及电流,5=Solo机专用,6=Bebop机专用,7=智能电池板,8=CANBUS智能电池板)
    BATT_SERIAL_NUM=-1(电池序列号,智能SMBus电池用)
    BATT_VOLT_PIN=2(电池电压检测引脚,Pixhawk请设为2)
    BATT_CURR_PIN=3(电池电流检测引脚,Pixhawk请设为3)
    BATT_AMP_OFFSET=0 (电流传感器零电流时的电压偏移)
    BATT_AMP_PERVOLT=17(分流比,量测到1V时是表示几A,值越大则显示的电流越大)
    BATT_VOLT_MULT=10.1(分压比,量测到1V时是表示几V,值越大则显示的电压越大)
    BATT_WATT_MAX=0(允许的最大输出功率W,超过此设置则最大油门会被降低,0=不限制)
    BATT_CAPACITY=15500(电池的容量,请按照自己的电池容量来设置)
    BATT_FS_VOLTSRC =0(低电压量测类型,0=电池量测电压,1=电池回压后的电压)

    === 电池临界(紧急或严重失效)保护设置 ===
    BATT_CRT_VOLT=0(电池临界电压,0=禁用,若低于此则触发BATT_FS_CRT_ACT)
    BATT_CRT_MAH=0(电池临界容量,0=禁用,若低于设置则触发BATT_FS_CRT_ACT)
    BATT_FS_CRT_ACT=0(临界失效采取的动作,0=没有,1=RTL,2=自降,3=终止/关动力)

    === 电池一般失效保护设置 ===
    BATT_LOW_TIMER=10(低电压持续>这个秒数则触发低电压,用于低C电池在大油门时会突然低电压)
    BATT_LOW_VOLT=0(电池低电压保护,0=禁用,若低于此则触发BATT_FS_LOW_ACT)
    BATT_LOW_MAH=0(电池低容量保护,0=禁用,若低于此则触发BATT_FS_LOW_ACT)
    BATT_FS_LOW_ACT=0(一般失效采取的动作,0=没有,1=RTL,2=自降,3=终止/关动力)

    注:
    1.Pixhawk2 Cube有两组电源模块,参数只差别在开头为BATT2_,设置内容同上.
    2.电流的校准必须有功率计才能校准,如果没有请勿随意修改电流校准值.
    3.校准电流也可藉由观察充电器充满时的mAh跟飞控显示的mAh使用量,理论上充满电的电池放出的mAh会接近充电器充入的mAh,如果有差异则增减BATT_AMP_PERVOLT值,只要观察几次就能调到准确.
    4.若用霍尔电流传感器(例如下图这个),因为它的电压支持到12S及180A电流,所以量测参数必须修改如下:
    BATT_AMP_PERVOLT=54.64(分流比,量测到1V时是表示几A,值越大则显示的电流越大)
    BATT_VOLT_MULT=15.7(分压比,量测到1V时是表示几V,值越大则显示的电压越大)

    垂直起降固定翼 -相机快门/热靴

    === 相机快门触发参数 ===
    CAM_TRIGG_TYPE=0(0=PWM舵机信号,1=继电器信号)
    CAM_DURATION=10(快门保持打开的时间,10=1秒,50=5秒)
    CAM_SERVO_ON=1900(快门按下时的PWM值,范围:1000~2000)
    CAM_SERVO_OFF=1100(快门放开时的PWM值,范围:1000~2000)
    CAM_TRIGG_DIST=0(相机触发距离,单位:米)若不为零,则无论处于什么模式只要GPS位置改变了(距离)就会触发快门,注意:在自动任务中应使用DO_SET_CAM_TRIGG_DIST命令来触发快门,所以此值默认为0.
    CAM_RELAY_ON=0(继电器触发是什么电平,0=低电平,1=高电平)
    CAM_MIN_INTERVAL=0(快门触发最短间隔时间,单位:毫秒,1000=1秒)
    CAM_MAX_ROLL=0(如果倾斜超过这个角度,将延时拍摄直到角度恢复正常才触发,0=不限制)
    CAM_FEEDBACK_PIN=-1(相机热靴引脚,收到热靴信号才记录CAM位置于log,-1=禁用,50=AUX1~56=AUX6)
    CAM_FEEDBACK_POL=0(热靴信号是什么电平,0=低电平,1=高电平)
    CAM_AUTO_ONLY=1(什么时候可做距离触发,0=任何时候,1=仅在AUTO模式下)
    Servo?_Function=10(?=快门触发引脚,例如Servo9_Function=10则AUX1插快门触发,范围Servo9~Servo14)
    RC?_OPT=109(?=遥控器快门触发通道,例如RC7_OPT=109则遥控器通道7拨到高位就拍照,范围RC7~RC9)

    === 热靴参数 ===
    BRD_PWM_COUNT=4(AUX1-4为PWM,AUX5-6为一般I/O)
    Servo9_Function=10(AUX1为快门触发)
    CAM_FEEDBACK_PIN=55(AUX6为热靴)
    CAM_FEEDBACK_POL=0(热靴低位触发)
    RC7_OPT=109(遥控器快门触发通道,CH7拨到高位就拍照)
    热靴一旦启用,log内的CAM信息就不再是由快门触发产生,而是收到热靴信号才会产生,如果热靴不起作用会看不到log内有任何CAM信息,要开启热靴一样要打开快门触发参数.

    热靴可以自己DIY一片小板子,或找找现成的板子买(有些快门触发线有附热靴小板).
    在这里插入图片描述
    在这里插入图片描述
    1.买一根快门线把外壳去掉(节约体积,不然机身可能放不下),引出信号线和地线;
    在这里插入图片描述
    2.设置相机到快门优先;
    在这里插入图片描述
    3.连接相机和飞控
    在这里插入图片描述
    4.打开地面站,开启全部参数选项
    在这里插入图片描述
    5.找到全部参数列表,配置参数,配置完成,不要忘了点击“写入参数”;
    在这里插入图片描述
    在这里插入图片描述
    6.接下来找到相机触发按钮,就可以听到“咔咔咔”的声音了。
    在这里插入图片描述

    Pix快门光耦线及制作

    USB 插在相机 上即可远端或自动触发相机拍照 即可远端或自动触发相机拍照
    在这里插入图片描述

    航测相机调整

    根据CH/Z 3005-2010,无人机航测采用的数码相机应满足以下要求:
    (1) 基本要求
    a. 相机镜头应为定焦镜头,且对焦无穷远;
    b. 镜头与相机机身,以及相机机身与成像探测器稳固连接;
    c. 成像探测器面阵应不小于2000万像素;
    d. 最高快门速度不低于1/1000s。
    (2) 检校要求
    a. 相机检校参数应包括:主点坐标、主距和畸变差方程系数;
    b. 相机检校时应在地面或空中对检校场进行多基线多角度摄影,通过摄影测量平差方法得到相机参数最终解,并统计精度报告;
    c. 检校精度应满足:主点坐标中误差不应大于10um,主距中误差不应大于5um,经过畸变差方程式及测定的系数值拟合后,残余畸变差不应大于0.3像素;
    d. 其他检校要求按CH/T 8021执行。
    (3) 数据动态范围
    数据每通道的数据动态范围不应小于8bit,可采用压缩格式,压缩倍率不应大于10倍。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    垂直起降固定翼Pixhawk降落伞的安装与设置

    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    垂直起降固定翼 -空速计校准

    空速计参数设置:
    ARSPD_AUTOCAL 空速计自动校准(0=关闭,1=启用自动校准)
    ARSPD_BUS 空速计在那个I2C BUS上,0=BUS0,1=BUS1,2=BUS2,(请勿随意设置)
    ARSPD_FBW_MAX 最大空速(m/s)
    ARSPD_FBW_MIN 最小空速(m/s)
    ARSPD_OFFSET 空速偏移值(请勿随意设置)
    ARSPD_PIN 模拟空计速的脚位(Pixhawk一般为15,当ARSPD_TYPE=2为模拟空速计时此参数才有用)
    ARSPD_PRIMARY 主空速传感器,如果多个空速计这将选择哪个将成为主要传感器
    ARSPD_PSI_RANGE 传感器PSI(磅/平方英寸)范围(请勿随意设置)
    ARSPD_RATIO 空速计的校准值(默认为2)
    ARSPD_SKIP_CAL 是否关闭地面归零校准.(请勿随意设置)
    ARSPD_TUBE_ORDER 静压管与动压管顺序对调,0=正常,1=对调.(请勿随意设置)
    ARSPD_TYPE 空速计型号:
    0 None(无)
    1 I2C-MS4525D0
    2 Analog(模拟)
    3 I2C-MS5525
    4 I2C-MS5525 (0x76)
    5 I2C-MS5525 (0x77)
    6 I2C-SDP3X
    7 I2C-DLVR
    8 UAVCAN
    ARSPD_USE 启用空速计(0=仅logging记录值,1=启用空速计在飞行中)
    ARSPD2_TYPE 第二个空速计型号(ARSPD2
    参数同上)

    *空速计自动校准步骤(建议使用):

    [1]打开空速自动校准参数
    ARSPD_AUTOCAL=1(启用空速自动校准)
    ARSPD_SKIP_CAL=0(地面禁止不归零,所以开机时若风大必须挡风别灌入空速管,但禁止堵死)
    ARSPD_RATIO=2 (校准值默认为2)
    ARSPD_FBW_MAX=35(最大空速m/s)
    ARSPD_FBW_MIN=12(最小空速m/s)
    ARSPD_USE=1(启用空速计)

    [2]观察空速计是否有效
    开启Mission Planne观察HUD(抬头显示器)上的空速值是否在0-5m/s之间跳动,而且用手揑空速管(动压管),会看到空速值变很大,手放开则恢复0-5之间.
    如果不是这样(例如一直都是0),则往前查原因,禁止做下一步.

    [3]升空
    以QStabilize或QLoiter多轴模式升空并转换为FBWA先绕个几圈,这期间空速会渐渐被校准,你会发现油门跟速度会渐渐跟手,速度与油门的控制变得更好了,你可以用手多绕几圈或切到Loiter(固定翼绕圈模式)让它自动去绕,通常5圈左右就已经可以了,但多绕几圈也是OK的(会更准一些些,只是一些些).

    [4]降落
    降落后连接到Mission Planne,将自动校准参数关闭
    ARSPD_AUTOCAL=0(关闭空速自动校准)
    并观察ARSPD_RATIO参数值已经被改变了,就表示完成了空速校准了.

    空速计手动校准步骤:
    除了自动校准外,你也可以使用手动校准,例如怕空速计不准而出问题,可以不启用空速计做校准,方法如下:
    [1]打开空速计但不启用.
    ARSPD_RATIO=2 (校准值默认为2)
    ARSPD_FBW_MAX=35(最大空速m/s)
    ARSPD_FBW_MIN=12(最小空速m/s)
    ARSPD_USE=0(不启用空速计,仅供记录logging)
    [2]上去绕圈
    以多轴升空后转为FBWA或Loiter模式,就按照自己习惯的方法升空(例如:QLoiter->FBWA->Loiter),绕个至少3分钟再降落,此时空速计没有启用(仅输出空速值而已),所以不会因空速计有问题而发生意外!
    [3]降落并打开记录(log)
    取下Pixhawk上的SD卡插到计算机上再打开Mission Planner->数据闪存日志->回顾日志->选SD卡最后一个文件,勾选右边的 ARSP->Airspeed(空速) 及 GPS->Spd(地速),再对着上方曲线按着Mouse左键拉出刚刚绕圈那个区块(如下图).
    在这里插入图片描述
    [4]计算校准值(这个计算方法也适用自动校准后的微调,或空速管长度变了而懒得做自动校准)
    理论上ARSP->Airspeed(平均空速) 会等于 GPS->Spd(平均地速),但实际上会有误差,我们就透过修改ARSPD_RATIO去校准.
    ARSPD_RATIO其实是个"乘率",值越大则空速越大,以这个例子是2.0太大了,所以我们可以改成1.805(计算方法如下)
    新的ARSPD_RATIO值 = 旧的ARSPD_RATIO * ((平均空速 + 你想要增加的空速 )/ 平均空速)^2
    新的ARSPD_RATIO值 = 2 * ((20 + -1 )/ 20)^2=1.805
    计算出来必须在1.5~3.0之间,此时就可以把ARSPD_USE=1(启用空速计)
    如果不在这个范围,那可能就有其它问题了,例如空速计装错了/管子太长/桨的风直接吹入/Pix通电时空速管被强风灌入/…
    注:^2是平方的意思,我计算机找不到那个符号,如果不知道平方的意思,就把前面自己
    自己 😃

    PID调节原理

    PID控制是自动化控制领域应用非常广的控制方式,P 代表比例,I 代表积分,D 代表微分,从这些名词中可以看出,PID 控制是基于数学中一项重要的分支:微积分学为基础的数字化自动控制方式,它以传感器采集的数据作为输入源,按预定的 PID 参数根据特定的公式计算以后输出控制。

    举个形象的例子,一列即将到站的火车在快要到达站点的时候会切断输出动力,让其凭借惯性滑行到月台位置。假如设置火车以 100km/h 的速度在站前 1km的地方切断动力开始滑行,那么这个 100 比 1,就是比例 P的含义,P 越大,它在站前开始滑行的速度越快。滑行初始速度快的好处就是进站快,但过快的初始滑行速度会导致火车在惯性的作用下冲过月台,这样一来火车不得不进行倒车,但是因为 P 设置过大,倒车以后的滑行也会同样使火车倒过头了,这样一来,就形成了一种反复前行后退的震荡局面。而 P 设置小了,进站速度会变得非常缓慢,进站时间延长。所以设置一个合适的 P 值是 PID调节的首要任务。由于 P 是一个固定的数值,如果将火车的速度与月台的距离用一个坐标图理想化的表现出来的话,不考虑惯性及外力的作用,这两者的关系呈现出来 P 调节的结果会是一条直斜线,斜线越陡,代表进站时间越短。
    在这里插入图片描述
    上图的 P 调节结果只是为了方便理解,在实际中是根本不可能出现的,PID 计算的结果也不是这样子。不管怎样,如果只有 P 调节,火车要么设置一个比较低的 P 值以非常缓慢的速度到达目标月台,要么就是过冲了,很难设置在速度与准确度之间求得平衡。所以接下来该是讲解 D 微分的作用的时候了。

    根据上面举的例子,假如 P 等于 100的时候,火车刚好能滑行到月台,所耗费的时间是 10 分钟。但是对应一个自稳定性能要求很高的自动化系统来说,这 10 分钟的时间太长了,可不可以加快呢?可以,我们把 P 加大到 120,让火车司机驾驶火车在站前 1km 的地方以 120km/h 的速度开始减速滑行,然后站前 500米的时候踩一下刹车让速度降为 80km/h,站前300 米再踩一下刹车让速度降为 50km/h,站前 100 米又踩一下刹车,让速度降为 20km/h,站前10 米让火车在较短的时间内滑行到月台准确的位置,这样一来,进站速度会大大加快,原来需要 10 分钟的时间可能只需要 5 分钟就行了。这就是 D 的作用,我们权且把 D 理解为刹车吧,如果仍旧以坐标图形象表达 D 对 P调节的影响,那就是 D 使 P调节出来的一条直线变成了一条曲线,在 PID公式中,D 的左右就是改变 P 的曲线,D 的数值越大,对 P 的影响也越大。加入 D 后的曲线前期较陡,进站比较快,后期平缓,使得火车可以平稳准确的进站。
    在这里插入图片描述
    相信经此解释后,很多模友已经理解 PD 的作用了,根据 PD 的这个关系,我们可以得出一个调节步骤:先把 D 置零,加大 P值,使飞行器适当过冲开始震荡,然后增加 D 的数值,拉低 P调节后期的作用,使过冲现象放缓,最终调到不过冲为止。P 越大,飞行器倾斜后恢复的速度越快,表现为越灵敏,但过大会产生震荡;D 越大,调节越平缓,表现为越平稳,但 D 过大会使调节时间延长,表现为反映迟钝(这里的 D 指的就是 D的数值,在一般的 PID表述中,D 越接近 0,P 作用越大,这点需要注意一下)。

    最后讲解 I的作用,I 是积分,是为了消除误差而加入的参数,假如上面的例子中,火车靠站以后,离最终的目标停止线还是差了 1 米,我们虽然也可以认为这是一次合格的停车,但这毕竟是误差,如果我们认可了这 1 米的误差,那在此基础上火车第二次靠站就会有 2米的误差了,如此以往,误差会越来越大,所以我们要把这个误差记录下来,当第二次进站的时候就可以发挥作用了,如果差了 1 米,火车驾驶员就可以在原来的 PD 调节基础上进行I积分,延迟 1米输出(或者提前),即 999米开始减速,最终可以刚刚好到达停止线。如果没有 I 的作用,在多轴飞行器平台上的表现就是飞行器越来越倾斜,最终失去平衡。I 的调节是建立在 PD 的基础上的,PD 的改变都会影响 I 的效果,所以最终的调节步骤就是先调 P 确立灵敏度,接着调节 D 调整平稳度,最后调节 I 确定精度。

    垂直起降固定翼 -自动调参(多轴模式)

    这个自动调参指的是调整多轴PID,而不是固定翼自动调参,固定翼的部份请看下一节.

    自动调参步骤:
    1)将任一个飞行模式设置为QAUTOTUNE(自动调参)模式
    如果使用旧版Mission Planner不认得这个QAUTOTUNE模式,可以进入全部参数表将
    FLTMODE?=22(QAUTOTUNE模式的编号),例如把原本的FBWA(编号5)暂时改成22.
    在这里插入图片描述

    2)将参数Q_AUTOTUNE_AGGR=0.1 (0.1 = 激进,0.075 =中等,0.050 =弱)
    这个希望自动调参达成的调参结果,值越大调出来越激进(修正快且强)

    3)将参数Q_AUTOTUNE_AXES选择要调整的轴(横滚,俯仰,偏航)的Bits组合.
    Q_AUTOTUNE_AXES=1(只调横滚轴)
    Q_AUTOTUNE_AXES=2(只调俯仰轴)
    Q_AUTOTUNE_AXES=4(只调偏航轴)
    Q_AUTOTUNE_AXES=7(三个轴向一起调,1+2+4=7,当然也可以1+4=5只调横滚+偏航)
    垂起的建议一个轴一个来调,以免电池用尽了,或长时间悬停把电调烧掉了.

    4)找个无风或微风天且较宽广的场地以多轴模式(QS/QH/QL模式皆可)升空,再把开关切到刚刚
    指定的那个QAUTOTUNE模式.
    注意:调参模式是类似于QHOVER(定高模式),油门置中就会高度固定,所以注意你的油门要置中.

    5)此时会开始自动调参,如果跑太远了可打杆拉回(随时可介入),拉回后把杆中立会继续接着调.
    当不再摇晃就表示已经调参完毕,此时可以打杆试下,如果感觉满意就以QAUTOTUNE模式降落
    并上锁就是记忆,如果不满意就切到别的模式再上锁(不记忆).

    注:
    自动调参后的Pitch的P与D 会大了些,修正很快但有点过激,建议调完自己调降些.
    Yaw轴 P与D太小了,尤其是倾转机型可以更高,所以把D给一个小值(例如0.008),再把P加大(直到锁很紧,用手去拨会大力反抗,这个值可以上调很多而不过激)

    垂直起降固定翼 -自动调参(飞机模式)

    这个自动调参指的是调整固定翼PID,而不是多轴自动调参,多轴的部份请看上一节.

    使用AUTOTUNE自动调参,为您的飞机获得一组良好的横滚/俯仰 PID参数对于飞行至关重要。为此,强烈建议您使用AUTOTUNE自动调参。

    AUTOTUNE做了什么?
    AUTOTUNE模式是一种飞行模式,其飞行方式与FBWA相同,但使用飞行员输入的飞行姿态变化来学习滚转和俯仰的关键值。当飞行员使用遥控器模式开关切换到自动调参模式,然后飞行飞机几分钟。飞行飞行员需要输入尽可能多的尖锐姿态变化(就是最大行程的舵量),以便自动调谐代码可以了解飞机的响应方式。

    设置AUTOTUNE
    将任一个飞行模式设置为AUTOTUNE(自动调参)模式,您还应在地面站的高级参数表中设置AUTOTUNE_LEVEL来选择调谐级别。AUTOTUNE_LEVEL参数控制您想要调谐的积极程度,默认值为6级(中等),适合初学者到中级飞行员。如果你是一个更有经验的飞行员,那么你可以选择7级,这将导致更快的姿态变化。在您还未完全熟悉整个系统之前,不建议使用7级以上的级别,8级以上的级别只能由经验丰富的飞行员使用。

    您还需要确保机身的所有基本设置都正确无误。特别是,确定所有舵面反馈都是正确的,并确保为最小空速设置合理的值。自动调参只会在超过ARSPD_FBW_MIN最小空速才发生作用。如果您没有空速传感器,则仍会使用该值(按地速)。您还要确保已完成遥控器校准。

    其它要检查的事项:
    如果你安装了空速传感器,那么确保它正常工作并且你已经校准过(请参阅前面章节的空速校准)。
    检查您的机身重心,请根据您的飞机机型来确保它是正确的。一般来说,宁可重头也不要重尾。
    检查你的舵面修正是不是正确的(请参阅前面章节),检查您的失控保护设置正确。

    在AUTOTUNE飞行
    完成所有设置后,您可以开始以AUTOTUNE模式飞行。
    您可以用QLOITER(或QSTABILIZE)多轴模式下起飞,在空中转换到FBWA飞机模式后达到习惯高度切换到AUTOTUNE模式。

    当您使用AUTOTUNE模式时,会发生一些事情:
    自动调参系统将立即为您的横滚和俯仰I和D增益以及最大速率设置一些默认值。这些值取决于AUTOTUNE_LEVEL。
    自动调参系统将监控您所需的滚动和俯仰速率(由遥控器杆移动决定)。当要求的横滚或俯仰速率超过最大速率的80%时,自动调参系统将以飞机的响应来学习横滚或俯仰调整。
    每隔10秒,自动调参系统将保存10秒前的参数。这意味着如果自动调参导致您的飞机变得不稳定,您有10秒钟切换到其它模式来放弃保存调整值(当您退出AUTOTUNE模式时,将恢复上次保存的参数)。
    如果您从默认参数开始自动调参,您可能会发现当您第一次进入AUTOTUNE时飞机反应非常缓慢。你会发现随着自动调参的进行,飞机反应将变得更好。当然您要确保您的飞行区域有足够的空间可以长时间缓慢转弯(承前所述,一开始反应很慢,转弯半径当然很大)。
    成功自动调参的关键是使用遥控器杆输入快速横滚或俯仰动作。你应该一次只做一个横滚或俯仰中的一个,你应该快速移动到最大行程的极限(就是用力来回打舵,且舵量最大)。

    所以在横滚方向上你应该首先用副翼杆向右(或左)转弯,然后不久用另一个方向副翼来左(或右)转弯。请注意,在每次操纵杆移动后,您无需等待飞机完全倾斜。只要莫约2秒你就可以快速反转。飞机将向右转,然后在你移动副翼杆时向左转。每次突然反转,它会将调整值提高约5%。因此,您需要至少20次这种运动来学习合理的调整值。

    对于俯仰调整,您需要使用俯仰杆来使飞机像过山车一般。用力向后拉杆向上倾斜,然后不久向下推。继续这样做至少20次。如果您的初始调整值太低,那么当您在AUTOTUNE模式下飞行时,您应该注意到飞机响应变得越来越好。如果飞机变得不够稳定以至于您认为继续飞行是危险的,那么您应该切到其它模式。这将恢复你10秒前的参数。

    不要太早停止
    建议您至少进行20次快速侧倾和至少20次快速俯仰,最好是更多。有些人过早停下来,导致他们的飞机不能很好地应对风,或者没有很好地保持高度。继续在AUTOTUNE模式下飞行,直到你认为飞机飞得很好。

    完成调整
    一旦您通过自动调参学习了合理的横滚和俯仰调整,您应该通过全部参数表来调整其它一些关键参数。
    大多数载机所需的参数是:

    NAVL1_PERIOD:默认值为25,这是一个非常保守的值,它控制飞机在自动模式下转弯的程度(例如AUTO,RTL和LOITER)。大多数飞机适用值都要低得多。完成横滚和俯仰值的成功自动调谐后,应将NAVL1_PERIOD降至14-18。要调整到很好,你应该在自动模式下飞行一个矩形任务并一次调低NAVL1_PERIOD,直到飞机以你满意的速度转弯,并且在飞行中不会“摇尾”。

    PTCH2SRV_RLL:此参数控制要添加多少升降舵以保持机头水平。许多飞机要求对此参数进行少量更改,默认值为1.0。要查看是否需要调整此值,您应该在FBWA模式中保持一个很小的圆(绕圈),而且在没有给任何升降舵输入的情况下将副翼杆打到底。如果飞机会爬高,那么您应该将PTCH2SRV_RLL降低一点(尝试降低到0.95)。如果飞机在绕圈时掉高,则尝试少量PTCH2SRV_RLL(尝试1.05)。如果你需要超过1.3或者低于0.8,那么你可能有其它的问题(例如重心不正确,推力线错误,空速校准不良,或指南针错误)。

    AUTOTUNE记录
    自动调参的进度会记录在dataflash日志中。以下是自动调参的典型日志文件:
    在这里插入图片描述
    ATRP显示正在记录的自动调参类型。值为0表示横滚调整,值1表示俯仰调整。在绘制ATRP图表时您应该选择类型为0或1(不是两者)的数据。

    ATRP.Dequire是所需的姿态变化率(横滚速率或俯仰速率),单位为度/秒。ATRP.Achieved是飞机在姿态变化率方面实际实现的目标。正如您在上图中所看到的,在自动调谐开始时,所需的值远高于实现的值,因为调整增益太低。随着调参的进行,需求和实际开始趋同。上图中的蓝线是ATRP.P值,它是控制器的P增益。你可以看到它从0.8上升到2.2的高点,然后略微下降到1.85左右。

    您还会注意到图表中存在间隙。这是在飞行员不要求高度改变态度的时期。自动调参系统仅在飞行员要求快速姿态变化(超过最大速率的80%)时起作用。

    手动调整与AUTOTUNE
    为了获得最佳性能,您应该执行手动调整,可能从自动调参的结果值开始。自动调参系统被设计为一个保守的系统,可以为大多数飞机获得合理的值,但它不是完美的,如果你是一位有经验的飞行员,你应该花些时间做一些微调来得到更好的性能。

    仍然建议每个人一开始都使用AUTOTUNE。正确调整飞机并不容易,AUTOTUNE比绝大多数用户做得更好。先从AUTOTUNE开始,然后从AUTOTUNE产生的内容开始探索手动调整。

    手动增加D增益可以提高横滚和俯仰响应的精度,并使受阵风和湍流的影响较小。通过以小增量增加增益直到飞机开始振荡,然后,从导致振荡的值减半以得到最佳的D增益。使用此方法产生的振荡可能很大,因此除非您会纯手动飞行,否则请勿执行此步骤。
    如果手动调整I增益,也会更改响应所需的P值,因此仅建议高级用户调整I增益。

    横滚、俯仰、偏航PID手动调试

    一、初步评估
    1.以MANUAL(手动模式)起飞,调整遥控器的微调和油门,保持飞机直线平稳飞行。
    2.切换至FBW-A模式,如果观察发现飞机左右摇摆,则默认RLL2SRV_P值对于飞机来说太高(这不太可能,但可能会发生),您需要立即切换回手动,并要求您的助手将RLL2SRV_P参数减半,然后再切换回FBW-A。
    3.如果飞机俯仰波动像海豚一样,则默认的PTCH2SRV_P值太高(这不太可能,但可能会发生),您需要立即切换回手动,请求您的助手将PTCH2SRV_P参数减半,然后再切换回FBW-A。

    二、横滚控制器的调试
    1.飞机在FBW-A模式下飞行,遥控器副翼杆打舵输出一个快速的角度激励,保持并释放。 在另一个方向做同样的事情。 你想让飞机能够快速顺滑地滚转到新的角度,并且再次回来,没有任何超调或机翼的“摇摆”。如果滚转响应太慢,则以0.1的增量逐渐增加RLL2SRV_P增益,直到您对响应感到满意或者飞机开始以倾斜角振荡或过冲现象。
    2.以0.01的增量增加RLL2SRV_D,直到它开始振荡,然后将其减半。 对于RLL2SRV_D不要超过0.1,不要忘记在着陆的时候检查舵机的温度,因为在极端情况下,这种增益可能会导致伺服运动机构(舵机)的快速运动和过热,从而导致过早的故障。
    3.现在开始将积分增益RLL2SRV_I从其默认值零增加到0.05,直到倾斜角度开始超调或振荡,然后将其减半。
    注意事项:
    1.选择MissionPlanner的飞行数据页面底部的调试框。 你应该在地图上方看到一个滚动的黑色窗口。双击黑色窗口得到一个要绘制的参数列表。更改选择直到您有roll和nav_roll绘制。 Nav_roll是期望值,roll是实际响应值。您可以使用它来查看模型不太明显的过冲和其他行为。
    2.检查nav_roll和roll之间是否有任何稳定的偏移量。如果您已经遵循基本方法,您可能会看到一个偏移量,可以通过将RLL2SRV_I设置为一个较小的值(例如0.01)来消除,这将允许控制回路缓慢修剪副翼期望值以消除稳定误差。
    3.尽管自驾仪会阻止积分器在超过最大副翼时继续增加,但RLL2SRV_IMAX参数提供了额外的保护。该参数设置积分器可以控制的副翼的最大数量。 默认值1500允许积分器修剪总副翼行程的1/3。该参数不需要更改,除非您正在尝试调整控制器,以便能够补偿由于系统故障导致的大滚动偏移。
    4.可以通过将滚动速度限制RLL2SRV_RMAX参数设置为非零值来限制最大滚动速率以使模型更加顺畅。大多数型号的默认值为60度/秒。 将此参数设置为0会使速率限制器关闭,并可使调谐更改的效果更容易看出。如果这个值减小得太远,那么滚动控制器就不能跟上导航控制器的要求,导致飞机轨迹上的过冲和编织。
    5.时间常数参数RLL2SRV_TCONST也可以用于调整倾斜角达到要求值的速度。这个参数的作用主要是在需求滚动的小步骤变化的响应中。 对于较大的滚动要求,滚动速度限制RLL2SRV_I倾向于掩盖其影响。 使该参数更小将使飞机在更短的时间内达到其要求的倾斜角度,但只有在飞机能力的情况下才能。对于该参数来说,机体非常缓慢的响应可能需要稍大的设置值。
    6.在调试窗口中绘制roll_speed。这显示了以弧度/秒为单位的滚动速率。 1弧度/秒的值大约等于57度/秒,所以如果您将RLL2SRV_RMAX设置为60,则在响应一个大的横滚角度时,最大roll_speed应该在1.0以上。 大于1.1的值表示RLL2SRV_P过高应该减小,而小于1的值表示应增加RLL2SRV_P。

    三、俯仰控制器的调试
    1.飞机在FBW-A模式下飞行,遥控器俯仰杆输出一个快速的俯仰角激励,保持并释放。 在另一个方向做同样的事情。 您希望模型能够快速平稳地转向新的俯仰角,并且可以重新归中,没有任何过冲或波浪的现象。如果俯仰响应太慢,则以0.1为增量逐渐增加PTCH2SRV_P,直到您对响应感到满意。
    2.如果您获得俯仰角振荡或过冲,则需要减少PTCH2SRV_P。如果在这一点上您仍然没有足够的响应,那么您需要检查无线电校准,最小和最大俯仰角度,并可能遵循方法2
    3.现在将飞机滚转到每个方向的最大角度。在转弯期间,机头应保持相当的水平,没有明显的爬高或降高。在持续转弯期间有一定的高度损失,因为额外的转动阻力使模型下降导致温和的降高。如果飞机在转弯期间获得高度,那么您需要以增量为0.05从默认值1.0减少PTCH2SRV_RLL。如果模型立即下降,则将PTCH2SRV_RLL从默认值1.0的小增量0.01增加。如果您需要将PTCH2SRV_RLL参数改变在0.7到1.4以外的范围内,那么以前的音调循环调整,空速校准或自驾仪的倾角估计可能会有一些错误。
    4.以0.01为增量增加PTCH2SRV_D,直到它开始振荡,然后将其减半。 对于PTCH2SRV_D不要超过0.1,而不要忘记在着陆时检查舵机的温度,因为在极端情况下,这种增益会导致伺服快速运动,并导致伺服系统过早失效。
    5.现在开始将积分增益PTCH2SRV_I从其默认值零增加到0.05,直到俯仰角开始过冲或振荡,然后将其减半。
    注意事项:
    1.选择MissionPlanner的飞行数据页面底部的调试框。 你应该在地图上方看到一个滚动的黑色窗口。双击黑色窗口得到一个要绘制的参数列表。更改选择直到您有pitch和nav_pitch绘制。 Nav_pitch是期望值,pitch是实际响应值。您可以使用它来查看模型不太明显的过冲和其他行为。
    2.检查nav_pitch-roll和pitch之间是否有任何稳定的偏移量。可以通过将PTCH2SRV_I设置为一个较小的值(例如0.05)来消除偏移,这将允许控制回路缓慢修正升降期望值以消除稳定错误。 可以以0.05的小增量增加PTCH2SRV_I的值,直到您对控制环“重新修整”的速度满意为止。
    3.尽管如果超过最大升降极限,自动驾驶仪将阻止积分器继续增加,而PTCH2SRV_IMAX参数提供额外的保护。该参数设置积分器可以控制的升降最大数量。默认值为1500允许积分器修正总升降舵面行程的1/3。
    4.警告:如果PTCH2SRV_IMAX设置得太高,那么在FBW-A是危险的,如果模型在一个安全速度已经被调平,零升降舵面有可能导致飞机突然抬头飙升,则积分器将继续保持增加 升降舵保持所需的俯仰角直到飞机失速。应将PTCH2SRV_IMAX设置为足够大的值以允许修正更改,但足够小的值有效预防飞机失速。
    5.可以限制用于校正俯仰角误差的俯仰速率(并因此减小过载的数量),将俯仰速率限制PTCH2SRV_RMAX_DN和PTCH2SRV_RMAX_UP参数设置为非零值。将这些值设置为560除以空速(以米/秒为单位)给出相当于约±1g的限制。
    6.时间常数参数PTCH2SRV_TCONST也可以用于调节俯仰角达到要求值的速度。这个参数的影响主要是在对小步调升降期望值的响应中。 对于较大的步调要求,俯仰速率限制PTCH2SRV_RMAX_DN和PTCH2SRV_RMAX_UP倾向于掩蔽其影响。使该参数更小将使飞机在更短的时间内达到其要求的俯仰角,但只有在飞机力所能及的情况下。 对于该参数来说,非常缓慢的响应机体可能需要稍大的设置。
    7.在调试窗口中绘制pitch_speed。这表示升降的速度,单位为弧度/秒。 1弧度/秒的值大约等于57度/秒,如PTCH2SRV_RMAX_DN / UP设置为30,则响应大俯仰角需求时的最大pitch_speed应该在0.5以上。 大于0.6的值将表示PTCH2SRV_P过高并且应该减小,而小于0.5的值将指示RLL2SRV_P应当增加。

    四、偏航控制器的调试
    1.查看YAW2SRV_SLIP和YAW2SRV_INT增益项设置为零,YAW2SRV_RLL增益项设置为1.0,YAW2SRV_DAMP增益项设置为零。
    2.现在将模型从一个方向上的最大偏航角向相反方向最大偏航角快速摇摆。 在每个方向进行几次观察模型的偏航运动。如果当机翼通过水平面时,机头在与偏航相反的方向上偏转(例如,当从左到右偏航时,机头向左),增加KFF_RDDRMIX增益的值直到偏航消失,不要使用大于1的值。
    3.现在在两个方向上偏航模型和转弯。如果模型倾向于将机头偏转到转弯外部,则以增量为0.05从其默认值1.0增加YAMP2SRV_RLL增益项。 相反,如果模型倾向于将机头偏转到转弯入口的内部,则以0.01为增量从其默认值1.0减少YAW2SRV_RLL增益项。 0.7-1.4的范围内为正常。

    五、侧滑控制器的调试
    1.首先调节偏航阻尼器
    2.在任务计划器中打开调试窗口,并绘制横向加速度-ay。
    3.在各方向快速滚动模型,观察横向加速度ay。如果横向加速度位于零附近,并且当您进入或离开转弯时不会改变,则不需要调整侧滑控制。你可以在此完成。
    4.将YAW2SRV_INT增益项设置为1.0。如果这导致偏航角振荡,那么从引起振荡的最小值将其增益减半。
    5.如果您看到ay加速度在转弯期间偏移或尖峰,则以步长为0.5逐渐增加YAW2SRV_SLIP增益,直到误差消失或偏航角开始振荡。如果发生偏航振荡,则将增益从引起振荡的值减半。

    使用Pixhawk日志文件和Mission Planner进行地理标记照片

    在这里插入图片描述在这里插入图片描述在这里插入图片描述

    在Mission Planner中使用网络RTK服务

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    pixhawk日志分析说明

    在这里插入图片描述在这里插入图片描述

    地面站遥测日志分析

    地面站遥测日志(也称为“tlogs”),当你的飞行器链接上地面站的时候,由地面站自动记录的日志
    本章节主要介绍如何配置和访问分析遥测日志。
    Tlog是在APM / PX4和地面站之间发送的MAVLink遥测消息的记录,并且在您按mp地面站上的连接按钮的时刻自动创建。 格式为YYYY-MM-DD hh-mm-ss.tlog,存储在mp安装文件夹中的“日志”子文件夹中,可以在mp地面站选[配置/调试]界面 [planner]中选择存储位置。
    除了“.tlog”文件之外,还创建了“.rlog”文件。 这些包含所有.tlog数据以及来自任务规划者的附加调试输出。 但不能被解析或播放,所以应该被忽略。
    在这里插入图片描述设置遥测速率
    数据从APM / PX发送到地面站的期望速率可以通过mp地面站>配置/调试>planner界面下的遥测速率下拉列表进行控制。 因为通过遥测链路发送的所有数据也记录在tlog中,所以这也控制了保存到tlog的数据速率。
    需要注意的是,由于CPU资源的限制,尤其对于直升机,发送和保存的数据的实际速率可能会低于所请求的速率。
    在这里插入图片描述播放任务
    如果您正在使用无线遥测并通过任务规划人员连接到APM,您的飞行数据将自动记录。 您可以通过执行以下操作来播放这些日志:
    • 打开mp的飞行数据屏幕
    • 单击遥测日志选项卡
    • 按“加载日志”,找到飞行的tlog文件
    并打开
    • 按“play”
    在这里插入图片描述
    您还可以使用滑动进度条跳转到日志中的任意时间点,并使用预定义的“速度”按钮控制播放速度。
    当日志重播时,HUD界面将移动,并且地图上的飞行器位置将按照飞行中的时间进行更新。 通过“状态”选项卡可以看到单个数据值,甚至可以通过点击地图下方的“调试”复选框,将它们显示在图形中,然后双击数据图例,打开一个框,从中可以精确地选择哪个 数据字段如下图所示。 这将显示记录的数据随着飞行任务的进行而改变。
    在这里插入图片描述
    创建飞行路径的3D图像
    您可以通过以下操作创建KMZ文件:
    • 打开mp的飞行数据屏幕
    • 单击遥测日志选项卡
    • 按“Tlog> Kml或Graph”按钮
    • 按“创建KML + GPX”按钮
    • 选择飞行tlog
    在这里插入图片描述
    一个.kmz和.kml文件将沿着原始的.tlog一边创建,这可以在google地球上打开,交互地查看3D飞行路径。 您可以打开Google Earth中的kmz文件来查看航班或路径。 只需双击该文件或拖动它并放入Google Earth。
    在这里插入图片描述
    • 飞行期间使用的不同飞行模式将显示为不同的彩色轨迹。 您可以更改有关飞行路径显示方式的详细信息,包括其颜色以及路径是否延伸到地面:
    在左侧的“位置”窗格中查找日志文件的名称。 它应该出现在“临时位置”文件夹中。
    右键单击单个路径,然后选择“属性”以打开“编辑路径”窗口。
    颜色可以在“样式,颜色”选项卡上更改通过取消检查(检查)“扩展到地面的路径”,可以在“高度”选项卡上删除(添加)路径下的区域
    提取参数和Waypoint
    您可以按照与创建KML文件相同的步骤从tlog中提取参数和路点,但最后一步选择“Extract Params”或“Extract WPs”。
    Extract Params将导致在.log文件旁创建一个.param文件。 此文件是分隔符,包含参数的完整列表(与eeprom中显示的顺序相同)及其在飞行过程中的值。 这可以在excel或文本编辑器中打开。
    提取WP将创建一个或多个.txt文件,其中包含上传到APM / PX4的任务。 可以通过切换到飞行计划屏幕,右键单击地图并选择“文件加载/保存”,“加载WP文件”,在任务计划器中打开这些文件
    从飞行中绘制数据
    可以通过执行以下操作来绘制飞行中的数据:
    • 打开任务计划员的飞行数据屏幕
    • 单击遥测日志选项卡
    • 按“Tlog> Kml或Graph”按钮
    • 按““Graph Log””按钮
    • 选择飞行tlog
    在这里插入图片描述
    当出现“Graph This”屏幕时,使用左或右鼠标按钮单击要显示的项目旁边的复选框。这些项目分组为“RC_CHANNELS”和“RAW_IMU”等类别 ,可打开对应的分组找到想要的栏目。
    如果您使用鼠标左键,该项目的比例尺将显示在图表的左侧。 如果您使用鼠标右键,它将显示在右侧
    多次点击复选框,循环显示所有可能的颜色
    使用鼠标的中间轮更改图形的缩放,通过按住鼠标左键选择图形区域,或者通过鼠标右键单击图形并选择“将缩放到默认值”

    展开全文

空空如也

空空如也

1
收藏数 6
精华内容 2
关键字:

pixhackv2和v3区别?

友情链接: win7.rar