初学PX4之环境搭建

2023-05-16


 
 

文章转自: http://www.jianshu.com/p/36dac548106b

前言

前段时间linux崩溃了,桌面进去后只有背景,折腾好久没搞定,为了节省时间索性重装了系统,同时也借这个机会从头记载一下作为初学者的学习过程。主要是按PX4的官网初学者教程进行,把其中遇到的一些初学者容易遇到的问题罗列出来,由于对于国内这方面的资料相对缺乏,希望能给大家提供一些帮助,也算是自我学习的一个整理。

如果你还不是很了解关于飞行器的这个项目PX4,建议迅速跳到PX4的官网一探究竟。简单来说,PX4是一个软、硬件开源项目(遵守BSD协议),目的在于为学术、爱好和工业团体提供一款低成本高性能的高端的自驾仪。这个项目源于ETH Zurich (苏黎世联邦理工大学)的计算机视觉与几何实验室PIXHAWK项目、并得到了自主系统实验室自动控制实验室的支持 ,以及一些出色的个人(Contact and Credits)也参与其中,包括3D Roboticsinternational 3DR distributors的成员。

前期准备

为了让大家能与我的学习保持同步,先介绍一下在搭建这个PX4环境前我已经做好的工作:

硬件一套,包括DJI F450机架、Pixhawk 2.4.6 mini飞控、好盈乐天20A电调、1045正反桨、银燕电机2216、天地飞6通道遥控器。详情见淘宝链接里的套餐方案

软件环境,使用的最新发行版Ubuntu 15.10操作系统。

工具链安装

在准备工作做好并对PX4有了一定的了解后,从开发者快速入门教程开始PX4的环境搭建,对于Linux这里直接跳到了工具链的安装。按照教程说的命令去执行就可以了,只要你的网速够好,相信很快就能完成任务。说明一下这里做了哪些事情:

1. 更新软件包列表并安装所有PX4构建目标的依赖。

2. ubuntu自带的串口调制解调器严重的影响到了机器人串口相关的使用,可以没有任何副作用的卸载掉。

3. 安装模拟工具CLANG 3.5。

4. 添加当前用户到组”dialout“(如果这步没做,会导致很多用户权限问题)。

代码编译

然后就到了编译代码的阶段,那么首先得弄到代码,按照这个里面的步骤去做就好了,经测试ubuntu 14.04编译没有出现问题,建议安装ninja,它编译的速度比make要快,想必有不懂Git是个啥的童鞋,那就看看这个Git教程-廖雪峰的官方网站吧,保证有帮助。比如我们的项目可以这么做:

# => 本地创建文件夹,并关联远程仓库

~$sudo apt-get install git-all

~$makedir YuningFly

~$cdYuningFly

~/YuningFly$git init

~/YuningFly$git add *

~/YuningFly$git commit -m"Commit message"

~/YuningFly$git remote add origin git@github.com:username/repository

~/YuningFly$git push -u origin master

通过ssh支持的原生git协议速度最快,但是要先生成SSH keys,见教程,克隆开源代码可以用

~$git clone git@github.com:PX4/Firmware.git

--------------ubuntu15.10 issues!!!-------------

如果你跟我一样用的是ubuntu 15.10,需要进行arm-none-eabi重新安装,默认是最新版,换成4.8版本,首先了解见博文,然后去GNU官方下载地址:https://launchpad.net/gcc-arm-embedded/+download下载gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2,然后进入下载文件夹,进行如下操作:

# => 卸载新版的gcc-arm-none-eabi

~$sudo apt-get remove gcc-arm-none-eabi

# => 安装下载好的gcc-arm-none-eabi

~$tar xjvf gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2

~$sudo mv gcc-arm-none-eabi-4_8-2014q3 /opt

~$ exportline="export PATH=/opt/gcc-arm-none-eabi-4_8-2014q3/bin:$PATH"

~$echo$exportline>>

~/.profile~$sudo ln -s /opt/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-gcc /usr/bin

~$sudo ln -s /opt/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-g++ /usr/bin

如果PC是ubuntu 64位系统,arm-none-eabi是直接下载人家编译好的32位的话,还需要一个东东:

sudo apt-get install lsb-core

make成功后如下:

官网里的Toolchain Installation有类似的安装方法。

上传完成如下:

--------------ubuntu15.10 issues!!!--------------

这里要做的事情主要是:

克隆PX4软件到本地,

make编译,

连接USB到无人机硬件,上传固件

软件在环测试(SITL)

