在WSL-Ubuntu18.04下,安装aerial_mapper的过程以及遇到的问题和解决方法
环境配置:
Ubuntu版本:18.04 LTS,ROS版本:melodic,在Windows11下使用WSL2进行安装。
aerial-mapper官方安装教程:https://github.com/ethz-asl/aerial_mapper/wiki/How-to-install
ROS一键安装:wget http://fishros.com/install -O fishros && . fishros
请先安装完ROS再安装aerial_mapper。
安装流程:
步骤一 Install required system packages
打开终端,输入以下命令。Install required system packages
- 命令1:
sudo add-apt-repository "deb http://packages.ros.org/ros/ubuntu trusty main"
- 命令2:
wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add
◊执行命令2时可能遇到的问题:正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|0.0.0.0|:443… 失败:拒绝连接。
◊解决方案:
(1)打开https://sites.ipaddress.com/github.io/,在搜索栏中输入:raw.githubusercontent.com,然后拉到页面下方,找到ip地址。
(2)打开终端,输入:sudo vi /etc/hosts
(3)在hosts文件中,输入:185.199.110.133 raw.githubusercontent.com
,然后保存并退出。
(4)重新执行命令2。
- 命令3:
sudo apt-get update
- 命令4:
sudo apt-get install ros-melodic-desktop-full doxygen python-setuptools git g++ cppcheck python-git python-wstool python-catkin-tools
◊注意事项:如果已经提前安装好了ROS,那就去掉命令行中的“ros-noetic-desktop-full”。
即:sudo apt-get install doxygen python-setuptools git g++ cppcheck python-git python-wstool python-catkin-tools
- 命令5:
sudo apt install autotools-dev doxygen dh-autoreconf git liblapack-dev libblas-dev libgtest-dev --yes
- 命令6:
sudo apt-get install nautilus-open-terminal synaptic vim ccache
◊执行命令6时可能遇到的问题:无法定位软件包 nautilus-open-terminal
◊解决方法:
输入以下命令:
sudo apt-get update
sudo apt-get install nautilus-extension-gnome-terminal
nautilus -q
若第一个包安装不成功,则后面的所有安装包都会失败。所以建议处理完第一个安装包之后再重新安装后续接下来的所有安装包。
步骤二 Update ROS environment
- 命令1:
sudo rosdep init
◊执行命令1时可能遇到的问题:
◊解决方法:(参考 https://blog.csdn.net/Twilightzr/article/details/121714894)
打开并修改hosts文件,添加以下两行:
199.232.28.133 raw.githubusercontent.com
151.101.228.133 raw.github.com
或者直接通过鱼香ROS下载并设置rosdep。
- 命令2:
rosdep update
- 命令3:
echo ". /opt/ros/melodic/setup.bash" >> ~/.bashrc
◊注意事项:把命令中的“melodic”换成自己的ROS版本,比如“indigo”,“noetic”。
◊执行命令3时可能遇到的问题:bash: /opt/ros/melodic/setup.bash: 没有那个文件或目录。
◊解决方法:(参考https://blog.csdn.net/bulletstart/article/details/130794432)
先打开终端,输入:sudo gedit ~/.bashrc
,然后在最下面输入source /opt/ros/melodic/setup.bash
。(把“melodic”换成你自己的ROS版本,比如noetic等等。)
- 命令4:
source ~/.bashrc
步骤三 GDAL dependency (used to export orthomosaic as geotiff format):
- 命令1:
sudo apt-get update
- 命令2:
sudo apt-get install libgdal-dev
(若该命令失效,可用以下的替代方案)
- 替代方案命令:
cd Downloads
wget https://download.osgeo.org/gdal/2.3.1/gdal-2.3.1.tar.gz
tar -zvxf gdal-2.3.1.tar.gz
cd gdal-2.3.1
./configure
make
sudo make install
- 替代方案命令:
步骤四 Curl dependency for Google Maps Api (used for visualization):
- 命令1:
sudo apt-get update
- 命令2:
sudo apt-get install libcurlpp-dev
- 命令3:
sudo apt-get install libcurl4-openssl-dev
步骤五 安装aerial_mapper
- 命令1:
mkdir -p ~/catkin_ws_aerial_mapper/src
- 命令2:
cd catkin_ws_aerial_mapper
- 命令3:
catkin init
- 命令4:
catkin config --merge-devel
- 命令5:
catkin config --extend /opt/ros/melodic
(把“meloidc”替换为自己的ROS版本,例如indigo、noetic等等) - 命令6:
catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release
- 命令7:
cd src
- 命令8:
wstool init
◊执行命令3时可能遇到的问题:Error: There already is a workspace config file .rosinstall at ".". Use wstool install/modify.
◊解决方法:安装wstool,输入以下两条命令:sudo apt-get install python-wstool
以及 sudo pip install -U wstool
- 命令9:
git clone git@github.com:ethz-asl/aerial_mapper.git
(建议先更换为国内镜像源,然后再执行clone。若命令不可用,可尝试https方式:git clone https://github.com/ethz-asl/aerial_mapper.git
)
- 命令10:
wstool merge aerial_mapper/install/dependencies_ssh.rosinstall
- 命令11:
wstool update -j8
◊执行命令3时可能遇到的问题:
git@github.com: Permission denied (publickey).
git@github.com: Permission denied (publickey).
fatal: 无法读取远程仓库。
git clone 拉取远程代码报错(fatal:无法读取远程仓库 ,请确认您有正确的访问权限并且仓库存在)的原因是未添加SSH KEY。
◊解决方法:(参考:https://blog.csdn.net/iii66yy/article/details/127203604)
1.设置用户信息
打开终端,输入:
git config --global user.name "yourname"
git config --global user.email email@email.com
其中的 yourname和your@email.com分别替换为github用户名和github邮箱,注意,不要去掉引号。
2.删除旧配置文件
输入sudo rm -rf /home/ubuntu_name/.ssh/
, 其中的ubuntu_name 为自己的ubuntu系统的用户名,需要根据自己用户名进行替换。
3.生成配置文件
输入ssh-keygen -t rsa -C your@email.com
之后会出现Generating public/private rsa key pair.和Enter file in which to save the key (/Users/your_user_directory/.ssh/id_rsa)等,此时直接按回车即可。
4.登记SSH KEY
打开https://github.com/,登陆自己的账户,进入设置后,选择ssh设置,选择添加SSH Key(页面上的New SSH key),然后在终端输入:cat ~/.ssh/id_rsa.pub
将里面的内容复制到Key框中,并点击Add SHH key按钮即可。
5.再次运行命令 wstool update -j8
,此时正常工作下载相关的文件,耐心等待下载即可。
成功执行的反馈如下图所示。
步骤六 compile
- 命令1:
catkin build aerial_mapper
以下是在compile过程中出现各种依赖文件丢失而导致编译失败的解决办法。
◊错误1:编译OpenCV3时候报错:fatal error: boostdesc_bgm_bi.i: No such file or directory #include "boostdesc_bgm_bi.i"。
◊解决方法:将“Opencv3缺失文件”这个文件夹中的所有.i文件都复制到catkin_ws_aerial_mapper\build\opencv3_catkin\opencv3_contrib_src\modules\xfeatures2d\src\
这个目录下。
(“Opencv3缺失文件”文件夹下载链接:https://pan.baidu.com/s/15QlHwu5ur2vc6ncyVS4e_Q 提取码:sysu)
◊错误2:编译OpenCV3时候报错:matchers.hpp:52:12: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directoryinclude "opencv2/ xfeatures2d/cuda . hpp" 。
◊解决方法:
1.先在终端输入$: find . -name "cuda.hpp
,找到opencv2中的cuda.hpp文件在/home/usr_name/catkin_ws_aerial_mapper/build/opencv3_catkin/opencv3_contrib_src/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp
2.然后,打开相应的文件matchers.hpp,修改cuda依赖文件的路径为:#include /home/usr_name/catkin_ws_aerial_mapper/build/opencv3_catkin/opencv3_contrib_src/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp
3.需要修改的文件路径有:(因为有的文件是上一个文件的引用,所以只需修改最初出问题的那个文件)
1)、(需修改此文件的第52行)
/home/usr_name/catkin_ws_aerial_mapper/build/opencv3_catkin/opencv3_src/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:12:
替换为cuda的绝对路径:
/home/usr_name/catkin_ws_aerial_mapper/build/opencv3_catkin/opencv3_contrib_src/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp
2)、(需修改此文件的第91行)
/home/usr_name/catkin_ws_aerial_mapper/build/opencv3_catkin/opencv3_src/modules/stitching/src/precomp.hpp:91:12:
替换为cuda的绝对路径:
/home/usr_name/catkin_ws_aerial_mapper/build/opencv3_catkin/opencv3_contrib_src/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp
3)、(需修改此文件的第52行)
/home/usr_name/catkin_ws_aerial_mapper/build/opencv3_catkin/opencv3_src/modules/stitching/src/matchers.cpp:52:10:
替换为xfeatures2d.hpp文件的绝对路径:
xfeatures2d.hpp文件的位置:
/home/usr_name/catkin_ws_aerial_mapper/build/opencv3_catkin/opencv3_contrib_src/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp
4)、(需修改此文件的第43行)
/home/usr_name/catkin_ws_aerial_mapper/build/opencv3_catkin/opencv3_contrib_src/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp:43:10:
替换为nonfree.hpp文件的绝对路径:
nonfree.hpp文件的位置:
/home/usr_name/catkin_ws_aerial_mapper/build/opencv3_catkin/opencv3_contrib_src/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp
至此,OpenCV3可正确编译。
◊错误3:编译minkindr_conversions时候报错:Could not find a package configuration file provided by "tf" with any ofthe following names: tfConfig.cmake tf-config.cmake
◊解决方法:(参考https://blog.csdn.net/BIT_HXZ/article/details/123908947)
针对找不到依赖包的,使用sudo apt-get install ros-melodic-XXX,其中XXX为包的名字,例如:sudo apt-get install ros-melodic-image-transport
,
注意,包名字中的下划线 _ 需要替换为横线 -
然后再次catkin build aerial_mapper
即可。
◊错误4:在编译时提示:fatal error: cuda_runtime.h: No such file or directory
◊解决方法:sudo apt-get install nvidia-cuda-toolkit
,安装完后重启wsl或者是Ubuntu系统。
◊错误5:在编译aslam_cv_common时提示没有protobuf_catkin
◊解决方法:
输入以下指令:
cd ~/catkin_ws_aerial_mapper/src
git clone https://github.com/ethz-asl/protobuf_catkin.git
catkin build protobuf_catkin
◊错误6:在编译grid_map时失败,提示 fatal error:filters/filter_base.hpp: No such file or directory#include <filters/filter_base.hpp>
◊解决方法:(参考https://blog.csdn.net/BIT_HXZ/article/details/122783924)
1.打开grid_map_ws/src/grid_map/grid_map_cv/include/grid_map_cv/InpaintFilter.hpp ,在第十行进行以下修改:#include <filters/filter_base.hpp> 改为 #include <filters/filter_base.h>
2.此外,文件夹grid_map_ws/src/grid_map/grid_map_filters/include/grid_map_filters下所有的.hpp文件都需要将#include <filters/filter_base.hpp> 改为 #include <filters/filter_base.h>。
3.文件grid_map_ws/src/grid_map/grid_map_demos/include/grid_map_demos/FiltersDemo.hpp,将#include <filters/filter_chain.hpp> 改为#include <filters/filter_chain.h>
4.文件grid_map_ws/src/grid_map/grid_map_demos/src/normal_filter_comparison_node.cpp,将#include <filters/filter_chain.hpp> 改为 #include <filters/filter_chain.h>
修改完以上所有文件后,再次执行catkin build aerial_mapper
◊错误7:在编译aerial_mapper_utils时失败(找不到camera_info_manager)
输入:sudo apt-get install ros-melodic-camera-info-manager
,静候一会,然后再次catkin build aerial_mapper
即可。
最终编译完所有依赖包的结果图如下:
运行demo:
(参考https://blog.csdn.net/therealSXC/article/details/131159508)
1.先下载测试数据集,可以利用这个链接下载http://timohinzmann.com/datasets/fsr/cadastre_gray.tar.gz
2.下载完成后解压,把解压后的文件放到ubuntu的计算机中的tmp文件夹中的simulation文件夹内,simulation文件需要自己新建。若不进行以上步骤运行例程时会出现问题process has died等error。
成功运行的结果如下:
◊错误1:尝试运行roslaunch aerial_mapper_demos 0-synthetic-cadastre-dense-pcl.launch时失败,提示找不到该文件夹-bash: cd: aerial_mapper_demos/launch/: No such file or directory
◊解决方法:(参考https://github.com/ethz-asl/aerial_mapper/issues/20)
1.先进入编译文件夹:cd catkin_ws_aerial_mapper
2.然后catkin build grid_map_rviz_plugin
,此时可能提示找不到rvizConfig
3.(参考https://blog.csdn.net/BIT_HXZ/article/details/123908947?spm=1001.2014.3001.5506)
输入sudo apt-get install ros-melodic-rviz
, 然后再输入source devel/setup.bash
4.launch文件夹在catkin_ws_aerial_mapper\src\aerial_mapper\aerial_mapper_demos\launch,所以需要先输入cd catkin_ws_aerial_mapper/src/aerial_mapper/aerial_mapper_demos/launch
5.进入到launch文件夹之后,再输入roslaunch aerial_mapper_demos 0-synthetic-cadastre-dsm.launch
◊错误2:在尝试运行Demo时失败,提示“qt.qpa.screen: QXcbConnection: Could not connect to display 172.25.64.1:0.0 Could not connect to any X display.”
◊解决方法:(参考https://blog.csdn.net/weixin_44491667/article/details/129649042)
输入:sudo apt update
以及sudo apt install cmake-gui
然后再运行demo即可。