PX4环境搭建记录(ROS+Gazebo+mavros+PX4+QGC)

2023-05-16

全过程记录PX4环境搭建(ROS+Gazebo+Mavros+PX4+QGC)

  • 本人飞控专业在读,近段时间在老师的建议下,开始搭建PX4环境配置。因为并没有之前相关环境配置的经验,所以走了不少弯路,在此 感谢我的室友伙伴的一起努力和老师的辛苦指导。

  • 注:本文基于的系统是Ubuntu18.04,在VMware上运行,此两者的安装请各位读者自行参考相关链接。

环境搭建

  • 在PX4配置中本人参考了以下这个链接
  • PX4环境配置

ROS环境安装


依赖安装
  • 注意,不要一直使用一个终端进行配置,下面的都是,建议每配置完一个环境就重新新建一个终端。
  • 打开终端
  • sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
  pip2 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml 
  pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse

ROS安装
配置Ubuntu源码库
  • 打开Ubuntu系统的九个点,类似windows系统的开始选项,找到“软件和更新”这个选项卡

  • 点击软件和更新

  • 在这里插入图片描述


    设置sources.list
    • sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
      

设置key
  • sudo apt install curl
    curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
    

报错则输入
  • sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
    

安装ROS
  • sudo apt update
    sudo apt install ros-melodic-desktop
    