在直接到硬件之前,建议将模拟运行作为下一步。这个东西看起来很高端,有点摸不着头脑,以前没接触过,也觉得很深奥。跳到这里,看看赋予它的概念:软件在环仿真运行的主机上的完整系统,并模拟自动驾驶仪。它通过本地网络连接到模拟器。启动运行如下:

下面请将想办法给大家介绍清楚这个东西是什么,怎么用到PX4上,用到它有什么作用:

建议:如果有比较棘手的问题,可以在这里提问,好多不解的问题可以少走很多路。比如:

可以先了解PX4仿真的一些概念。PX4平台支持软件在环和硬件在环仿真。不同的是,使用SITL时,完整的模拟运行在主机(台式机、笔记本电脑),没有自动驾驶仪的硬件连接。这是测试新的算法和控制的最优办法,但它忽略了类似的硬件时间消耗或类似于堆栈大小的限制的事情。硬件在环仿真解决了这个问题,但是它的建立过程比较费时,因为硬件需要启动和刷新固件。软件在环仿真又分两种:标准软件在环仿真和ROS软件在环仿真。官方推荐使用标准软件在环仿真。标准软件在环仿真在单一的应用程序里以线程的形式最小依赖运行每个控制器和估算器。

下面是具体该怎么操作,最新的文档请到这里,建议参考这篇,但是新的QGC已经不需要这些步骤了,可以自动连接。

安装依赖项。

# => 原网页为sudo apt-get install ant,经测试应该为如下

~$sudo apt-get install ant openjdk-7-jdk openjdk-7-jre

启动、编译目标。

~$make posix_sitl_default jmavsim

起飞。

pxh> commander takeoff

完成之后如图:

仿真时需要用到地面站QGroundControl( for short),然后进行QGC 的安装,由于它的篇幅较大,可以给它开启新的一节。

地面控制站QGC

QGC的官网是http://qgroundcontrol.org,可以从这里下载比较稳定的安装包解压,建议下载daily build的,里面有一些新的功能后面要用到,但是还是得安装Qt,如果不安装Qt,打开QGC会有缺少动态链接库的问题,从这里可以看到中国地区下载镜像可以选择这个或者这个,这样下载比较快一些,下载完成后进行如下操作。

~$chmod777qt-opensource-linux-x64-5.5.1.run

~$./qt-opensource-linux-x64-5.5.1.run

# => 建议将目标文件夹选为$HOME/Qt($HOME为用户目录,替换为如/home/nephne)

# => 相关依赖项的安装如下:

~$sudo apt-get install espeak libespeak-dev libudev-dev libsdl1.2-dev

# => Qt配置如下:

# => 更换qt源,默认为qt4

~$exportQT_SELECT=qt5

~$qtchooser -print-env

QT_SELECT="qt5"

QTTOOLDIR="/home/nephne/Qt/5.5/gcc_64/bin"

QTLIBDIR="/usr/lib/x86_64-linux-gnu"

# => 更改文件/usr/lib/x86_64-linux-gnu/qtchooser/5.conf 第一行为:

/home/$USER/Qt/5.5/gcc_64/bin(将$USER替换为用户名字)

~$sudo vi /usr/lib/x86_64-linux-gnu/qtchooser/5.conf

# => 我的如下:

~$cat /usr/lib/x86_64-linux-gnu/qtchooser/5.conf

/home/nephne/Qt/5.5/gcc_64/bin/usr/lib/x86_64-linux-gnu

~$qmake -v

QMake version 3.0Using Qt version 5.5.1 in /opt/Qt5.5.1/5.5/gcc_64/lib

# => 如果出现如上的结果就可以进入解压后的QGC目录运行了

~$cd${QGC_dir}

# => 运行如下的脚本文件,这个里边加载了动态库,如果你的Qt安装目录跟我的不一样,那样还得修改脚本

~$./qgroundcontrol-start.sh

界面如下:

这里再回归到软件在环仿真上面来。当进行到上一节的commander takeoff命令后,打开QGC,点击又上角的Default UDP

Link即可连接模拟器中的无人机,这样就可以通过地面在对模拟器中的无人机进行控制和数据分析,建议:QGC可支持操纵杆,如果想要手动输入,需要把系

统置于手动飞行模式 (e.g. POSCTL, position control)。注意:需要下载daily build版的QGC

才能启动操纵杆。启动操纵杆如下:

操纵杆如下:

界面如下:

Gazebo仿真

这是另外一种软件仿真,是一个自主机器人3D仿真环境。它能够作为一个完整的机器人仿真套件或脱机用于机器人。其中Plugin是自行编译的,过程如下:

安装过程如下:

# => 安装Gazebo 6仿真器(ubuntu 15.10)

