使用VMware虚拟机安装Ubuntu系统并搭建PX4开发环境

本教程使用VMware虚拟机安装Ubuntu18.04系统(官方推荐使用版本),搭建PX4固件版本为v1.9.2,飞控板为pixhawk2.4.8版本。

1.VMware安装

VMware是一款运行在windows系统上的虚拟机软件,可以虚拟出一台计算机硬件,方便安装各类操作系统。如Windows、macos、linux等。

软件可以从官网下载,也可以从各个CSDN博主提供的链接下载。

VMware官网:https://www.vmware.com/cn.html

点击【资源】。

点击【产品下载】。

找到【VMware Workstation Pro】点击【Download Product】。

这里可以下载自己需要的版本。


下载之后首先运行VMware的exe安装程序。

点击【下一步】,选择软件安装位置,一直点击【下一步】到完成安装。

点击【许可证】。

输入秘钥即可使用。

到此即可完成VMware的安装。

2.Ubuntu系统镜像下载

官网下载:https://cn.ubuntu.com/

国内镜像下载:https://mirrors.tuna.tsinghua.edu.cn/

这里选择国内镜像【清华大学开源软件镜像站】进行下载。

在搜索框内输入ubuntu,选择ubuntu-releases。

选择18.04/。

选择ubuntu-18.04.6-desktop-amd64.iso下载。

3.使用VMware虚拟机安装Ubuntu系统

运行vmware,单击【创建新的虚拟机】。

在弹出的向导中选择【典型】,点击【下一步】。

选择下载好的镜像文件,点击【下一步】。

按要求设置用户名和密码,点击【下一步】。

这里可以设置虚拟机的名称和虚拟机文件的存储位置,存储位置建议在C盘以外新建一个文件夹,点击【下一步】。

设置虚拟机的磁盘容量,按需设置,建议不少于40G,点击【下一步】。

这里可以点击【自定义硬件】进行进一步配置。

这里设置内存和处理器内核数量,建议内存不小于4096MB,处理器内核数量不小于4,点击【关闭】。

点击【完成】即可。

等待片刻即可进入Ubuntu系统安装程序,这时耐心等待安装。

安装完成后点击头像,输入密码即可进入系统。

4.搭建PX4开发环境

在Ubuntu系统中,使用CTRL+ALT+T快捷键进入命令行终端Terminal。

输入以下命令将用户添加至组dialout。创建独立用户的目的是让开发环境分离开来,避免出现不同用户间版本冲突等情况。将用户加入dialout用户组的目的是dialout拥有对串口tty的操作权限。

sudo usermod -a -G dialout $USER

命令执行完后点击右上角关机图标,将已登录用户LogOut,重新登录。

4.1 使用脚本安装

PX4官方提供了一些安装的脚本,我们直接运行就可以安装。如果你是新手,不推荐使用脚本,手动安装有助于你了解编译环境的构成。

PX4使用者手册:https://docs.px4.io/main/zh/

打开官网用户手册,选择【开发】-【入门指南】-【工具链安装】-【Ubuntu设置】,其中有详细的教程。

下载官网上的ubuntu.sh和requirements.txt文件,存放在Ubuntu系统中,使用命令运行该脚本进行安装。

wget https://raw.githubusercontent.com/PX4/PX4-Autopilot/main/Tools/setup/ubuntu.sh
wget https://raw.githubusercontent.com/PX4/PX4-Autopilot/main/Tools/setup/requirements.txt
bash ubuntu.sh

等待脚本运行完即可。

4.2 手动安装

我们需要去github上下载PX4的源码,因此我们需要装一个git。

sudo apt install git

需要安装通用的盘python包管理工具pip。

sudo apt-get install python-pip

PX4的编译环境需要调用Cmakelist,因此我们要装一个cmake。

sudo apt-get install cmake

新建文件夹,文件夹名字可以任意取。

mkdir -p px4src_v1.9.2

之后我们使用lscd命令进入这个文件夹

cd px4src_v1.9.2/

从官网下载最新版本源码固件。

git clone https://github.com/PX4/Firmware.git

如果需要下载旧版本固件,请使用以下命令。

git clone -b v1.9.2 https://github.com/PX4/Firmware.git

clone成功之后,你会发现文件夹路径下面多了一个文件夹Firmware,我们使用lscd命令进入Firmware文件夹中。

