Ubuntu操作系统下Pixhawk原生固件PX4的编译方法

2023-05-16

在Ubuntu上搭建环境相对简单许多,按照PX4中文维基官网的教程即可。

工具链安装

  • 权限设置

把用户添加到用户组 “dialout”(如果这步没做,会导致很多用户权限问题):

    .1 sudo usermod -a -G dialout $USER

然后注销后,重新登录,因为重新登录后所做的改变才会有效

  • 安装CMake
    .1 sudo add-apt-repository ppa:george-edison55/cmake-3.x -y
    .2 sudo apt-get update
    .3 # 必备软件(python、git、qt)
    .4 sudo apt-get install python-argparse git-core wget zip \
                            python-empy qtcreator cmake build-essential genromfs -y
    .5 # 仿真工具
    .6 sudo add-apt-repository ppa:openjdk-r/ppa
    .7 sudo apt-get update
    .8 sudo apt-get install openjdk-8-jre
    .9 sudo apt-get install ant protobuf-compiler libeigen3-dev libopencv-dev openjdk-8-jdk openjdk-8-jre clang-3.5 lldb-3.5 -y
  • 卸载模式管理器

Ubuntu配备了一系列代理管理,这会严重干扰任何机器人相关的串口(或usb串口),卸载掉它也不会有什么影响。

    .1 sudo apt-get remove modemmanager
  • 更新包列表和安装下面的依赖包
    .1 sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded -y
    .2 sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
    .3 sudo apt-get update
    .4 sudo apt-get install python-serial openocd \
                            flex bison libncurses5-dev autoconf texinfo build-essential \
                            libftdi-dev libtool zlib1g-dev \
                            python-empy gcc-arm-none-eabi -y

代码编译


根据PX4中文维基官网教程。

  • 安装Git
    .1 sudo apt-get install git-all
  • 下载代码
    .1 mkdir -p ~/src
    .2 cd ~/src
    .3 git clone https://github.com/PX4/Firmware.git

  
  • 初始化
    先进入Firmware文件夹,进而进行初始化、更新子模块操作,耐心的等待……
    .1 cd Firmware
    .2 git submodule update --init --recursive
  • 编译
    在上一步的操作结束之后,即可进行编译:
    .1 make px4fmu-v2_default

注意到“make”是一个字符命令编译工具,“px4fmu-v2”是硬件版本,“default”是默认配置,所有的PX4编译目标遵循这个规则。

与Windows环境中相同,这里也可能因为gcc-arm-none-eabi版本不对,需要进行版本升级到4.9.4,方法如下:

  • 下载gcc-arm-none-eabi 4.9.4,对于的文件夹命名为arm-none-eabi-4_9-2014**q3**
    .1 wget https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q3-update/+download/gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz
  • 去旧迎新
    .1 pushd .
    .2 # => 卸载新版的gcc-arm-none-eabi
    .3 sudo apt-get remove gcc-arm-none-eabi
    .4 # => 安装下载好的gcc-arm-none-eabi
    .5 .tar -jxf gcc-arm-none-eabi-4_9-2015q3-20150921-linux.tar.bz2
    .6 sudo mv gcc-arm-none-eabi-4_9-2015q3 /opt
    .7 exportline="export PATH=/opt/gcc-arm-none-eabi-4_9-2015q3/bin:\$PATH"
    .8 if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
    .9 # => 使路径生效
    .10 . ~/.profile
    .11 popd

对于GCC5.4.3版本的下载:

    .1 wget https://launchpad.net/gcc-arm-embedded/5.0/5-2016-q2-update/+download/gcc-arm-none-eabi-5_4-2016q2-20160622-linux.tar.bz2

其余操作不再赘述

PX4 中文维基 同步更新。


笔者装的是Ubuntu 64位系统,而上述arm-none-eabi是直接下载的编译好的32位,还需要安装一个东西

    .1 sudo apt-get install lsb-core

可以检查arm-none-eabi 4.9是否安装成功,输入以下指令:

    .1 arm-none-eabi-gcc --version

