精华内容
下载资源
问答
  • 上,右,下,左,即顺时针次序 padding:6px与padding:6px 6px6px 6px效果相同 如果仅给出两个或三个值,那么缺失边的属性值将取与对...padding:2px 4px 6px与padding:2px 4px 6px 4px的效果相同 FR:徐海涛...

    上,右,下,左,即顺时针次序


    padding:6px与padding:6px 6px 6px 6px效果相同


    如果仅给出两个或三个值,那么缺失边的属性值将取与对边相同的值


    padding:4px 6px与padding:4px 6px 4px 6px 效果相同


    padding:2px 4px 6px与padding:2px 4px 6px 4px的效果相同


     

     

     

    FR:徐海涛(Hunk Xu)
    QQ技术交流群:386476712

    展开全文
  • 从Simulink到PX4——Simulink-PX4插件安装与环境搭建前言0 准备工作1 安装WSL2 Setting up the PX4 Toolchain on Windows3 Setting up the PX4 Tool Chain on Linux4 Downloading PX4 Source Code5 构建代码6 ...

    前言

           作为无人直升机方向的自控搬砖生,一定都不陌生Matlab与Pixhawk,前者是控制律仿真的常用软件,而后者是著名的开源无人机飞控模块。把控制律数学设计变成实际可用的飞控固件是一件令人头秃的事情,而现在Mathworks与Pixhawk从Matlab2018开始(具体Matlab支持版本详见官网)联手打造了Embedded Coder Support Package for PX4 Autopilots插件,用以保护各位研究者的发量。
           由于该插件目前没有在更新,不少插件相关应用都已过时,笔者耗费了不少精力(主要是被网络环境掣肘),才终于完成了Simulink-PX4插件的环境搭建与第一次代码构建工作。折腾期间发现网上并没有很多相关内容,遂整理成文,行文顺序按照Matlab的Simulink-PX4插件设置和帮助文档顺序给出,方便各位同仁。欢迎大家指正。
    提醒:

    1. 本文给出的环境搭建流程,需要一个良好的网络环境,尤其是对Github,raw.githubusercontent.com,Ubuntu软件源等有较好的连接;
    2. Simulink-PX4插件及其帮助文档并没有汉化,以下内容笔者默认各位英语还行;
    3. 本文给出的环境搭建流程需要使用WSL,需要一定的Linux基础;
    4. 笔者默认各位熟悉Github相关操作。

    0 准备工作

           首先介绍一下笔者的软硬件环境:

    硬件:

    • 计算机:Intel 10代NUC I7-10710
    • Pixhawk:1代(FMU-V2)

    软件:

    • OS:Windows 10 1909
    • WSL:Ubuntu 20.04 LTS
    • Matlab:R2019a

           第一步自然是安装Embedded Coder Support Package for PX4 Autopilots插件,Matlab官方给出了链接,注册登录并下载即可。下载下来的文件如图

           打开Matlab,切换到该文件目录,双击安装即可。安装完后会弹出设置页面,如果未弹出可在Matlab附加功能管理中找到。
           帮助文档结构如图

    1 安装WSL

           目前微软给WIN10搭载了一个Linux子系统(Windows Subsystem for Linux, WSL),Simulink-PX4插件使用了该特性以方便构建(build)PX4固件。简单介绍WSL的安装:

    1. 控制面板→程序和功能→启动或关闭Windows功能→适用于Linux的Windows子系统,勾选,确定,等待安装,重启电脑;
    2. 打开微软商店(Microsoft Store),搜索Ubuntu并安装,笔者直接安装的没有版本号的那一个;
    3. 安装完后开始菜单中会多一个Ubuntu,点击打开WSL终端(可多开),等待安装完毕,WSL会让你建一个主账号与密码。

           Matlab教程要求安装Ubuntu 16.04,不过笔者用20.04没有发现问题,现在最新的PX4固件和工具链也不支持16.04了。WSL的文件是可以在WIN10中访问的,具体路径为

    C:\Users\*你的用户名*\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs
    

    这样方便之后查看和管理WSL的文件,WSL可以访问电脑中的硬盘,命令为:

    cd /mnt/盘符
    

           WSL账号密码设置完成后可以更新下源和软件,检查下网络连接,笔者感觉能不换源最好。

    2 Setting up the PX4 Toolchain on Windows

           当Simulink-PX4插件设置进行到这一步会检查你的Toolchain on Windows是否完整,帮助文档中给出了安装Toolchain的教程,这里也是笔者开始踩雷的地方。
           第一步下载Matlab提供的工具链安装脚本并解压,文件存放位置随意。
           第二步在WSL中cd到脚本文件安装位置,执行命令:

    source windows_bash_nuttx.sh
    

           这个脚本会安装Cmake,GCC,Ninja,Git,Python,pip,jdk,FastRTPS和gcc-arm-none-eabi-7-2017-q4-major。此处有几个雷,各位可以先执行一遍命令,分析一下报错信息(没报错的话就直接无视接下来的内容吧),用VScode之类的软件打开这个sh文件具体看里面的命令,笔者总结的雷点如下:
    1.py相关
           现在使用apt安装的话,应该安装python3-pip和python3-serial包,pip install命令也有可能不识别,要使用pip3 install,另外最好把默认python版本更换为python3;
    2. FastRTPS
           windows_bash_nuttx.sh中给出的FastRTPS安装要求为FastRTPS 1.5.0和FastCDR-1.0.7,脚本中给出的wget命令执行时会报OpenSSL错误,即使加上忽略SSL认证的命令,下载的文件也是错误的。现在FastRTPS已更名为FastDDS,安装FastDDS是不会通过Matlab的工具链检查的。笔者前往eProsima的网站自行下载了FastRTPS 1.5.0和FastCDR-1.0.7,安装步骤如下

    eProsima Fast RTPS installation requires the following steps:

    1. eProsima FastCDR library is provided under the folder “requiredcomponents”. Extract the content of the package “eProsima_FastCDR-1.0.7-Linux.tar.gz” and execute:
      $ cd eProsima_FastCDR-1.0.7-Linux; ./configure --libdir=/usr/lib; make; sudo make install

    2. Install the eProsima Fast RTPS software.
      $ cd eProsima_FastRTPS-1.5.0-Linux; ./configure --libdir=/usr/lib; make; sudo make install

    3.gcc-arm-none-eabi-7-2017-q4-major相关
           脚本里安装这个工具的命令本身是没有问题的,笔者在XX上网+没有更换源的情况下成功执行完毕,如果各位也是这样,并且执行

    gcc-arm-none-eabi --version
    

    可以正常返回版本号,就直接可以看第3节了.

           如果不能正常执行脚本中的命令,笔者认为有两个方法:
    1.直接安装最新版gcc-arm-none-eabi:

    sudo apt-get install gcc-arm-none-eabi
    

    最新版可以编译PX4固件,但是编译过程中会出现Warning treated as error的错误,需要研究一下cmake文件的-Werror命令;
    2. 前往gcc-arm-none-eabi官网下载gcc-arm-none-eabi-7-2017-q4-major文件手动安装,这个方法笔者在设置PATH时遇到了一点障碍,没有深究了。

           排雷完成后建议重启Windows让WSL的PATH设置生效。

    3 Setting up the PX4 Tool Chain on Linux

           这一节即执行上一节下载下来的另一个脚本文件以安装Linux下的PX4工具链

    source ubuntu_combined.sh
    

    这一步笔者没有遇雷,最多只有上一节python相关的问题,各位打开脚本文件修改命令即可。

    4 Downloading PX4 Source Code

           终于到下载PX4代码这一步了,Mathworks和Pixhawk合作时PX4的版本还在1.8.0,因此Matlab帮助文档也是让下载1.8.0版的PX4代码。这一步各位自己选定一个代码存放目录,然后在WSL中切换到该目录并依次执行(网好很重要):

      git clone https://github.com/PX4/Firmware.git Firmware
      cd Firmware
      git checkout v1.8.0
      git submodule update --init --recursive
    

    理论上来说这里会切换到1.8.0版的代码并下载,不过笔者在选择和检查PX4代码这一步还是被警告使用的1.11.0版代码,但是构建出的还是1.8.0版,也就没有深究了。

    5 构建代码

    首先选择Cmake设置

    默认就是构建px4fmu。
    然后构建PX4固件

    这里又开始踩雷了:
           首先是Matlab的一个问题,此处点击Build Firmware之后,总会显示构建成功,然而观察Matlab的命令行窗口就可以发现可能build报错结束了。
           然后建议大家在WSL中build固件,比Matlab命令行窗口可读性强一点,以笔者代码存放位置举例,笔者将PX4固件代码存放在C:\mypx4\Firmware中,正常情况下可以看到Firmware\build文件夹中有两个nuttx开头的文件夹,与Matlab的插件设置Select Cmake Configuration一步中下拉菜单内选项相对应,如果你的情况如上所述,那么执行

    cd /*固件目录*/Firmware
    make nuttx_px4fmu-v2_default
    

    就可以在WSL中启动build了,build正常的话如下所示

    笔者在这里踩了三个雷:

    1. 环境没装全,主要是toml、numpy,empy和catkin_pkg这四个包,使用pip3安装即可,再次建议将WSL默认py版本换成3代,上述有些包貌似没2代版本了,装完重启Windows;
    2. 部分脚本文件换行符使用了Windows的换行符而非Linux,用vim打开这些脚本文件,执行:set ff=unix命令再保存退出即可,笔者怀疑这个是刚开始折腾时使用了Windows版PX4代码的原因;
    3. gcc-arm-none-eabi的问题,如果这个工具没有正确安装会报各式各样和它相关的错误,查看报错信息解决吧。如果你装了最新版的gcc-arm-none-eabi就会遇到前述“Warning treated as error”的错误。

    另外,如果你使用fmu-v3及以后版本的Pixhawk,可能会在编译中遇到如下错误(参见此链接):

    FAILED: libuavcan_dsdlc_run.stamp
    

    解决办法是修改(参照此链接修改):

    Firmware/src/modules/uavcan/libuavcan/libuavcan/dsdl_compiler/libuavcan_dsdl_compiler/__init__.py

    至此就完成了首次PX4固件的构建,接下来是对PIXHAWK的设置。

    6 Performing PX4 System Startup from SD Card


           这一步的目的是将Simulink-PX4插件内含的Pixhawk启动脚本“rc.txt”放进Pixhawk的TF卡中。Matlab建议在执行这一步之前最好用QGC地面站将Pixhawk固件刷为最新稳定版PX4。
    脚本文件位置可以在Matlab命令行中执行以下命令前往:

    cd (fullfile(codertarget.pixhawk.internal.getSpPkgRootDir,'lib','etc'))
    

           这个命令会把Matlab当前文件夹重定位到“rc.txt”的储存位置。
    在TF卡根目录中新建文件夹etc,然后将“rc.txt”复制到该文件夹中即可完成这一步骤,接下来取卡插进Pixhawk中。

    7 Test Connection


           用USB线把Pixhawk与电脑相连,然后选择上传端口(此处笔者的端口是COM10),端口可以在设备管理器中查阅。
           单击Upload Firmware即可开始上传刚才构建的固件,此时大概率会弹出一个对话框,意思是Matlab无法自动重启Pixhawk,需要手动拔线重启。在重新插上线的5s内,点击弹出对话框的确认按钮,Matlab会开始上传固件。
           固件上传结束后,单击Get Accelerometer data即可测试连接状况,如果出现上图结果,那么恭喜环境搭建初步成功,整个Hardware Setup流程也到此结束。接下来可以学习Matlab官方给出的7个Example。
           这是我运行px4demo_uORBRead的画面,可以看到Simulink可以实时读取Pixhawk的传感器数据。
    在这里插入图片描述

    展开全文
  • PX4源码分析4_PX4软件结构

    千次阅读 2017-03-05 21:52:21
    PX4自动驾驶仪软件可分为三大部分:实时操作系统、中间件和飞行控制栈。1.NuttX实时操作系统:提供POSIX-style的用户操作环境,进行底层的任务调度。2.PX4中间件:PX4中间件运行于操作系统之上,提供设备驱动和一个...

    PX4自动驾驶仪软件可分为三大部分:实时操作系统、中间件和飞行控制栈。

    1.NuttX实时操作系统:

    提供POSIX-style的用户操作环境,进行底层的任务调度。

    2.PX4中间件:

    PX4中间件运行于操作系统之上,提供设备驱动和一个微对象请求代理(micro object request broker,uORB)用于驾驶仪上运行的单个任务之间的异步通信。我的理解是完全可以将它看成为一种进程间通信机制。

    3.PX4飞行控制栈:

    飞行控制栈可以使用PX4的控制软件栈,也可以使用其他的控制软件,如APM:Plane、APM:Copter,但必须运行于PX4中间件之上。
    此部分又可分为3部分:

    • 决策导航部分:
      根据飞行器当前飞行状态和接收的用户命令,决定工作模式和飞行任务。

    • 位置姿态估计部分:
      通过传感器获取自身的位置和姿态信息。

    • 位置姿态控制部分:
      根据期望与当前的位置和姿态控制飞行状态以达到期望位置和姿态。

    • 控制器输出部分:
      mixer和执行器,pwm限幅。

    展开全文
  • px4编译

    千次阅读 2019-05-20 14:43:20
    如果下载速度特别慢,可以...开始下载指定版本的px4,在这里是v1.7.0版本 git clone -b v1.7.0 https://github.com/PX4/Firmware.git 添加子模块: cd Firmware git submodule init git submodule update --ini...

    如果下载速度特别慢,可以使用手机的4G网络

    位置确定

    mkdir -p ~/src
    cd ~/src
    

    开始下载指定版本的px4,在这里是v1.8.2版本

    git clone -b v1.8.2 https://github.com/PX4/Firmware.git 
    

    添加子模块:

    cd Firmware
    git submodule init
    git submodule update --init --recursive
    

    显示版本号

    git describe --always --tags
    

    编译,缺什么安装什么

    make px4fmu-v2_default
    
    

    安装jinja

    sudo apt-get install python-jinja2
    

    需要安装的pip

    sudo apt install python-pip 
    sudo pip install numpy toml
    

    若提示以下错误:确保cmake安装,重启系统即可

    CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".
    

    提示flash溢出

    1.注释掉不需要的模块(不怎么建议使用,后续会知道如何注释);
    2.修改默认的Flash大小。

    在这里插入图片描述
    打开/Firmware/platforms/nuttx/nuttx-configs/px4fmu-v2/scripts/ld.script
    修改如图所示1008为2032即可
    在这里插入图片描述

    展开全文
  • PX4FMU如何从PX4IO芯片读取数据

    千次阅读 2018-06-02 22:14:19
    上一篇文章分析了PX4IO芯片中的数据接收和发送实现方式。得出结论是:PX4IO不会主动向PX4FMU发送任何数据,所有的发送都出于接收到数据之后的回复。那么PX4FMU究竟如何从PX4IO芯片读取数据,实现过程是怎样的,下面...
  • px4源码学习三--px4源码结构分析

    千次阅读 2017-11-15 16:07:15
    px4源码结构分析Px4源码目录
  • PX4源码学习二--PX4环境搭建

    千次阅读 2017-11-14 00:25:22
    Ubuntu16.04 px4
  • PX4学习笔记

    2020-10-04 15:16:50
    目录网址Pixhawk、PX4、APM 、 ArduPilot关系硬件照片、示意图逻辑图 集多旋翼控制框架软件框架辅助工具、软件说明(误区)裸机运行基于OS运行例子可执行程序、应用、源码(代码)、进程、线程源码、固件的区分...
  • 摘要: pixhawk PX4FMU和PX4IO最底层启动过程分析1.1 主处理器和协处理器的固件烧写和运行流程首先,大体了解PX4IO 与PX4FMU各自的任务。PX4IO(STM32F100)为PIXHAWK 中专用于处理输入输出的部分,输入为支持的各类遥控...
  • 问:PX4源代码复杂难懂,如何分析才能让思路更清晰呢? Created with Raphaël 2.2.0分析PX4系统流程图理解每个子模块的角色找到每个子模块对应的文件夹找到子模块的接口子模块接口调用类中的公有函数公有函数调用类...
  • 搭建PX4开发环境

    千次阅读 2020-10-15 13:17:20
    搭建PX4开发环境 官方网站PX4.IO,我使用的是ubuntu20.04 一、官方环境搭建 1、下载PX4固件 git clone https://github.com/PX4/Firmware.git --recursive 注意:这里会下载Gazebo,和JMAVSim两个虚拟仿真软件,可能...
  • PX4应用实例3:px4_simple_app

    千次阅读 2017-04-02 09:38:01
    1. 打开src/examples/px4_simple_app/px4_simple_app.c #include #include #include #include #include #include #include #include #include #include #include __EXPORT int px4_simple_app_main...
  • PX4调试

    千次阅读 2016-04-07 09:47:52
    PX4 FMU [4] ArduPilot PX4 FMU [4] ArduPilot 1.ArduPilot_main  我们知道,在 C语言中最经典的程序是 “Hello World!”,这应该是我们在 C语言中最早接触的一个程序了。而在单片机中,最经典的一个程序当...
  • PX4例程学习

    千次阅读 2018-12-11 16:48:20
    PX4的源代码中提供了一些学习例程,对于PX4的二次开发非常有用。现在学习下,应该有很多能够运用上的东西。例程的目录位于Firmware\src\examples目录下,每个目录是独立的应用程序,包含需要用到的源代码和CMake文件...
  • 硬件:基于PX4的v5的硬件的修改,移除掉IO从控芯片 软件:PX4中v1.8.2版本 ---------------- 说明---------------- 基于BMI055传感器驱动的修改,顺便分析传感器的流程 ---------------- 过程---------------- ...
  • PX4源码分析5_PX4启动流程

    千次阅读 2017-06-29 13:44:04
    PX4启动流程,分为4步:1.__start:上电之后程序入口为Firmware/NuttX/nuttx/arch/arm/src/stm32/stm32_start.c中的__start函数,负责stm32芯片的底层初始化,包括是时钟,GPIO等。 2.os_start:__start函数调用...
  • px4基本知识

    千次阅读 2017-09-10 11:29:32
    1PX4自驾仪 PX4是与平台无关的自动驾驶仪软件(或称为固件),可以驱动无人机或无人车。它可以被烧写在某些硬件(如Pixhawk v2),并与地面控制站在一起组成一个完全独立的自动驾驶系统。 PX4地面控制站...
  • px4飞行日志

    千次阅读 2018-12-30 10:30:59
    px4飞行日志共有四种格式:.log文件、.bin文件、.ulg文件和.px4log文件,其中前两种为早期的PX4固件生成的文件格式,其数据记录的相关文件为sd2log,新版固件生成的文件格式为后面两种,相关文件为logger文件。...
  • PX4自主飞行

    2017-08-28 14:33:06
    **PX4自主飞行**
  • PX4代码编译

    千次阅读 2018-10-10 11:21:35
    PX4固件是Pixhawk飞行控制器的官方固件,Pixhawk官网也给出了Linux/windows下搭建开发环境的方法。由于种种原因,搭建开发环境时总会遇到各种各样的bug,致使PX4固件编译失败。虽然官方给出了一键搭建开发环境的...
  • PX4开发环境搭建

    千次阅读 多人点赞 2019-07-23 13:26:12
    很多朋友在搭建PX4开发环境的时候都会出现一些环境配置的问题,今天笔者就来总结一下ubuntu系统下搭建PX4开发环境的过程。想要开发PX4的朋友强烈建议安装ubuntu系统,在windows下只会遇到很多问题,既不方便,编译...
  • px4 makefile解析

    2018-01-08 17:38:50
    关于px4的编译的流程,首先运行makefile,执行cmake,执行完之后再执行make命令,完成整个编译流程。 编译px4-v2的版本,需要执行命令: make px4fmu-v2_default 针对这句话,Makefile到底执行了哪些操作。 ...
  • PX4Flow使用操作

    千次阅读 热门讨论 2018-12-01 19:54:45
    这两天测试了一下PX4FLOW模块,官网(https://docs.px4.io/en/sensor/px4flow.html)上对这个模块的描述太过简单,只能看出些大致思路。而国内关于这个模块使用的文章也是描述不是太细致。这里把这两天测试过程和...
  • F4飞控刷写PX4教程

    千次阅读 2020-06-27 22:15:45
    刷写步骤分两步,第一步刷bootloader,第二步刷px4固件 博主之前尝试用stlink下载bl,但是脸上stlink后擦除芯片的时候会报错,所以放弃,然后又尝试用flymcu刷写,但是擦除完芯片后却连接不到飞控,最后参考这篇帖子...
  • PX4源码学习一--Pix和APM的区别

    千次阅读 2017-11-14 00:09:35
    PX4
  • 开源飞控PX4简介

    2020-05-30 12:37:33
    https://docs.px4.io/master/zh/flight_controller/pixhawk4.html 无人机飞控基本装配参考: https://docs.px4.io/master/zh/assembly/ 下载地面站链接(QGC地面站): http://qgroundcontrol.com/downloads/
  • 第一步,Pixhawk固件1.8.2下载:参考网页PX4飞控,工具链下载安装:ubuntu_sim_nuttx.sh参考网页PX4工具链下载网址; 第二步,打开终端,通过 \textcolor{red}{cd}指令进入配置文件 ubuntu_sim_nuttx.sh所在的文件夹,...
  • PX4_Bootloader编译

    千次阅读 2018-06-04 16:36:58
    编译PX4的Bootloader有两种方式,一种是安装px4_toolchin_installer并在其组件PX4 Console下使用控制台指令编译源码;另一种是在Linux环境下使用控制台指令下载编译源码。两种方式大同小异,对于已经建立好PX4编译...
  • PX4使用WIFI模块

    千次阅读 2019-05-18 14:19:21
    PX4支持WIFI模块作为数传工具,官网上也提供了教程,但是不注意细节也很容易失败。以下是我的经验以及教训。 配置环境 飞控:pixhawk v2,烧录PX4 v1.8.2的固件 地面站:QGC 3.5.2 wifi模块:市面上最常见的8针...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,780
精华内容 18,312
关键字:

PX4