在Ubuntu上搭建环境相对简单许多,按照PX4中文维基官网的教程即可。
把用户添加到用户组 “dialout”(如果这步没做,会导致很多用户权限问题):
.1 sudo usermod -a -G dialout $USER
然后注销后,重新登录,因为重新登录后所做的改变才会有效
.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中文维基官网教程。
.1 sudo apt-get install git-all
.1 mkdir -p ~/src
.2 cd ~/src
.3 git clone https://github.com/PX4/Firmware.git
.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,方法如下:
.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成功后,显示如下:
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是官方唯一支持的IDE,在Ubuntu上针对PX4固件使用,便于看代码的同时也可以进行编译烧录。
.1 sudo apt-get install qtcreator
Qt Creator的常见功能如下:
在打开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
Ubuntu用户只要导入主文件夹里的CMakeLists.txt文件就可以了,打开Qt,通过File -> Open File or Project -> 选择CMakeLists.txt (默认位置在Firmware文件夹根目录下)
项目配置
选择src/Firmware-build作为构建目录
运行设置
编译
上传
笔者刚开始的时候发现Qt中默认显示的固件不全,很多文件都没有显示,如下图所示
进行下面的操作就哦可了
在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虚拟机的笔记本和台式机上用上述方法完成了两种系统下环境搭建、代码编译的复现,亲测有效。
PX4Firmware有非常多的发行版,可以从这里看到。
也可以在这里进行选择:
其实下载链接都是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
这样就可以使用你想要的任意版本固件进行开发了。(因为可能有的版本确实不太稳定)
.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中文维基汉化项目的初衷。
还望志同道合的你们多多支持!~