如果出现如下信息,交叉编译环境搭建就没有什么问题了

    .1 ~$ arm-none-eabi-gcc --version
    .2 arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 4.9.3 20150529 (release) [ARM/embedded-4_9-branch revision 227977]
    .3 Copyright (C) 2014 Free Software Foundation, Inc.
    .4 This is free software; see the source for copying conditions.  There is NO
    .5 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  • 编译
    .1 cd ~/src/Firmware
    .2 make px4fmu-v2_default

进入Firmware所在的文件夹,make成功后,显示如下:
ok

Ninja

Ninja比Make更快,并且PX4的CMake生成器可以支持它。不幸的是,Ubuntu目前只支持一个非常过时的版本。

这里博主下载二进制文件并添加到系统路径来安装最新版本的Ninja:

    .1 mkdir -p $HOME/ninja
    .2 cd $HOME/ninja
    .3 wget https://github.com/martine/ninja/releases/download/v1.6.0/ninja-linux.zip
    .4 unzip ninja-linux.zip
    .5 rm ninja-linux.zip
    .6 exportline="export PATH=$HOME/ninja:\$PATH"
    .7 if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi
    .8 . ~/.profile

按上面的方法配置好ninja之后,以后每次一make都会调用它,这样编译速度会更快。

如果不想使用ninja的话,可以将其从’~/.profile’中注释掉。

#export PATH=/home/fantasy/ninja:$PATH

Qt Creator


Qt Creator是官方唯一支持的IDE,在Ubuntu上针对PX4固件使用,便于看代码的同时也可以进行编译烧录。

  • 安装Qt
    .1 sudo apt-get install qtcreator

Qt Creator的常见功能如下:
create

在打开Qt之前,应该创建project文件:

    .1 cd ~/src/Firmware
    .2 mkdir ../Firmware-build
    .3 cd ../Firmware-build
    .4 cmake ../Firmware -G "CodeBlocks - Unix Makefiles"
    .5 #可以发现Firmware-build目录生成了一些文件

提个醒: 按照官网上面最后一行的命令,当前使用Qt编译得到的将是build px4 ,因为默认的编译指令是make posix_sitl_default,这不是大家所期待的结果。

解决方案:对于,Pixhawk硬件,将最后一行改成
cmake ../Firmware -G "CodeBlocks - Unix Makefiles" -DCONFIG=nuttx_px4fmu-v2_default

其他例如使用FMUv4的用户请根据需求进行替换。

  • 打开Qt
    Qt
    Ubuntu用户只要导入主文件夹里的CMakeLists.txt文件就可以了,打开Qt,通过File -> Open File or Project -> 选择CMakeLists.txt (默认位置在Firmware文件夹根目录下)
    open

  • 项目配置
    选择src/Firmware-build作为构建目录
    build
    运行设置
    run

  • 编译
    runit

  • 上传

upload2

笔者刚开始的时候发现Qt中默认显示的固件不全,很多文件都没有显示,如下图所示
leave

进行下面的操作就哦可了

qtt

file

Eclipse on Ubuntu

ecl

在Windows下习惯了使用Eclipse的用户也可以直接在Ubuntu下使用Eclipse进行开发,与Qt一样,这也是一款跨平台的IDE。
就是Java配置有点复杂,用起来却是非常方便的,除了不用更改环境设置,其他的都与Windows下无异,此处不在赘述。

一个很棒的特点就是Ubuntu下的Eclipse可以直接加中文注释,这是别的编译器没有的,我尝试了用Sublime看代码,定义跳转不太给力,Qt打开工程很慢。

目前为止最好的方法还是虚拟机,Windows改一行代码编译上传可能需要五分钟,非常费劲,但是Ubuntu可以说是极速。但是Windows下有很多好用的工具便于调试,Source Insight看代码也是很给力。虚拟机完美

至此,在Windows已经Ubuntu下的环境搭建已经全部搭建成功。

