1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > PX4-AutoPilot教程-0-使用VMware虚拟机安装Ubuntu系统并搭建PX4开发环境(ROS+mavros+

PX4-AutoPilot教程-0-使用VMware虚拟机安装Ubuntu系统并搭建PX4开发环境(ROS+mavros+

时间:2023-11-03 03:09:12

相关推荐

PX4-AutoPilot教程-0-使用VMware虚拟机安装Ubuntu系统并搭建PX4开发环境(ROS+mavros+

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

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

1.VMware安装

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

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

VMware官网:/cn.html

点击【资源】。

点击【产品下载】。

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

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

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

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

点击【许可证】。

输入秘钥即可使用。

到此即可完成VMware的安装。

2.Ubuntu系统镜像下载

官网下载:/

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

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

在搜索框内输入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 /PX4/PX4-Autopilot/main/Tools/setup/ubuntu.shwget /PX4/PX4-Autopilot/main/Tools/setup/requirements.txtbash 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 /PX4/Firmware.git

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

git clone -b v1.9.2 /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-jinja2sudo apt-get install python-empysudo apt-get install python-yamlsudo -H pip install numpy tomlsudo -H pip install pyserialsudo -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-frontendsudo 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 bytesINFO [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 /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] [:235] No <database> tag in the model database database.config found here[/models/][Err] [:294] Unable to download model manifests

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

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

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

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

#export GAZEBO_MODEL_DATABASE_URI=/modelsexport GAZEBO_MODEL_DATABASE_URI=/

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

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

[Err] [:205] Error in REST request

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

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

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

url: # url:

保存后关闭。

再次运行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_defaultexport ROS_PACKAGE_PATH=$ROS_PACKAGE_PATH:/home/jokerbin/px4src_v1.9.2/Firmwareexport 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 /tmpsudo chmod 777 px4_lock-0sudo chmod 777 px4-sock-0sudo 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 $USERsudo apt-get remove modemmanager -ysudo apt install gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-gl -ysudo apt install libqt5gui5 -ysudo apt install libfuse2 -y

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

下载QGC地面站安装包。

wget https://s3-us-west-/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)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。