Ubuntu16.04下PX4 开发环境配置

时间:2022-02-11 20:09:18

PX4 Ubuntu16.04 开发环境配置

看到官网有详细介绍(官网安装说明链接)时,喜出望外,列下了一串学习任务,以为会很快就搞定开发环境,结果搞了半天发现自己还是too young too naive,一步一个坑,暂时记录下来,留给有需要的人


问题1: 依赖错误及安装时404错误

sudo apt-get install python-argparse git-core wget zip \
python-empy qtcreator cmake build-essential genromfs -y

报错如下:

正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
注意,选中 'libpython2.7-stdlib' 而非 'python-argparse'
build-essential 已经是最新版 (12.1ubuntu2)。
zip 已经是最新版 (3.0-11)。
wget 已经是最新版 (1.17.1-1ubuntu1.2)。
libpython2.7-stdlib 已经是最新版 (2.7.12-1ubuntu0~16.04.1)。
有一些软件包无法被安装。如果您用的是 unstable 发行版,这也许是
因为系统无法达到您要求的状态造成的。该版本中可能会有一些您需要的软件
包尚未被创建或是它们已被从新到(Incoming)目录移出。
下列信息可能会对解决问题有所帮助:

下列软件包有未满足的依赖关系:
qtcreator : 依赖: libclang1-3.6 (>= 3.6) 但是它将不会被安装
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

以为是没装qt,跑去装完最新的qt 5.9发现然并软,
尝试修复依赖:

sudo apt-get install aptitude
sudo aptitude install libclang-dev

显示如下:

0 个软件包被升级,新安装 5 个, 1 个将被删除, 同时 0 个将不升级。
需要获取 12.2 MB 的存档。 解包后将要使用 123 MB。
下列软件包存在未满足的依赖关系:
libclang-3.6-dev : 依赖: libclang1-3.6 (= 1:3.6.2-3ubuntu1) 但它将不会被安装。
libobjc4 : 依赖: gcc-5-base (= 5.3.1-14ubuntu2) 但是 5.4.0-6ubuntu1~16.04.4 已安装。
libclang-common-3.6-dev : 依赖: libllvm3.6v5 (= 1:3.6.2-3ubuntu1) 但它将不会被安装。
libobjc-5-dev : 依赖: gcc-5-base (= 5.3.1-14ubuntu2) 但是 5.4.0-6ubuntu1~16.04.4 已安装。
依赖: libgcc-5-dev (= 5.3.1-14ubuntu2) 但是 5.4.0-6ubuntu1~16.04.4 已安装。
下列动作将解决这些依赖关系:

保持 下列软件包于其当前版本:
1) libclang-3.6-dev [未安装的]
2) libclang-common-3.6-dev [未安装的]
3) libclang-dev [未安装的]
4) libobjc-5-dev [未安装的]
5) libobjc4 [未安装的]
是否接受该解决方案?[Y/n/q/?]

输入: y
依旧报错,和前面一样,
再次尝试sudo aptitude install libclang-dev

……
是否接受该解决方案?[Y/n/q/?]

此处输入:n,得到提示如下

下列动作将解决这些依赖关系:

安装 下列软件包:
1) libclang1-3.6 [1:3.6.2-3ubuntu1 (xenial)]
2) libllvm3.6v5 [1:3.6.2-3ubuntu1 (xenial)]
3) libobjc-5-dev [5.3.1-5ubuntu1 (xenial)]
4) libobjc4 [5.3.1-5ubuntu1 (xenial)]

降级 下列软件包:
5) cpp-5 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
6) g++-5 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
7) gcc-5 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
8) gcc-5-base [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
9) gfortran-5 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
10) libasan2 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
11) libatomic1 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
12) libcc1-0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
13) libcilkrts5 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
14) libgcc-5-dev [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
15) libgfortran-5-dev [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenia
16) libgfortran3 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
17) libgomp1 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
18) libitm1 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
19) liblsan0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
20) libmpx0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
21) libquadmath0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
22) libstdc++-5-dev [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)
23) libstdc++6 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
24) libtsan0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]
25) libubsan0 [5.4.0-6ubuntu1~16.04.4 (now) -> 5.3.1-5ubuntu1 (xenial)]