现在是2016.7.26 19:37 为了确保方法的有效性,笔者已经在都装有Ubuntu虚拟机的笔记本和台式机上用上述方法完成了两种系统下环境搭建、代码编译的复现,亲测有效。

Tips

下载特定版本的固件

PX4Firmware有非常多的发行版,可以从这里看到。

release

也可以在这里进行选择:

tag

其实下载链接都是https://github.com/PX4/Firmware.git。

    .1 ~$:cd ~/src/Firmware
    .2 # 查看标签(版本)
    .3 ~$:git tag
    .4 ...
    .5 v1.4.0rc1
    .6 v1.4.0rc2
    .7 v1.4.0rc3
    .8 v1.4.0rc4
    .9 v1.4.1rc1
    .10 v1.4.1rc2
    .11 ...
    .12 # 新建一个工作分区并切换到目标版本
    .13 git checkout -b branch_name tag_name

这样就可以使用你想要的任意版本固件进行开发了。(因为可能有的版本确实不太稳定)

Makefile

    .1 # Don't be afraid of this makefile, it is just passing
    .2 # arguments to cmake to allow us to keep the wiki pages etc.
    .3 # that describe how to build the px4 firmware
    .4 # the same even when using cmake instead of make.

Makefile只是将参数传递给cmake。所有与make相关的指令都可以在这里找到,也可以自定义编译指令,比如

    .1 #  explicity set default build target
    .2 fantasy: px4fmu-v2_default

于是博主编译固件变成下面这个样子:

    .1 ~$:~/src/Firmware $ make fantasy
    .2 PX4 CONFIG: px4fmu-v2_default
    .3 ninja: no work to do.

做这些只为让遇到相同问题的人少走弯路,专注核心问题,这也是笔者开展PX4中文维基汉化项目的初衷。
还望志同道合的你们多多支持!~


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

Ubuntu操作系统下Pixhawk原生固件PX4的编译方法 的相关文章