设定环境
  • echo “source /opt/ros/melodic/setup.bash” >> ~/.bashrc
    source ~/.bashrc```

构建软件包依赖关系
  • sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
    sudo apt install python-rosdep
    
  • sudo rosdep init
    
    
  • 出现错误

    • ERROR: cannot download default sources list from:
      https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list
      Website may be down.

      • cd /etc
        sudo gedit hosts
        
    • ERROR: default sources list file already exists:
      /etc/ros/rosdep/sources.list.d/20-default.list
      Please delete if you wish to re-initialize

      • sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
        
        

启动ROS
  • roscore
    
  • ROS启动

  • 出现此环境则为安装成功

新建工作空间
  • 此空间为ROS所有,方便后续步骤安装

    • mkdir -p ~/catkin_ws/src
      mkdir -p ~/catkin_ws/scripts
      cd catkin_ws/src 
      catkin_init_workspace
      cd .. 
      catkin_make
      

Gazebo安装


卸载之前安装的gazebo
  • sudo apt-get remove gazebo* 
    sudo apt-get remove libgazebo*
    sudo apt-get remove ros-melodic-gazebo* #kinetic noetic对应修改
    

设置计算机以接受来自package.osrfoundation.org的软件
  • sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
    
    cat /etc/apt/sources.list.d/gazebo-stable.list
    
    #如果出现deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main表示没问题
       
    

设置密钥
  • wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
    sudo apt-get update
    

安装gazebo指令
  • sudo apt-get install gazebo9=9.1*
    
  • 安装后终端输入gazebo,若能出现gazebo则为安装成功,界面如下

    -ROS成功运行图


安装gazebo与ROS插件
  • sudo apt install ros-melodic-gazebo9-*
    sudo apt install ros-melodic-gazebo-*
    
  • 测试

    • roscore  
      rosrun gazebo_ros gazebo 
      
    • 界面如上张图片


MAVROS安装
  • sudo apt install ros-melodic-mavros ros-melodic-mavros-extras 		# for ros-melodic
    wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
    sudo chmod a+x ./install_geographiclib_datasets.sh
    sudo ./install_geographiclib_datasets.sh  #这步需要装一段时间,请耐心等待PX4配置
    #注意,我们安装的ROS环境为ROS1,所以选择melodic方式安装,#后面的内容为注释,只需要运行终端代码即可
    

PX4配置

  • 这一块的步骤参考的是上文所说的第二个链接。

​ 注意:由于GitHub网址国内访问太慢,所以 我们采用gitee网站的方式

git clone https://gitee.com/bingobinlw/Firmware.git

这一步下载过后打开Firmware文件夹,勾选显示隐藏文件

  • 隐藏文件

找到如图所示选中的文件,双击打开

[submodule "mavlink/include/mavlink/v2.0"]
	path = mavlink/include/mavlink/v2.0
	url = https://gitee.com/bingobinlw/c_library_v2.git
	branch = master
[submodule "src/drivers/uavcan/libuavcan"]
	path = src/drivers/uavcan/libuavcan
	url = https://gitee.com/bingobinlw/uavcan.git
	branch = px4
[submodule "Tools/jMAVSim"]
	path = Tools/jMAVSim
	url = https://gitee.com/bingobinlw/jMAVSim.git
	branch = master
[submodule "Tools/sitl_gazebo"]
	path = Tools/sitl_gazebo
	url = https://gitee.com/bingobinlw/sitl_gazebo.git
	branch = master
[submodule "src/lib/matrix"]
	path = src/lib/matrix
	url = https://gitee.com/bingobinlw/Matrix.git
	branch = master
[submodule "src/lib/ecl"]
	path = src/lib/ecl
	url = https://gitee.com/bingobinlw/ecl.git
	branch = master
[submodule "boards/atlflight/cmake_hexagon"]
	path = boards/atlflight/cmake_hexagon
	url = https://gitee.com/bingobinlw/cmake_hexagon.git
	branch = px4
[submodule "src/drivers/gps/devices"]
	path = src/drivers/gps/devices
	url = https://gitee.com/bingobinlw/GpsDrivers.git
	branch = master
[submodule "src/modules/micrortps_bridge/micro-CDR"]
	path = src/modules/micrortps_bridge/micro-CDR
	url =https://gitee.com/bingobinlw/micro-CDR.git
	branch = px4
[submodule "platforms/nuttx/NuttX/nuttx"]
	path = platforms/nuttx/NuttX/nuttx
	url = https://gitee.com/bingobinlw/NuttX.git
	branch = px4_firmware_nuttx-8.2
[submodule "platforms/nuttx/NuttX/apps"]
	path = platforms/nuttx/NuttX/apps
	url =  https://gitee.com/bingobinlw/NuttX-apps.git
	branch = px4_firmware_nuttx-8.2
[submodule "cmake/configs/uavcan_board_ident"]
	path = cmake/configs/uavcan_board_ident
	url = https://gitee.com/bingobinlw/uavcan_board_ident.git
	branch = master
[submodule "platforms/qurt/dspal"]
	path = platforms/qurt/dspal
	url = https://gitee.com/bingobinlw/dspal.git

将上面代码文件拷贝覆盖选中的文件的内容,并点击保存。


更新子模块组
  • 在Firmware文件夹内打开终端
git submodule update --init --recursive

安装必要的python依赖
  • 新开一个终端

  • cd ~/Firmware
    bash ./Tools/setup/ubuntu.sh --no-nuttx --no-sim-tools
    

编译PX4配置
  • make px4_sitl_default gazebo
    

新建终端,修改bashrc路径

sudo gedit ~/.bashrc


- 将打开的文件在最下面添加以下路径代码,然后保存

- ```
  source ~/catkin_ws/devel/setup.bash
  source ~/Firmware/Tools/setup_gazebo.bash ~/Firmware/ ~/Firmware/build/px4_sitl_default
  export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/Firmware
  export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/Firmware/Tools/sitl_gazebo
  ```

- ```
source ~/.bashrc
  • 注意自己的PX4安装包是什么名字,路径配置就填什么,如果自己的px4配置包是PX4_Firmware,就需要将本人的路径代码中的Firmware改成PX4_Firmware

  • 此命令能够使环境变量正确加载

新建终端运行以下命令

  • cd ~/Firmware
    roslaunch px4 mavros_posix_sitl.launch
    
  • 成功如图所示

  • 在这里插入图片描述

  • 并运行以下代码

    • rostopic echo /mavros/state
      
    • 此命令是检查mavros和PX4之间的通信是否正确,在终端显示 connected:true表示正确无问题,若显示false,则表示bashrc文件路径配置不正确,需要检查一遍路径。成功如图所示

    • 在这里插入图片描述


QGC地面站安装

安装链接
  • https://docs.qgroundcontrol.com/en/getting_started/download_and_install.html
    
  • 注意这个链接需要在Ubuntu系统中打开,并且下载在Ubuntu系统中

  • 在这里插入图片描述

  • 根据官网所给出的链接进行安装

  • 打开终端,分别输入以上代码,然后运行

  • 点击蓝色字体QGC进行下载

  • 在下载好的QGC安装包文件夹位置打开终端,运行下一条命令

    • chomd +x ./QGroundControl.Applmage
      

