git clone PX4 环境配置与问题记录

2023-05-16

 仿真平台基础配置 (yuque.com)

前言

        使用ubuntu下载ros、px4似乎是一件十分繁琐以及困难的事情,但是本人经过了参考大量链接,成功安装好后,发现这件事情其实并非难事。许多安装指导链接发布于一两年前,也许在当时确实是一个好方法,但时至今日,很多操作步骤已然删繁就简,成为一件易事了。

序、PX4初始环境依赖安装与问题  

  • 在使用apt安装的过程中(包括之后ROS的安装),如果出现难以解决的依赖问题,可以使用aptitude install(没有aptitude的话,使用sudo apt install aptitude 安装),如sudo aptitude install ros-kinetic-desktop,它会依次推荐依赖解决方案,觉得可行就按y,不可行就按n。当然这个工具也不是万能的,如果它也解决不了依赖问题,还是需要靠自己分析解决。
  • 有时候apt报错,提示“有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?”,这时按照提示进行操作即可。
  • 注意仔细检查依赖都装成功没有,之前有些开发者遇到的编译过程中出现'pthread_create'未定义的引用,就是因为少装了依赖

问题:Ubuntu20版的新问题;默认python3;之前的python直接改成python3 

sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python-pip python3-pip gawk


pip3 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml


pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse

以上代码都是针对于ubuntu18.04环境下使用,20.04会提示无pip2,直接改为pip3安装即可(20.04依赖库里再无python2)

●如果出现如下报错情况,可先更新 setuptools 和 pip

pip install --upgrade setuptools         #若未报错不需要输入这两行命令

python -m pip install --upgrade pip

详见:仿真平台基础配置 (yuque.com)

一、ROS下载与配置

ubuntu 20.04环境下ROS+PX4+RPG ROS DVS+DV-gui 安装_ch&sky的博客-CSDN博客_ubuntu20.04安装px4

1.ROS直接使用鱼香ros的一键安装指令:(比较简单)

wget http://fishros.com/install -O fishros && . fishros 

 

分别选择:1 (会同时完成换源和安装) 版本问题可了解后续使用的版本匹配问题:Ubuntu 16.04对应Kinetic,18.04对应Melodic,20.04对应Noetic,Kinetic以前的发行版不支持

                   初始化 rosdep

                   (如上)

                   7(很推荐的IDE,VS环境的配置在后面会说)

测试安装是否成功:

2、想要了解每个过程参见:


ROS官网:Installation/Ubuntu - ROS Wikihttp://wiki.ros.org/Installation/Ubuntu


仓库/Ubuntu - 社区帮助维基https://help.ubuntu.com/community/Repositories/Ubuntu

 3、ROS入门学习

ROS/教程 - ROS 维基

【古月居】古月·ROS入门21讲 | 一学就会的ROS机器人入门教程_哔哩哔哩_bilibili

【古月居】古月·ROS2入门21讲 | 带你认识一个全新的机器人操作系统_哔哩哔哩_bilibili

二、Gazebo安装;mavros安装

仿真平台基础配置 · 语雀

1、gazebo重新下载配置

1.1、Gazebo包括Gazebo本身和ROS的插件,需要分别安装。首先卸载之前的Gazebo

1.2、我们对Gazebo的ROS插件做了修改,因此需要源码编译。

1)首先装依赖

2)然后编译(如果编译时还缺其他的依赖,同上方法安装),

由于需要用到XTDrone的文件,需要先完成XTDrone源码下载。

3)编译成功后执行如下两条指令,判断gazebo_ros是否安装成功

Gazebo有很多开源的模型文件,我们将一些需要的模型文件上传到附件中,供大家下载:
--> 请点击models.zip(632.9 MB)

需将该zip文件提取到(解压)~/.gazebo中。其中,.gazebo为隐藏文件,可通过按ctrl+H显示隐藏文件

此时在~/.gazebo/models/路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。


2、MAVROS安装

2.1创建一个工作空间(按照古月居ros入门21讲中的第九讲创建一个catkin_ws文件)

sudo apt-get install python-catkin-tools

mkdir -p ~/catkin_ws/src

mkdir -p ~/catkin_ws/scripts

