Ubuntu18.04基于ROS和PX4的仿真平台配置

2023-05-16

1.前言

作者只是一名双非本科院校飞控专业的大二学生,想以此记录一下自学飞控的经历,也希望能给刚刚入门的同学一些微薄的帮助。

这个环境的安装可以说是西天取经一般,但安装完后发现如果有领路的人,其实花费不了太长的时间,所以我希望我这篇文章能给刚刚入门的小白提供一些帮助,有问题也可留言进行讨论,在下才疏学浅,以下内容大多为引用,我只是帮大家整理一些资料,并分享我走过的一些坑。

因为网上的文章太多,而一些方法因为官网资料的迭代已经不适用了,故笔者这篇文章就是在笔者尝试了至少十篇文章中选出的可行的方法。

2.安装虚拟机VMware

链接:https://pan.baidu.com/s/1-d_OcKH41HhtPn6l83AXrg

提取码:f183

--来自百度网盘超级会员V1的分享

此链接提供VMware的安装包

按照操作提示进行安装即可。安装完成后点击许可证,请百度自行搜索获取激活码。

  1. Ubuntu 18.04的镜像文件下载及其中文设置

1.1 iso镜像安装

虚拟机文件:

链接:https://pan.baidu.com/s/1UJVoeTcLG9hBq9Y099Ye1w

提取码:0b6g

--来自百度网盘超级会员V1的分享

以下图片均引用于(39条消息) win10/Ubuntu vmware使用Ubuntu18.04虚拟机_win10安装ubuntu18.04虚拟机_超维空间科技的博客-CSDN博客

第一步:创建新的虚拟机

第二步:

第三步:选择刚刚从百度网盘中下载的.iso文件

第四步:设置虚拟机用户名和密码

第五步:

第六步:设置磁盘大小,看个人需求(我设置的是50GB,因为如果后期出现磁盘空间不足的情况会很麻烦,你会不知道该删哪些文件)

第七步:操作完等待安装即可

大神的文章里还有教其他设置,再此我不在过多讲解。

1.2Ubuntu18.04中文设置

如果想换成中文的同学可以参考这篇文章(39条消息) VMware安装Ubuntu18.04图文教程_虚拟机ubuntu18.04安装教程_以梦为马&不负韶华的博客-CSDN博客

换源部分不用参考,笔者发现了更为便捷的方式,在后文会进行讲解。

  1. ROS安装

Ros官方步骤及其复杂,在此向大家推荐一位顶级大神 鱼香ROS 直接百度即可。

小鱼的一键安装系列 | 鱼香ROS (fishros.org.cn) 链接放在此处。

即在终端输入:(终端打开方式CTRL + ALT+T)

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

此图片引用于:(39条消息) ros安装(一键最简安装,吹爆鱼香ROS,请叫我鱼吹)-CSDN博客 按照其步骤操作即可(注意在安装的时候不可科学上网)

其中18.04的Ubuntu版本安装的是melodic的ROS

在rosdep还是ROS环境的安装中,记得选桌面版,不要选小的那个

以下大部分内容引用于(39条消息) Ubuntu18.04下基于ROS和PX4的无人机仿真平台的基础配置搭建_Lqcx-spec的博客-CSDN博客 感兴趣可以去参考此原文,但一些步骤笔者有更为简便的方式,故如果只是环境安装请继续往下看。

  1. 依赖安装(必须执行)

观前提示:在终端执行指令时建议执行完这里的一个大项就开一个新的窗口,不然可能后期路径上可能会发生一些不可预知的错误。

在终端下执行:

1
sudo apt install ninja-build exiftool ninja-build protobuf-compiler libeigen3-dev genromfs xmlstarlet libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
2 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

如果出现以下报错:

Collecting pandas
Using cached https://files.pythonhosted.org/packages/64/f1/8fdbd74edfc31625d597717be8c155c6226fc72a7c954c52583ab81a8614/pandas-1.1.2.tar.gz
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-qtvsjq8t/pandas/setup.py", line 349
f"{extension}-source file '{sourcefile}' not found.\n"
^
SyntaxError: invalid syntax

----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-qtvsjq8t/pandas/

即输入以下指令:

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

如果还出现一些问题,直接复制系统提示去百度即可,不用担心,都是一个命令便可以解决的,再次便不再过多的赘述了。

  1. Gazebo安装

其实在鱼香ROS大神的一键安装中,我们便已经完成了Gazebo的安装,但所有事情都不是完美的,大神上安装的Gazebo或许和PX4不太适配,故后续会出现不少的坑,所以在这里我们把之前安装的Gazebo卸载,重新安装。

官网方案:

建议gazebo版本在9.13以上

Gazebo安装见官网:

http://gazebosim.org/tutorials?tut=install_ubuntu&cat=install

注意几点:

1.选用Alternative installation: step-by-step的安装方式

2.安装Gazebo9.13或者以上

为了执行方便,以下把执行的步骤一一列出:

1.依次执行

sudo apt-get remove gazebo*
sudo apt-get remove libgazebo*
sudo apt-get remove ros-melodic-gazebo* #kinetic noetic对应修改

