ubuntu20.04安装PX4固件错误总结_listen_road_wind的博客-程序员宅基地

技术标签: linux  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

问题三:已经装好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中的无人机也会运动。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/listen_road_wind/article/details/108623546

智能推荐

cookie,sessionStorage 和 localStorage_weixin_30335575的博客-程序员宅基地

1.三者之间的区别cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。cookie数据始终在同源的http请求中携带(即使不需要),记会在浏览器和服务器间来回传递。sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。存储大小: cookie数据大小不能超过4k。...

Android ButterKnife_Songlcy的博客-程序员宅基地

介绍1.ButterKnife中,在你的View或布局上使用注释@Bind来标示,它会自动将ID字段和View进行绑定。class ExampleActivity extends Activity { @Bind(R.id.title) TextView title; @Bind(R.id.subtitle) TextView subtitle; @Bind(R.id.fo

Android开发快速入门(环境配置、Android Studio安装)_weixin_30794491的博客-程序员宅基地

Android是一种激动人心的开源移动平台,它像手机一样无处不在,得到了Google以及其他一些开放手机联盟成员(如三星、HTC、中国移动、Verizon和AT&T等)的支持,因而不能不加以学习,否则你承担不起为此付出的代价。好在Android开发入门很容易,即使没有Android手机都没关系,只需有一台可供安装Android SDK和设备模拟器的计算机即可。本章首先介绍如何安装所...

CoAP学习笔记——CoAP格式详解_痞子IT的博客-程序员宅基地

0 前言    CoAP是受限制的应用协议(Constrained Application Protocol)的代名词。在当前由PC机组成的世界,信息交换是通过TCP和应用层协议HTTP实现的。但是对于小型设备而言,实现TCP和HTTP协议显然是一个过分的要求。为了让小设备可以接入互联网,CoAP协议被设计出来。CoAP是一种应用层协议,它运行于UDP协议之上而不是像HTTP那样运行于TCP之

BFC(边距重叠解决方案)_前端_酒館的博客-程序员宅基地_bfc边距重叠

BFC基本概念:块级格式化上下文。BFC的原理:在BFC这个元素的垂直方向的边距发生重叠;BFC的区域不会与浮动元素的box重叠,用来清除浮动;BFC在页面上是一个独立的容器,不受外部元素影响,也不影响外部元素;计算BFC高度的时候浮动元素也会参与计算。如何创建BFC? overflow: hidden/auto float: none position的值不是relative,static display:inline-block/table-cell 和tabl

定义软件定义的存储市场_weixin_34242331的博客-程序员宅基地

在本文中,我们将与广大读者一起来仔细分析一下当前推动着软件定义的存储市场的力量都有哪些;软件定义的存储都有哪些不同的类型;以及每种不同类型的各自的优缺点。在当前的存储领域,恐怕再没有比“软件定义的存储”(SDS)这一概念术语更能引起更多的意见分歧了。鉴于关于软件定义的存储在业界尚未有一个被普遍广泛接受的定义,SDS都是存储供应商们所特定的。存储供应商们...

随便推点

jvm启动一段时间后无法使用的原因_wokaka8237的博客-程序员宅基地

​     在生产环境中,有时候会遇到程序从开发到测试一切正常,但是将程序部署到线上后,一段时间之后程序无法向外提供服务,但是端口却正常暴露出来的情况。     最近在搞分布式服务时遇到了这个问题,服务框架选用dubbo,服务通过spring容器部署使用,底层默认用netty进行消息通信。服务由开发完成到测试完成一切正常,但是部署到线上一段时间后,服务服务提供服务,注册中心显示服务依然在在

[JAVA · 初级]:21.多线程_吴士龙的博客-程序员宅基地

概述程序:Program,是一个静态的概念进程:Process,是一个动态的概念进程是程序的一次动态执行过程, 占用特定的地址空间.每个进程都是独立的,由3部分组成cpu,data,code缺点:内存的浪费,cpu的负担线程:Thread,是进程中一个“单一的连续控制流程”  (a single sequential flow ofcontrol)/执行路径线程又被称为

写经验时用 GIMP 快速剪裁、调整经验用的插图_希哈科技的博客-程序员宅基地

写经验少不了插图,无论是自己拍摄、从网络上下载还是从屏幕上截取,都需要对图片进行剪裁、缩放等处理,让所有图片都有大体一致的大小和比例。GIMP 就是个好工具,再结合使用快捷键,可以让经验插图的制作事半功倍。工具/原料 GIMP 2.8.14。 三组快捷键,四个步骤,快速剪裁 1 第一组快捷键:Ctrl + v 粘贴截图。 以屏幕截图为例,如图,按下键盘上的 Pr...

python画矩阵代表的图_Python——作业12(选做)选中矩阵的每行或每列画出对应的折线图(python programming)..._weixin_39628864的博客-程序员宅基地

importosimportplatformimportsysfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *importnumpy as npimportmatplotlibmatplotlib.use("Qt5Agg")from matplotlib.backends.backend...

ios uitableview 刷新某一个cell 或 section_mimosa890927的博客-程序员宅基地

//一个section刷新    NSIndexSet *indexSet=[[NSIndexSet alloc]initWithIndex:0];    [tableview reloadSections:indexSet withRowAnimation:UITableViewRowAnimationAutomatic];    //一个cell刷新    NSIndexPath *index

SpringMVC、MyBatis声明式事务管理+AOP配置_明天还有我的博客-程序员宅基地

采用的基本搭建环境:SpringMVC、MyBatis、MySQL、tomcat         Spring事务管理分解了传统的全局事务管理和本地事务管理的劣势,使得在任何环境中都可以使用统一的事务管理模型,你可以写一次代码,然后在不同的环境从你的代码里面配置不同的事务管理策略,Spring提供两种事务管理策略:一种是声明式事务管理策略,另一种是编程式事务管理策略,这里主要介绍声明式事务管理

推荐文章

热门文章

相关标签