Ubuntu20.04搭建PX4仿真环境及XTDrone开发平台(最详细最明白)

这篇具有很好参考价值的文章主要介绍了Ubuntu20.04搭建PX4仿真环境及XTDrone开发平台(最详细最明白)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、介绍

PX4-Autopilot仿真平台是由PX4官方提供的集虚拟px4固件、真机烧录固件、gazebo环境及模型于一体的平台,用户可以自己编写程序,通过mavros接口与虚拟px4固件进行mavlink协议的通讯,并在gazebo中显示虚拟世界和模型。因此PX官方手册里给了一个经典的例程:offboard.cpp和offboard.py,让用户通过程序开发,实现无人机自主功能。而XTDrone,就是提供一系列程序及教程的通用开发平台,见下图:【当然,可以看到,sitl_config文件夹里的models里的传感器sdf模型和修改过的gazebo_ros插件也是实现各种仿真的必要贡献】
xtdrone,无人机

二、写在前面

1、XTDrone是基于ubuntu18.04和ros melodic开发的。大家都知道,ubuntu18.04LTS是使用较广泛的系统,因为很多开源算法都是在18.04开发的。而ubuntu20.04作为最后一个支持ROS1的LTS系统,在很多预装库的版本上有所提升,例如20.04使用python3、opencv4、gazebo11等等。这就得ubuntu20.04在部署算法时容易出现问题,但我还是头铁,自2020年发布,就开始使用了。
2、之前XTDrone是与PX4 1.11虚拟固件进行通讯的,现在PX4 1.13出来了,XTDrone也在升级维护,以适配PX4 1.13版以获取更好的性能。接下来,带领大家进入语雀文档按照XTDrone教程,在Ubuntu20.04上部署1.13版本的px4和XTDrone,然后对应步骤给出注意点。毕竟Ubuntu20.04,还是要作出些改变才能装好。

三、开始配置

话不多说,可以打开语雀文档,点到仿真平台基础配置(对应PX4 1.13版)
xtdrone,无人机
主要是 依赖安装、ROS安装、Gazebo安装、mavros安装、PX4下载、XTDrone下载和配置。
而我,先调整下步骤,先想办法把需要源码下载的下载好,只是先不急着编译,然后再往下看我的安装步骤。
(1)先下载PX4-Autopilot和XTDrone的源码,因为里面包含中间步骤需要用的东西
通过以下命令默认下载master分支,而master指针一般指向最新稳定版,随着时间推移这条命令就无法克隆到1.13版本了。

1、克隆PX4
git clone https://github.com/PX4/PX4-Autopilot.git
# 以后若想克隆指定1.13.2版本。(2022.11.22出的)
# git clone -b v1.13.2 https://github.com/PX4/PX4-Autopilot.git --recursive
1、克隆XTDrone
git clone https://gitee.com/robin_shaun/XTDrone.git

其中PX4-Autopilot通过github克隆会很慢,可以先下载XTDrone,再去语雀文档 ,里面给出了打包好的PX4-Autopilot的下载链接

1、依赖安装

这个主要是PX4仿真平台所需的依赖。肖老师(及项目贡献者)【后面简称肖老师,但其他参与者的贡献不可忽略】给出的如下,其实不全,在编译px4时还是会报错缺少库,因此先不要复制代码去下载,先往下看。

1、sudo apt install ninja-build libimage-exiftool-perl ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev python3-pip gawk 
2#ubuntu20用户就把pip2改成pip3,不然装到/usr/lib/python2.7里去了
   pip2 install pandas jinja2 pyserial cerberus pyulog==0.7.0 numpy toml pyquaternion empy pyyaml  
3、pip3 install packaging numpy empy toml pyyaml jinja2 pyargparse

因此需要说明的第一个地方来了:
如果学习过PX4官方手册里,配过PX4仿真平台的人,应该知道,官方列了一个requirements.txt,里面写出了各个库需满足的最低版本,并且给出了一个脚本ubuntu.sh,在运行时可以安装 库、真机固件烧录、gazebo仿真依赖。使用命令bash ubuntu.sh即可安装齐。但是, 我们先执行

cd PX4-Autopilot/Tools/setup/
bash ubuntu.sh --no-sim-tools 
不加参数 --no-sim-tools,就会自动安装ubuntu版本对应的gazebo及gazebo-dev,和javsim等仿真依赖
因为ubuntu20是gazebo11,而XTDrone一般用gazebo9,所以不能急着安装gazebo11依赖(同时,如果不喜欢在ubuntu下make upload来烧录固件的,可以继续加参数 --no-nuttx)

官方的requirements.txt如下:

argcomplete
argparse>=1.2
cerberus
coverage
empy>=3.3
future
jinja2>=2.8
jsonschema
kconfiglib
lxml
matplotlib>=3.0.*
numpy>=1.13
nunavut>=1.1.0
packaging
pandas>=0.21
pkgconfig
psutil
pygments
wheel>=0.31.1
pymavlink
pyros-genmsg
pyserial
pyulog>=0.5.0
pyyaml
requests
setuptools>=39.2.0
six>=1.12.0
toml>=0.9

执行完之后再去复制肖老师的安装依赖,把剩下的可能XTDrone里需要用到的补全。

2、ROS 安装

Ubuntu20.04对应 ros noetic,可以前往我的博客进行安装ros noetic

3、Gazebo安装

XTDrone一般用gazebo9进行仿真,而在安装ros noetic时会自动安装gazebo11以及对应的gazebo-ros插件,这里我们需要卸载,然后安装gazebo9以及肖老师修改过的gazebo-ros插件。
(1)卸载gazebo11

sudo apt-get remove gazebo* 
sudo apt-get remove libgazebo*
sudo apt-get remove ros-noetic-gazebo* 

(2)安装gazebo9

a、添加软件仓库 
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
b、获取密钥
wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -

c、更新软件原
sudo apt-get update

d、安装
sudo apt-get install gazebo9
sudo apt-get install libgazebo9-dev #一定要记得这个

e、检查
gazebo #应该要能打开gazebo

f、升级
sudo apt-get upgrade

(3)还没完,还有对应的gazebo-ros插件
因为gazebo-plugin修改过,因此gazebo-ros不要二进制安装,而用源码安装和编译,先创建工作空间。

mkdir -p ~/catkin_ws/src
mkdir -p ~/catkin_ws/scripts
cd catkin_ws && catkin init # 使用catkin_make话,则为cd catkin_ws/src && catkin_init_workspace
sudo apt install python3-catkin-tools #安装这个才能catkin build
catkin build # 使用catkin_make话,则为 cd .. && catkin_make 
gedit ~/.bashrc
在下面写入:source ~/catkin_ws/devel/setup.bash #先写好source路径
关闭文件,在终端执行
source ~/.bashrc

然后gazebo-ros的源码在 XTDrone/sitl_config/下面(这又体现先下载好XTDrone的好处了)。只需要将里面的gazebo_ros_pkg复制到刚创建的catkin_ws/src,然后再安装依赖和编译工作空间里的gazebo_ros_pkg。

1、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
2、catkin build
3、检查
roscore
rosrun gazebo_ros gazebo #会打开gazebo

(4)gazebo部分还没完呢
Gazebo官网上有很多开源的模型文件,我们要下载好一些需要的模型文件(语雀文档里有下载链接),然后解压缩后放在~/.gazebo中,此时在~/.gazebo/models/路径下可以看到很多模型。如果不做这一步,之后运行Gazebo仿真,可能会缺模型,这时会自动下载,Gazebo模型服务器在国外,自动下载会比较久。

4、mavros安装

文档里直接二进制安装的

1、sudo apt install ros-melodic-mavros ros-melodic-mavros-extras 		# for ros-melodic
2、wget https://gitee.com/robin_shaun/XTDrone/raw/master/sitl_config/mavros/install_geographiclib_datasets.sh
3、sudo chmod a+x ./install_geographiclib_datasets.sh
4、sudo ./install_geographiclib_datasets.sh #这步需要装一段时间

如果需要源码安装mavros的,请移步我的博客两种方式安装mavros

5、PX4配置

如果前面已经下载好且解压了源码,可以直接开始布置。
【又一个注意点:我自己是先(用梯子)git clone的PX4源码,且完整,然后make px4_sitl_default gazebo时,除了缺依赖补依赖之外,遇到一个头疼的问题,就是PX4-Autopilot/Tools/sitl_gazebo/include/gazebo_motor_failure.h这个头文件有问题。看第32行的rclcpp,这个是ros2里面用于话题通讯的自带功能包,那ros1下肯定没有这个,那肯定解决不了。 】
xtdrone,无人机

然后再立马回头看看语雀里下载的PX4压缩包,找到这个文件,发现已经被修改成#include “ros/subcribe_opitions.h”
所以这里想说的是,就算解决了这一个,后面编译还会有其他需要修改文件源码的问题。


因此我们还是决定用语雀里打包好的压缩包吧。

终端进入到PX4-Autopilot
1、mv PX4-Autopilot ~/PX4_Firmware #给文件夹换个名字,叫PX4_Firmware。
#(1)名字随便无所谓,但懒得改,后面source路径的时候直接复制不好吗,省得自己敲
#(2)一定要用 mv 命令,如果自己手动创文件夹再挪进去会破坏仓库的完整性,编译报错:分支不是一个git仓库
2、检出
1、如果是自己git clone的,就执行:
   git branch #查看本地克隆仓库是哪个分支