2.设置计算机以接受来自package.osrfoundation.org的软件

sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stablesudo 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#如果出现deb http://packages.osrfoundation.org/gazebo/ubuntu-stable xenial main表示没问题

3.设置密钥

wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
sudo apt-get update

4.安装gazebo9.1指令

sudo apt-get install gazebo9=9.1*

安装之后终端输入 gazebo 若打开Gazebo说明安装成功

此处笔者刚开始打开gazebo时系统报错:VMware: vmw_ioctl_command error Invalid argument,大概应该是虚拟机参数不合法,在翻阅一些网络资料时也找到了线索:已知报错的原因大概是不合法的变量导致的,故合理推测应该是启动gazebo的时候加载系统的某个环境变量的时候虚拟机无法完美识别导致的,所以追根溯源,我们找到了修复方案:设置环境变量

依次执行:

export SVGA_VGPU10=0
echo "export SVGA_VGPU10=0" >> ~/.bashrc

执行完在输入 gazebo 测试即可

5.Gazebo本身是独立于ROS的,因此还需要安装ROS的Gazebo插件

sudo apt install ros-melodic-gazebo9-*
sudo apt install ros-melodic-gazebo-*

测试

roscore
rosrun gazebo_ros gazebo

若能打开Gazebo说明Gazebo和ROS间的插件也安装成功。

  1. MAVROS安装

依次执行:

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配置

最后的sudo ./install_geographiclib_datasets.sh 这步需要装一段时间,请耐心等待

  1. PX4配置

此处的方法采用的是(39条消息) 不必通宵挂机,飞速克隆PX4源码的方法_px4克隆不了_Bingobinlw的博客-CSDN博客链接中的方法,极为便捷,笔者此处只对其需要注意之处进行一些讲解。

6.1git安装

没安装git的先安装git:

sudo apt-get install git

6.2PX4配置

  1. 直接clone如下仓库

git clone https://gitee.com/bingobinlw/Firmware.git
  1. 然后更新子模块

这里非常重要,因为是国外的网站,所以很多连接会失败,一定要多试几次!笔者也大概试了十几次才成功。

一定要在正确的路径下执行,一般在安装的PX4文件夹进入终端。

git submodule update --init --recursive

反复执行!!!

  1. 如果出错的话,需要删除空白文件夹,再次更新子模块

make distcleangit
submodule update --init --recursive
  1. 去下载的PX4文件夹右上角选择“显示所有文件”,找到***.gitmodules***文件,直接复制粘贴以下内容。(替换掉原本的内容)

