ubuntu下 安装PX4编译环境

最近博主的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权限了呢,如果是这样自然不需要该配置文件了。

你可能感兴趣的:(PX4)