2、下载的压缩包,就执行这个命令
git checkout -b xtdrone/dev v1.13.2 
#这个命令是在本地创建一个分支,并切换到这个分支。checkout一个分支,
#会更新当前的工作空间中的文件,使其与检出分支的commit版本状况保持一致。这之后工作区中的
#所有变更都会被记录在checkout出来的那个分支上。这一操作可以认为是在挑选你希望修改的工作分支。
3、git submodule update --init --recursive #检查子模块的完整性
3、make px4_sitl_default gazebo #编译px4固件及默认的gazebo空世界。编译成功会弹出gazebo,关闭即可

编译过程可能还会出现失败的情况,一般是因为缺少某些依赖。仔细翻阅终端报错信息,使用sudo apt install命令安装相应的库。

#配好好路径
gedit ~/.bashrc
在里面写入:
source ~/catkin_ws/devel/setup.bash
source ~/PX4_Firmware/Tools/setup_gazebo.bash ~/PX4_Firmware/ ~/PX4_Firmware/build/px4_sitl_default
#确保文件最底部是export,而不是source 
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:~/PX4_Firmware/Tools/sitl_gazebo

关闭文件,在终端执行
source ~/.bashrc

由于前面编译好了,所以可以通过launch文件启动px4的仿真

cd ~/PX4_Firmware
roslaunch px4 mavros_posix_sitl.launch #还是弹出gazebo和iris飞机模型

6、XTDrone配置