~$wget -O /tmp/gazebo6_install.sh http://osrf-distributions.s3.amazonaws.com/gazebo/gazebo6_install.sh;sudo sh /tmp/gazebo6_install.sh

# => 运行

~$gazebo

# => 安装protobuf 库

~$sudo apt-get install libprotobuf-dev libprotoc-dev protobuf-compiler libeigen3-dev

# => 编译Gazebo插件

# => 克隆gazebo plugins repository到~/src/sitl_gazebo

~$git clone https://github.com/PX4/sitl_gazebo.git

# => 在仓库的顶层建立Build文件夹

~$mkdir Build

# => 把build目录添加到gazebo plugin path,e.g.添加如下到我的.profile 文件

# Set the plugin path so Gazebo finds our model and sim

export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:$HOME/src/sitl_gazebo/Build

# Set the model path so Gazebo finds the airframes

export GAZEBO_MODEL_PATH=${GAZEBO_MODEL_PATH}:$HOME/src/sitl_gazebo/models

# Disable online model lookup since this is quite experimental and unstable

export GAZEBO_MODEL_DATABASE_URI=""

# => 还需要添加仓库的主目录

# Set path to sitl_gazebo repository

export SITL_GAZEBO_PATH=$HOME/src/sitl_gazebo

# => 使生效

~$source~/.profile

# => 进入Build目录执行make

~$cd~/src/sitl_gazebo/Build

~$cmake ..

# => 生成sdf文件

~$make sdf

# => 构建 gazebo plugins

~$make

# => 现在可以运行gazebo了

~$gazebo

下面可以按照教程进入仿真。

~$cd~/src/Firmware

~$make posix_sitl_default gazebo

教程到这里,基本的环境算是搭建好了,接下来应该就是各个模块的学习了。

相关链接:https://travis-ci.org/

作者:633ac6daf6c9 链接:http://www.jianshu.com/p/36dac548106b 來源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

