ubuntu下ardupilot编译环境搭建与仿真

2023-05-16

文章目录

  • 前言
  • 一、ardupilot 源码下载
  • 二、编译环境建立
  • 仿真
  • 经验教训
    • 坑1
    • 坑2
  • 参考


前言

虽然怒飞老师给出了详细的windows下的开发环境的搭建教程。但是对于开发者而言,最好的系统环境还是在Linux系统下,尤其一些顶层开发下,还是用ROS香呀,所以我将尝试在ubuntu下建立完整的ardupilot开发环境。这篇文章就作为这个尝试的第一篇笔记,希望可以帮助到之后的朋友。

一、ardupilot 源码下载

由于在github上下载较慢(我懒,还没弄过下载加速),所以建议使用gitee。
在这里插入图片描述直接搜索一下就有了,搬运日期很新鲜,nice!
在自己喜欢的目录下,进行clone (这里默认大家都安装好了git并熟悉git的基本使用,如果不清楚的同学可以看这里Git教程)

git clone https://gitee.com/gu-kaifeng/ardupilot.git

不出意外的很快就下载完了。

然后我们基于目前最稳定的分支来新建一个分支“new_one”
然后需要更新子模块(这一步很容易失败,得想办法多试试;实在不行可以先用已经更新好的代码。比如我就失败好多次了,为了尽快弄通整个流程,我就用了以前的旧代码,它的子模块已经更新好了)

cd ardupilot
git checkout -b new_one Copter-4.0.7
git submodule update --init --recursive

最后一行命令其实也可以不用弄,在编译环境建立的时候,脚本会给我们自动更新子模块。

二、编译环境建立

ardupilot的开发人员已经帮我们写好了编译环境的一键配置脚本

./Tools/environment_install/install-prereqs-ubuntu.sh -y

有大佬指出这样才能正常运行(注意要先切到environment_install文件下哈)

chmod +x install-prereqs-ubuntu.sh

我自己好像都试过,好像都可以。不重要,反正上面两个总有一个ok。

!!!不过由于国内网络特性,我们需要在修改一些东西。
这里,参考monte3card大佬在知乎的文章。

  • 脚本中首先通过apt-get安装包,但是在国内由于众所周知的原因,默认的安装源下载较慢或是无法下载,安装前需要将apt-get更换为国内安装源。具体可以参考link(实际上,一开始装ubuntu时,我已经在系统设置中将源设置为了国内镜像源,所以这一步我并没有再做,大部分朋友应该也不用)
  • 脚本中使用pip2安装需要的包,同样需要更换为国内源,具体可以参考link
  • 在安装个过程中会安装ARM交叉编译工具链gcc-arm-none-eabi-6-2017-q2-update-linux安装包下载地址,在脚本中默认使用wget下载,速度奇慢无比,可以事先下载(迅雷下起来很快).
    并且自行解压/opt目录下(见下面命令),这样安装的时候会跳过下载,节省很多时间。
tar -jxvf xx.tar.bz2 -C /opt

按照monte3card大佬的说法上述一切顺利的话,最后只用像如下一样配置路径就好,ardupilot 官网也是这么写的。(注意,这个环境的配置命令的作用,如果不重启电脑的话,它只再当前terminal中有效。重启电脑后才算完全生效)

. ~/.profile

至此便大功告成!

仿真

完成了上述的编译环境搭建后,ardupilot的仿真环境也就搭建好了。接下来我们就可以按照官方的说明开始进行仿真。

  • 第一步:
    将目录切换到需要仿真的对象文件夹下
    eg:
cd ardupilot/ArduCopter
  • 第二步:若是第一次进行仿真,请先运行一下sim_vehicle.py -w,运行正常后,使用Ctrl+C kill这个程序的运行。然后执行如下命令:
sim_vehicle.py --console --map

就可以出现仿真界面了:我们可以在终端输入相应的指令来控制飞机,然后再console和map里观察飞机的飞行状况

请添加图片描述

经验教训


这里是一些自己无意踩到的坑,记录一下。
我自己在最后实际上遇到了意外,这些情况各位看官可能并不会遇到,但是我自己是遇到了。所以我就自己记录一下。

坑1

输入飞控固件的配置指令:

./waf configure --board fmuv3

等着我的不是finished successfull,而是:
在这里插入图片描述
然后我第一反应是这个好像在怒飞老师那里看见过,果然被我翻到了。在这里插入图片描述但是重启并没有解决我的问题。那我猜测肯定是交叉编译环境没有成功地添加路径。于是我找到了这个帖子link
按照这个帖子的方法,和我自己的尝试,进行如下操作:

  1. 打开这个文本