cd XTDrone
git checkout 1_13_2 #这个命令是在本地创建一个分支,并切换到这个分支。
#checkout一个分支,会更新当前的工作空间中的文件,使其与检出分支的commit版本状况保持一致。
#这之后工作区中的所有变更都会被记录在checkout出来的那个分支上。这一操作可以认为是在挑选你希望修改的工作分支。
git submodule update --init --recursive #检查子模块的完整性
# 修改启动脚本文件
cp sitl_config/init.d-posix/* ~/PX4_Firmware/ROMFS/px4fmu_common/init.d-posix/
# 添加launch文件
cp -r sitl_config/launch/* ~/PX4_Firmware/launch/
# 添加世界文件
cp sitl_config/worlds/* ~/PX4_Firmware/Tools/sitl_gazebo/worlds/
# 修改部分插件
cp sitl_config/gazebo_plugin/gimbal_controller/gazebo_gimbal_controller_plugin.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src
cp sitl_config/gazebo_plugin/gimbal_controller/gazebo_gimbal_controller_plugin.hh ~/PX4_Firmware/Tools/sitl_gazebo/include
cp sitl_config/gazebo_plugin/wind_plugin/gazebo_ros_wind_plugin_xtdrone.cpp ~/PX4_Firmware/Tools/sitl_gazebo/src
cp sitl_config/gazebo_plugin/wind_plugin/gazebo_ros_wind_plugin_xtdrone.h ~/PX4_Firmware/Tools/sitl_gazebo/include
# 添加CMakeLists.txt,对sitl_gazebo下的文件指定编译规则
cp sitl_config/CMakeLists.txt ~/PX4_Firmware/Tools/sitl_gazebo
# 修改部分模型文件
cp -r sitl_config/models/* ~/PX4_Firmware/Tools/sitl_gazebo/models/ 
# 替换同名文件
cd ~/.gazebo/models/
rm -r stereo_camera/ 3d_lidar/ 3d_gpu_lidar/ hokuyo_lidar/
防止~/.gazebo/models/这个文件夹下,会存在与~/PX4_Firmware/Tools/sitl_gazebo/models/ 这个文件里冲突相同模型文件 #如果没移除,说明下载的models没有这几个模型,那就不用管。

重新编译

cd ~/PX4_Firmware
make px4_sitl_default gazebo

编译成功后关闭终端和gazebo,启动下面这个新的仿真环境

cd ~/PX4_Firmware
roslaunch px4 indoor1.launch

四、开始XTDrone学习

下面,就可以进入XTDrone文件夹,可以学习了。
control文件夹就是键盘控制那些(这样就不需要遥控器了)
communication文件夹就是mavros话题与px4互传信息。
sensing文件夹就是在仿真环境搭建了各种传感器后,通过这里面的算法获取定位信息。文章来源地址https://www.toymoban.com/news/detail-762533.html

到了这里,关于Ubuntu20.04搭建PX4仿真环境及XTDrone开发平台(最详细最明白)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建

    前言 在搭建之前,需要把 ROS、MAVROS、QGC 等基础环境安装配置完成。大家可以参考我之前的教程 本次安装是以 px4 v1.13.2 为例。 我的配置如下: 虚拟机 Ubuntu 18.04 (运行内存 4G、硬盘内存 80G) 、ROS melodic 、最新版 QGC 建议安装之前可以先看看这个 👉 ubuntu搭建PX4无人机仿真环境

    2024年02月15日
    浏览(76)
  • (最新)ubuntu搭建PX4无人机仿真环境(4) —— 仿真环境搭建

    前言 在搭建之前,需要把 ROS、MAVROS、QGC 等基础环境安装配置完成。大家可以参考我之前的教程 本次安装是以 px4 v1.13.2 为例。 我的配置如下: 虚拟机 Ubuntu 18.04 (运行内存 4G、硬盘内存 80G) 、ROS melodic 、最新版 QGC 建议安装之前可以先看看这个 👉 ubuntu搭建PX4无人机仿真环境

    2024年02月09日
    浏览(59)
  • (最新)ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍及环境建议

    搭建PX4仿真环境一个有挑战性的过程,如果没有一个有经验的人来带的话会走很多弯路。我在搭建PX4仿真环境的时候,不知道Linux、ROS、git,语言也只会一个C语言,没有任何无人机基础,纯小白一个,靠着自学与网上的各种教程,花了一两个月才搭好基本的仿真环境框架。我

    2024年02月08日
    浏览(62)
  • (最新)ubuntu搭建PX4无人机仿真环境(2) —— MAVROS安装

    MAVROS是一个ROS(Robot Operating System)软件包 , 有了它就可以让ROS与飞控通信。这次安装是以ubuntu 18.04 (ROS Melodic)为例,也适用于其他版本 。安装之前确保 ROS 安装成功,没安装的可以看我仿真系列教程。 (注:安装方式有二进制安装和源码安装两种方式,源码安装需要从Git

    2024年02月09日
    浏览(61)
  • 基于Ubuntu20.04搭建OpenHarmony v3.0.6的qemu仿真环境

    出于个人兴趣,也出于对国产操作系统的好奇,想尝试一下以LiteOS为内核的Openharmony。但过程相当不顺利,主要原因是官方文档内容组织的不敢恭维。挺好的东西,不把说明书写好,让用户怎么用?我研究的核心问题就一个:如何在基于Qemu仿真的Openharmony中输出一个hello worl

    2024年02月09日
    浏览(40)
  • ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站

    前言 QGC ( QGroundControl) 是一个开源地面站,基于QT开发的,有跨平台的功能。这次安装是基于Ubuntu 18.04,QGC v4.2.6 但也适用于其他ubuntu发行版,QGC 版本也可以自行选择,如果发现不行可以降版本。 搭建仿真环境系列教程 👇 ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍 ubuntu搭

    2024年02月16日
    浏览(44)
  • (最新)ubuntu搭建PX4无人机仿真环境(3) —— ubuntu安装QGC地面站

    前言 QGC ( QGroundControl) 是一个开源地面站,基于QT开发的,有跨平台的功能。这次安装是基于Ubuntu 18.04,QGC v4.2.6 但也适用于其他ubuntu发行版,QGC 版本也可以自行选择,如果发现不行可以降版本。 搭建仿真环境系列教程 👇 ubuntu搭建PX4无人机仿真环境(1) —— 概念介绍 ubuntu搭

    2024年02月09日
    浏览(46)
  • Ubuntu18.04搭配无人机仿真环境(ROS,PX4,gazebo,Mavros,QGC安装教程)

    我个人使用了代理环境进行下载。Linux没有代理的可以使用国内源。 清华大学源 sudo sh -c ‘. /etc/lsb-release echo “deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main” /etc/apt/sources.list.d/ros-latest.list’ 中科大源 sudo sh -c ‘. /etc/lsb-release echo “deb http://mirrors.ustc.edu.cn/ros/ubu

    2024年02月13日
    浏览(65)
  • Ubuntu PX4无人机仿真环境配置

     目录 一、VM虚拟机安装ubuntu18.04   1、VMware安装   2、新建虚拟机 二、Ubuntu系统配置   1、更改软件安装源   2、安装中文输入法 三、PX4环境搭建   1、安装git   2、下载px4源码   3、安装ROS   4、安装MAVROS   5、安装QGC   6、仿真测试 四、其他工具安装   1、VScode安装      

    2024年02月02日
    浏览(188)
  • ubuntu20.04搭建arm交叉编译环境

    源码下载地址:Downloads | GNU-A Downloads – Arm Developer 要根据目标系统选择编译器版本,我的主板: aarch64bit体系结构(arm 64bit),linux内核GNU操作系统=GNU/Linux操作系统(简称linux) 大端模式(Big-endian),是指数据的高字节,保存在内存的低地址中,而数据的低字节,保存在内存

    2023年04月24日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包