1.前言
作者只是一名双非本科院校飞控专业的大二学生,想以此记录一下自学飞控的经历,也希望能给刚刚入门的同学一些微薄的帮助。
这个环境的安装可以说是西天取经一般,但安装完后发现如果有领路的人,其实花费不了太长的时间,所以我希望我这篇文章能给刚刚入门的小白提供一些帮助,有问题也可留言进行讨论,在下才疏学浅,以下内容大多为引用,我只是帮大家整理一些资料,并分享我走过的一些坑。
因为网上的文章太多,而一些方法因为官网资料的迭代已经不适用了,故笔者这篇文章就是在笔者尝试了至少十篇文章中选出的可行的方法。
2.安装虚拟机VMware
链接:https://pan.baidu.com/s/1-d_OcKH41HhtPn6l83AXrg
提取码:f183
--来自百度网盘超级会员V1的分享
此链接提供VMware的安装包
按照操作提示进行安装即可。安装完成后点击许可证,请百度自行搜索获取激活码。
-
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博客
换源部分不用参考,笔者发现了更为便捷的方式,在后文会进行讲解。
-
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
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
如果还出现一些问题,直接复制系统提示去百度即可,不用担心,都是一个命令便可以解决的,再次便不再过多的赘述了。
-
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间的插件也安装成功。
-
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 这步需要装一段时间,请耐心等待
-
PX4配置
此处的方法采用的是(39条消息) 不必通宵挂机,飞速克隆PX4源码的方法_px4克隆不了_Bingobinlw的博客-CSDN博客链接中的方法,极为便捷,笔者此处只对其需要注意之处进行一些讲解。
6.1git安装
没安装git的先安装git:
sudo apt-get install git
6.2PX4配置
直接clone如下仓库
git clone
https://gitee.com/bingobinlw/Firmware.git
然后更新子模块
这里非常重要,因为是国外的网站,所以很多连接会失败,一定要多试几次!笔者也大概试了十几次才成功。
一定要在正确的路径下执行,一般在安装的PX4文件夹进入终端。
git submodule update --init --recursive
反复执行!!!
如果出错的话,需要删除空白文件夹,再次更新子模块
make distcleangit
submodule update --init --recursive
去下载的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里的路径写的不对,请仔细检查。
-
QGC安装
用虚拟机中的浏览器打开:https://docs.qgroundcontrol.com/en/getting_started/download_and_install.html
找到Ubuntu Linux 版本,按照指示进行安装。
在首次安装 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
重启虚拟机
点击官网的链接进行安装https://d176tv9ibo4jno.cloudfront.net/latest/QGroundControl.AppImage
赋予下载的程序权限,不然无法打开
chmod +x ./QGroundControl.AppImage
此时QGC即可双击打开,大功告成~
笔者在安装完后有一些感悟,大家如果感兴趣便当废话看看吧。当我们在面对一个完全陌生的东西时,网上有非常多的大神和非常多有用的帖子,但大家一定不要丧失了独立思考的能力,比如说在执行时遇到了问题只想着去复制粘贴别人的解决方法,而不愿意多看几眼自己错误的原因,我的建议是如果遇到不如多花点时间去想想这里会什么会报这样的错误,我相信这样一番思索下来,你会收益匪浅的~
在此感谢我的舍友和我的指导老师,在我前进路上给了我极大的帮助。