[Pixhawk] ardupilot源码windows编译教程

5 篇文章 1 订阅

【声明】

    此教程最开始取自于淘宝商家,后查找资料发现淘宝商家取自“怒飞垂云”的教程,但原教程中有些冗余和错误导致无法通过编译,我做更改整理后发出,如有疑问请各位一起讨论。

目录

一、建立飞控固件编译环境

1.1 获取飞控源码 

1.2 使用powershell运行自动化配置文件

1.3 安装 future 库、python3

1.4 下载并安装 GCC 编译器 

1.5 配置环境变量

1.6 切换到最新稳定版固件 

1.7 更新子模块 

二、基于waf编译APM飞控固件 

2.1 配置飞控类型 

2.2 编译飞控固件

2.3 烧写飞控固件


一、建立飞控固件编译环境


1.1 获取飞控源码 

源码地址:GitHub - ArduPilot/ardupilot: ArduPlane, ArduCopter, ArduRover, ArduSub source

建议安装git,便于下载源码及代码管理。官网链接:https://git-scm.com/ 

安装好git后,打开git Bash

使用git clone命令拉取飞控代码,不详述,git使用方法请自行学习。

1.2 使用powershell运行自动化配置文件

右击开始按钮,或者Win + X,管理员运行Powershell


 

打开后,通过cd命令,转到.\ardupilot\Tools\environment_install目录

输入.\install然后按Tab键切换到install-prereqs-windows.ps1,回车运行。

下载过程可能有时需要挂VPN,可以先挂着下载绝大部分,如果出现问题,再试着运行一次或多次,仍不行,关掉梯子,再下载就应该下全了。

1.3 安装 future 库、python3

运行“setup x86_64.exe”,安装Cygwin64及其他环境


1.4 下载并安装 GCC 编译器 

1.5 配置环境变量

若按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,所以环境变量还得手动加一条:


一路确认关闭后,重启电脑后生效(亲测),否则依然报错。


1.6 切换到最新稳定版固件 

  • cd到ardupilot源码目录下
  • 输入:git tag   查看源代码中包含的所有tag
  • 按回车下一行,直到要的版本后,按 “q” 退出
  • 从多旋翼3.6.7 稳定版固件创建分支,分支名为:MyCopter3.6.7 
git checkout -b MyCopter3.6.7 Copter-3.6.7
  • 从固定翼创建分支,则分支名为:MyCopter4.0.7
git checkout -b MyPlane4.0.7 ArduPlane-4.0.7

分支名可自行更换,任意稳定版的固件也可按需更换。 

  • 注意:不要切换到“master(main)”分支,这里面是不稳定版本,并且大部分情况下,master分支的代码是无法编译通过


1.7 更新子模块 

只要切换分支,就要更新子模块。 

git submodule update --init --recursive

二、基于waf编译APM飞控固件 

切换固件版本用的是“Git Bash”,而编译固件用的是 “Cygwin64”,不要搞混。 

  • cd到ardupilot目录下

2.1 配置飞控类型 

查看所有支持的飞控类型 

./waf list_boards

将编译目标设置为fmuv3 版飞控
如果你的飞控是Pixhawk2.4.x,将这里的fmuv3改为fmuv2;如果飞控是Pixhawk4,就将这里的fmuv3改为Pixhawk4,以此类推

./waf configure --board fmuv3

2.2 编译飞控固件

如果是编译多旋翼固件,运行下面的命令 
./waf copter

如果是编译常规固定翼固件或者垂直起降固定翼固件(二者同一个固件)
./waf plane

如果是编译直升机固件
./waf heli

如果是编译无人车固件
./waf rover

如果是编译潜水艇固件
./waf sub
  • 如果是编译外设固件(如 CAN 总线版本的 GPS ),运行下面的命令
./waf AP_Periph
  • 如果你上次编译好好的,突然就编译报错了,尝试如下命令,删除之前的编译缓存,这样下次编译时会从头编译
./waf distclean        //删除 “ardupilot/ 文件夹
  • 列出 waf 的所有命令及其使用方法
./waf -h

总结:

./waf list_boards                       看烧写的固件支持哪种飞控板;

./waf configure --board XXX             根据板子类型进行配置;

./waf copter    或    ./waf plane……     根据控制对象进行选择;

若失败,可用    ./waf distclean          清除build文件夹,解决错误后重新进行

2.3 烧写飞控固件

  1. 安装地面站MissionPlanner;
  2. 编译的固件路径:./ardupilot/bulid/fmuv3/bin/arducopter.apj,使用mission planner进行固件烧写。



今天突发奇想,作死,想要更新GNU交叉编译软件来着,结果编译过程中各种报错,失败,还是老老实实用回17版的。。。希望各位不要翻车,不是每个最新的都好用,毕竟代码祖传。。。

  • 7
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sandman6z

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值