cd catkin_ws && catkin init # 使用catkin_make话,则为cd catkin_ws/src && catkin_init_workspace

 2.2 在catkin_ws路径下执行以下代码

catkin init

wstool init src

2.3 执行完成后继续执行

sudo apt-get install python-catkin-tools python-rosinstall-generator -y
rosinstall_generator --rosdistro noetic mavlink | tee /tmp/mavros.rosinstall

2.4安装MAVROS(注意版本问题)

注意,mavros-extras一定别忘记装,否则视觉定位将无法完成

Ubuntu 16.04对应Kinetic,18.04对应Melodic,20.04对应Noetic,Kinetic以前的发行版不支持

## 看ROS版本
sudo apt install ros-noetic-mavros ros-noetic-mavros-extras
sudo apt install ros-kinetic-mavros ros-kinetic-mavros-extras 		# for ros-kinetic
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配置

安装最新版mavros(按上面的安装就好

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

2.5 创建工作区

wstool merge -t src /tmp/mavros.rosinstall

wstool update -t src -j4

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

 2.6 安装地理图书馆数据、构建源代码

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

catkin build

 2.7 确保从工作区安装程序(注:执行下列代码后,rosrun将会失效。)

source devel/setup.bash

​​​​​仿真平台基础配置 (yuque.com)(以此为主)

ubuntu20.04安装ros1与px4、mavros、QGroundControl

三、PX4拉取与配置

1、下载PX4源代码

git clone https://github.com/PX4/PX4-Autopilot.git --recursive

网络问题下载不下来;解决方法:

1)直接拷贝别人下好的代码;或则自己下载好。(下一步更新子模块还是会遇到问题。)

2)虚拟机科学上网;(这个要怎么设置??)  参见:(22条消息) 虚拟机科学上网原理与设置_fushengxiaoyao的博客-CSDN博客

3)换源:(21条消息) Ubuntu更换国内源(apt更换源)_墨痕诉清风的博客-CSDN博客_ubuntu换源

靠、、是不是可以考虑一下大部分VPN都是有Ubuntu里的版本。。没有也可以找一个、、

不科学上网太难了。

PX4配置过程与踩坑 (copyfuture.com)

2、完成下载后,进入目录    PX4-Autopilot

更新子模块(验证PX4下载是否完全):(直接用别人下好了所有子模块的可以不更新)

git submodule update --init --recursive

如果出现无法更新的情况:用以下命令删除所有子模块,重新更新:

git status                                 // 查看git库状态,刚下完成的应该是干净的
git submodule sync                         // 查看所有同步子模块

git submodule deinit  --all -f             // 强制删除所有子模块
git submodule update --init --recursive    // 下载更新所有子模块

git status  // 查看 无文件要提交,干净的工作区
ll          // 查看 总用量 260(版本变化可能会有不一样)

git submodule update --init --recursive   // 验证一下

3.运行ubuntu.sh以安装所有工具链:

终端输入(终端路径为主目录下)

bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

出现权限不够:
sudo bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

安装报错:

解决方案:

错误:找不到scipy==1.7.1的匹配分发 - 问答 - 腾讯云开发者社区-腾讯云 (tencent.com)

自己下载:

pip install 包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

然后重启电脑

网不好会出问题,之后编译会通不过,多下载几次。

仿真能过就好;实际的编译不使用实物就不强求了、、、、

4、环境配置验证:编译运行测试

在完成上述环境的搭建之后,就可以开始仿真和固件的编译了,打开终端输入

(注意:如果此处使用的是虚拟机的话需要注意扩大分配的内存最小需分配4G)

cd PX4-Autopilot

make px4_fmu-v3_default
make px4_sitl jmavsim
make px4_fmu-v5_default
make px4_sitl gazebo

编译报错:查看报错问题,确实哪个模块??  直接找到对应路径删除文件夹,
然后重新:(缺哪个补哪个。。)
git submodule update --init --recursive

Ubuntu20.04或18.04下PX4(pixhawk)源码编译环境配置教程,及构建代码各种错误解决办法_Iamsonice的博客-CSDN博客

错误2:Configuring incomplete, errors occurred!

原因还是因为编译环境还未安装齐全再次输入(可多次运行以免安装不齐全)

cd ..
bash ./PX4-Autopilot/Tools/setup/ubuntu.sh

