ubuntu下 安装PX4编译环境

2023-05-16

最近博主的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(使用前将#替换为@)

ubuntu下 安装PX4编译环境 的相关文章

随机推荐

  • 用java简单的实现单链表的基本操作

    此代码仅供参考 xff0c 如有疑问欢迎评论 xff1a package com tyxh link 节点类 public class Node protected Node next 指针域 protected int data 数据域
  • 算法:海量日志数据,提取出某日访问百度次数最多的那个IP

    首先是这一天 xff0c 并且是访问百度的日志中的IP取出来 xff0c 逐个写入到一个大文件中 注意到IP是32位的 xff0c 最多有个2 32个IP 同样可以采用映射的方法 xff0c 比如模1000 xff0c 把整个大文件映射为1
  • 使用JUnit测试预期异常

    开发人员常常使用单元测试来验证的一段儿代码的操作 xff0c 很多时候单元测试可以检查抛出预期异常 expected exceptions 的代码 在Java语言中 xff0c JUnit是一套标准的单元测试方案 xff0c 它提供了很多验
  • BlockingQueue深入分析

    1 BlockingQueue 定义的常用方法如下 抛出异常特殊值阻塞超时插入add e offer e put e offer e time unit 移除remove poll take poll time unit 检查element
  • Qt对directshow的封装

    在源码路径中 xff1a qt everywhere opensource src 5 1 1 qtmultimedia src plugins directshow xff0c 有两个文件夹player 和 camera xff0c 1
  • 聚合类新闻客户端产品功能点详情分析

    产品功能点 功能 今日头条 百度新闻 鲜果 ZAKER 媒体订阅 个性化内容推荐 个性化订阅 RSS 视频新闻 评论盖楼 搜索新闻 离线下载 地方新闻 一键分享 收藏 推送 天气 夜间模式 线上活动 主题设置 感兴趣 语音读文章 字体设置
  • 聚合类新闻客户端初体验

    初体验的产品 xff1a 今日头条 ios3 6 百度新闻 ios4 4 0 ZAKER ios4 4 5 鲜果 ios3 8 7 中搜搜悦 ios4 0 1 Flipboard ios2 3 9 1 Flipboard 一款国外很火的ap
  • 聚合类新闻客户端的改进

    zaker和鲜果是最早的聚合类新闻产品 xff0c 前几年发展很快 xff0c 迅速占领了市场 xff0c 但近两年发展变得缓慢 xff0c 而今日头条自发布以来才两年 xff0c 用户量就迅速超过了zaker和鲜果 xff0c 使用起来非
  • 单例模式优缺点

    主要优点 xff1a 1 提供了对唯一实例的受控访问 2 由于在系统内存中只存在一个对象 xff0c 因此可以节约系统资源 xff0c 对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能 3 允许可变数目的实例 主要缺点 xff
  • 适配器模式优缺点

    优点 xff1a 1 将目标类和适配者类解耦 2 增加了类的透明性和复用性 xff0c 将具体的实现封装在适配者类中 xff0c 对于客户端类来说是透明的 xff0c 而且提高了适配者的复用性 3 灵活性和扩展性都非常好 xff0c 符合开
  • Oracle 的 Round函数

    Round函数用法 xff1a 截取数字 格式如下 xff1a ROUND xff08 number decimals xff09 其中 xff1a number 待做截取处理的数值 decimals 指明需保留小数点后面的位数 可选项 x
  • eclipse报错:Failed to load the JNI shared library

    电脑自装系统以来 xff0c 好久没有写java代码了 xff0c 所以一直也没用 eclipse IDE xff0c 今天将eclipse打开 xff0c 报了个问题 xff0c Failed to load the JNI shared
  • 10串口通信

    51单片机学习记录10 通信通信的的基本概念串口参数及时序图常用通信接口比较 51单片机串口介绍串口通信简介串口内部结构串口通信相关寄存器 串口通信实验串口向计算机发送数据计算机通过串口控制LED 通信 通信的的基本概念 通信的方式 通信方
  • 【已解决】zookeeper配置出现问题合集

    已解决 zookeeper配置出现问题合集 1 问题诊断 日志2 问题解决合集2 1zookeeper集群搭建报错 拒绝连接 2 2zookeeper集群搭建报错 没有找到主机路由 1 问题诊断 日志 1 进入文件查看日志 xff1a zo
  • noVNC 安装、配置与使用

    最近项目中使用到了远程终端操控 xff0c 从各方找到了noVNC这个神奇的家伙 xff0c 废话不多说 xff0c 开始介绍它的安装配置与使用 1 下载noNVC 好多渠道可以下载到noVNC xff0c 可以直接访问noVNC的官方网页
  • 360极速浏览器网页保护色

    方法一 xff1a 360浏览器的 扩展中心 有一个 绿色眼睛 的插件 xff1b 但是感觉一般 xff0c 不够彻底 xff1b 方法二 xff1a 360急速浏览器是基于开源Chrome浏览器修改的 xff0c 所以可以直接用Chrom
  • STM32基于FreeRTOS的多任务程序案例

    STM32基于FreeRTOS的多任务程序案例 一 初步了解FreeRTOS二 实验要求三 基于FreeRTOS的多任务程序案例四 参考链接 使用工具 野火stm32mini开发板 Keil uVision5 野火多功能调试助手 一 初步了
  • 【TcaplusDB知识库】TcaplusDB刷新tbus通道介绍

    命令 xff1a RefreshBusCfg 其中 xff0c 指进程的进程id xff0c 比如1 2 2 2 1 2 1 2等 xff0c 也支持简单的正则表达式 xff0c 比如RefreshBusCfg 1 2 2 那么只要匹配到1
  • Python中下划线的5种含义

    作者 xff1a 地球的外星人君 链接 xff1a https zhuanlan zhihu com p 36173202 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 分享一篇文章
  • ubuntu下 安装PX4编译环境

    最近博主的ubuntu虚拟机再次崩溃 xff0c 狠下决心将4G内存升级为12G 这样就可以给虚拟机多分配些内存了 鉴于前两次安装PX4环境出现了很多错误 xff0c 走了很多弯路 xff0c 没有一一记录下来 xff0c 所获甚少 故而借