是否接受该解决方案?[Y/n/q/?] y

看到一串降级预感有戏,果然,再次运行

sudo apt-get install python-argparse git-core wget zip \
python-empy qtcreator cmake build-essential genromfs -y

报的错变成了:

错误:1 http://mirror.neu.edu.cn/ubuntu xenial/universe amd64 genromfs amd64 0.5.2-2build2
404 Not Found [IP: 202.118.1.64 80]
E: 下载 http://mirror.neu.edu.cn/ubuntu/pool/universe/g/genromfs/genromfs_0.5.2-2build2_amd64.deb 404 Not Found [IP: 202.118.1.64 80] 失败

E: 有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?

显示genromfs这个模块404错误了
在清华镜像站上找到也有这个包,按教程替换成清华源先备份:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 

更改源:sudo gedit /etc/apt/sources.list
打开https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/选择自己的版本,将内容替换打开的sources.list里的文本,保存关闭。
重要,一点要更新一下系统,不然继续执行之前的install命令会一直报错

sudo apt-get update

再进行下面的各种安装应该就不会再有404的错误了

问题2: 安装基于NuttX的硬件出错

最后一步安装NuttX时,官网介绍很奇怪,apt-get install 选项中居然少了arm-none-eabi,补全后为:

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

问题3: 编译报错

make px4fmu-v2_default到14%报错:

python import error:  No module named em
python import error: No module named em

Required python packages not installed.

On a Debian/Ubuntu system please run:

sudo apt-get install python-empy
sudo pip install catkin_pkg

On MacOS please run:
sudo pip install empy catkin_pkg

On Windows please run:
easy_install empy catkin_pkg

Required python packages not installed.

On a Debian/Ubuntu system please run:

sudo apt-get install python-empy
sudo pip install catkin_pkg

On MacOS please run:
sudo pip install empy catkin_pkg

On Windows please run:
easy_install empy catkin_pkg


python import error: No module named em

Required python packages not installed.

On a Debian/Ubuntu system please run:

sudo apt-get install python-empy
sudo pip install catkin_pkg

On MacOS please run:
sudo pip install empy catkin_pkg

On Windows please run:
easy_install empy catkin_pkg

CMakeFiles/msg_gen.dir/build.make:900: recipe for target 'src/modules/uORB/topics/actuator_armed.h' failed
make[3]: *** [src/modules/uORB/topics/actuator_armed.h] Error 1
make[3]: *** 正在等待未完成的任务....
CMakeFiles/msg_gen.dir/build.make:153: recipe for target 'topics_sources/uORBTopics.cpp' failed
make[3]: *** [topics_sources/uORBTopics.cpp] Error 1
CMakeFiles/msg_gen.dir/build.make:528: recipe for target 'src/platforms/nuttx/px4_messages/px4_actuator_armed.h' failed
make[3]: *** [src/platforms/nuttx/px4_messages/px4_actuator_armed.h] Error 1
CMakeFiles/Makefile2:69: recipe for target 'CMakeFiles/msg_gen.dir/all' failed
make[2]: *** [CMakeFiles/msg_gen.dir/all] Error 2
Makefile:160: recipe for target 'all' failed
make[1]: *** [all] Error 2
Makefile:164: recipe for target 'px4fmu-v2_default' failed
make: *** [px4fmu-v2_default] Error 2

解决方法1

pip install empy

问题4: QT配置问题

教程里面太简略啦,现在安装的高版本QT界面有点不一样,
首先:加载 Firmware 根目录下 CMakeLists.txt 文件,步骤:点击工具栏 File -> Open File or Project -> Select the CMakeLists.txt file 。(注意,是Firmware 根目录下,而不是新建的build目录)
然后:
Ubuntu16.04下PX4 开发环境配置

在这里:
Ubuntu16.04下PX4 开发环境配置
点击Add–Custom Executable
Ubuntu16.04下PX4 开发环境配置
executable 栏里输入’make’, argument栏输入 ‘upload’
点击‘play’按钮配置成运行工程(程序左下角绿色小三角)。


真羡慕那些一遍安装就成功没有任何错的lucky dog(折腾一天,不知道以后还会遇到多少坑,哭晕在厕所)