XTDrone PX4 仿真平台|Ubuntu20.04 环境搭建失败记录

news2024/9/28 3:28:08

XTDrone PX4 仿真平台|Ubuntu20.04 环境搭建失败记录

  • 仿真环境搭建
    • 依赖安装
    • ROS安装
    • Gazebo安装
    • MAVROS安装
    • 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’未定义的引用,就是因为少装了依赖。
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

报错如下:

jk-jone@JKKC:~$ 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
[sudo] jk-jone 的密码:
正在读取软件包列表… 完成
正在分析软件包的依赖关系树
正在读取状态信息… 完成
注意,选中 ‘libimage-exiftool-perl’ 而非 ‘exiftool’
没有可用的软件包 python-pip,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
然而下列软件包会取代它:
python3-pip
E: 软件包 python-pip 没有可安装候选

sudo apt-get update

没有解决该问题

先把python-pip 去掉,先装其它的

pip 是python2的包管理工具,已经不被包含在ubuntu20.04的仓库里了
原来是版本问题, 20.04更支持python3

pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse

ROS安装

已经装好了ROS noetic

创建新的工作空间
在这里插入图片描述

Gazebo安装

让先卸载原来的gazebo ,没有进行这步操作,而且不让用gazebo11 让用gazebo9 不知道影不影响

对Gazebo的ROS插件做了修改,因此需要源码编译
首先装依赖

sudo apt-get install ros-noetic-moveit-msgs ros-noetic-object-recognition-msgs ros-noetic-octomap-msgs ros-noetic-camera-info-manager  ros-noetic-control-toolbox ros-noetic-polled-camera ros-noetic-controller-manager ros-noetic-transmission-interface ros-noetic-joint-limits-interface

然后克隆并编译Gazebo的插件gazebo_ros_pkgs,放在~/PX4_XTDrone_WS/src下

cd ~/PX4_XTDrone_WS/src
git clone -b noetic-devel https://github.com/ros-simulation/gazebo_ros_pkgs.git
cd ~/PX4_XTDrone_WS
catkin build

在这里插入图片描述
编译成功后执行如下两条指令,判断gazebo_ros是否安装成功

source ~/PX4_XTDrone_WS/devel/setup.bash
rosrun gazebo_ros gazebo

在这里插入图片描述
启动成功
此时模型里面还没有什么模型
Gazebo有很多开源的模型文件,下载下来后

将该附件解压缩后放在 ~ /.gazebo中,此时在 ~ /.gazebo/models/路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。
在这里插入图片描述
之后gazebo里面的insert菜单里面会有很多的模型

MAVROS安装

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

sudo apt install ros-noetic-mavros ros-noetic-mavros-extras 		# for ros-noetic

在这里插入图片描述

wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh

Home下面 会得到 install_geographiclib_datasets.sh 文件
在这里插入图片描述
增加权限

sudo chmod a+x ./install_geographiclib_datasets.sh
sudo ./install_geographiclib_datasets.sh #这步需要装一段时间

在这里插入图片描述

jk-jone@JKKC:~$ sudo ./install_geographiclib_datasets.sh
Installing GeographicLib geoids egm96-5
Installing GeographicLib gravity egm96
Installing GeographicLib magnetic emm2015

PX4配置

在这里插入图片描述

cd PX4_Firmware
make px4_sitl_default gazebo

删除 PX4_Firmware 文件夹下的 build 文件

– PX4 version: v1.13.2
– Found PythonInterp: /usr/bin/python3 (found suitable version “3.8.10”, minimum required is “3”)
– PX4 config file: /home/jk-jone/PX4_Firmware/boards/px4/sitl/default.px4board
Traceback (most recent call last):
File “”, line 1, in
ModuleNotFoundError: No module named ‘menuconfig’
CMake Error at cmake/kconfig.cmake:6 (message):
kconfiglib is not installed or not in PATH
please install using “pip3 install kconfiglib”
Call Stack (most recent call first):
CMakeLists.txt:174 (include)
– Configuring incomplete, errors occurred!
Error: /home/jk-jone/PX4_Firmware/build/px4_sitl_default is not a directory
make: *** [Makefile:230:px4_sitl_default] 错误 1

缺少kconfiglib 依赖库

pip3 install kconfiglib

Failed to import jsonschema: No module named ‘jsonschema’

缺少jsonschema 依赖库

pip3 install --user jsonschema

再执行

make px4_sitl_default gazebo

在这里插入图片描述
卡在这里不往下走了
把gazebo打开,就往下走了
在这里插入图片描述

之后再次使用

make px4_sitl_default gazebo

则可正常了
在这里插入图片描述
出现了几个无人机

修改 ~/.bashrc,加入以下代码,注意路径匹配,前两个source顺序不能颠倒。

source ~/PX4_XTDrone_WS/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo

启动

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch

出现问题:
gazebo无法启动成功
在这里插入图片描述