vim /etc/profile

  1. 在文本最后添加这行(注意需要在最后一行代码后空一行再添加,不然会失败)
export PATH=$PATH:/usr/lib/gcc/gcc-arm-none-eabi-4_9-2014q4/bin
  1. 保存退出后,使能环境变量
source /etc/profile

此命令只在当前终端有效,若需要在其它终端中使用,需要重启计算机。在当前终端执行我们熟悉的waf命令后,everthing is ok! 最棒的是原来这台在windows环境下编译需要花费4min30s左右,而现在在ubuntu系统下,编译时间缩短为了1mim30s请添加图片描述

坑2

在运行脚本时,我犯了两个致命错误,在编译上不会有问题,但是在进行仿真运行就让我找了很久的问题。

  • 错误1:在配置pip国内镜像源时,把第一行的[global]没复制全,导致pip一直报错: ConfigParser.MissingSectionHeaderError: File contains no section headers.

  • 解决方法:把pip的那个配置文件 .pip/pip.conf 里的错误改正

  • 错误2:既然已经配置好了国内的高速镜像源,我还开了代理,解决了错误1后,它又一直报错:TypeError: unsupported operand type(s) for -=: ‘Retry’ and ‘int’

  • 解决方法:关闭代理通道,重启电脑

解决这两个问题后再重新操作一下整个编译环境的配置过程,最终得到了完美解决


参考