初学PX4之环境搭建 的相关文章

  • PX4+QGC+jmavsim软件在环仿真

    一 环境修改 参考官方手册jMAVSim 仿真模拟 PX4 Developer Guide xff0c 以上环境基于上一篇内容 xff0c 未完成ROS 43 jmavsim 43 QGC环境搭建的请移步Ubuntu18 04下px4 43
  • PX4二次开发中查无资料的踩坑总结

    写在前 xff1a 2021年9月下旬开始摸索px4飞控的二次开发 xff0c 从C 43 43 零基础到第一个修改算法后的版本稳定运行 xff0c 大概用了2个月 xff0c 从12月初改用新版本px4源码到现在又过去了约1个月 xff0
  • PX4通过I2C方式添加自定义传感器(2)

    PX4 I2C通信方式传感器驱动分析 xff08 以ets airspeed为例 xff09 1 说明 这篇文章我们就来看看I2C传感器的驱动过程 xff0c 当然里面也有很多东西我不是很理解 xff0c 所以仅谈我领悟的一些东西 我就以e
  • 编译PX4固件

    PX4编译 文章目录 PX4编译疑难杂症bug1bug2catkin build isolated 官方脚本Step1Step2 安装常用依赖Step3 创建并运行脚本Step4 补全代码子模块Step5 验证仿真 官方offboard 例
  • 【8-12】树莓派部署t265+px4飞控实现无人机视觉定位

    在之前的文章中 xff0c 我们已经成功在树莓派 xff08 ubuntu mate 18 04 xff09 上部署了T265的追踪摄像头 本文将利用MAVROS协议 xff0c 将T265测量的位姿信息发送给px4固件 xff0c 实现室
  • 飞行机器人(七)仿真平台XTDrone + PX4编译

    0 编译PX4固件 参考仿真平台基础配置教程 xff08 中文详细教程 xff09 仿真平台基础配置 语雀 yuque com https www yuque com xtdrone manual cn basic config 按照教程
  • Ubuntu20.04+MAVROS+PX4+Gazebo保姆级安装教程

    Ubuntu20 04 43 MAVROS 43 PX4 43 Gazebo 安装PX4步骤安装MAVROS安装QGCPX4仿真 安装PX4步骤 从github上clone源码 span class token function git s
  • PX4 Bootloader下载及编译过程中的问题解决

    买来的雷迅的板子都是Bootloader已经烧进去了 xff0c Fireware也已经刷进去了 如果是自制的板子 xff0c 上位机根本没法识别板子 xff0c 必须先烧写下载Bootloader后编译好的bin文件 这篇记一下自己下载及
  • px4 avoidance笔记

    最近在用px4官方的avoidance代码跑硬件避障 xff0c 官方介绍了只要生成符合sensor msgs PointCloud2点云信息就能使用 xff0c 因此为了应用长基线双目 xff0c 没有使用realsense的相机 xff
  • PX4模块设计之九:PX4飞行模式简介

    PX4模块设计之九 xff1a PX4飞行模式简介 关于模式的探讨1 需求角度1 1 多旋翼 MC multi copter 1 1 1 RC控制模式1 1 1 1 Position Mode1 1 1 2 Altitude Mode1 1
  • PX4模块设计之十三:WorkQueue设计

    PX4模块设计之十三 xff1a WorkQueue设计 1 WorkQueue启动2 WorkQueue接口2 1 基本接口2 2 辅助接口2 3 WorkQueue任务函数2 3 1 Flat Build2 3 2 Protected
  • PX4模块设计之二十六:BatteryStatus模块

    PX4模块设计之二十六 xff1a BatteryStatus模块 1 BatteryStatus模块简介2 模块入口函数2 1 主入口battery status main2 2 自定义子命令custom command 3 Batter
  • PX4模块设计之三十:Hysteresis类

    PX4模块设计之三十 xff1a Hysteresis类 1 Hysteresis类简介2 Hysteresis类成员变量介绍3 Hysteresis类迟滞逻辑4 Hysteresis类重要方法4 1 Hysteresis bool ini
  • PX4模块设计之三十九:Commander模块

    PX4模块设计之三十九 xff1a Commander模块 1 Commander模块简介2 模块入口函数2 1 主入口commander main2 2 自定义子命令custom command 3 Commander模块重要函数3 1
  • PX4模块设计之四十三:icm20689模块

    PX4模块设计之四十三 xff1a icm20689模块 1 icm20689模块简介2 模块入口函数2 1 主入口icm20689 main2 2 自定义子命令custom command2 3 模块状态print status 重载 3
  • PX4模块设计之四十六:dataman模块

    PX4模块设计之四十六 xff1a dataman模块 1 dataman模块简介2 模块入口函数dataman main3 dataman模块重要函数3 1 start3 2 stop3 3 status3 4 task main 4 A
  • px4_simple_example和uorb机制

    px4 simple app PX4 Autopilot src exampes px4 simple app xff0c 这个程序是用c语言调用orb API和poll机制订阅和发布通讯数据 xff0c 但是这个例子并不是既有接收又有发送
  • 【px4】运行mavsdk中的offboard example

    运行MAVSDK中的offboard例子时无人机不执行 想控制无人机前后左右移动 xff0c 在按照官方教程实现offboard 插件的时候 发现用action插件能正常起飞和降落 但是一旦执行到offboard的插件代码的时候就会自动降落
  • pixhawk px4 commander.cpp

    对于复杂的函数 xff0c 要做的就是看函数的输入是什么 来自哪里 xff0c 经过处理后得到什么 给谁用 xff0c 这样就可以把程序逻辑理清 中间的分析就是看函数如何处理的 span class hljs keyword extern
  • PX4:Policy “CMP0097“ is not known to this version of CMake.

    make px4 fmu v3 时报的错 CMake版本的问题 由https blog csdn net zhizhengguan article details 118380965推测 xff0c 删除cmake policy也没事 ma

