最近博主的ubuntu虚拟机再次崩溃,狠下决心将4G内存升级为12G。这样就可以给虚拟机多分配些内存了。
鉴于前两次安装PX4环境出现了很多错误,走了很多弯路,没有一一记录下来,所获甚少。故而借此机会,
详细总结ubuntu下,PX4的编译环境的搭建过程,以期有所进步。
限于博主刚刚入道,水平有限,所述难免有误。疏漏谬误之处,万望指正,在此拜谢。
所用系统:ubuntu 16.04 64bit
Vmare虚拟机,自动安装
编译系统搭建步骤:
1)虚拟机安装完成后,启动ubuntu系统。点击右上角电源图标,点击“about this computer”
在弹出的对话框,选择detail,overview,install updates。
按照提示输入密码,安装更新。
2)右键打开terminal
3)输入指令:sudo usermod -a -G dialout $USER
重启系统,使之生效。
4)输入指令:sudo apt install cmake gcc-arm-none-eabi -y
备注:安装编译工具
5)输入指令:sudo apt autoremove
备注:自动清除 snap-confine。这一步是按照安装提示输入的,并非官网说明。
6)输入指令:sudo apt install python-argparse python-empy python-jinja2 build-essential genromfs -y
sudo apt install python-pip -y
pip install pyserial
pip install --upgrade pip (更新pyserial,这一步是按照系统提示进行的。)
备注:安装python,及相关模块。
7)输入指令:sudo apt install git git-core -y
mkdir -p ~/src
cd ~/src
git clone --recursive https://github.com/mavlink/qgroundcontrol.git(下载qgc源码)
git clone --recursive https://github.com/PX4/Firmware.git(下载PX4源码)
cd Firmware 或者cd qgroundcontrol (这个主要看你当前是在下PX4还是下QGC)
git submodule init
git submodule update
备注:两个源码都有一些子模块,并没有直接放到主源码当中。使用--recursive可以捎带子模块一同下载。
否则便只会下载master源码,而缺少子模块。 下载中间如果断网则只能重新下载。
下载完成后,使用最后两句,确保所有子模块均被下载。当然这两句话可能什么都不做。
这里QGC的源码并不是编译PX4的必须条件,可以先不下,之后再下载也可以。
8)输入指令:cd ~/src/Firmware
make px4fmu-v2_default
备注:现在编译使用的是gcc进行编译,如果使用ninja编译,还需额外安装。
ninja据说再次编译的较快。
使用以下命令安装ninja:cd ~
sudo apt install ninja-build -y
建议每次修改代码后,编译前,使用 make clean清除下之前编译的结果,
然后再使用make px4fmu-v2_default 进行编译。
9)输入指令:make px4fmu-v2_default upload
备注:利用USB线连接pixhawk和PC。在编译完成后,使用上述命令下载固件到飞控中。
如果不能自动下载,可根据提示重新插拔USB,即可下载。
如果仍然不能下载,可以按照如下命令配置udev权限。
sudo gedit /etc/udev/rules.d/10-px4.rules
在新建的10-px4.rules中添加如下内容:
# All 3D Robotics (includes PX4) devices
SUBSYSTEM=="usb", ATTRS{idVendor}=="26AC", GROUP="users", MODE="0666"
# FTDI (and Black Magic Probe) Devices
SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", GROUP="users", MODE="0666"
# FTDI USB-Serial
SUBSYSTEM=="usb", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", GROUP="users", MODE="0666"
保存并关闭10-px4.rules
sudo restart udev
重新插拔usb线。
这里的配置文件,博主不求甚解,只是摘抄了别人的解决办法,并未通过实测可行。
异常说明:
1)最后一步,新建完配置文件10-px4.rules后,输入“ sudo restart udev ” 重启udev失败。
提示为:restart: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
后果:貌似暂时没发现有什么影响。因为博主后来强制删除了该文件,并重新启动电脑,仍然可以下载固件。
可能的解释:需要在Linux(Ubuntu)普通用户下访问原本要在root下才能访问的usb设备,需要配置该文件。
但是官网上并没有这个文件的描述,因此猜想其并非是必要的。
联想到刚开始第三步使用的命令sudo usermod -a -G dialout $USER
是不是表明当前用户已经获得了root权限了呢,如果是这样自然不需要该配置文件了。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)