1.https://zhuanlan.zhihu.com/p/61616055
2.https://ardupilot.org/dev/docs/building-setup-linux.html#building-setup-linux
3.https://blog.csdn.net/yk150915/article/details/80117082

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ubuntu下ardupilot编译环境搭建与仿真 的相关文章

  • Docker学习系列(一):windows下安装docker

    本文目录如下 windows按照docker的基本要求具体安装步骤开始使用安装远程连接工具连接docker安装中遇到的问题Docker的更新Docker中的jupyterwindows下使用docker的常用命令 windows下安装doc
  • Docker学习系列(三):Ubuntu下使用Docker的基本指令记录及一些注意事项

    最近发现极客学院docker教程 xff0c 还不错 xff0c 可以参考 1 Dockerhub下载镜像 注 xff1a Dockerhub地址 有两种方式可以获得新的镜像 直接从dockerhub下载编译好的image xff08 该编
  • 安装visual studio 2012,并配置opencv

    在同学的帮助下 xff0c 终于成功配置了vs 43 opencv xff0c 将详细过程记录在此 xff0c 方便以后查阅 参考1 本文目录 安装vs2012安装opencv在vs2012中配置opencv测试opencv是否配置成功关于
  • Ubuntu下如何安装TensorFlow

    本文目录 引言基于Anaconda的tensorflow安装 1 下载linux版本的Anaconda安装包2 安装Anaconda 利用anaconda安装tensorflow 1 建立一个 conda 计算环境2 激活环境使用 cond
  • Visualizing and Understanding Convolutional Networks

    Matthew D Zeiler xff0c Rob Fergus Visualizing and Understanding Convolutional Networks CVPR2014 论文下载 推荐一篇比较好的blog xff1a
  • 对极几何基本概念

    对极几何 xff08 Epipolar Geometry xff09 描述的是两幅视图之间的内在射影关系 xff0c 与外部场景无关 xff0c 只依赖于摄像机内参数和这两幅试图之间的的相对姿态 什么是对极几何粗略概念对极几何相关的一个重要
  • Python·Win10通过Anaconda安装python和Jupyter(python2.7为例)

    Python Win10通过Anaconda安装python和Jupyter xff08 python2 7为例 xff09 标签 xff08 空格分隔 xff09 xff1a 软件安装 管理 使用 Python 本文主要讨论如何利用Ana
  • Ubuntu14.04安装build-essential失败,包依赖问题如何解决?

    正在读取软件包列表 完成 正在分析软件包的依赖关系树 正在读取状态信息 完成 有一些软件包无法被安装 如果您用的是 unstable 发行版 xff0c 这也许是 因为系统无法达到您要求的状态造成的 该版本中可能会有一些您需要的软件 包尚未
  • 最优化理论·非线性最小二乘

    最优化理论 非线性最小二乘 标签 xff08 空格分隔 xff09 xff1a 数学 非线性最小二乘问题是椭圆拟合中最易遇到的优化问题 xff0c 本文主要对非线性二乘的基本分析做简单介绍 1 什么是最小二乘问题 目标函数能够写为m个函数平
  • 所有线段的交点-初级篇

    所有线段的交点 初级篇 标签 xff08 空格分隔 xff09 xff1a 计算机视觉 图形学 所有线段的交点 初级篇 参考 xff1a 计算几何 算法与应用 邓俊辉 译 清华大学出版社 本文以一个小例子介绍如何计算所有线段交点 xff0c
  • 服务器docker使用

    这篇文章是我给自己的一个记录 xff0c 有些名词可能写的不专业 xff0c 请见谅 docker里面有两个概念 xff0c 一个是镜像 xff0c 一个是容器 镜像可以看做是类 xff0c 容器就是类的实例 在学院的服务器上 xff0c
  • MPC模型预测控制

    这篇主要讲一下模型预测控制 xff0c 如果对PID控制了解的同学 xff0c 那效果更好 如果不了解PID控制 xff0c 还是熟悉下比较好 模型预测控制 xff0c 顾名思义 xff0c 基于模型 xff0c 预测未来 xff0c 进行
  • MPC自学资料总结

    1 书籍 xff1a 无人驾驶车辆模型预测控制 2 视频 xff1a https ww2 mathworks cn videos understanding model predictive control part 1 why use m
  • [授权发表]基于 VNCServer + noVNC 构建 Docker 桌面系统

    by Falcon of TinyLab org 2015 05 02 最初发表 xff1a 泰晓科技 聚焦嵌入式 Linux xff0c 追本溯源 xff0c 见微知著 xff01 原文链接 xff1a 基于 VNCServer 43 n
  • 【c语言】字符串输出方式 | API仿真

    创作不易 xff0c 本篇文章如果帮助到了你 xff0c 还请点赞 关注支持一下 gt x16966 lt 主页专栏有更多知识 xff0c 如有疑问欢迎大家指正讨论 xff0c 共同进步 xff01 给大家跳段街舞感谢支持 xff01 c语
  • 【c语言】结构体详解 | 结构体数组/指针

    创作不易 xff0c 本篇文章如果帮助到了你 xff0c 还请点赞 关注支持一下 gt x16966 lt 主页专栏有更多知识 xff0c 如有疑问欢迎大家指正讨论 xff0c 共同进步 xff01 x1f525 c语言系列专栏 xff1a
  • stm32F4系列学习笔记1: keil使用

    一 在keil的find功能中有几个find options xff0c 查了一下 xff0c 这几个find options的意思是 1 Match case 区分大小写 2 Regular expression 正则表达式 3 Matc
  • STM32F4系列学习笔记2:IO相关

    一 寄存器说明 xff1a STM32F4 GPIO最多有9组 xff0c 从GPIOA GPIOI xff0c 每组IO有16个Pin xff0c STM32F407有7组 xff0c 所以一共有7 16 61 112个引脚 xff0c
  • 树莓派Ubuntu20.04创建虚拟内存文件并设置开机自动启用

    目录 一 检查有没有虚拟内存 二 创建虚拟内存文件并设置权限 三 设置并激活虚拟内存文件 四 设置开机自动启用虚拟内存 五 重启后检测虚拟内存是否正常启用 一 检查有没有虚拟内存 树莓派Ubuntu20 04默认没有虚拟内存 xff0c 可
  • 如何配置 QEMU 虚拟机网络

    关于 QEMU 的网络策略 QEMU 提供 4 种网络通信方法 xff0c 它们分别是 xff1a User mode stack xff1a 用户协议栈方式 xff0c 这种方式的大概原理是在 QEMU 进程中实现一个协议栈 xff0c

