PX4学习(1)——PX4固件版本开发环境(ROS+mavros版本)

2023-05-16

参考px4官网流程:

https://dev.px4.io/en/setup/dev_env_linux_ubuntu.html

https://dev.px4.io/en/setup/building_px4.html

配置过程中网速一定要好!!!!一定要好!!!!最好翻墙!!!不然会出很多莫名其妙的bug的!!!!!

 

----------------------------------------------------------------------分割线-----------------------------------------------------------------

   如果觉得手动配置比较麻烦的,可以直接在官网下载脚本来运行,并且非常方便,会直接把ROS、mavros等也给直接装上。脚本的使用官网上说的也很清楚,本文主要写手动配置,脚本方面的去官网看一下就OK了。网址:https://dev.px4.io/en/setup/dev_env_linux_ubuntu.html

--------------------------------------------------------------------分割线--------------------------------------------------------------------

 

手动配置:

1、我是之前实现配好的ROS和mavros的,所以这一点的顺序和官网不太一样。

安装ROS-kinetic版本:http://wiki.ros.org/kinetic/Installation/Ubuntu

这里就直接贴命令了,具体解释之前的博客和ROS官网解释的都很好

 
  1. sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'

  2. sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116

  3. sudo apt-get update

  4. sudo apt-get install ros-kinetic-desktop-full

  5. apt-cache search ros-kinetic

  6. sudo rosdep init

  7. rosdep update

  8. echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

  9. source ~/.bashrc

  10. sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential

安装mavros:https://github.com/mavlink/mavros/blob/master/mavros/README.md#installation

(1)二进制安装,比较简单(不想麻烦的话推荐)

 
  1. sudo apt-get install ros-kinetic-mavros ros-kinetic-mavros-extras

  2. wget https://raw.githubusercontent.com/mavlink/mavros/master/mavros/scripts/install_geographiclib_datasets.sh

  3. ./install_geographiclib_datasets.sh

(2)源码编译

    安装编译工具:

sudo apt-get install python-catkin-tools python-rosinstall-generator -y

   创建存放mavros的工作空间,这里推荐放在一个新建的单独的工作空间,因为按照这个教程走下去后,该工作空间只能用catkin build指令编译而不能用catkin_make了。
 

 
  1. mkdir -p ~/mavros_ws/src

  2. cd ~/mavros_ws

  3. catkin init

  4. wstool init src

  更新保证获取到最新的稳定版mavlink和mavros:
 

 
  1. rosinstall_generator --rosdistro kinetic mavlink | tee /tmp/mavros.rosinstall

  2. rosinstall_generator --upstream mavros | tee -a /tmp/mavros.rosinstall

   归并工作链,准备开始安装: 

 
  1. wstool merge -t src /tmp/mavros.rosinstall

  2. wstool update -t src -j12

  3. rosdep install --from-paths src --ignore-src -y

  其中第二行命令的-j多少,后面的数字最好是你cpu的线程数

  这个过程中网速一定要好,不然clone源码这一步会卡住,会一直出现mavros | mavlink active啥啥的。

 

   安装GeographicLib datasets: 

 ./src/mavros/mavros/scripts/install_geographiclib_datasets.sh

   编译源码(在工作空间下):