cd Firmware/

Firmware里面就是PX4的源码,但是它依赖了很多其他的库,所以此时不完整还不能用,我们需要更新他的依赖。

git submodule update --init --recursive

在Ubuntu中开发基于ARM架构的STM32芯片,需要安装交叉编译器gcc-arm-none-eabi。

sudo apt-get install gcc-arm-none-eabi

需要安装常用的python依赖包jinja2、empy、yaml、numpy、toml、pyserial、catkin_pkg。

sudo apt-get install python-jinja2
sudo apt-get install python-empy
sudo apt-get install python-yaml
sudo -H pip install numpy toml
sudo -H pip install pyserial
sudo -H pip install catkin_pkg

完成以上命令后,在Firmware文件夹中输入命令即可对固件进行编译。

make px4_fmu-v2_default

等待进度到100%即可完成固件编译。

将编译好的固件下载到无人机,需要输入命令。

make px4_fmu-v2_default upload

这里运行时会有报错。

WARNING: You should uninstall ModemManager as it conflicts with any non-modem serial device (like Pixhawk)

Ubuntu配备了一系列代理管理,这会严重干扰相关的串口(或usb串口),最明显的表现就是硬件连接到PC机后,无法读出硬件,无法烧录上传固件。所以需要卸载modemmanager模式管理器。

sudo apt-get remove modemmanager

在进行上述命令时可能会报下列两个错误。

可以通过执行下列命令来解除锁定,再执行卸载命令。

sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/lib/dpkg/lock

再次运行烧录程序,发现没有报错了。

这里提示等待连接无人机的数据线。

将USB插入飞控板之后等待进度条读完即可完成烧录固件。

到这里已经完成PX4基础开发环境的搭建了,如果需要 Gazebo 9 和 jMAVSim 功能,请在Firmware文件夹中执行以下代码。

bash ./Tools/setup/ubuntu.sh

可以通过添加--no-nuttx--no-sim-tools 代码跳过 NuttX 或 simulation 的安装。

5.搭建jMAVSim仿真环境

在运行ubuntu.sh命令后(这里可能需要多次运行),最后一行显示以下提示,多次运行还是显示以下提示,确认不是网络的问题。

0 upgraded, 0 newly installed, 0 to remove and 119 not upgraded.

这时如果运行jMAVSim仿真命令,程序会在输出一堆提示后再输出这两行提示,然后在这里卡住没有反应了。

jokerbin@ubuntu:~/px4src_v1.9.2/Firmware$ sudo make px4_sitl jmavsim
[  1%] Built target logs_symlink
[  1%] Built target git_jmavsim
...
INFO  [dataman] Unknown restart, data manager file './dataman' size is 11798680 bytes
INFO  [simulator] Waiting for simulator to connect on TCP port 4560

调查原因是因为软件包没升级,调用以下命令来进行升级。

sudo apt-get dist-upgrade

之后再次运行命令。

bash ./Tools/setup/ubuntu.sh --fix-missing

最后一行显示以下提示,说明环境安装成功。

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

这时理论上已经可以通过运行以下命令进行仿真了,但实际操作中会报错。

sudo make px4_sitl jmavsim

接下来继续运行jMAVSim仿真命令,会出现一系列错误,这里提前说一下原因,是因为要安装的一个java开发工具包jdk8,一定要选8版本,(测试过11 、13 、10 都不行,会报错)。

可以直接跳过此部分进行之后的操作,但还是记录一下遇到的错误和解决方法。

第一次运行时报错。

java.lang.UnsatisfiedLinkError: Can't load library /usr/lib/jvm/java-11-openjdk-amd64/lib/libawt_xawt.so

解决方法是在网上下载libawt_xawt.so文件并添加到/usr/lib/jvm/java-11-openjdk-amd64/lib文件夹中。

第二次运行时报错。

java.lang.UnsatisfiedLinkError: /tmp/jogamp_0000/file_cache/jln10188095814152762077/jln17241601840665512207/libnativewindow_awt.so: libjawt.so: cannot open shared object file: No such file or directory

解决方法是在网上下载libjawt.so文件并添加到/usr/lib/jvm/java-11-openjdk-amd64/lib文件夹中。

解决完这两个问题之后再次运行还是报错。