最终实现效果如图所示
PX4环境配置

  • 至此,仿真平台配置完成。以上所有代码都跑过一遍,安装有效。
  • PX4的环境配置了很久,因为会出现各种各样的问题,最后总结问题大概会出现在以下几点
  • PX4源码尽量直接git clone GitHub网址或者gitee网站。本人之前直接利用PX4安装包去Ubuntu解压,效果有,但是最后的mavros通信不成功。
  • 有些需要配置环境路径,需要一点耐心。如果出现错误,可以从错误地方直接复制到网上参考有关链接。
  • 本次记录心得结束,感谢各位观看
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PX4环境搭建记录(ROS+Gazebo+mavros+PX4+QGC) 的相关文章

  • Keil:ST-LINK USB communication error

    error flash download failed target dll has been cancelled 1 USB口的问题 xff1a USB供电不好 xff0c 或则USB驱动程序或ST Link驱动程序有问题 我的解决方案就
  • Cadence OrCAD BOM如何输出封装信息

    Cadence OrCAD 如何输出带封装信息的BOM 1 选中DSN文件 xff0c 打开Tools菜单中 选择Bill of materials选项 2 Bill of materials对话框设置如下 3 ORCAD输出的BOM表是文
  • 随机排列算法及《算法导论》5.3节习题解答

    随机排列算法及 算法导论 5 3节习题解答 算法导论 介绍了两种随机排列数组的算法 第一种算法是为数组的每个元素A i 赋一个随机的优先级P i xff0c 然后依据优先级对数组A中的元素进行排序 例如 xff0c 如果初始数组A 61 1
  • 【Ubuntu-Tensorflow】GPU设置及显存资源分配

    最近笔者在做GPU显存资源分配的研究 xff0c 发现在tf中gpu一些实用的方法和接口 xff0c 共享出来 xff0c 供大家参考学习 xff0c 如有问题 xff0c 欢迎留言讨论 1 运行程序时 xff0c 控制台设置GPU运行参数
  • 为了解决jetson tx2的内存不足。挂载sd卡,并且使用docker在sd中安装jetPack的镜像。

    1 xff0c 使用nvidia官方的sdkmanager工具给jetson tx2刷机 xff0c 并且将sd卡挂载在系统目录下 参考ubuntu18 04主机 43 Jetson TX2 NX刷机 lgh15897723511的博客 C
  • 链表反转 - 链表排序 算法

    链表反转 xff1a 想象有1个新链表 xff0c 每次从旧链表取出一个元素 xff0c 然后插入到新链表的头部 链表排序 xff1a 先将链表拆分为2个子链表 使用快慢指针 xff0c 快指针每次走2步 xff0c 当快指针走到尾部时 x
  • 如何在Ubuntu服务器上安装桌面环境(GUI)

    本文转载至网络 原作者Chris Patrick Carias 你想在你的 Ubuntu 服务器上安装 GUI 吗 xff1f 大部分情况下你是可以安装的 xff0c 在本教程中我会详细介绍安装的步骤 在正式开始之前 xff0c 我来告诉你
  • 平衡小车PID学习

    离散式PID xff1a 位置环 xff1a 入口参数 xff1a 位置测量值 xff0c 编码器的位置测量值 系统的参数调定要求 xff1a 目标 xff1a 准确性 xff0c 稳定性 xff0c 快速性 指标 xff1a 最大超调量
  • arm64汇编篇-04堆与栈的关系

    栈 xff1a 栈是一种具有特殊的访问方式的存储空间 xff08 后进先出 xff0c Last In Out Firt xff0c LIFO xff09 堆 xff1a 堆用于动态分配和释放程序所使用的对象 xff08 这边不详细介绍堆
  • 关于STM32平衡小车的几个关键疑问

    引用文章 一 关于姿态融合 首先需要提一点关键的 xff0c 如果是采用卡尔曼滤波或者互补滤波 xff0c 尽可能把采样时间调小 xff0c 这样可以增加滤波的效果 建议采样时间不要高于10ms xff0c 起初我在测试的时候采样时间设置为
  • STM32F103C8T6系统板

    目录 组成1 电源部分2 复位3 晶振4 电源部分电源电路 防反接电源电路 电源芯片输入滤波电容的作用 xff1a 输出滤波电容的作用 xff1a 大电容和小电容并联的作用 xff1a 电源电路 MCU引脚部分等VCC3 3与VCC3 3M
  • PyTorch实现 | 车牌OCR识别,《PyTorch深度学习之目标检测》

    注 xff1a 本文选自中国水利水电出版社出版 PyTorch深度学习之目标检测 一书 xff0c 有改动 福利 xff01 免费寄送图书 xff01 xff01 公众号 机器学习与AI生成创作 后台回复 xff1a 168 即可参与免费寄
  • putty不能连接vultr服务器,提示network error:connection refused怎么解决

    部署服务器时第四个选项的第1个和第4个选中重新部署 如下图
  • 推荐一些IEDA,Eclipse十分好用的插件

    推荐一些IEDA xff0c Eclipse十分好用的插件 一 IDEA插件1 常用插件 xff1a 2 代码质量插件 xff1a 3 其他插件 xff1a 二 Eclipse 插件 xff1a 一 IDEA插件 1 常用插件 xff1a
  • VSCode git 配置心得

    一 Git是一个分布式的代码版本管理工具 类似的常用工具还有SVN CVS 最大的特点也是优点在于提供分布式的代码管理 1 分支代码只有一份 xff01 使用过svn的童鞋想必都知道 xff0c 当我们要开发一个新功能或者增加一个新版本或者
  • AD、PADS、Cadence哪个最好用?

    用哪个工具不是你说了算 案例1 xff1a 老板 xff0c Allegro我不会用啊 xff0c 我只会用Power PCB 好 xff0c 你去找财务结算工资吧 xff01 案例2 xff1a 小伙子 xff0c 你会用什么工具啊 xf
  • git 使用规则

    Linus为Linux Kernel Project发起的版本控制项目 HEAD代表当前最新状态 tag为某个状态的标签 SHA1为每个提交日志的唯一标识 install apt get install git core git clone
  • 两分钟教你学会用示波器测量串口波特率

    首先接好线 xff0c 黑表笔接地线 xff0c 灰表笔接串口TX数据线 接着打开示波器 xff0c 按下AUTO xff0c 自动测量波形 接着按下AUTO上面的STOP键 xff0c 冻结画面 按下CURSORS xff0c 打开光标模
  • Visual Studio 与Visual C++ 有什么区别

    Visual C 43 43 是 Visual Studio的一个部分 xff0c 此外还有 Visual Basic xff08 VB xff09 Visual C 等 VC 43 43 6 0 是VS6的 VC 43 43 2003 是
  • STM32Cube的串口设置(一)即学即用

    串口系列 STM32Cube的串口设置 xff08 一 xff09 即学即用 STM32Cube的串口设置 xff08 二 xff09 一个串口接收另一个串口发送 串口实战 STM32Cube的串口实战 xff08 一 xff09 GPS