catkin build

 如果你想每个终端都常用的话,"source ~/mavros_ws/devel/setup.bash"`这句话添加到~/.bashrc文件中,否则就只在这个终端里source一下就行了。

 

2、解决用户权限问题和删掉linux下的那个串口管理器

官方说法:永远不要用sudo去解决这里的权限问题!否则会越来越乱

 
  1. sudo usermod -a -G dialout $USER

  2. sudo apt-get remove modemmanager

3、安装通用依赖:
所需的Python包、其他东西等等

 
  1. sudo apt-get update -y

  2. sudo apt-get install git zip cmake build-essential genromfs ninja-build -y

  3. # Required python packages

  4. sudo apt-get install python-argparse python-empy python-toml python-numpy python-dev python-pip -y

  5. sudo -H pip install --upgrade pip

  6. sudo -H pip install pandas jinja2 pyserial

  7. # optional python tools

  8. sudo -H pip install pyulog

4、安装Ninja编译工具:

sudo apt-get install ninja-build -y

5、安装FastRTPS开发环境:

 
  1. wget http://www.eprosima.com/index.php/component/ars/repository/eprosima-fast-rtps/eprosima-fast-rtps-1-5-0/eprosima_fastrtps-1-5-0-linux-tar-gz -O eprosima_fastrtps-1-5-0-linux.tar.gz

  2. tar -xzf eprosima_fastrtps-1-5-0-linux.tar.gz eProsima_FastRTPS-1.5.0-Linux/

  3. tar -xzf eprosima_fastrtps-1-5-0-linux.tar.gz requiredcomponents

  4. tar -xzf requiredcomponents/eProsima_FastCDR-1.0.7-Linux.tar.gz

  5.  
  6. cd eProsima_FastCDR-1.0.7-Linux

  7. ./configure --libdir=/usr/lib

  8. make -j12

  9. sudo make install

  10. cd ..

  11. cd eProsima_FastRTPS-1.5.0-Linux

  12. ./configure --libdir=/usr/lib

  13. make -j12

  14. sudo make install

  15. cd ..

  16. rm -rf requiredcomponents eprosima_fastrtps-1-5-0-linux.tar.gz

 make后面的j后的数字改为你cpu的线程数

6、安装jMAVSim仿真依赖:

sudo apt-get install ant openjdk-8-jdk openjdk-8-jre -y

7、配置Nuttx开发环境:

sudo apt-get install python-serial openocd flex bison libncurses5-dev autoconf texinfo  libftdi-dev libtool zlib1g-dev -y

配置arm gcc编译器:

 
  1. sudo apt-get remove gcc-arm-none-eabi gdb-arm-none-eabi binutils-arm-none-eabi gcc-arm-embedded

  2. sudo add-apt-repository --remove ppa:team-gcc-arm-embedded/ppa

运行下面这个脚本:(写成脚本或者你看分号一行一行在bash输命令都可以)

 
  1. pushd .

  2. cd ~

  3. wget https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/7-2017q4/gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2

  4. tar -jxf gcc-arm-none-eabi-7-2017-q4-major-linux.tar.bz2

  5. exportline="export PATH=$HOME/gcc-arm-none-eabi-7-2017-q4-major/bin:\$PATH"

  6. if grep -Fxq "$exportline" ~/.profile; then echo nothing to do ; else echo $exportline >> ~/.profile; fi

  7. popd

然后重启电脑

检查是否安装成功:

arm-none-eabi-gcc --version

如果输出了像下面这样的:

arm-none-eabi-gcc (GNU Tools for Arm Embedded Processors 7-2017-q4-major) 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

你成功了!

 

8、安装QGC(QGroundControl)地面站:

直接去官网下下来,直接给权限就可以运行了。

 

--------------编译源码分割线-------------

9、编译源码:

官方推荐:如果你想给px4做贡献的话,就去github把它fork下来,然后再clone到本地。这个是我的:

https://github.com/XueKH/Firmware.git

gitclone https://github.com/XueKH/Firmware.git  ~/Firmware

然后cd到Firmware下面:

第一次编译,用jMAVSim仿真器:

make posix jmavsim

过程中会再clone一些东西,不要急,等一会儿就OK了,成功后会出现一个小飞机,可以通过命令来控制它,

 
  1. commander takeoff #起飞

  2. commander land #降落

玩一下就关掉吧,下面生成可以烧在pixhawk板子上的:

在Firware文件夹下面:

make px4fmu-v4_default

过程中也会下载很多东西,等一会儿就OK

最终没有报错,输出:

-- Build files have been written to: /home/youruser/src/Firmware/build/nuttx_px4fmu-v4_default
[954/954] Creating /home/youruser/src/Firmware/build/nuttx_px4fmu-v4_default/px4fmu-v4_default.px4

就OK了!恭喜你配完了!

(过程中的报错基本全是网速的锅,一定要找个网速好的地方!或者翻墙!)

###关于build的固件版本:

    Pixhawk 4: make px4fmu-v5_default
    Pixracer: make px4fmu-v4_default
    Pixhawk 3 Pro: make px4fmu-v4pro_default
    Pixhawk Mini: make px4fmu-v3_default
    Pixhawk 2: make px4fmu-v3_default
    mRo Pixhawk: make px4fmu-v3_default (supports 2MB Flash)
    HKPilot32: make px4fmu-v2_default
    Pixfalcon: make px4fmu-v2_default
    Dropix: make px4fmu-v2_default
    MindPX/MindRacer: make mindpx-v2_default
    mRo X-2.1: make auav-x21_default
    Crazyflie 2.0: make crazyflie_default
    Intel® Aero Ready to Fly Drone: make aerofc-v1_default
    Pixhawk 1: make px4fmu-v2_default

###

 

10、烧录在板子上:

make px4fmu-v4_default upload

  成功的话会显示:

  Erase  : [====================] 100.0%
  Program: [====================] 100.0%
  Verify : [====================] 100.0%
  Rebooting.

  [100%] Built target upload

 

11、搭建Qt开发环境:

在与Firmware平级的目录下,

 
  1. mkdir Firmware-build

  2. cd Firmware-build

  3. cmake ../Firmware -G "CodeBlocks - Unix Makefiles"

然后在Qt中open a project,选择这个Firmware的CMakeLists.txt,打开就OK了,就可以看到整个工程了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PX4学习(1)——PX4固件版本开发环境(ROS+mavros版本) 的相关文章

  • linux内核中的睡眠函数*delay、*sleep

    目录 一 睡眠函数种类 1 原子上下文 2 非原子上下文 二 使用环境 1 使用环境的不同 xff0c 选择不同的延时 2 驱动机制不同 3 内核中的计算函数执行的函数 三 实测两类函数的延时以及原因 1 测试系统中的睡眠函数 2 输出结果
  • RTOS 和裸机系统的异同-基于 ESP32 学习双核 FreeRTOS 的使用

    Learning FreeRTOS with esp32 什么是 RTOS 其本质上是运行在小型嵌入式设备上的特殊软件 系统软件 如同手机的安卓系统软件 windows 系统软件 RTOS VS 裸机系统 传统的裸机系统 xff08 无操作
  • FreeRTOS 创建第一个任务

    创建第一个任务 概述 创建任务的函数为 xff1a BaseType t span class token function xTaskCreate span span class token punctuation span TaskFu
  • ACL功能的实现

    ACL 看控制访问列表 xff08 Access Control List xff09 控制指定的用户能否通过指定的接口访问本机的服务 http https ftp ssh telnet xff0c 举个例子 xff1a 没开启ACL功能前
  • STM32 USB 虚拟串口演练

    记录一下 xff0c STM32官方虚拟串口走通流程 第一步 xff0c 在CSDN寻找经验 xff0c 结合实际情况进行计划 为了节省读者时间 xff0c 推荐写的比较好的博文 地址如下 xff1a http blog csdn net
  • Linux smbclient使用详情

    例子 smbclient 192 168 10 2 目录 U 用户名 回车 再输入 密码 参数说明 网络资源 网络资源 的格式为 服务器名称 资源分享名称 密码 输入存取网络资源所需的密码 B lt IP地址 gt 传送广播数据包时所用的I
  • ESP8266获取网络天气

    使用ESP8266模块来获取网络数据 xff08 天气 xff0c 时间等 xff09 xff0c 还是挺简单的 一步一步来 1 初始化串口与相关IO 使得MCU可正常使用串口的发送与接收 xff0c 以及一些IO控制ESP8266的使能端
  • win11环境安装postgreSql数据库

    1 xff0c 下载安装文件后一路next安装 2 数据库初始化 创建data目录 xff0c 保证软件有权限读写和访问 pg ctl D data init 3 启动数据库 pg ctl D data D data start 4 创建初
  • verilog实现38译码器

    module decode 38 input wire 2 0 a output reg 7 0 y integer i always 64 begin for i 61 0 i lt 8 i 61 i 43 1 begin if a 61
  • DiffServ--百度介绍

    区分服务 xff08 DiffServ xff09 是IETF工作组为了克服Inter Serv的可扩展性差在1998年提出的另一个服务模型 xff0c 目的是制定一个可扩展性相对较强的方法来保证IP的服务质量 与综合服务 xff08 In
  • P2P在NAT和防火墙上的穿透

    概述 本文主要讨论关于P2P通信的一些常见问题和解决方案 主要内容包含 xff1a P2P通信与网络设备的关系 不同的网络设备特征对P2P产生的影响 网络地址转换 xff08 NAT xff09 的类型 NAT类型的检测方法 协议防火墙的突
  • conflicting types for 'dev_t'的原因

    在Linux下编译程序有时会遇到这种问题 xff0c 这貌似是一个Linux历史遗留问题 usr include sys types h 62 error conflicting types for dev t usr include li
  • https不能访问时的解决方案

    当 xff08 win7 里 xff09 IE浏览器 https打不开 https不能访问时 1 请保证 IE 工具 高级选项中的TSL 1 0前面不要打上勾就可以了 xff08 注解 xff0c 当你用 IE的 还原高级设置 时 xff0
  • Ubuntu LTS 版本知多少

    原文地址http oss org cn html 79 n 70179 html 特别声明 xff1a 从Ubuntu 12 04开始 xff0c LTS 版本的支持周期策略有所改变 xff0c 具体改变信息见下面的详细说明 先介绍一词 x
  • ubuntu下配置vlan功能--官网vlan how to

    http ubuntuforums org showthread php t 61 703387 ubuntu官网介绍 802 1q VLAN HOWTO Doing 802 1q trunking to an Ethernet switc
  • 万台规模下的SDN控制器集群部署实践

    目前在网络世界里 xff0c 云计算 虚拟化 SDN NFV这些话题都非常热 今天借这个机会我跟大家一起来一场SDN的深度之旅 xff0c 从概念一直到实践一直到一些具体的技术 本次分享分为三个主要部分 xff1a SDN amp NFV的
  • linux-vdso.so.1介绍

    这段时间看Linux内核源码的时候 xff0c 经常碰到vdso这个东西 像在Feature fixup中 xff0c 获取时间等操作时 xff0c 网上搜了一下 xff0c 才知道了含义 xff0c 原来这是Linux为了解决和glibc
  • ECC密钥编程举例,并用它做签名和验签,并生成共享密钥

    下面的例子生成两对ECC密钥 xff0c 并用它做签名和验签 xff0c 并生成共享密钥 include lt string h gt include lt stdio h gt include lt openssl ec h gt inc
  • 最新OmniPeek无线驱动详细列表与下载说明/支持捉空口包的网卡

    OmniPeek无线驱动详细列表与下载 在进行无线网络分析时 xff0c Omnipeek需要安装特殊驱动来捕获管理 控制和数据帧 而且在OmniPeek停止不用时 xff0c 它们将作为普通驱动支持网络服务的正常运行 WildPacket
  • Html自我介绍

    lt doctype html gt lt html gt lt head gt lt meta charset 61 34 utf 8 34 gt lt title gt 兰博基尼 lt title gt lt style type 61

随机推荐

  • grub2下常见系统初始化错误的分析和解决

    原文连接http tieba baidu com p 2910461207 grub rescue gt grub gt initramfs 是开机错误时 xff0c 常见到的状况 我将分以下几个部份说明 xff1a 一 开机出现 grub
  • MSP-EXP430F5529LP: Error initializing emulator: No USB FET was found

    正常情况下 xff0c 安装了CCS之后 xff0c TI MSP430LaunchPad的驱动都可以自动安装好 主要是 xff1a MSP Application UART 和 MSP Debug Interface 当然 xff0c 非
  • CMakeLists.txt加载第三方库

    生成一个库文件 TgMath h ifndef TGMATH H define TGMATH H include 34 tgmath global h 34 class TGMATHSHARED EXPORT TgMath public T
  • ROS学习之订阅消息——Subscriber_代码分析

    接上篇 xff1a ROS学习之发布消息 Publisher 详解版本 xff1a 本代码文件名为 xff1a subscriber cpp include 34 ros ros h 34 include 34 std msgs Strin
  • LXC 介绍

    转自 xff1a https www cnblogs com xidongyu p 5767020 html LXC又名Linux container xff0c 是一种虚拟化的解决方案 xff0c 这种是内核级的虚拟化 主流的解决方案Xe
  • openstack原生网络和SDN网络对比

    1 原生Neutron架构图 xff1a 2 Networking odl的架构 3 ODL 处理过程 当OpenStack Neutron API接收到用户创建网络等操作请求 xff0c 它会调用ML2的相关方法 ML2已经定义了post
  • 树莓派 Raspberry Pi 3B+安装官方系统(一)

    两年前购买的树莓派 xff08 可看当时我的记录树莓派 3B 43 重装系统并配置 WiFi YouForever xff09 已经在角落里吃灰了好长时间 xff0c 一度以为已经损坏 xff0c 几天前试着拿出来折腾一下 xff0c 竟然
  • Rime——最好的输入法

    同步发布在博客 xff1a https www zhyong cn 9422 最近迷上了五笔输入法 xff0c 于是想找一款好用的五笔输入法软件 xff0c 最终确定鼎鼎大名的Rime输入法 一款跨平台的开源输入法 xff0c 支持Wind
  • Haar特征描述算子-人脸检测

    Haar特征描述算子 人脸检测 详细资料 3 1简介 Haar like特征最早是由Papageorgiou等应用于人脸表示 xff0c 在2001年 xff0c Viola和Jones两位大牛发表了经典的 Rapid Object Det
  • HTML(css+div)登录界面

    xff08 1 xff09 这是当时做的一个课程设计 xff0c 很多人想要图片 xff0c 在这里我把用到的所有图片资源分享下 xff08 2 xff09 链接 xff1a https pan baidu com s 1nUX1DQe a
  • 基于Matlab的GPU加速---for循环处理

    采用GPU加速时 xff0c 如遇for循环 xff0c 则很容易增加代码在GPU上运行的时间开销 在编程时 xff0c 使用矩阵和向量操作或arrayfun bsxfun pagefun替换循环操作来向量化代码 1 arrayfun函数
  • android ndk extern "C"

    C 43 43 的代码里面 xff1a extern 34 C 34 这是因为生成的二进制文件中 xff0c C和C 43 43 的符号表不相同造成的 Jni是按照C的生成规则去找函数的 xff0c 所以要加上extern C使编译器把函数
  • AdaBoost中利用Haar特征进行人脸识别算法分析与总结1——Haar特征与积分图

    目前因为做人脸识别的一个小项目 xff0c 用到了AdaBoost的人脸识别算法 xff0c 因为在网上找到的所有的AdaBoost的简介都不是很清楚 xff0c 让我看看头脑发昏 xff0c 所以在这里打算花费比较长的时间做一个关于Ada
  • 智能驾驶仿真场景构建技术

    随着汽车智能化程度的不断提高 xff0c 智能汽车通过环境传感器与周边行驶环境的信息交互与互联更为密切 xff0c 需应对的行驶环境状况也越来越复杂 xff0c 包括行驶道路 周边交通和气象条件等诸多因素 xff0c 具有较强的不确定性 难
  • Web应用程序的身份验证:Session认证、Token认证

    一 Web应用程序的身份验证 1 Session认证 用户向服务器发送用户名和密码 服务器验证通过后 xff0c 在当前对话 xff08 session xff09 里面保存相关数据 xff0c 如用户角色 xff0c 登陆时间等 服务器向
  • 计算机视觉: 物体分类,场景分类,事件分类

    主要总结一下最近看的几篇场景分类文献 xff0c 顺便总结场景 物体和事件分类的关系 1 ILSVRC 2015 Scene Classi cation Challenge 冠军 xff0c 主要贡献是Relay Backpropagati
  • CSS | 替换元素(可置换元素)

    替换元素 定义 xff1a 可替换元素是指元素内容的展现不是由 CSS 来控制的 xff0c 而是外观渲染独立于 CSS 的外部对象 详见 xff1a MDN 典型的可替换元素有 xff1a lt img gt lt iframe gt l
  • 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数

    输入一个int型整数 xff0c 按照从右向左的阅读顺序 xff0c 返回一个不含重复数字的新的整数 输入 xff1a 输出代码 xff1a 输入 xff1a 9876673 输出 37689 代码 xff1a int span class
  • 树莓派温度检测

    树莓派温度检测 一 shell命令 登录树莓派之后使用指令查看CPU温度 xff0c 依次输入以下指令 xff1a 进入目录 cd sys class thermal thermal zone0 查看温度 cat temp 树莓派返回 47
  • PX4学习(1)——PX4固件版本开发环境(ROS+mavros版本)

    参考px4官网流程 xff1a https dev px4 io en setup dev env linux ubuntu html https dev px4 io en setup building px4 html 配置过程中网速一