Inconsistency detected by ld.so: dl-lookup.c: 111: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!

查询原因就是java开发工具包jdk的版本问题。

使用命令安装openjdk-8-jdk软件包。

sudo apt install openjdk-8-jdk

安装完成之后需要用命令切换jdk软件包版本。

sudo update-alternatives --config java

输入java-8-openjdk-amd64对应的数字后按回车键即可切换版本。

使用以下命令查看jdk版本。

java -version

之后需要删除一个文件。

sudo rm -rf Tools/jMAVSim/out

完成版本切换之后再次运行jMAVSim仿真命令,出现错误提示。

Exception in thread "main" java.lang.reflect.InvocationTargetException

解决方法是编辑文件/etc/java-8-openjdk/accessibility.properties,在行首添加 # 注释掉assistive_technologies=org.GNOME.Acessibility.AtkWrapper这一行。

sudo gedit /etc/java-8-openjdk/accessibility.properties

再次运行jMAVSim仿真命令,即可出现仿真界面并进入pxh终端。

在pxh终端中输入命令使飞机起飞,如果起飞成功说明仿真环境运行成功。

commander takeoff

6.搭建ROS和Gazebo仿真环境

理论上运行完ubuntu.sh命令文件后就可以进行Gazebo仿真,使用以下命令进行仿真。

sudo make px4_sitl gazebo

但是实际运行中可能会报错。

CMake Error at CMakeLists.txt:34 (find_package):By not providing "Findgazebo.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "gazebo", butCMake did not find one.Could not find a package configuration file provided by "gazebo" with anyof the following names:gazeboConfig.cmakegazebo-config.cmakeAdd the installation prefix of "gazebo" to CMAKE_PREFIX_PATH or set"gazebo_DIR" to a directory containing one of the above files.  If "gazebo"provides a separate development package or SDK, be sure it has beeninstalled.

解决方法是运行以下命令。

sudo apt-get install libgazebo9-dev

再次运行还是报错。

CMake Error at CMakeLists.txt:38 (find_package):By not providing "FindOpenCV.cmake" in CMAKE_MODULE_PATH this project hasasked CMake to find a package configuration file provided by "OpenCV", butCMake did not find one.Could not find a package configuration file provided by "OpenCV" with anyof the following names:OpenCVConfig.cmakeopencv-config.cmakeAdd the installation prefix of "OpenCV" to CMAKE_PREFIX_PATH or set"OpenCV_DIR" to a directory containing one of the above files.  If "OpenCV"provides a separate development package or SDK, be sure it has beeninstalled.

这里原因是没有安装opencv导致的,本来想进行非ROS下的gazebo仿真,但在网上搜索说是容易出各种奇怪的bug,遂进行配置ROS下的gazebo仿真。

首先下载官方给的安装脚本文件。

wget https://raw.githubusercontent.com/PX4/Devguide/master/build_scripts/ubuntu_sim_ros_melodic.sh

之后运行。

bash ubuntu_sim_ros_melodic.sh

之后是安装mavros。

sudo apt install ros-melodic-mavros ros-melodic-mavros-extras

再次运行Gazebo仿真命令,报错。