随机推荐

  • 英语常用短语

    1 xff0e 经济的快速发展 the rapid development of economy 2 xff0e 人民生活水平的显著提高 稳步增长 the remarkable improvement steady growth of pe
  • PX4进入系统控制台以及运行程序

    这里提供进入控制台两种办法 1 运行 Tools mavlink shell py dev ttyACM0 是我进入Px4系统控制台的命令 xff0c 进入之后应该是这样 Pixhawk src Firmware Tools mavlink
  • 哈哈,终于知道CSDN怎么改头像了

    话说之前一直郁闷 xff0c 说改头像的功能还没修好 xff0c 一直说服务器错误 今天偶尔发现 xff0c 右上角有个设置 xff0c 原来在这里可以改 我还发了几封邮件给CSDN的admin xff0c 居然只知道道歉 xff0c 不告
  • Hello Sky! pixhawk第一个例程学习解读

    学习px4的第一个程序 xff0c 这个例子作为官方给出解释的例程 xff0c 对于新手上手来说 xff0c 是很好的范例 接下来我对照程序源码 xff08 已经经过自己的修改和添加注释 xff09 进行讲解 1 PX4 INFO是标准的L
  • ShadowSSDT Hook

    ShadowSSDT表的获取 这里的ShadowSSDT表的获取是通过函数KeAddSystemServiceTable来获取的 使用这个函数的原因 xff1a 1 这个函数是已经导出的 xff0c 可以在代码中直接使用 2 这个函数里面使
  • 2013&2014

    2013总结 2013 毕业了 xff0c 算是正式工作半年 xff0c 2013年7月开始 xff0c 算是我的生活 xff0c 工作之外的时间都是自己的 一 收获 1 压力测试 差不多算是一个月的时间 xff0c 疯狂的一个月 xff0
  • BCTF总结

    缘由 上周 xff0c 我们小组Sigma参加了 百度杯 BCTF比赛 xff0c 经历了难忘的双休 xff0c 这次的BCTF跟以前参加的国内类似的安全比赛有些不同 xff0c 时间只有48小时 xff0c 题目不多 xff0c 但难度大
  • BCTF_海报探秘(300)

    这个题目来自上周的BCTF比赛 xff0c 题目是海报探秘 xff08 300 xff09 xff0c 一张png图片中隐藏了KEY xff0c 解出KEY xff0c 具体报告 xff0c 请下载 xff1a http download
  • 博客转移

    最近好久不来CSDN了 xff0c 自己搭建了一个博客 欢迎各位去新博客留言 http www l0g1n cn 以前学习汇编的博客 http www asmedu net blog user usermain jsp neighborId
  • 《Windows程序设计》之BLOKOUT1

    LRESULT CALLBACK WndProc HWND hwnd UINT message WPARAM wParam LPARAM lParam static BOOL fBlocking fValidBox static POINT
  • 天猫抢红包小工具源码

    时间很仓促 xff0c 写的很乱 xff0c 也就能用明天一天了 主要还是学习这个过程 include lt Windows h gt include lt stdio h gt include lt iostream gt include
  • vs2010开发qt程序debug正常,release出错

    在debug模式下 xff0c 配置的动态链接库是qtmaind lib QtGuid4 lib QtCored4 lib 这些链接库 xff0c 在release模式下是不适用的 xff0c 进入到qt的目录下 xff0c 发现了有一些不
  • cout与wcout

    一直以来只知道有cout用来输出 xff0c 今天用cout输出wchar时出现问题了 xff0c 输出结果是一段地址 xff0c 才发现了wcout的存在 使用wcout输出中文时 xff0c 又出现问题 xff0c 中文输出不了 xff
  • (极力推荐)BW:How to load and generate a custom hierarchy in SAP Business Warehouse (SAP BW) without using flat files

    这篇文章 xff0c 真是救了哥 xff0c 所以非常感谢这位作者 你看 xff0c 人家也是 2011 年 2 月 3 号才写的 xff0c 量身打造 xff0c 多好的人 xff0c 刚好赶上我了 PS xff1a 前段时间设计的文本抽
  • 主引导记录(MBR)信息分析与获取

    前段时间在安装黑苹果时 xff0c 发现一个问题 xff0c 电脑在启动时 xff0c 会找激活分区 xff0c 如果没有找到 xff0c 那就启动不起来 那能否写个小程序读取一下MBR信息 xff0c 把激活分区换成其它 xff0c 搞点
  • Duilib登录窗口

    先上效果图 xff08 自己感觉还不错 xff09 xff1a 功能不完善 xff0c 一是为了熟悉xml的写法 xff0c 手写 xff0c 不建议使用编辑器 xff0c 二了为了理顺程序的流程 xff0c 加入了部分注释 xml文件 l
  • React框架制作移动端H5可拖拽的悬浮图标

    一 前言 在跟需求方对接研发的需求 xff0c 人家说要做一个悬浮在页面的图标 xff0c 点击完截图然后进入一个新页面 xff0c 填完一些数据 xff0c 提交给接口 那么问题来了 xff0c 怎么制作一个悬浮框 xff0c 还是可拖拽
  • GIT回退到指定版本的两种方法(reset/revert)

    实现多人合作程序开发的过程中 xff0c 我们有时会出现错误提交的情况 xff0c 此时我们希望能撤销提交操作 xff0c 让程序回到提交前的样子 xff0c 本文总结了两种解决方法 xff1a reset revert 命令特点reset
  • W: GPG 错误:http://ppa.launchpad.net lucid Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY FAF69C646FF368B7的问题

    在安装更新时 xff0c 即在运行 xff0c 命令行sudo apt get update 或者运行更新管理器的时候 xff0c 出现W GPG 错误 xff1a http ppa launchpad NET lucid Release
  • Ubuntu操作系统下Pixhawk原生固件PX4的编译方法

    在Ubuntu上搭建环境相对简单许多 xff0c 按照PX4中文维基官网的教程即可 工具链安装 权限设置 把用户添加到用户组 dialout xff08 如果这步没做 xff0c 会导致很多用户权限问题 xff09 span class h