ubuntu20.04安装PX4固件错误总结

ubuntu20.04安装PX4固件错误总结

笔者小白一枚,意欲实现PX4“Hello Sky”仿真开发,在进行仿真模拟之前,需要在主机操作系统上安装开发人员工具链(Developer Toolchain)。本文记录了在ubuntu20.04环境下安装PX4固件的过程中出现的问题以及解决方法。本文所采用的解决方法都是来自网上大神们的智慧,笔者在实践中觉得有效就收集了下来,希望对读者有用。

关于常见的配置问题,PX4官网给出了常见疑难解答,如果不能解决,可以参考下面的方法。

  • 安装环境:ubuntu20.04+ROS Noetic+gazebo11.x,笔者在安装PX4固件之前安装了ROS Noetic,其中自带了gazebo11.x。

笔者安装时间为2020年9月15日,根据官网中工具链安装的最新教程,仅仅安装PX4固件,步骤如下:

  1. 下载PX4源代码
git clone https://github.com/PX4/Firmware.git --recursive
  1. 省略nuttx和模拟工具运行ubuntu.sh,仅仅安装PX4固件(如果想安装所有内容,不加--no-nuttx--no-sim-tools
bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools
  1. 检验PX4配置是否成功,在gazebo中编译PX4,若能看到一个无人机的模型,则配置成功。这一步也可以打开QGroundcontrol地面站,看是否和PX4有连接,也是检验配置成功与否的一个标志
make px4_sitl_default gazebo

问题一:git clone https://github.com/PX4/Firmware.git --recursive这一步特别慢

  1. 问题原因:GitHub是国外网站,git clone实际运行速度很慢,即使,也可能因为网速过慢而导致下载失败。
  2. 解决方法:
  • 方法1: 将GitHub的网站换为gitee(码云)网站,网上有相关教程gitee解决github下载资源慢的问题,已经有人为该网站建立了仓库,为https://gitee.com/designer/PX4Firmware.git。然后git clone该网站会飞快。
  • 方法2: 在https://github.com的后面加上后缀.cnpmjs.org,即https://github.com.cnpmjs.org,然后git clone该网站会飞快,参考文章彻底解决git clone以及 recursive慢的问题
  • 方法3:在终端科学上网,在终端输入以下两条命令后,访问GitHub的速度会快一点
    export http_proxy=http://proxyAddress:port
    export https_proxy=http://proxyAddress:port
    参考文章让终端走代理的几种方法
  • 如果下载源码或更新子模块出问题,也可以下载我配置好的源码,在ubuntu系统下主目录解压即可。:这个文件里用的是我的用户名,catkin_make编译时可能会出错,把出错的文件改为自己的用户名就好,执行catkin clean后再catkin_make。

问题二:上一条指令运行速度很快了,但子模块更新速度又很慢

  1. 问题原因:子模块的下载路径存放在Firmware/.gitmodules这个文件中,子模块又包含了GitHub这个下载网站,导致更新子模块的速度很慢。
  2. 解决方法:下载完源代码后,按Ctrl+c停止运行,打开文件夹./Firmware/,Ctrl+h显示隐藏文件。先修改子模块下载路径,再运行以下命令更新子模块。
git submodule update --init --recursive
  • 修改方法1:用码云网站换掉GitHub的网站
  • 修改方法2:在https://github.com的后面加上后缀.cnpmjs.org,参考文章彻底解决git clone以及 recursive慢的问题

问题三:已经装好PX4固件了,为什么make px4_sitl_default gazebo报错

  1. 报错信息:找不到了,粘贴了别人的报错
  • 终端报错类似于以下信息
-- Configuring incomplete, errors occurred!
……

ninja: build stopped: subcommand failed.
Makefile:200: recipe for target 'px4_sitl' failed
make: *** [px4_sitl] Error 1
  • CMakeError.log报错类似于以下信息
……

FAILED: : && /usr/bin/cc  -DCHECK_FUNCTION_EXISTS=pthread_create   CMakeFiles/cmTC_316db.dir/CheckFunctionExists.c.o  -o cmTC_316db  -lpthreads && :
/usr/bin/ld: cannot find -lpthreads
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
  1. 错误原因:因人而异,比较玄学,欢迎读者们交流指教,下面的方法对我有效可参考
  2. 解决方法:
  • 首先确认gazebo版本是否对应正确,比如ROS Noetic对应的gazebo版本号为11.x;检查ROS和gazebo是否安装完全,重新运行一下相关安装命令。
  • 如果不行,尝试GitHub的一个讨论区中的一个方法,安装一些gazebo插件,方法如下:
sudo apt-get install libprotobuf-dev libprotoc-dev protobuf-compiler libeigen3-dev libxml2-utils python-rospkg python-jinja2
sudo apt-get install libgstreamer-plugins-base1.0-dev gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-ugly -y

然后再运行

make px4_sitl_default gazebo

运行成功,可以看到gazebo中的无人机画面。打开QGroundcontrol,发现连接上PX4,控制无人机运动,gazebo中的无人机也会运动。

你可能感兴趣的:(PX4,linux)