[Err] [ModelDatabase.cc:235] No <database> tag in the model database database.config found here[http://gazebosim.org/models/]
[Err] [ModelDatabase.cc:294] Unable to download model manifests

这是因为http://gazebosim.org/models/地址已经变换http://models.gazebosim.org,因此无法下载所需模型。

解决方法是修改两个配置文件中的网址。

sudo gedit /usr/share/gazebo/setup.sh
sudo gedit /usr/share/gazebo-9/setup.sh

在打开的文件中注释掉旧网址添加新网址。

#export GAZEBO_MODEL_DATABASE_URI=http://gazebosim.org/models
export GAZEBO_MODEL_DATABASE_URI=http://models.gazebosim.org/

保存后关闭,再次运行还是报错,但不影响使用,这个报错很玄学。

再次运行Gazebo仿真命令会报错。

[Err] [REST.cc:205] Error in REST request

解决方法是修改配置文件中的网址。

sudo gedit ~/.ignition/fuel/config.yaml

在打开的文件中注释掉旧网址添加新网址。

url: https://api.ignitionrobotics.org
# url: https://api.ignitionfuel.org

保存后关闭。

再次运行Gazebo仿真命令会报错。

VMware: vmw_ioctl_command error Invalid argument.

解决方案是关闭虚拟机设置中的【显示器】-【加速3D图形】功能。

最后再次运行Gazebo仿真命令,出现仿真界面,说明配置成功。

之后需要设置环境变量,让ROS可以识别这些功能包。

gedit ~/.bashrc

在最后加入这三行,注意这里的jokerbin是我的用户名,px4src_v1.9.2是我起的源码文件夹名,需要更换成自己的路径。

source /home/jokerbin/px4src_v1.9.2/Firmware/Tools/setup_gazebo.bash /home/jokerbin/px4src_v1.9.2/Firmware /home/jokerbin/px4src_v1.9.2/Firmware/build/px4_sitl_default
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/jokerbin/px4src_v1.9.2/Firmware
export ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/jokerbin/px4src_v1.9.2/Firmware/Tools/sitl_gazebo

关闭终端,再次打开终端,形成下图样式即可。

之后可以使用命令进行单机的仿真或集群的仿真。

roslaunch px4 posix_sitl.launch
roslaunch px4 multi_uav_mavros_sitl.launch

在运行上述两个命令时可能会报错。

ERROR [px4] Failed to communicate with daemon: Permission denied

该问题定位到/tmp下的px4_lock-0和px4-sock-0上。其中px4_lock-0是一个单纯的锁文件,和操作系统中的锁是一个概念,本身不具有任何信息;px4-sock-0是一个socket文件,主要是通信作用。报错是权限拒绝,说明我们的用户无法占有这两个文件,而我们又无法使用sudo执行roslaunch命令,使用root用户又存在很大的风险,因此非常简单的一个方法就是将这两个文件易主。

cd /tmp
sudo chmod 777 px4_lock-0
sudo chmod 777 px4-sock-0
sudo chown username px4_lock-0  #这里username换成自己的用户名!
sudo chown username px4-sock-0  #这里username换成自己的用户名!

然后再执行命令就成功打开了gazebo。

7.安装QGroundControl地面站

官网教程:Download and Install · QGroundControl User Guide

在安装地面站之前,首先在终端运行以下命令。

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

命令执行完后点击右上角关机图标,将已登录用户LogOut,重新登录。

下载QGC地面站安装包。

wget https://s3-us-west-2.amazonaws.com/qgroundcontrol/latest/QGroundControl.AppImage

安装。

chmod +x ./QGroundControl.AppImage

安装之后可以使用命令运行或者双击QGroundControl.AppImag图标运行。

./QGroundControl.AppImage

显示QGC界面说明安装成功。

8.安装Qt Creator

更新源。

sudo apt-get update

安装Qt Creator。

sudo apt-get install qtcreator

在应用内找打图标运行即可。


参考资料:

Ubuntu系统的下载与安装(超详细)_fr16021028的博客-CSDN博客_ubuntu下载

PX4二次开发环境搭建及报错解决(v1.9.2)_小仙女要努力的博客-CSDN博客_px4二次开发环境

PX4原生固件jMAVSim仿真时没有仿真界面_沣爸爸的博客-CSDN博客

PX4_jmavsim仿真之问题解决篇_Chasing中的小强的博客-CSDN博客

PX4开发环境搭建(Ubuntu1804+QGC+Qt Creator )_Beyonderwei的博客-CSDN博客_px4环境

gazebo常见问题(1)_weixin_46078434的博客-CSDN博客

搭建无人机仿真环境之PX4安装_Djarea的博客-CSDN博客

ROS+Gazebo+PX4仿真步骤_chen果冻的博客-CSDN博客

gazebo学习时遇到的问题(PX4篇)_GKSama的博客-CSDN博客

PX4-AutoPilot教程-0-使用VMware虚拟机安装Ubuntu系统并搭建PX4开发环境(ROS+mavros+jMAVSim+gazebo+QGC+QT)相关推荐

  1. 虚拟机安装MAC系统、搭建ios开发环境

    MacOS系统资源,网盘下载:https://pan.baidu.com/s/1xRWusbgfIUxJxMpUbWWRag   提取码: 08fc 1.安装虚拟机 虚拟机下载: http://www ...

  2. 【Linux 虚拟机】VMware虚拟机安装Ubuntu系统英文改中文的方法

    繁體 VMware虚拟机安装Ubuntu系统英文改中文的方法 我们已经在Windows 7下用VMware Workstation 10虚拟机安装 Ubunbu 14.04. (本文更新http:// ...

  3. VMware虚拟机安装Linux系统手把手菜鸟教程

    VMware虚拟机安装Linux系统手把手菜鸟教程 本文引用https://blog.csdn.net/qq_31323797/article/details/84306233,https://blo ...

  4. vmware虚拟机安装macos系统?vmware虚拟机安装macos系统教程

    没有苹果电脑,但是又想体验MacOS系统怎么办?其实可以使用vmware虚拟机来安装体验macos系统,有些同学还不会安装macos,今天小编就教大家vmware虚拟机安装macos系统教程. vmw ...

  5. VMware虚拟机安装Ubuntu(超详细图文教程)

    VMware虚拟机安装Ubuntu 1 Ubuntu下载 2 打开VMware 3 然后就可启动虚拟机 4 等待吧 5 重启后就完了, 到这就基本结束了 6 下面可以调一下软件下载源 1 Ubuntu ...

  6. 虚拟机 装服务器系统怎么安装教程,VMware虚拟机安装Linux系统图文教程

    VMware虚拟机安装Linux系统图文教程 发布时间:2020-09-16 21:47:53 来源:脚本之家 阅读:115 作者:我是一名程序猿 栏目:服务器 本文为大家分享了VMware安装Lin ...

  7. 在VMware15中创建虚拟机安装ubuntu系统(超详细教程)

    此篇博文分享幼儿园老小(本人)创建虚拟机安装ubuntu系统的详细操作过程,希望对新手有所帮助咯!(大佬请自行略过哈哈) 我的下载地址详情如下: 下载请戳–>Ubuntu18.04/64位下载地 ...

  8. Vmware 虚拟机安装 Ubuntu

    Vmware 虚拟机安装 Ubuntu 教程 1.下载 Ubuntu 系统镜像. 2.下载 VMware Workstation 虚拟机 3.安装 VMware Workstation 虚拟机 4.安 ...

  9. VMware虚拟机安装macOS系统

    准备工作 1.VMware Workstation 14 2.用于VMware的macOS补丁,unlocker 下载地址:https://codeload.github.com/DrDonk/unl ...

最新文章

  1. SAP WMSD集成之Copy WM Quantity – Not Copy WM qty as delivery qty into delivery But PGI
  2. 将获取到的JSONObject和JSONArray转换为实体对象
  3. Linux的10个游戏
  4. 互联网研发中负载均衡算法一点探索
  5. 当前计算机领域中 有关计算机的性能指标,计算机文化基础真题(十七)
  6. 盘点中国互联网行业10年2万多起投融资,17年投融资形势走向何处
  7. router-link-active 和 router-link-exact-active router-link-active
  8. 31天重构学习笔记下载
  9. 牛顿如果穿越到现在,能看懂相对论和量子力学吗?
  10. html请求接口_软件测试学习教程——LoadRunner实现接口测试
  11. Iplimage设置感兴趣区域(ROI)
  12. R语言学习之R程序包安装
  13. Biopython -- Bio.Entrez module
  14. oracle 当前owner,如何在Oracle中找到对象的OWNER?
  15. protobuf 中 repeated fields 细节
  16. Android IBeacon
  17. Hexo折腾之改用Valine评论系统 - 更新域名绑定,评论后台管理
  18. 回收站清空几天可找回?回收站清空的文件怎么恢复?2个方案
  19. /和./和../的区别
  20. 每日一个小技巧:文字转图片怎么操作?介绍给你三款软件

热门文章

  1. Merkle Tree 简介
  2. 数据结构系列三---[一周leetcode刷题记录3.7-3.13]
  3. java基础复习-集合框架(1)
  4. MSP430串口波特率寄存器的配置
  5. 黑马程序员--Objective-C之--@property和@synthesize关键字
  6. 【前言】 VVC理论知识之基本框架
  7. 如何有效预防XSS?这几招管用
  8. 百度关键词推广选词技巧,你了解多少?
  9. KVM之使用libvirt迁移QEMU/KVM、Nova虚机
  10. Buuctf -web wp汇总(三)