赞
踩
【声明】
此教程最开始取自于淘宝商家,后查找资料发现淘宝商家取自“怒飞垂云”的教程,但原教程中有些冗余和错误导致无法通过编译,我做更改整理后发出,如有疑问请各位一起讨论。
目录
源码地址:GitHub - ArduPilot/ardupilot: ArduPlane, ArduCopter, ArduRover, ArduSub source
建议安装git,便于下载源码及代码管理。官网链接:https://git-scm.com/
安装好git后,打开git Bash
使用git clone命令拉取飞控代码,不详述,git使用方法请自行学习。
右击开始按钮,或者Win + X,管理员运行Powershell
打开后,通过cd命令,转到.\ardupilot\Tools\environment_install目录
输入.\install然后按Tab键切换到install-prereqs-windows.ps1,回车运行。
下载过程可能有时需要挂VPN,可以先挂着下载绝大部分,如果出现问题,再试着运行一次或多次,仍不行,关掉梯子,再下载就应该下全了。
运行“setup x86_64.exe”,安装Cygwin64及其他环境
若按1.4所说,软件默认生成的环境变量的话是不够的,因为gcc编译器安装后只添加了.\GNU Tools ARM Embedded\6 2017-q2-update\bin 这个path项,编译时会出现“Could not find the program ['arm-none-eabi-ar']”报错。
而arm-none-eabi-ar的路径在, .\GNU Tools ARM Embedded\6 2017-q2-update\arm-none-eabi\bin,所以环境变量还得手动加一条:
一路确认关闭后,重启电脑后生效(亲测),否则依然报错。
git checkout -b MyCopter3.6.7 Copter-3.6.7
git checkout -b MyPlane4.0.7 ArduPlane-4.0.7
分支名可自行更换,任意稳定版的固件也可按需更换。
只要切换分支,就要更新子模块。
git submodule update --init --recursive
切换固件版本用的是“Git Bash”,而编译固件用的是 “Cygwin64”,不要搞混。
查看所有支持的飞控类型
./waf list_boards
将编译目标设置为fmuv3 版飞控
如果你的飞控是Pixhawk2.4.x,将这里的fmuv3改为fmuv2;如果飞控是Pixhawk4,就将这里的fmuv3改为Pixhawk4,以此类推
./waf configure --board fmuv3
- 如果是编译多旋翼固件,运行下面的命令
- ./waf copter
-
- 如果是编译常规固定翼固件或者垂直起降固定翼固件(二者同一个固件)
- ./waf plane
-
- 如果是编译直升机固件
- ./waf heli
-
- 如果是编译无人车固件
- ./waf rover
-
- 如果是编译潜水艇固件
- ./waf sub
./waf AP_Periph
./waf distclean //删除 “ardupilot/ 文件夹
./waf -h
总结:
- ./waf list_boards 看烧写的固件支持哪种飞控板;
-
- ./waf configure --board XXX 根据板子类型进行配置;
-
- ./waf copter 或 ./waf plane…… 根据控制对象进行选择;
-
- 若失败,可用 ./waf distclean 清除build文件夹,解决错误后重新进行
今天突发奇想,作死,想要更新GNU交叉编译软件来着,结果编译过程中各种报错,失败,还是老老实实用回17版的。。。希望各位不要翻车,不是每个最新的都好用,毕竟代码祖传。。。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。