gzserver: symbol lookup error: /home/jk-jone/PX4_Firmware/build/px4_sitl_default/build_gazebo/libgazebo_mavlink_interface.so: undefined symbol: _ZN8mav_msgs4msgs17CommandMotorSpeedC1Ev
[gazebo-3] process has died [pid 5918, exit code 127, cmd /home/jk-jone/PX4_XTDrone_WS/src/gazebo_ros_pkgs/gazebo_ros/scripts/gzserver -e ode /home/jk-jone/PX4_Firmware/Tools/sitl_gazebo/worlds/empty.world __name:=gazebo __log:=/home/jk-jone/.ros/log/4969864a-d76a-11ed-9a6a-5714f224c3c2/gazebo-3.log].
log file: /home/jk-jone/.ros/log/4969864a-d76a-11ed-9a6a-5714f224c3c2/gazebo-3*.log

经过分析原因,之前安装了 rotors_simulator 的仿真功能包, 两者都定义了一个 mav_msgs,并且不一致!所以会找不到定义的地方。

locate libmav_msgs

在这里插入图片描述
这里只有rotors_simulator 的 镜像文件,没有PX4的,可能是检测到了没有编译?

删掉rotors_simulator 的 libmav_msgs.so 镜像文件

再启动

roslaunch px4 mavros_posix_sitl.launch

则不会报错,gazebo中出现一个无人机
在这里插入图片描述
但是通过

rostopic echo /mavros/state

查看mavros状态

header: 
  seq: 0
  stamp: 
    secs: 0
    nsecs:         0
  frame_id: ''
connected: False
armed: False
guided: False
manual_input: False
mode: ''
system_status: 0
---

connected 为 False
说明MAVROS与SITL通信还未成功

有说如果一直为false ,重新配置PX4;也可能是PX4的版本不对
在这里插入图片描述
在这里插入图片描述
从链接下载的版本是 v.1.13.2
在这里插入图片描述
下载这个版本v1.11.0-beta1

git clone -b v1.11.0-beta1 https://github.com/PX4/PX4-Autopilot.git

在这里插入图片描述
在这里插入图片描述
删除原来的 PX4_Firmware

将 PX4-Autopilot 重命名为 PX4_Firmware

mv PX4-Autopilot PX4_Firmware

再次编译

make px4_sitl_default gazebo

在这里插入图片描述
卡在这个地方不动了

在这里插入图片描述
卡了一会弹出这个,应该是国内上从git上 clone 异常导致的

在这里插入图片描述
第二次尝试也失败了

重新再次编译
很快过了,卡在了下面的地方 并且发现 PX4_Firmware/src/lib/matrix 里面有东西了,应该是刚下的,之前没有
在这里插入图片描述
又有一个模块clone时出问题了
在这里插入图片描述
在这里插入图片描述
要下载很多东西的再,总是卡住

在这里插入图片描述
报这个错

将XTDRONE的 PX4的对应的文件移到这个地方
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
将gazebo打开可以解决掉和这个Err

roslaunch px4 mavros_posix_sitl.launch

gazebo报错

最终也没有跳出坑!

不想换ubuntu18.04的系统,也不想换成gazebo9.所以不再向下折腾了,用docker吧还是

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/430023.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Revit净高分析的三种方法

关于净高分析,就是在revit绘制模型到一定程度后,需要对构件的空间位置进行分析,如结构层高、管线净高、地下室是否满足人员车辆进出、地上部分是否满足正常的人员设备活动空间、净高是否满足设备进场安装等,它可以让我们提前发现不…

Codepipeline 跨账号访问 Codecommit

背景 大型企业中代码仓库通常存放在各部门开发账户中,而流水线则位于独立 DevOps 账户中。 本文我们将介绍如何创建跨账号访问 Codecommit 代码仓库的 Codepipeline 流水线,即 CodePipeline 调用另一个账号中的 Codecommit 代码仓库。 亚马逊云科技开发…

【Python_Scrapy学习笔记(十二)】基于Scrapy框架实现POST请求爬虫

基于Scrapy框架实现POST请求爬虫 前言 本文中介绍 如何基于 Scrapy 框架实现 POST 请求爬虫,并以抓取指定城市的 KFC 门店信息为例进行展示 正文 1、Scrapy框架处理POST请求方法 Scrapy框架 提供了 FormRequest() 方法来发送 POST 请求; FormReques…

阿里云ECS大测评【免费领阿里云套餐~】

送福利!阿里云热门产品免费领(含ECS),点击进入:https://click.aliyun.com/m/1000370359/ 本篇博客参与阿里云 ECS实例测评,这里采用阿里的C5.large计算型实例 本次对云服务器ECS产品能力的体验和建议&…

【2023最新】超详细图文保姆级教程:App开发新手入门(4)

之前章节我们已经完成了一个应用项目的导入、代码更新和代码提交和应用打包编译,本章继续讲述一下,如何在开发过程中进行代码的同步联机调试。 7 代码真机调试 7.1 纯静态CSS页面样式查看 代码调试有多种方式,如果是查看纯粹的静态样式&am…

价值迭代求解马尔可夫决策过程

