pixhawk控制板的ArduPilot固件编译

0. 环境

- ubuntu18(依赖python2和pip,建议直接ubuntu18不用最新的)
- pixhawk 2.4.8
- pixhawk 4

1. 获取源码

# 安装git

sudo apt install git

# 获取源码

cd ~/work
git clone --recurse-submodules https://github.com/ArduPilot/ardupilot
cd ardupilot


# 如果初次没顺利克隆子仓库,则:

git clone  https://github.com/ArduPilot/ardupilot
cd ardupilot
git submodule update --init --recursive

# 压缩源码备份

cd ~/work
7z a ardupilot_git_src_20240317.7z ardupilot


2. 安装依赖

$ ./Tools/environment_install/install-prereqs-ubuntu.sh
Install ArduPilot STM32 toolchain [N/y]?N

3. 安装交叉编译工具链


下载

https://firmware.ardupilot.org/Tools/STM32-tools/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2


可以到这里浏览版本:

https://firmware.ardupilot.org/Tools/STM32-tools/


解压

tar -xjvf gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2


设置环境变量

export PATH=$PATH:/home/xxjianvm/work/gcc-arm-none-eabi-10-2020-q4-major/bin

4. 编译


# 设置环境变量

export PATH=$PATH:/home/xxjianvm/work/gcc-arm-none-eabi-10-2020-q4-major/bin
export PATH=$PATH:/home/xxjianvm/work/ardupilot/Tools/autotest
export PATH=/usr/lib/ccache:$PATH
source /home/xxjianvm/work/ardupilot/Tools/completion/completion.bash

# 配置

./waf list_boards
./waf configure --board fmuv3          # 3DR Pixhawk 2 boards
#./waf configure --board fmuv5          # Pixhawk 4

# 编译

./waf clean
#./waf rover
#./waf copter 

 

 

# 上传

./waf --targets bin/ardurover --upload

5. 问题集锦

问题:/usr/bin/python3: can't open file '/home/xxjianvm/work/ardupilot/modules/DroneCAN/dronecan_dsdlc/dronecan_dsdlc.py': [Errno 2] No such file or directory
分析:网络不好,浏览发现dronecan_dsdlc是空的
解决办法:把文件夹 dronecan_dsdlc 删除,再次执行 git submodule update --init --recursive

问题:dronecan_dsdlc.py: error: the following arguments are required: namespace_dir
分析:发现DroneCAN下的DSDL、libcanard又是空的

6. 参考


[Pixhawk] ardupilot源码windows编译教程,https://blog.csdn.net/Sandman06/article/details/115617932Windows/Ubuntu操作系统下ArduPilot(APM)固件的编译方法,https://blog.csdn.net/oqqENvY12/article/details/60581036
ardupilot的编译过程,https://blog.csdn.net/u014220146/article/details/133068197
https://ardupilot.org/dev/docs/building-setup-linux.html#building-setup-linux
https://github.com/ArduPilot/ardupilot/blob/master/BUILD.md
https://github.com/pixhawk/Hardware

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/618887.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分布式ID的方案和架构

超过并发,超高性能分布式ID生成系统的要求 在复杂的超高并发、分布式系统中,往往需要对大量的数据和消息进行唯一标识如在高并发、分布式的金融、支付、餐饮、酒店、电影等产品的系统中,数据日渐增长,对数据分库分表后需要有一个唯…

Java实现二叉树(下)

1.前言 http://t.csdnimg.cn/lO4S7 在前文我们已经简单的讲解了二叉树的基本概念,本文将讲解具体的实现 2.基本功能的实现 2.1获取树中节点个数 public int size(TreeNode root){if(rootnull){return 0;}int retsize(root.left)size(root.right)1;return ret;}p…

【七 (1)FineBI FCP模拟试卷-股票收盘价分析】