随机推荐

  • C++中构造函数后面接单冒号是什么意思?

    构造函数后 xff0c 接单冒号表示初始化列表 具体形式为 对于class TEST xff0c 存在成员变量int a b c 那么 TEST int x int y a x b y c 0 的效果就是用括号内的值 xff0c 来初始化成
  • 训练神经网络中最基本的三个概念:Epoch, Batch, Iteration

    转载地址 xff1a https zhuanlan zhihu com p 29409502 原作者 xff1a Michael Yuan 作者主页 xff1a https www zhihu com people mikeyuan 今天让
  • 使用makefile编译freeRTOS

    freeRTOS的文件结构 FreeRTOS LabsFreeRTOS Plus 包含freeRTOS 43 的组件和demo项目FreeRTOS 包含内核和demo项目 Source目录 xff1a 三个必须文件list c queue
  • 2013 一路走过

    2013 一路走过 想起当初找工作的时候 xff0c 一个人早上坐火车跑到其他大学的招聘会上去逛一圈 xff0c 了解招聘情况 然后下午又坐火车回学校 记得那天我投了十几份简历出去 xff0c 本打算投着试试 xff0c 没想到回来后有几家
  • 编译vs2008的samples程序总是跳过

    编译vs2008的samples程序总是跳过 xff0c 要配置属性还显示 未能完成操作 未指定的错误 的解决办法 作者 admin 分类 开发问题 发布时间 2013 03 12 09 22 974 浏览数 6 没有评论 文章转自王牌软件
  • MFC 用户界面线程:界面线程的退出 窗口关闭的流程

    原文链接 xff1a http wenku baidu com link url 61 6CFkWbLOeFgNoUsJniCX3ksw6 RztxMr9Z e6t7uu3e vV7UTKThUEkyRkq8IXwxIw5qYctN8gIx
  • MFC用户界面多线程实例2

    以下是 MFC 用户界面线程相关知识 由于用户界面线程含有自己的消息循环 xff0c 可以出来 Windows 消息 xff0c 并可创建和管理诸如窗口和控件等用户界面 元素 因此 xff0c 这 种线程较工程线程更为复杂 创建用户界面线程
  • 反汇编定位代码崩溃位置_1

    原帖 xff1a http blog csdn net gwzz1228 article details 9045853 利用map xff0c cod文件定位崩溃代码行 利用vs2010 新建一个空的控制台项目 xff0c 添加文件gtg
  • 反汇编定位代码崩溃位置_3

    原帖 xff1a http blog sina com cn s blog 141f234870102van8 html win7 43 vs2010通过map文件和cod文件找到崩溃的代码行 2015 01 11 11 31 04 转载
  • 反汇编定位代码崩溃位置_4

    原帖 xff1a http blog csdn net xiao article details 23177577 GDB如何从Coredump文件恢复动态库信息 标签 xff1a GDBcoredumpso调试动态库 2014 04 08
  • STM32Cube的串口设置(二)一个串口接收另一个串口发送

    串口系列 STM32Cube的串口设置 xff08 一 xff09 即学即用 通过串口设置第一部分大家应该基本会使用单个串口进行收发了 所以本次介绍通过串口进行转发 适合情景为一个串口设备波特率为38400 xff0c 但是接收模块仅支持1
  • C链表反转

    节点 struct Note int value Note pNext typedef struct Note PList 生成一个链表 Note GenerateList 输出一个链表 void PrintList Note pHead
  • PMP考试重点知识

    第一章 引论 前三章 是整个知识体系的支撑框架 xff0c 每次考试中都会考到 xff0c 但是一般在15道题左右 xff0c 前 三章 学不好后面的章 节很难理解透彻 1 项目的特点 xff1f 2 什么是项目管理 xff1f 3 项目和
  • pcb焊接技巧

    焊接的先后次序 要想更高效 可靠地焊好一块板子 xff0c 是要遵循一定的原则 xff08 如 先小后大 xff09 的 xff0c 不可乱来 xff0c 更不是看哪个元件顺眼就焊哪个 一般我拿到一块板子后的处理流程是 xff1a 打印 P
  • js中通过document获取标签节点

    使用id名表示标签 xff0c 不够严谨 在html语法中 xff0c id名随便起 xff0c 可以是js中的关键字 xff0c 但是在js中使用id代表标签 xff0c 就不能使用关键字 xff0c 所以我们需要一种更加严谨的方式获取标
  • 安装ubuntu-desktop

    目录 安装ubuntu desktop 解决root登录受限 安装远程访问软件 方法一 xff1a 安装vnc4server 方法二 xff1a Teamviwer安装 传送门 推荐 正文 回到顶部 安装ubuntu desktop 复制代
  • python读取C语言头文件

    在使用python编程过程中 xff0c 经常需要对C语言文件进行操作 xff0c 即 h文件进行读取操作 xff0c 这里举例说明 xff0c python读取C语言头文件 xff0c 提取其中 define 宏定义 废话少说 xff0c
  • makefile(详细讲解)

    目录 1 makeflie2 多个文件执行makefile 1 makeflie makefile带来的好处就是 自动化编译 xff0c 一旦写好 xff0c 只需要一个make命令 xff0c 整个工程完全自动编译 xff0c 极大的提高
  • WLAN、LAN、WAN的区别

    1 LAN局域网 xff08 Local Area Network xff09 xff1a 通俗讲就是路由器和用户之间接口 2 WAN广域网 xff08 Wide Area Network xff09 xff1a 通俗讲就是路由器和外部网络
  • PX4环境搭建记录(ROS+Gazebo+mavros+PX4+QGC)

    全过程记录PX4环境搭建 xff08 ROS 43 Gazebo 43 Mavros 43 PX4 43 QGC xff09 本人飞控专业在读 xff0c 近段时间在老师的建议下 xff0c 开始搭建PX4环境配置 因为并没有之前相关环境配