参考引用文章(包括但不限于,参考了很多但是忘了具体是哪篇,这里仅列举记住的,侵删,发现有这里没提及的文章也请直接提醒我):
WSL2的安装与使用-Windows与Linux双系统的新选择
PX4从放弃到精通(二):ubuntu18.04配置px4编译环境及mavros环境
【PX4】Ubuntu20.04+ROS Noetic 配置PX4-v1.13和Gazebo11联合仿真环境【教程】
Ubuntu20.04+MAVROS+PX4+Gazebo保姆级安装教程
gazebo9的安装
PX4-Autopilot系列3:‘RAW_OPT‘经典错误
PX4环境搭建问题,编译PX4固件时em无法卸载
1、WSL2的安装
系统版本:Windows 10 版本 2004 及更高版本
安装WSL2首先需要确定电脑已经开启虚拟化,可在任务管理器中进行检查,没有开启的需要在BIOS中开启。
接着需要启用windows功能中的虚拟机平台和适用于Linux的Windows子系统,可以直接使用Windows+R快捷键,在打开的「运行」窗口中直接执行optionalfeatures打开「Windows 功能」,或者在控制面板中打开「Windows 功能」启用需要的功能,然后重新启动
打开命令提示符,输入wsl --set-default-version 2 将wsl默认版本修改为wsl2
输入wsl --install Ubuntu-22.04 --web-download按下回车键进行下载
这里需要你输入一个用户名,按下回车键,接着需要输入密码,按下回车键(注意:密码输入过程中不会显示出来)
安装成功后可以在搜索栏搜索PowerShell,输入wsl --list -v查看已安装的linux子系统
点击上方的下拉按钮,再点击ubuntu系统即可打开进入ubuntu。
2、PX4环境配置
如果未安装git首先需要输入sudo apt-get install git安装git
如果提示:
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。 则更新源 :
执行sudo apt-get update
从github上clone源码:git clone https://github.com/PX4/PX4-Autopilot.git --recursive
用git clone下载 PX4-Autopilot时,如果一些子模块因为网络原因下载失败。可以在网络正常后,执行cd PX4-Autopilot,在PX4-Autopilot路径下执行git submodule update --init --recursive继续下载剩余的子模块。
反复执行,直到所有子模块安装完成,如果网络链接不好最好更换网络环境。
下载完源码后,执行
cd PX4-Autopilot(此为进入文件夹,已经进入的不需要再进入)
sudo bash ./Tools/setup/ubuntu.sh
这里需要等待较长时间(注意不要按Ctrl+c,在linux中这是暂停,会中断环境配置),环境安装过程中如果报下载失败的错误,一般是网速问题,可以解决网速问题后重新执行脚本。直到安装成功,如果报以下错误
http://packages.ros.org/ros/ubuntu xenial InRelease: 由于没有公钥,无法验证下列签名:
执行下面命令再重新执行脚本,最后的码,根据不同的提示词进行修改
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
如果报以下错误
Installing PX4 simulation dependencies E: 无法获得锁
/var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁
(/var/lib/dpkg/lock-frontend),是否有其他进程正占用它? E: 无法获得锁
/var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁
(/var/lib/dpkg/lock-frontend),是否有其他进程正占用它?
则执行以下三条命令再重新执行脚本
sudo rm /var/lib/dpkg/lock-frontend
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock
如果执行脚本过程中出现以下报错
错误:7 http://packages.ros.org/ros/ubuntu bionic InRelease
则执行下面的命令再重新运行脚本
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
如果出现以下报错
则执行下面的命令再重新运行脚本
sudo apt-get install libjpeg-dev zlib1g-dev
直到出现上图所示内容才配置完成,这里提示需要重启,把ubuntu的页面×掉,输入wsl --list -v查看系统状态,stopped即已经关闭,按之前步骤再次打开虚拟机。
打开虚拟机后开始安装gazebo,为减少网络错误,最好自行更换网络环境。
设置安装源:
sudo 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 xenial main
设置密匙:
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
安装Gazebo:
sudo apt-get update
sudo apt-get install gazebo,完成后再执行sudo apt-get install libgazebo-dev
gazebo安装完成后执行cd PX4-Autopilot回到源码文件夹,执行make px4_sitl_default gazebo
提示以下错误,按其指示执行pip3 install kconfiglib命令即可
再次执行make px4_sitl_default gazebo,出现包括但不限于以下错误,提醒你缺少某些文件,便按其提示安装文件即可
常见的缺少的包的安装命令如下:
sudo -H python3 -m pip install kconfiglib
sudo -H python3 -m pip install jinja2
sudo -H python3 -m pip install jsonschema
sudo -H python3 -m pip install empy
sudo -H python3 -m pip install pyros-genmsg
sudo -H python3 -m pip install packaging
sudo -H python3 -m pip install toml
sudo -H python3 -m pip install numpy
sudo -H python3 -m pip install future
如果上面的命令安装后还是报错,可以用下面的命令安装
pip3 install kconfiglib
pip3 install --user empy
pip3 install --user jsonschema
pip3 install --user jinja2
pip3 install --user pyros-genmsg
pip3 install --user packaging
pip3 install --user toml
pip3 install --user numpy
如果仍提醒你缺少gazebo环境,重新执行sudo apt-get install gazebo,完成后再执行sudo apt-get install libgazebo-dev,再重新编译
如果出现以下错误,
执行
pip uninstall em
pip install empy
或者
sudo pip uninstall em
sudo pip install empy
或者
sudo pip uninstall em
sudo -H pip install --ignore-installed empy
或者
sudo -H python3 -m pip uninstall em
sudo -H python3 -m pip install --ignore-installed empy
再重新编译,直到没有上述错误为止
如果出现以下错误,执行pip3 install empy==3.3.4,再重新编译
如果出现以下错误
CMake Error at CMakeLists.txt:235 (project): The CMAKE_C_COMPILER:
arm-none-eabi-gcc
is not a full path and was not found in the PATH.
执行
sudo apt-get install gcc-arm-none-eabi
注意编译的时候Firmware路径不能有英文的括号,否则编译会报错或者一直循环config
在编译成功后,利用make clean清除编译后再次编译会报错
解决办法是用make distclean重新清除一下或者将build文件夹删除即可。
如果在启动gazebo时报错
gzserver: symbol lookup error:
/usr/lib/x86_64-linux-gnu/libgazebo.so.9: undefined symbol:
_ZN3sdf28recursiveSameTypeUniqueNamesESt10shared_ptrINS_7ElementEE
则执行下面的语句再重新编译即可
sudo apt upgrade
如果使用gazebo仿真时出现无法分配内存错误,执行
free -m
sudo mkdir /opt/images/
sudo rm -rf /opt/images/swap
sudo dd if=/dev/zero of=/opt/images/swap bs=1024 count=2048000
sudo mkswap /opt/images/swap
sudo swapon /opt/images/swap
如果编译时报错:
– PX4 config: px4_fmu-v5_default
– PX4 platform: nuttx make[2]: *** 没有规则可制作目标“dirlinks”。 停止。 make[1]: *** [tools/Makefile.unix:332:dirlinks] 错误 2
– cmake build type: MinSizeRel
– The CXX compiler identification is GNU 9.2.1
– The C compiler identification is GNU 9.2.1
– The ASM compiler identification is GNU
– Found assembler: /usr/bin/arm-none-eabi-gcc
原因是子模块没下载完全,执行下面命令
make distclean
再执行下面命令直到子模块下载完全即可
git submodule update --init --recursive
如果编译时报错:
“ULong”does not name a type
解决办法:
修改/usr/include/newlib/math.h
首先添加权限
sudo chmod 777 /usr/include/newlib/math.h
然后在文件中添加一行:
#define __ULong long
保存修改后,再次编译即可
如果编译make px4_sitl_default gazebo 时出现下面的报错:
CMake Error at CMakeLists.txt:32 (find_package): By not providing
“Findgazebo.cmake” in CMAKE_MODULE_PATH this project has asked CMake
to find a package configuration file provided by “gazebo”, but CMake
did not find one.
Could not find a package configuration file provided by “gazebo” with any of the following names:
gazeboConfig.cmake
gazebo-config.cmake
Add 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 been installed.
执行
sudo apt-get install libgazebo9-dev
再重新编译
如果编译时提示找不到opencv:
执行
sudo apt install libopencv-dev python3-opencv
如果报错找不到eigen3:
执行
sudo apt-get install libeigen3-dev
以上各项错误及解决方案为实际安装过程所遇和在互联网收集汇总而成,如有手册内未提及的错误出现可自己阅读报错提示根据提示解决或者复制报错项通过上网(如CSDN等网站)等多种渠道搜索相应解决方案。
在解决完所有错误安装成功后,会出现以下内容,即完成PX4的环境配置。
可尝试在终端输入 commander takeoff ,让无人机起飞,输入 commander land ,让无人机降落。
执行Ctrl+C可停止运行,再次输入make px4_sitl_default gazebo进入该页面。每次关闭Ubuntu重新进入后都要先执行cd PX4-Autopilot进入文件夹后再执行make px4_sitl_default gazebo才能打开上述界面。