[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

5.打开新的终端,安装必要的python依赖:

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

编译

make px4_sitl_default gazebo

6.打开修改 ~/.bashrc

gedit ~/.bashrc

在其中最下方复制粘贴:

source ~/catkin_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

PS:其中PX4_Firmware注意改成你自己的文件路径,比如我的:

如图改成了Firmware

然后执行:

source ~/.bashrc

接下来在PX4_Firmware文件夹下打开终端,执行:

roslaunch px4 mavros_posix_sitl.launch
#连接px4与mavros

再运行

rostopic echo /mavros/state

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

  1. QGC安装

用虚拟机中的浏览器打开:https://docs.qgroundcontrol.com/en/getting_started/download_and_install.html

找到Ubuntu Linux 版本,按照指示进行安装。

  1. 在首次安装 QGroundControl 之前,逐一输入:

sudo usermod -a -G dialout $USER
sudo apt-get remove modemmanager -y
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -y
sudo apt install libqt5gui5 -y
sudo apt install libfuse2 -y
  1. 重启虚拟机

  1. 点击官网的链接进行安装https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage

  1. 赋予下载的程序权限,不然无法打开

chmod +x ./QGroundControl.AppImage

此时QGC即可双击打开,大功告成~

笔者在安装完后有一些感悟,大家如果感兴趣便当废话看看吧。当我们在面对一个完全陌生的东西时,网上有非常多的大神和非常多有用的帖子,但大家一定不要丧失了独立思考的能力,比如说在执行时遇到了问题只想着去复制粘贴别人的解决方法,而不愿意多看几眼自己错误的原因,我的建议是如果遇到不如多花点时间去想想这里会什么会报这样的错误,我相信这样一番思索下来,你会收益匪浅的~

在此感谢我的舍友和我的指导老师,在我前进路上给了我极大的帮助。

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

Ubuntu18.04基于ROS和PX4的仿真平台配置 的相关文章

随机推荐

  • 系统调用和函数调用的区别

    系统调用 操作系统服务的编程接口 通常由高级语言编写 xff08 C或C 43 43 xff09 程序访问通常通过高层次 的API接口 xff08 C标准库的库函数 xff09 而不是直接进行系统调用 每个系统调用对应一个系统调用编号 系统
  • FreeRTOS原理剖析:任务的基础知识

    1 任务的基础知识 1 1 前后台和多任务系统 在裸机程序中 xff0c 一般方式是在main 函数的while 1 中循环执行所有的程序 xff0c 有时 xff0c 使用中断去执行一些紧急的功能 xff0c 中断中执行的程序称为前台 x
  • FreeRTOS原理剖析:任务延时

    1 任务延时相关API函数 函数描述vTaskDelay 任务相对延时vTaskDelayUntil 任务绝对延时 xff0c 相对于任务相对延时而言 xff0c 即以一定的周期执行任务函数xTaskAbortDelay 任务中止延时函数
  • FreeRTOS原理剖析:空闲任务分析

    1 空闲任务相关API函数 函数描述portTASK FUNCTION 宏定义 xff0c 真正函数原型为void prvIdleTask void pvParameters 任务挂起中其它重要的API函数 介绍过的函数不列出 xff0c
  • FreeRTOS原理剖析:任务切换过程

    1 任务切换相关API函数 函数描述xPortPendSVHandler PendSV中断服务函数 xff0c 其实函数原型为PendSV Handler vTaskSwitchContext 检查任务堆栈使用是否溢出 xff0c 和查找下
  • FreeRTOS原理剖析:事件标志组

    1 事件标志组相关API函数 函数描述xEventGroupCreate 使用动态方式创建事件标志组xEventGroupCreateStatic 使用静态方式创建事件标志组vEventGroupDelete 删除事件标志组xEventGr
  • FreeRTOS原理剖析:任务调度器启动

    1 任务调度器启动相关API函数 函数描述vTaskStartScheduler 开启任务调度器 任务调度启动中其它重要的API函数 介绍过的函数不列出 xff0c 请参考前面的文章 xff1a 函数描述xPortStartSchedule
  • linux字符设备驱动 LED驱动程序

    1 字符设备驱动简介 Linux的外设主要分为三类 xff1a 字符设备 character device 块设备 block device 网络接口 network interface 字符设备是能像字节流一样读写操作的设备 xff0c
  • 学生时代的书单

    大话系列的书 xff0c 用独特的行文风格 xff0c 以风趣 幽默的语言向读者讲述 概念原理知识 xff0c 用漫画式的插图帮助读者理解晦涩 枯燥的技术 xff0c 让我们在快乐中掌握知识 xff01 1 大话通信 通信基础知识读本 作者
  • Linux字符时设备驱动 中断处理 按键

    1 Linux异常处理体系结构 Linux异常处理体系结构使用主要分成两步 xff1a 1 使用函数init IRQ 初始化中断体系结构 xff0c 源代码在arch arm kernel irq c中 2 用户使用函数request ir
  • [UAV] 无人机仿真平台搭建

    Amovlab 开源项目 从0开始的无人机仿真平台搭建1 基础环境1 1 新建本地代码仓库1 2 编译添加路径 xff08 记得 将Path To Prometheus替换成你的文件路径 xff09 1 3 安装ROS所需的其他插件或者库安
  • FreeRTOS之优先级反转实验

    1 创建二值信号和创建3个任务 xff0c LowPriority Task为最低优先级 xff0c HighPriority Task为最高优先级 注意 xff1a 动态创建任务时要注意大小 span class token keywor
  • FreeRTOS之StreamBuffer实验

    1 常用函数介绍 创建StreamBuffer函数 调用xStreamBufferCreate xff0c xStreamBufferCreate是个宏定义 xff0c 实际函数在下面 xff1a span class token comm
  • FreeRTOS之按键中断实验

    1 创建任务和二值信号量 span class token macro property span class token directive hash span span class token directive keyword inc
  • FreeRTOS之串口中断接收实验

    1 创建任务和消息队列 span class token macro property span class token directive hash span span class token directive keyword defi
  • linux下用Kazam录屏视频在windows不能播放解决

    描述 之前在ubuntu上记录一些东西 xff0c 但是转而在windows就不能播放 xff0c 查了一下资料说是解码器的问题 大概也有网友遇到类似问题 xff0c 那就分享一下吧 xff01 解决 windows上下载安装软件HandB
  • 位姿估计_1

    说在前面的话 位姿估计 xff08 Pose estimation xff09 在计算机视觉领域扮演着十分重要的角色 在使用视觉传感器估计机器人位姿进行控制 机器人导航 增强现实以及其它方面都有着极大的应用 位姿估计这一过程的基础是找到现实
  • 编译osgearth过程中遇到的问题

    1 关于libxxx so no version information available 的解决办法 删除软链接并建立新链接 2 gdal库编译不过 xff0c 报错undefined symbol sqlite3 column tab
  • 基于加速度计与气压计的三阶卡尔曼滤波计算加速度、速度及高度

    本文主要介绍了卡尔曼滤波器的使用原理 xff0c 给出了matlab代码 xff0c 并在STM32F407平台对卡尔曼滤波器进行了验证 xff0c 传感器为MPU6050与DPS310 xff0c 测试结果令人满意 xff0c 速度与高度
  • Ubuntu18.04基于ROS和PX4的仿真平台配置

    1 前言 作者只是一名双非本科院校飞控专业的大二学生 xff0c 想以此记录一下自学飞控的经历 xff0c 也希望能给刚刚入门的同学一些微薄的帮助 这个环境的安装可以说是西天取经一般 xff0c 但安装完后发现如果有领路的人 xff0c 其