登录
加入联盟
找回密码
航空人生
新一代连飞客户端下载
空管人生
中国航空运动协会推荐
WEFLY
模拟飞行玩家聊天工具
门户
文章
商城
二手市场
外包服务
模飞软件
硬件设备
飞行体验
学院
云课堂
问答
资料下载
论坛
模拟飞行
低空飞行
太空探索
航圈
资源
素材
下载
企业
无人机论坛
»
论坛
›
无人机DIY专区
›
飞控开发区
›
Pixhawk飞控
›
一天精通无人机:初级篇系列第 13 讲:飞控程序下载与编 ...
返回列表
发新帖
查看:
1007
|
回复:
2
一天精通无人机:初级篇系列第 13 讲:飞控程序下载与编译
[复制链接]
lm12041204
lm12041204
当前离线
积分
1682
窥视卡
雷达卡
41
主题
849
帖子
1682
积分
金牌飞友
金牌飞友, 积分 1682, 距离下一级还需 1318 积分
金牌飞友, 积分 1682, 距离下一级还需 1318 积分
积分
1682
飞币
828
注册时间
2017-8-25
发消息
发表于 2022-10-27 21:43:48
|
显示全部楼层
|
阅读模式
今天我们来一起了解开源无人机控制程序的下载,编译与安装。我们选用的开源无人机飞行控制程序为PX4,这是一款非常优秀的开源程序,支持多种类型的无人机、无人车和无人船。
需要说明的是:下载,编译,安装PX4飞控程序的整个过程均需要在Linux操作系统下完成,所以对于今后的所有的文章都会在Linux系统下来给大家讲解。希望大家对Linux操作系统有一些基础了解,并会一些简单的操作(请参见《一点一滴学Linux》)。另外对于Linux的发行版选择方面,作者选用的是Fedora操作系统,版本为28。而目前网上多数朋友用的都是Ubuntu操作系统通常是14.04或16.04或18.04,对于不同的Linux发行版其操作方式略有不同,请读者不要对操作过程死记硬背,而需要明白每一个步骤的功能,只有理解之后才能够活学活用。
一、开源飞控PX4下载
PX4的项目主页地址为:
http://px4.io/
我们可以在PX4的项目的主页中对其做简单的了解。PX4开源程序的下载地址为:
飞控固件:
https://github.com/PX4/Bootloader
BootLoader:
https://github.com/PX4/Firmware
这是一个采用git仓库管理开源代码的项目,下载飞控固件代码的命令:
git clone https://github.com/PX4/Firmware.git
git clone https://github.com/PX4/Bootloader.git
关于BootLoader的相关不是我们本节的内容,我们只关心Firmware的程序,也就是飞控固件程序。下载过程比较长,需要耐心等等,下载完成之后在本地目录中就会出现Firmware文件夹,我们需要进入此文件夹,并执行git子模块初始化:
git submodule update --init --recursive
我们可以使用ls命令来查看此目录下的文件列表:
├── cmake
│ ├── cmake_hexagon
│ ├── common
│ ├── configs
│ └── toolchains
├── Documentation
├── integrationtests
│ └── python_src
├── launch
├── mavlink
│ └── include
├── msg
│ ├── ros
│ ├── templates
│ └── tools
├── platforms
│ ├── nuttx
│ ├── posix
│ └── qurt
├── posix-configs
│ ├── bbblue
│ ├── bebop
│ ├── eagle
│ ├── excelsior
│ ├── ocpoc
│ ├── rpi
│ └── SITL
├── ROMFS
│ ├── px4fmu_common
│ ├── px4fmu_test
│ └── tap_common
├── src
│ ├── drivers
│ ├── examples
│ ├── include
│ ├── lib
│ ├── modules
│ ├── platforms
│ ├── systemcmds
│ └── templates
└── Tools
接下来我们来讲述在Linux搭建PX4的开发环境。
二、Fedora下开发环境
在Fedora下通常使用YUM来管理和安装RPM软件包(请参见《YUM使用》)。
1.Python环境:
PX4中使用了很多Python脚本程序来对飞控工程进行额外的处理,也就是一些处理代码的便携工具。因此我们需要安装Python开发环境:
sudo yum groupinstall “Development Tools”
sudo yum install python-setuptools python-numpy
sudo easy_install pyserial
sudo easy_install pexpect
sudo easy_install toml
sudo yum install openocd libftdi-devel libftdi-python python-argparse flex bison-devel ncurses-devel ncurses-libs autoconf texinfo libtool zlib-devel cmake
2.arm-gcc交叉编译器
下载GCC编译工具:
wget https://releases.linaro.org/components/toolchain/binaries/6.4-2018.05/arm-linux-gnueabihf/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
将下载后的压缩包解压:
tar -xvf gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf.tar.xz
解压后会在当前目录下生成一个gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf的文件夹,我们再修改/etc/profile文件的内容,将此文件夹加入环境变量中:
sudo vim /etc/profile
在最后加入
export PX4_CROSS_GCC=/data/apps/gcc-linaro-6.4.1-2018.05-x86_64_arm-linux-gnueabihf
export PATH=$PX4_CROSS_GCC/bin:$PATH
其中/data/apps/是刚刚下载gcc文件所在的目录,这里需要修改成实际的路径。然后
source /etc/profile
使环境变量生效,或者重启计算机也可以。当环境变量生效之后,我们可以执行下面命令来确认gcc是否生效:
arm-linux-gnueabihf-gcc --version
如果gcc安装成功则会有下面内容的输出:
arm-linux-gnueabihf-gcc (Linaro GCC 6.4-2018.05) 6.4.1 20180425 [linaro-6.4-2018.05 revision 7b15d0869c096fe39603ad63dc19ab7cf035eb70]
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
3.Ninja构建工具
由于PX4程序架构较大,编译过程比较慢,我们还可以使用Ninja来加快编译速度:
wget https://github.com/martine/ninja/releases/download/v-1.8.2/ninja-linux.zipunzip ninja-linux.zip
修改/etc/profile加入环境变量
source /etc/profile
在最后加入
export NINJA_HOME=/data/apps/ninja-1.8.2
export PATH=$NINJA_HOME:$PATH
使环境变量生效,或者重启计算机也可以。当环境变量生效之后,我们可以执行下面命令来确认ninja是否生效:
ninja --version1.8.2
三、固件程序编译与烧写
PX4还支持其它很多编译选项,例如:
px4cannode-v1_default
px4esc-v1_default
px4fmu_firmware
px4fmu-v2_default
px4fmu-v2_lpe
px4fmu-v2_test
px4fmu-v3_default
px4fmu-v3_rtps
px4fmu-v4_default
px4fmu-v4pro_default
px4fmu-v4pro_rtps
px4fmu-v4_rtps
px4fmu-v5_default
px4fmu-v5_rtps
px4io-v2_default
px4_metadata
px4nucleoF767ZI-v1_default
px4-same70xplained-v1_default
px4-stm32f4discovery_default
由于我们采用的硬件平台Pixhawk是2.4.8,所以在固件编译选项中我们需要选择px4fmu-v3_default,执行下面编译命令:
make px4fmu-v3_default
编译内容如下:
-- PX4 VERSION: v1.8.0-907-g7f41ead23
-- CONFIG: nuttx_px4fmu-v3_default
-- Build Type: MinSizeRel
-- The ASM compiler identification is GNU
-- Found assembler: /data/apps/gcc-arm-none-eabi/bin/arm-none-eabi-gcc
-- Found PythonInterp: /usr/bin/python (found version "2.7.15")
-- Found PY_jinja2: /usr/lib/python2.7/site-packages/jinja2
-- C compiler: arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496]
-- C++ compiler: arm-none-eabi-g++ (GNU Tools for ARM Embedded Processors) 5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496]
-- PX4 ECL: Very lightweight Estimation & Control Library v0.9.0-581-g34cd136
-- Building and including px4io-v2
-- Using C++11
-- Release build type: MinSizeRel
-- Adding UAVCAN STM32 platform driver
-- NuttX: px4fmu-v2 nsh cortex-m4
-- ROMFS: px4fmu_common
-- Configuring done
-- Generating done
-- Build files have been written to: /data/work/workspace/px4/Firmware/build/nuttx_px4fmu-v3_default
ninja: Entering directory `/data/work/workspace/px4/Firmware/build/nuttx_px4fmu-v3_default'
[1031/1031] Creating /data/work/workspace/px4/Firmware/build/nuttx_px4fmu-v3_default/px4fmu-v3_default.px4
我们可以看到,编译完成后会在build/nuttx_px4fmu-v3_default/目录下生成一个叫px4fmu-v3_default.px4的文件,这个文件就是我们需要烧写到Pixhawk中的固件程序。
接下来我们将Pixhaw使用USB线接入到计算机上,在/dev/目录下会有一个叫作ACM0的设备文件,即是Pixhawk飞控,如果没有这个文件,可能是当前用户没有此USB设备的读写权限,解决办法是将下面内容保存为10-px4.rules文件:
SUBSYSTEMS=="usb", KERNEL=="ttyACM0", ATTRS{idVendor}=="575a", ATTRS{idProduct}=="0041", GROUP="dialout", MODE="0666"
然后将这个10-px4.rules文件复制到/etc/udev/rules.d/目录下:
cp 10-px4.rules /etc/udev/rules.d/
之后重新插拔Pixhawk即可,如果/dev/ACM0仍然没有出现,则需要重启计算机。接下来删除ModemManager软件包,并为当前用户加入dialout组
sudo yum remove ModemManager
sudo usermod -aG dialout $USER
最后,执行固件烧写命令:
make px4fmu-v3_default upload
烧写过程如下:
Loaded firmware for 9,0, size: 154873 bytes, waiting for the bootloader...
If the board does not respond within 1-2 seconds, unplug and re-plug the USB connector.
Attempting reboot on /dev/ttyACM0 with baudrate=115200...
If the board does not respond, unplug and re-plug the USB connector.
Found board 9,0 bootloader rev 5 on /dev/ttyACM0
family: STM32F42x
revision: 3
flash 2080768
Erase : [====================] 100.0%
Program : [====================] 100.0%
Verify : [====================] 100.0%
Rebooting.
欢迎关注公众号:编程外星人
无人机
相关帖子
•
我想问问中国无人机有哪些
•
保姆级教程!AirSIM+PX4+QGC从零开始搭建无人机仿真环境。
•
无人机输电线路巡检存在哪些问题
•
深圳哪里飞无人机不需要报备
•
【低空经济】百篇研报领取,20分钟全盘梳理低空经济/无人机/evtol
•
eve手游无人机控制数量怎么提升介绍_eve手游无人机控制数量怎么提升是...
•
低空无人机团体标准立项报告
•
2025 年俄罗斯国际无人机设备及技术博览会
•
寻求帮助开发无人机协同运输
•
关于固定翼无人机弹射架,有想法的朋友愿意来聊下吗?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
ftdyz
ftdyz
当前离线
积分
1675
窥视卡
雷达卡
44
主题
851
帖子
1675
积分
金牌飞友
金牌飞友, 积分 1675, 距离下一级还需 1325 积分
金牌飞友, 积分 1675, 距离下一级还需 1325 积分
积分
1675
飞币
823
注册时间
2017-9-25
发消息
发表于 2022-10-27 21:57:07
|
显示全部楼层
晕了
回复
支持
反对
使用道具
举报
照妖镜
风履
风履
当前离线
积分
1657
窥视卡
雷达卡
49
主题
836
帖子
1657
积分
金牌飞友
金牌飞友, 积分 1657, 距离下一级还需 1343 积分
金牌飞友, 积分 1657, 距离下一级还需 1343 积分
积分
1657
飞币
809
注册时间
2017-9-23
发消息
发表于 2022-10-27 22:11:28
|
显示全部楼层
分开来每个字都认识,合在一起一个也看不懂,哈哈哈哈
回复
支持
反对
使用道具
举报
照妖镜
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
加入联盟
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
视频专区
特种行业无人机
APM飞控
新闻快讯
无人机电池
小工具等
eVTOL
快速回复
返回顶部
返回列表