错误3:You may need to install it using: pip3 install --user empy

原因还是因为编译环境还未安装齐全Python3,类似的错误(pip3 install --user numpy
、pip3 install --user toml、pip3 install --user packaging...等)按照提示终端输入

pip3 install --user empy

(如出现错误多是网络原因多尝试几次即可)

四、建立ROS与PX4的通信配置

1、环境配置(PX4+MAVROS)

ubuntu 20.04环境下ROS+PX4+RPG ROS DVS+DV-gui 安装_ch&sky的博客-CSDN博客_ubuntu20.04安装px4

仿真平台基础配置 (yuque.com) (以此为主)

打开一个终端,输入:

gedit ~/.bashrc

将下列代码复制粘贴:(前面有重新下载过gazebo,留意路径问题)


source ~/catkin_ws/devel/setup.bash

source ~/PX4-Autopilot/Tools/setup_gazebo.bash ~/PX4-Autopilot/ ~/PX4-Autopilot/build/px4_sitl_default

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/sitl_gazebo
source ~/catkin_ws/devel/setup.bash

source ~/PX4-Autopilot/Tools/simulation/gazebo/setup_gazebo.bash ~/PX4-Autopilot/ ~/PX4-Autopilot/build/px4_sitl_default

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot

export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4-Autopilot/Tools/simulation/gazebo/sitl_gazebo

上面代码第二行为ubuntu20.04环境下的路径,18.04需要根据自己情况对路径进行修改

保存并退出之后输入:

source ~/.bashrc

验证PX4+MAVROS是否配置完成:

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch
rostopic echo /mavros/state

若connected: True,则说明MAVROS与SITL通信成功。如果是false,一般是因为.bashrc里的路径写的不对,请仔细检查。

---
header:
seq: 11
stamp:
secs: 1827
nsecs: 173000000
frame_id: ''
connected: True
armed: False
guided: False
manual_input: True
mode: "MANUAL"
system_status: 3
---

五.安装地面站

按照官网来就好Download and Install · QGroundControl User Guide

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