Value Iteration Algorithm 其算法思想是: 在每一个状态s下, 之迭代算法流程如下: 初始化状态价值state value,即对每个状态的价值都赋一个初始值,一般是0 计算每一个状态-动作对的 动作价值函数,通常通过创建一个二维…

项目管理(PMP)考试:易混淆知识点汇总

请点击↑关注、收藏,本博客免费为你获取精彩知识分享!有惊喜哟!! PMP考试中经常出现,但容易混淆的一些内容,包含15个会议、40个分析、6个矩阵、5个清单、5个审计、5个报告、4个分解结构、4个评估、3个日志…

谷歌人机验证Google reCAPTCHA

reCAPTCHA是Google公司推出的一项验证服务,使用十分方便快捷,在国外许多网站上均有使用。它与许多其他的人机验证方式不同,它极少需要用户进行各种识图验证。 它的使用方式如下如所示,只需勾选复选框即可通过人机验证。 虽然简单…

Python项目之中国数据可视化

文章目录关键词一、做什么二、怎么做1、获取数据&&处理数据2、数据库设计&&存储数据3、开发后端接口4、前端页面编写三、效果展示四、总结关键词 PythonDjangoPython网络爬虫echarts可视化阅读者(Python基础、Django基础、H5基础) 一、…

Linux学习笔记——UDP协议

文章目录UDP协议端格式UDP的特点面向数据报UDP的缓冲区基于UDP的应用层协议UDP使用注意事项16位的UDP校验和的校验原理UDP协议端格式 16位源端口号:数据从哪一个端口发出来的,也就是数据从哪一个进程发送出来的。在编写应用层代码的时候,用ui…

Git安装使用教程

Git - Downloadshttps://git-scm.com/downloads 安装 Git。可以在 Git 官网上下载安装包并按照提示进行安装。 GitHub或Gitee官网上注册一个账号,注册好后,桌面右键选择Git Bash,进行账号配置,命令如下: # 配置用户名…

spark第八章:Pyspark

系列文章目录 spark第一章:环境安装 spark第二章:sparkcore实例 spark第三章:工程化代码 spark第四章:SparkSQL基本操作 spark第五章:SparkSQL实例 spark第六章:SparkStreaming基本操作 spark第七章&#…

带隙基准基本原理

目录 负温度系数电压 正温度系数电压 带隙基准 小结 如何产生一个不受温度变化,保持恒定的电压基准呢? 我们假设,如果将两个具有相反温度系数(TC)的量以适当的权重相加,那么结果就会成为零温度系数&am…

MIT6.824 lab2C2D实验总结

2C 就是持久化一些变量,日志,任期,投票给谁,2D(lastincludeterm, lastincludeindex, snapshot)。同时最难受的是Figure8Unreliable这个测试点,总是几百次出现一两个错误。最后发现是对论文一句话的歧义。这里讲解一下…

Linux(DHCP原理与配置)

文章目录一 、什么是DHCP1.1DHCP定义1.2DHCP好处1.3DHCP的分配方式二 、DHCP 的工作过程三 、DHCP中的设置3.1 DHCP参数3.2 相关操作步骤一 、什么是DHCP 1.1DHCP定义 DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围…

swagger文件上传接口没有选择文件按钮问题解决 使用@RequestPart注解

在使用文件上传API时,swagger没有选择文件按钮 在MultipartFile前面加上RequestPart注解 PostMapping("/importFile")ApiOperation(value "文件上传API")public Object importFile(ApiParam(value "文件流", required true) Reque…

超越ChatGpt,最近爆火的AutoGPT 究竟是什么

一、AutoGPT是什么 最近几天,一款基于GPT-4的最强语言模型AutoGPT火遍了整个AI圈。众所周知,此前爆火AI圈的ChatGPT,唯一不太好用的地方就是需要人类不断的prompt。因此,如果你想要ChatGPT帮你去做一件复杂的事情,那么…

第九章 法律责任与法律制裁

第九章 法律责任与法律制裁_副本 目录 第一节 法律责任的概念 一 法律责任的含义二 法律责任的特点 第二节 法律责任的分类与竞合 一 法律责任的分类 (一)根据责任行为所违反的法律的性质 民事责任:刑事责任行政责任违宪责任 (二…

【云原生 • Docker】cAdvisor+Prometheus+Grafana 10分钟搞定Docker容器监控平台

文章目录cAdvisorPrometheusGrafana 10分钟搞定Docker容器监控平台cAdvisor部署Prometheus部署Grafana部署cAdvisorPrometheusGrafana 10分钟搞定Docker容器监控平台 cAdvisor(Container Advisor) 是 Google 开源的一个容器监控工具,可用于对容器资源的使用情况和性…

企业级信息系统开发讲课笔记3.1 基于配置文件整合SSM框架实现用户登录

文章目录零、本节学习目标一、采用MVC架构二、用户登录运行效果三、基于XML配置方式整合SSM框架实现用户登录(一)创建数据库与表1、创建数据库2、创建用户表3、在用户表里插入记录(二)创建Maven项目(三)项目…