初学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之环境搭建 的相关文章

  • pixhawk: px4代码初学分析:追溯电机控制--pwm输出

    追溯电机控制 pwm输出 正常工作状态下pwm输出过程简述 xff1a 其他状态下pwm输出 xff1a 正常工作状态下pwm输出过程简述 xff1a 姿态解算部分得出姿态控制量通过px4io cpp把姿态控制量发送给IOIO串口读取姿态控
  • PX4二次开发中查无资料的踩坑总结

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

    PX4与TX2通信以及相关数据的获取 目录 1 PX4硬件接口 2 TELEM1 2接口线序 3 PX4与TX2通信 PX4 IO口定义 xff1a PX4硬件 xff1a 4 通信测试 5 RTPS 43 ROS Jetson TX2终端
  • 【8-12】树莓派部署t265+px4飞控实现无人机视觉定位

    在之前的文章中 xff0c 我们已经成功在树莓派 xff08 ubuntu mate 18 04 xff09 上部署了T265的追踪摄像头 本文将利用MAVROS协议 xff0c 将T265测量的位姿信息发送给px4固件 xff0c 实现室
  • PX4 SITL Gazebo 仿真时 libgazebo_multirotor_base_plugin 插件运行时出错

    PX4 SITL Gazebo 仿真时 libgazebo multirotor base plugin 插件运行时出错 问题描述原因分析解决办法总结 问题描述 在 Gazebo 中进行 PX4 的软件在环仿真时 xff0c 执 make
  • PX4飞控之PWM输出控制

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

    文章目录 Mixer 混合控制 作用输入输出装载混控文件MAVROS代码解析总结示例MAINAUX Mixer 混合控制 作用 经过位置控制和姿态控制后 xff0c 控制量通过 actuator controls发布 xff0c 其中 co
  • PX4 ---- Indoor Flight

    文章目录 室内飞行ROS amp PX4Pose Data 飞机配置MAVROS 基于工训赛 VIO 飞行总结 室内飞行 ROS amp PX4 Pose Data 飞机配置 VIO 参考此处 xff0c 采用 T265 配置 相机与飞控机
  • PX4 -- EKF2

    文章目录 EKF2参数高度估计Range Finder滤波 单变量更新单变量更新对多变量的影响 EKF2 参数 EKF2 中有一类 GATE 参数 当测量值在 VAR GATE 范围内才会更新值 高度估计 四种高度控制方法 xff1a 气压
  • PX4模块设计之三:自定义uORB消息

    PX4模块设计之三 xff1a 自定义uORB消息 1 新增自定义uORB消息步骤2 应用ext hello world消息示例3 编译执行结果4 参考资料 基于PX4开源软件框架简明简介和PX4模块设计之二 xff1a uORB消息代理
  • PX4模块设计之六:PX4-Fast RTPS(DDS)简介

    64 TOC PX4模块设计之六 xff1a PX4 Fast RTPS DDS 简介 基于PX4开源软件框架简明简介的框架设计 xff0c 逐步分析内部模块功能设计 PX4 Fast RTPS DDS 具有实时发布 订阅uORB消息接口
  • 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模块设计之二十四:内部ADC模块

    PX4模块设计之二十四 xff1a 内部ADC模块 1 内部ADC模块简介2 模块入口函数2 1 主入口board adc main2 2 自定义子命令custom command 3 内部ADC模块重要函数3 1 task spawn3
  • PX4模块设计之三十三:Sensors模块

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

    PX4模块设计之三十六 xff1a MulticopterPositionControl模块 1 MulticopterPositionControl模块简介2 模块入口函数2 1 主入口mc pos control main2 2 自定义
  • px4仿真无法起飞问题(Failsafe enabled: no datalink)

    报错信息 问题描述 xff1a 使用JMAVSim和gazebo仿真px4起飞时报错如下 xff1a WARN commander Failsafe enabled no datalink 说不安全 解决方法 打开QGC 就可以起飞了
  • PX4软件在环仿真注意点

    注 xff1a 最新内容参考PX4 user guide 点击此处 PX4下载指定版本代码和刷固件的三种方式 点击此处 PX4sitl固件编译方法 点击此处 PX4开发指南 点击此处 PX4无人机仿真 Gazebo 点击此处 px4仿真 知
  • PX4之常用函数解读

    PX4Firmware 经常有人将Pixhawk PX4 APM还有ArduPilot弄混 这里首先还是简要说明一下 xff1a Pixhawk是飞控硬件平台 xff0c PX4和ArduPilot都是开源的可以烧写到Pixhawk飞控中的
  • PX4通过参数脚本给飞控导入参数

    PX4通过参数脚本给飞控导入参数 先找一架正常能飞的无人机连接地面站 在参数页面右上角点击工具 gt 保存到文件 保存的时候文件名注明参数的相关信息 然后将需要加载参数的无人机连接至地面站 xff0c 注意需要加载参数的无人机必须和保存的参
  • 飞行姿态解算(三)

    继之前研究了一些飞行姿态理论方面的问题后 又找到了之前很流行的一段外国大神写的代码 来分析分析 第二篇文章的最后 讲到了文章中的算法在实际使用中有重大缺陷 大家都知道 分析算法理论的时候很多情况下我们没有考虑太多外界干扰的情况 原因是很多情

随机推荐

  • 【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 同