目录 文章导航一、字段解释二、需求三、操作步骤1、添加计算字段(每月最后一天的收盘价)2、绘制折线图 文章导航 【一 简明数据分析进阶路径介绍(文章导航)】 一、字段解释 Company Name:公司名称 Date:…

计算机网络---第十四天

DHCP协议 DHCP背景: 局域网中手动配置静态ip地址任务繁琐,而且容易出错 DHCP定义: ①动态主机配置协议 ②采用客户端/服务器模式 ③服务端udp 67 ④客户端udp 68 DHCP工作原理: 1、DHCP分配IP的工作流程: 客户…

【opencv】示例-stereo_calib.cpp 基于OpenCV的立体视觉相机校准的完整示例

// 包含OpenCV库中用于3D校准的相关头文件 #include "opencv2/calib3d.hpp" // 包含OpenCV库中用于图像编码解码的相关头文件 #include "opencv2/imgcodecs.hpp" // 包含OpenCV库中用于GUI操作的相关头文件 #include "opencv2/highgui.hpp" // 包…

QT助手翻译【QT 5.14】 -----QPushButton

目录 1 属性 2 公共职能 3 重新实现的公共功能 4 公用插槽 5 受保护的功能 6 保护方法 7 详细说明 1 属性 自动默认值:bool 此属性保存按钮是否为自动默认按钮 如果此属性设置为true,则该按钮为自动默认按钮。 在某些GUI样式中&a…

Linux 快问快答

如果对于找 Java 后端开发的话,我感觉会这几个差不多了,面试官应该不会问的这么详细吧。一般就问问 Linux 的几个常用的命令,然后做一些简单的性能排查就好了。如果面试被问到另外的问题,那我再补充进来,现在先掌握这么…

软件杯 深度学习卷积神经网络垃圾分类系统 - 深度学习 神经网络 图像识别 垃圾分类 算法 小程序

文章目录 0 简介1 背景意义2 数据集3 数据探索4 数据增广(数据集补充)5 垃圾图像分类5.1 迁移学习5.1.1 什么是迁移学习?5.1.2 为什么要迁移学习? 5.2 模型选择5.3 训练环境5.3.1 硬件配置5.3.2 软件配置 5.4 训练过程5.5 模型分类效果(PC端) 6 构建垃圾…

在Windows上安装Go编译器并配置Golang开发环境

文章目录 1、安装Go语言编译程序1.1、下载GoLang编译器1.2、安装GoLang编译器 2、配置Golang IDE运行环境2.1、配置GO编译器2.1.1、GOROOT 概述2.1.2、GOROOT 作用2.1.2、配置 GOROOT 2.2、配置GO依赖管理2.2.1、Module管理依赖2.2.2、GOPATH 管理依赖 2.3、运行GO程序2.3.1、创…

vscode开发 vue3+ts 的 uni-app 微信小程序项目

创建uni-app项目: # 创建用ts开发的uni-app npx degit dcloudio/uni-preset-vue#vite-ts 项目名称 # 创建用js开发的uni-app npx degit dcloudio/uni-preset-vue#vite 项目名称VS Code 配置 为什么选择 VS Code ? HbuilderX 对 TS 类型支持暂不完善VS…

<计算机网络自顶向下> P2P应用

纯P2P架构 没有或者极少一直运行的Server,Peer节点间歇上网,每次IP地址都可能变化任意端系统都可以直接通信利用peer的服务能力,可扩展性好例子:文件分发; 流媒体; VoIP类别:两个节点相互上载下载文件,互通有无&#…

【MATLAB源码-第49期】基于蚁群算法(ACO)算法的栅格路径规划,输出最佳路径图和算法收敛曲线图。

操作环境: MATLAB 2022a 1、算法描述 蚁群算法是一种模拟自然界蚂蚁觅食行为的启发式优化算法。在蚁群系统中,通过模拟蚂蚁之间通过信息素沟通的方式来寻找最短路径。 在栅格路径规划中,蚁群算法的基本步骤如下: 1. 初始化: …