随机推荐

  • 【FreeRTOS(十五)】MessageBuffer

    文章目录 MessageBuffer创建 xMessageBufferCreate发送 xMessageBufferSend接收 xMessageBufferReceive代码示例 MessageBuffer 创建 xMessageBuff
  • 【Git】Git修改 commit 的信息

    Git 修改 commit 的信息 xff1a git log 查看提交日志 xff0c 找到要修改的commit xff1a git rebase i HEAD n 1 切换到需要修改的 commit 中 xff0c n为commit的序
  • PX4飞控之PWM输出控制

    PX4飞控之PWM输出控制 多旋翼电调如好盈XRotor xff0c DJI通用电调等都支持PWM信号来传输控制信号 常用的400Hz电调信号对应周期2500us xff0c 一般使用高电平时间1000us 2000us为有效信号区间 xf
  • 记录docker+github的学习历程

    最早从github上拉代码 xff0c 拉一些纯python的代码 xff0c 然后第二天就发现如果只是为了学习代码 xff0c 直接下载压缩包完事 为什么需要docker 43 github呢 xff1f github上的代码是不同的运行
  • 为什么同样的方法,你做的品牌火不起来?别人却能脱颖而出?

    要想让品牌快速走红 xff0c 必须做好品牌运营 同样进入红海市场 xff0c 江小白 喜茶 丧茶靠品牌运营 xff0c 快速占据一席之地 同样是知名品牌 xff0c 杜蕾斯靠品牌运营 xff0c 牢牢占据用户心智第一位 xff0c 同类目
  • 开发自己的DJI四旋翼无人机(A3飞控Onboard SDK和Mobile SDK介绍)

    大疆作为无人机行业的佼佼者 xff0c 其应用范围从户外旅行 拍照到影视拍摄 xff0c 以及工业运用都有着极高的地位 那么 xff0c 我们如何仅仅使用大疆的飞控来开发出我们自己的无人机呢 xff1f 首先 xff0c 你需要如下的东西
  • PID的曲线

  • ESP-Drone四旋翼无人机控制板上的MPU6050陀螺仪芯片I2C总线测试

    1 摘要 一款新的控制板卡在第一次使用时 xff0c 都需要进行硬件功能的测试 xff0c 以确保所有的硬件都能够正常工作后 xff0c 才可以进入后续的软件编程阶段 xff0c ESP Drone四旋翼无人机的控制板使用了mpu6050陀
  • PHP 设计模式之最全面,最简单的讲解

    1 单例模式 单例模式是指只创建一个资源 对象 数据库链接等 xff0c 防止外部实例 43 判断是否有返回或创建后返回对象 三个要点 xff1a 1 需要一个保存类的唯一实例的静态成员变量 2 构造函数和克隆函数必须声明为私有的 xff0
  • 快速看懂(找到)VUE框架的管理系统代码

    前言 刚入职的且没有啥基础的小白一枚 xff0c 培训期间要求一周时间内在现有demo系统上新增一个模块 xff0c 实现简单的增删改查 so xff0c 这是一个速成的帖子 xff0c 提供一个大致思路 xff08 看代码 xff0b 修
  • 解决k8s.gcr.io问题

    kubeadm安装新版本的Kubernetes过程中 xff0c 需要从k8s grc io仓库中拉取所需镜像文件 xff0c 但由于G F W导致无法正常拉取 xff0c 本文将介绍如何绕过此问题 xff0c 来完成业务的部署 ERROR
  • C++很难吗?到底有多难?

    C 43 43 他爹Bjarne Stroustrup都曾开玩笑说自己已经搞不懂C 43 43 了 xff0c 他也曾多次表达过C 43 43 似乎已经有点太庞大了 其实也不是说C 43 43 语法多么复杂 xff0c 而是C 43 43
  • C++开发需要掌握哪些技能?

    一 语言基础 无论C 43 43 开发还是Java开发 xff0c 对于码农来说 xff0c 最重要的是熟悉编程语言 同理 xff0c 无论从事何种工作 xff0c 首当其冲的就是要掌握好语言基础 C 43 43 是一种博大精深的编程语言
  • 如何成为一个优秀的C++开发工程师?

    目前主流的后端开发语言有很多 xff0c 而C 43 43 开发语言 xff0c 就是其中的一种 xff0c 并且有很多人想要成为C 43 43 开发工程师 那么如何才能成为一名优秀的C 43 43 开发工程师 xff1f 掌握游戏开发之物
  • 深入了解C语言和C++哪个更难?

    众所周知C语言与C 43 43 都是主流的开发语言 xff0c 并且在大多数人看来C语言的学习难度要更难 xff0c 那事实是怎么样的呢 xff1f 接下来小编带你深入了解下C语言和C 43 43 哪个更难 xff1a 深入了解C语言和C
  • ffmpeg分析 之 如何解析mpegts流

    转 xff1a http blog chinaunix net uid 20364597 id 3530284 html ffmpeg分析 之 如何解析mpegts流 2013 03 19 11 02 40 分类 xff1a LINUX 数
  • 使用input上传图片并本地预览

    话不多说上代码 span class token operator lt span div id span class token operator 61 span span class token string 34 app 34 spa
  • 1、【STM32】学习初探(方法及准备)

    前言 由于个人原因已经有好长时间没搞了 xff0c 最近工作需要 xff0c 但是拿起32基本上都忘记差不多了 xff0c 接下来一段时间将急中学习一下STM32的基础知识 以前是学习的库函数版本 xff0c 有一定的基础 xff0c 因此
  • Pixhawk入门指南-目录

    文章转载自 xff1a http www ncnynl com archives 201701 1271 html APM PX4 Pixhawk入门指南 目录 介绍 xff1a APM xff08 ArduPilotMega xff09
  • 初学PX4之环境搭建

    文章转自 xff1a http www jianshu com p 36dac548106b 前言 前段时间linux崩溃了 xff0c 桌面进去后只有背景 xff0c 折腾好久没搞定 xff0c 为了节省时间索性重装了系统 xff0c 同