随机推荐

  • Pygame库的使用-1 初识Pygame

    本文参考链接如下 xff1a 1 https zhuanlan zhihu com p 1366649502 https www bilibili com video BV1bE411p7Ue from 61 search amp seid
  • 电机知识入门 有刷 | 无刷

    一 总述 直流电动机按结构及工作原理可划分为无刷直流电机 BLDC电机 和有刷直流电机 BDC电机 二 差异 BDC是Brushed DC Motor的缩写 xff0c BLDC是Brushless DC Motor的缩写BLDC电机 直流
  • PCB设计1 模块间的隔离

    想要给板子的各个部分进行电气隔离 xff0c 比如电源转压之后的各个电压12V 5V 3 3V 和用电的设备之间进行隔离 xff0c 本来的想法是用2pin的跳线帽 xff0c 但是在参考了一些资料之后 xff0c 对2pin跳线帽有了一个
  • Ubuntu18.04 更改apt-get 的时候会访问的软件源列表

    像这样 xff0c 每次在sudo apt get update的时候会有很多访问的软件源列表 xff0c 但是有的时候自己安装了一些软件比如说nordvpn xff0c 这样的时候就会自动的为我们增加apt get的源 xff0c 但是往
  • 安装油猴插件解决chatgpt报错问题

    转载自Github Daily公众号 Something went wrong If this issue persists please contact usthrough our help center at help openai c
  • Ubuntu18.04安装Elevation_Map并测试

    参考 elevation mapping at master ANYbotics elevation mapping GitHub 安装elevation mapping与traversability estimation elevatio
  • Vue:button按钮的点击

    调用 xff1a lt button class 61 34 toast 34 v on click 61 34 addEvent 34 gt toast gt lt button gt script lt script gt export
  • Vslam方案+源码,轻松搞定视觉slam

    原创 xff1a 涛涛CV 涛涛CV 今天 关注涛涛CV xff0c 设为星标 xff0c 更新不错过 VSLAM方案 目前基于视觉的SLAM技术有多种组合形式 xff08 见下表 xff09 方案 特点 TOF 成本高 xff0c 分辨率
  • 图解字节序大小端、比特序大小端

    先建立几个常识 xff1a 一般机器的字节序大小端和比特序大小端是一致的 人类阅读时 xff0c 从左向右进行阅读 xff0c 所以先看到数字的高位 xff0c 最后才能看到数字的低位 所以 xff0c 人类的阅读顺序 xff0c 天然是大
  • C++为什么要学习STL和Boost库

    最近一年我电话面试了数十位 C 43 43 应聘者 xff0c 惯用的暖场问题是 工作中使用过 STL 的哪些组件 xff1f 使用过 Boost 的哪些组件 xff1f 得到的答案大多集中在 vector map 和 shared ptr
  • 树莓派raspberry bullseye扩大虚拟内存

    之前用Ubuntu20 04的时候遇到很多bug xff0c 比如sudo apt update能用但图形界面却提示wifi不可用 xff0c 图形界面卡顿刷新黑屏 xff0c 图形界面没法使用硬件加速 xff0c 以及进入图形界面后无法使
  • 查看新增串口、USB设备

    注意 xff1a 虚拟机环境下的ubuntu默认情况下是不能自动识别的 xff0c 需要在虚拟机窗口右下角点击 34 Prolific USB Serial Controller 34 xff0c 然后选择 34 Connect Disco
  • ROS入门保姆级教程:7-ROS话题通信实现2:自定义消息类型(msg)

    ROS入门往期 xff1a ROS入门保姆级教程 xff1a 1 hello world初体验 ROS入门保姆级教程 xff1a 2 VScode中使用ROS ROS入门保姆级教程 xff1a 3 ROS文件系统 ROS入门保姆级教程 xf
  • Proteus仿真时报错:[SPICE] Too many iterations without convergence

    一 问题 xff1a 在利用Proteus仿真时 xff0c 经常会遇到 SPICE Too many iterations without convergence xff08 太多没有收敛的迭代 xff09 这个提示 xff0c 致使仿真
  • Android.bp编译提示ninja: error: unknown target ‘MODULES-IN-xxx‘终极指南

    Android bp编译提示ninja error unknown target 39 MODULES IN xxx 终极指南 Android bp系列博客 Android bp你真的了解吗 Android bp入门指南之Android m
  • 转折点----------我的IT梦

    干IT这一行快6年了 从来没有留下任何属于自己的一些所谓的阅历 时常去逛逛同行前辈们的空间 总能看到他们留下的心得体会 实则令人羡慕 xff0c 或者自己的卑微 xff0c 或者实在没什么体会 xff0c 写出来会丢人现眼 只是默默的去感受
  • 有了这份程序员面试指南,你离大厂Offer还远吗?| 附推荐书籍

    点击上方蓝色字体 xff0c 关注我 一个在阿里云打工的清华学渣 图by 石头 64 长白山 关于作者 xff1a 程序猿石头 ID tangleithu xff0c 现任阿里巴巴技术专家 xff0c 清华学渣 xff0c 前大疆后端 Le
  • 记录一次harbor的镜像扫描和更新

    前提 已经部署好harbor 192 168 14 16 项目名称 harbor 1 在harbor服务器拉取centos源镜像 root localhost docker pull centos Using default tag lat
  • 关于pixhawk硬件IMU和compass那点事儿

    文章目录 前言一 IMU和compass是什么 xff1f 二 导航坐标系与机体坐标系三 安装IMU xff0c compasss四 hwdef中设置IMU xff0c compass朝向总结 前言 继上一篇讲解了pixhawk的硬件组成
  • ubuntu下ardupilot编译环境搭建与仿真

    文章目录 前言一 ardupilot 源码下载二 编译环境建立仿真经验教训坑1坑2 参考 前言 虽然怒飞老师给出了详细的windows下的开发环境的搭建教程 但是对于开发者而言 xff0c 最好的系统环境还是在Linux系统下 xff0c