git clone PX4 环境配置与问题记录 的相关文章

  • Linux下CMakeLists.txt编译C++程序笔记

    在Linux下运用ROS系统可免去很多构建框架的步骤 xff0c 所以一般只要按照官网给的教程逐步进行即可 但是ROS自身有许多的毛病 xff0c 比如其稳定性和实时性差 xff0c 有时候数据传输会发现丢失的现象 xff0c 因此其性能不
  • px4: actuators control, control group 和 mixer科普

    原文链接 xff1a https pixhawk org dev mixing Control Mixing This page discusses the general purpose control mixing architectu
  • 如何用开源飞控PIXHAWK进行二次开发?

    著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处 作者 xff1a 我是肉包子 链接 xff1a http www zhihu com question 38874663 answer 84239995 来源
  • px4的模式与状态

    一 模式 PX4 native flight stack String Description and notes MANUAL ACRO ALTCTL POSCTL OFFBOARD STABILIZED RATTITUDE in mas
  • ESP8266开发实战之(一)-开发环境配置

    最近买了一块ESP8266的小板子 xff0c 上面自带WIFI功能 xff0c 可以进行一些好玩的物联网开发 因此 xff0c 我打算将对整个板子的的熟悉过程通过一系列的文档记录下来 我拿到的板子型号是NodeMUC 1 0 ESP 12
  • ESP8266开发实战之(4)-连接路由器的wifi

    概述 ESP8266支持连接到wifi xff0c 从而使得我们能够通过网络访问 xff0c 做出一些简单而有趣的功能 因此 xff0c 第一步工作便是连接到wifi网络 一般情况下 xff0c 我们要连接wifi xff0c 在手机上的操
  • 怎样用一行代码判断系统的大小端?

    最近在设计自己的TCP IP协议栈 xff0c 代码完成的差不多了 xff0c 已经能够跑在嵌入式STM32开发板上 闲来无事 xff0c 想着优化一下问题的解决方案 这个问题据说是很常见的面试问题 xff1a 如何判断当前系统的大小端 x
  • 在操作系统开发中选bochs还是qemu

    最近有同学问我 xff1a 为什么你在写 0写x86 Linux操作系统时选择了bochs xff0c 而不是qemu xff1f 他认为bochs更加好用 xff0c 很多资料上都写了用该软件 其实我也是经过不断地对比和尝试后 xff0c
  • 网络编程中的大小端

    最近在录制一门手写TCP IP协议栈的课程 不得不说 xff0c TCP IP这个东西是真难 xff0c 写代码费了我半天劲 xff0c 然后又要用课程的方式给讲出现 这其中涉及到大小端的转换 xff0c 所以这里总结一下 在计算机领域 x
  • RTOS系统延时与普通软延时的特点与区别

    我们知道 xff0c 在RTOS中会提供若干延时函数的API 对于没有仔细了解过RTOS的同学而言 xff0c 可能会产生这样疑惑 xff1a 这些API与普通自写的延时函数相比究竟有何优势呢 xff1f 为什么要额外提供这些API xff
  • 超简单!在Keil中指定某个函数或变量存放的地址

    在我们开发过程中 xff0c 有时候会有这样一个需求 xff1a 希望能够指定某个函数或变量存放的地址 也许你看过一些文章 xff0c 里面介绍了一大堆内容 xff0c 甚至于还会介绍分散加载文件的配置 但是绝大多数情况下 xff0c 为了
  • 解决Ubuntu环境下ROS Kinetic中的cv_bridge和自己安装OpenCV 2.4.xx兼容性笔记

    我们如果使用的ROS版本为Kinetic xff0c 那么ROS一般会默认安装OpenCV3 所以使用cv bridge的情况下 xff0c ROS会自动去调用它自己安装的OpenCV3 但是对于一部分人还是比较习惯使用OpenCV2 xf
  • 自己动手从0到1写嵌入式操作系统-李述铜-专题视频课程

    自己动手从0到1写嵌入式操作系统 7941人已学习 课程介绍 这不是rtos源码分析的课程 xff0c 而是为初级的同学设计 xff0c 从基础原理讲师 xff0c 一步步不断迭代设计rtos的课程 xff01 用不到 2000行代码 xf
  • opencv基于颜色的物体识别

    span style font size 18px include lt iostream gt include lt string gt include lt string h gt include lt vector gt includ
  • c++模板(函数模板、类模板)STL、map、容器

    一 什么是模板 模板是C 43 43 中自动生成代码的技术 二 为什么使用模板 问题 xff1a 实现一个通用的排序算法 C语言 xff1a 通过回调函数实现 xff0c 使用者调用麻烦 C 43 43 语言 xff1a 函数重载 xff0
  • iPad 上最强 IDE,支持 20 多种开发语言,还开源了

    x1f447 x1f447 关注后回复 进群 xff0c 拉你进程序员交流群 x1f447 x1f447 作者丨小集 来源丨小集 xff08 ID xff1a zsxjtip xff09 https mp weixin qq com s 3
  • 如何删除Docker镜像

    Docker镜像不过是一组只读文件 xff0c 这意味着一旦docker镜像被构建 xff0c 就不能修改 然而 xff0c 你可以借助现有的docker镜像创建一个新的docker镜像 Docker镜像是用来构建docker容器的 Doc
  • 如何减少/缩小Linux中的LVM(逻辑卷大小)?

    减少 缩小逻辑卷会给数据非常大的损坏风险 所以 xff0c 如果可能的话 xff0c 尽量避免这种情况 xff0c 但如果没有其他选择的话 xff0c 只能这样操作了 缩减LVM之前 xff0c 建议先做一个备份 当你在LVM中的磁盘空间耗
  • 是结束也是开始

    往事随风 时光飞逝 xff0c 不知不觉已答辩完 xff0c 不知不觉已毕业 xff0c 不知不觉告别了生活四年的学校 告别了一起的你们 xff0c 不知不觉踏上了返程的火车 xff0c 不知不觉已回到了家 xff0c 坐在电脑旁边 xff
  • 目标检测光流法(一):对光流法的认识

    所谓光流 xff0c 是计算机视觉研究领域的术语 xff0c 直观的认识就是提供一个对运动物体的的描述 xff0c 因此也常用于运动物体的检测与识别 现实生活中 xff0c 我们之所以能感受到物体的动与不动 xff0c 就是因为这个物体在前

随机推荐