1.安装VMware Workstation Pro
2.安装Ubuntu18.04
(以上两步参考:https://mp.weixin.qq.com/s/vuaPF25PUVywgAA0tEvr8w)
3.设置网络:NAT模式(联网),重启Ubuntu后才有效。
4.安装Vmware tools(共享文件夹和随意缩小及可以复制粘贴)(https://blog.csdn.net/qweKelliy/article/details/88784494)
4.1 首先,打开ubuntu18.04系统,菜单栏 - 虚拟机 - 安装VMware Tools,等 待几分钟会发现ubuntu桌面多了VMware Tools镜像。
4.2 双击VMware Tools镜像,其里面有一个VMwaretar.gz文件,复制VM.tar.gz文件,在主目录粘贴该文件。
4.3 在主目录摁鼠标右键,选择在终端打开(E)。
4.4 在终端输入 sudo tar -zxvf VM,摁tab键补齐文件名,摁回车,可以把该文件解压到主目录。
4.5 解压后的文件为vmware-tools-distrib,双击vmware-tools-distrib,在该文件中摁鼠标右键,选择在终端打开(E)。
4.6 在终端输入sudo ./vm,摁tab键补齐文件名,摁回车。
4.7 输入开机密码,摁回车。
4.8 第一个选项Do you still**installation【no】.输入y,摁回车。剩下的选项全部摁回车即可。
4.9 当你看到 Enjoy, –the VMware team 这一行使表示安装成功。
5.安装ROS
虚拟机关闭杀毒软件,连手机热点。
虚拟机关闭杀毒软件,连手机热点。
虚拟机关闭杀毒软件,连手机热点。
5.1.设置安装源
sudo sh -c ‘. /etc/lsb-release && echo “deb http://mirrors.ustc.edu.cn/ros/ubuntu/ $DISTRIB_CODENAME main” > /etc/apt/sources.list.d/ros-latest.list’
在 软件和更新 中,下载自:其他站点–中国–mirrors.ustc.edu.cn–选择服务器–关闭–关闭。(安装源于服务器一致,后面才能正常下载安装ROS)
在火狐浏览器检验一下网络,如果有网络,就进行下一步。
5.2.设置密钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116
在更新之前,需要安装公钥,否则无法验证签名,命令如下:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F42ED6FBAB17C654
5.3.更新软件列表
sudo apt update
5.4.安装ROS
sudo apt-get install ros-melodic-desktop-full
选项输入y后,如果安装源于服务器一致,那么下载速度应该是1M/s以上的。下载完以后,会自动进行解包。
5.5.安装完成之后初始化rosdep
sudo apt install python-rosdep
6.初始化rosdep (参考https://blog.csdn.net/sinat_25923849/article/details/107976434,但是里面的顺序有问题)
6.1
6.1.1
sudo rosdep init
一般执行完上面的命令后会有报错(listWebsite may be down.)
6.1.2
sudo gedit /etc/hosts
把下面这些地址拷贝到hosts文件末尾,然后保存。
192.30.253.118 gist.github.com
185.199.110.153 github.io
151.101.113.194 github.global.ssl.fastly.net
52.216.227.168 github-cloud.s3.amazonaws.com
52.74.223.119 github.com
199.232.28.133 avatars1.githubusercontent.com
199.232.28.133 avatars2.githubusercontent.com
199.232.28.133 avatars0.githubusercontent.com
199.232.28.133 avatars3.githubusercontent.com
199.232.28.133 raw.githubusercontent.com
199.232.28.133 user-images.githubusercontent.com
199.232.28.133 avatars.githubusercontent.com
199.232.28.133 github.map.fastly.net
199.232.28.133 avatars7.githubusercontent.com
54.239.31.69 aws.amazon.com
54.239.30.25 console.aws.amazon.com
54.239.96.90 ap-northeast-1.console.aws.amazon.com
54.240.226.81 ap-southeast-1.console.aws.amazon.com
54.240.193.125 ap-southeast-2.console.aws.amazon.com
54.239.54.102 eu-central-1.console.aws.amazon.com
177.72.244.194 sa-east-1.console.aws.amazon.com
176.32.114.59 eu-west-1.console.aws.amazon.com
54.239.31.128 us-west-1.console.aws.amazon.com
54.240.254.230 us-west-2.console.aws.amazon.com
54.239.38.102 s3-console-us-standard.console.aws.amazon.com
54.231.49.3 s3.amazonaws.com
52.219.0.4 s3-ap-northeast-1.amazonaws.com
54.231.242.170 s3-ap-southeast-1.amazonaws.com
54.231.251.21 s3-ap-southeast-2.amazonaws.com
54.231.193.37 s3-eu-central-1.amazonaws.com
52.218.16.140 s3-eu-west-1.amazonaws.com
52.92.72.2 s3-sa-east-1.amazonaws.com
54.231.236.6 s3-us-west-1.amazonaws.com
54.231.168.160 s3-us-west-2.amazonaws.com
52.216.80.48 github-cloud.s3.amazonaws.com
54.231.40.3 github-com.s3.amazonaws.com
52.216.20.171 github-production-release-asset-2e65be.s3.amazonaws.com
52.216.228.168 github-production-user-asset-6210df.s3.amazonaws.com
6.1.3
sudo gedit /etc/resolv.conf
将原有的nameserver这一整行注释掉,并在该行下面添加以下两行:
nameserver 8.8.8.8 #google域名服务器
nameserver 8.8.4.4 #google域名服务器
6.1.4
sudo rosdep init
如果出现:wrote /etc/ros/rosdep/sources.list.d/20-default.list Recommended: please run rosdep update 则表示成功。
如果报错:见https://blog.csdn.net/sinat_25923849/article/details/107976434
6.2
6.2.1
rosdep update
执行完上面命令后一般报错:The read operation timed out。
6.2.2
下载https://pan.baidu.com/s/1PhTCqtvScV_XGf9ac0CcCg 提取码: w3ix 的压缩包ros_github并解压,把解压后的文件夹ros_github复制到Ubuntu主目录。
6.2.3
sudo gedit /usr/lib/python2.7/dist-packages/rosdistro/init.py
6.2.4
注释掉 DEFAULT_INDEX_URL = ‘https://raw.githubusercontent.com/ros/rosdistro/master/index-v4.yaml’ 这一行,并在下面添加:
DEFAULT_INDEX_URL = ‘file:///etc/ros/ros_github/index-v4.yaml’
6.2.5
sudo gedit /etc/ros/rosdep/sources.list.d/20-default.list
6.2.6
添加下面的,并保存。
#os-specific listings first
yaml file:///etc/ros/ros_github/osx-homebrew.yaml osx
#generic
yaml file:///etc/ros/ros_github/base.yaml
yaml file:///etc/ros/ros_github/python.yaml
yaml file:///etc/ros/ros_github/ruby.yaml
gbpdistro file:///etc/ros/ros_github/fuerte.yaml fuerte
#newer distributions (Groovy, Hydro, …) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
6.2.6
rosdep update
如果出现下面的错误,那就多rosdep update几次,因为这个问题的本质是网络不通畅导致的。
ERROR: unable to process source [file:///etc/ros/ros_github/fuerte.yaml]:
Failed to download target platform data for gbpdistro:
(‘The read operation timed out’,)
实在不行就参考https://blog.csdn.net/weixin_53660567/article/details/120607176
7.添加 ROS 环境变量
echo “source /opt/ros/melodic/setup.bash” >> ~/.bashrc
source ~/.bashrc
8.安装 rosinstall
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential
9.第一次启动ROS时,需要进行环境变量配置,执行如下命令
echo “source /opt/ros/melodic/setup.bash” >> ~/.bashrc
source ~/.bashrc
10.先开启三个终端,然后分别依次输入如下命令:
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
然后将鼠标聚焦到输入最后一个命令的窗口,通过键盘的上下左右键,分别控制小王八的前进,后退,左转,右转。
--------------------------以上小乌龟能控制说明ROS安装成功--------------------------
1 在日后的使用过程中,如果Ubuntu被卡死了,首先考虑在虚拟机菜单栏选择 重新启动客户机(Ctrl+R)
2 实在不行再选择在虚拟机中关机(也就是关闭Ubuntu的电源)
11.终端安装
sudo apt install terminator
12.2安装
方式一:双击安装即可(或右击选择 用软件安装打开–安装)
方式二:sudo dpkg -i xxxx.deb
安装成功后,在工作空间**_ws下 code. 就可以打开。
为了让cmakelist.txt文档打开后,注释的与非注释的代码颜色不同,需要在vscode中安装一个插件cmake tools。
为了界面是简体中文界面,在vscode中安装一个插件 搜 Chinese。
12.3 修改.vscode/tasks.json 文件.修改后摁 Ctrl+shift+B
点击 terminal–configure default build…把里面代码全部替换成下面的代码。
{
// 有关 tasks.json 格式的文档,请参见
// https://go.microsoft.com/fwlink/?LinkId=733558
“version”: “2.0.0”,
“tasks”: [
{
“label”: “catkin_make:debug”, //代表提示的描述性信息
“type”: “shell”, //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
“command”: “catkin_make”,//这个是我们需要运行的命令
“args”: [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
“group”: {“kind”:“build”,“isDefault”:true},
“presentation”: {
“reveal”: “always”//可选always或者silence,代表是否输出信息
},
“problemMatcher”: “$msCompile”
}
]
}
12.4 ROS基本环境的安装
12.4.1
新建的工作空间**_ws里面需要有一个src文件夹,然后在该新建的工作空间**_ws下运行catkin_make编译,这时**_ws会自动添加built、devel这两文件夹。
然后功能包文件夹就建在src文件夹里面,在建立功能包文件夹后,需要紧接着添加依赖库,形成CMakeLists.txt文件,最后编写完launch等文件后,在该功能包中的package.xml文件进行编辑。
在主目录摁Ctrl+H,找到.bashrc 文件打开,底部加入:source ~/工作空间名/devel/setup.bash。
12.4.2安装VIM
sudo apt install vim
退出vim编辑器先输入冒号再输入小写q 最后回车
12.4.3安装计算图rqt(一般只要你安装的是desktop-full版本就会自带该工具箱)
sudo apt install ros-melodic-rqt
sudo apt install ros-melodic-rqt-common-plugins
12.4.4安装键盘控制
sudo apt install ros-melodic-teleop-twist-keyboard
(运行键盘控制时终端命令行:rosrun teleop_twist_keyboard teleop_twist_keyboard.py)
12.4.5安装坐标关系查看
首先调用 rospack find tf2_tools 查看是否包含该功能包,如果没有,请使用如下命令安装:
sudo apt install ros-melodic-tf2-tools
12.5 机器人系统仿真
12.5.1安装RVIZ
(以“ros- [ROS_DISTRO] -desktop-full”命令安装 ROS 时,RViz 会默认被安装)
如果 rviz 没有安装,请调用如下命令自行安装:
sudo apt install ros-melodic-rviz
12.5.2 安装gazebo
(以“ros- [ROS_DISTRO] -desktop-full”命令安装 ROS 时,RViz 会默认被安装)
注意 gazebo 启动异常
问题1:VMware: vmw_ioctl_command error Invalid argument(无效的参数)
解决:
echo “export SVGA_VGPU10=0” >> ~/.bashrc
source .bashrc
问题2:[Err] [REST.cc:205] Error in REST request
解决:sudo gedit ~/.ignition/fuel/config.yaml
然后将url : https://api.ignitionfuel.org使用 # 注释
再添加url: https://api.ignitionrobotics.org(注意格式对齐)
问题3:启动时抛出异常:[gazebo-2] process has died [pid xxx, exit code 255, cmd…
解决:killall gzserver和killall gzclient
启动gazebo仿真环境报错[spawn_model-4] process has died
错误信息如下:
[spawn_model-4] process has died [pid 9871, exit code 1, cmd /opt/ros/melodic/lib/gazebo_ros/spawn_model -urdf -model car -param robot_description __name:=spawn_model __log:=/home/yuepeng/.ros/log/5cffbaa4-c07c-11ec-b5ad-782b462a8447/spawn_model-4.log].
解决方法:
主要是编码老问题,找到上面出现的/usr/lib/python2.7/xml/etree/ElementTree.py文件,终端命令是
sudo gedit /usr/lib/python2.7/xml/etree/ElementTree.py
找到:
import sys
import re
import warnings
在上面代码的下方加上以下代码:
reload(sys)
sys.setdefaultencoding(“utf-8”)
12.5.3安装URDF工具
sudo apt install liburdfdom-tools
12.5.4 安装 Arbotix
sudo apt-get install ros-melodic-arbotix
12.6 机器人导航
12.6.1安装 gmapping 包(用于构建地图):
sudo apt install ros-melodic-gmapping
12.6.2安装地图服务包(用于保存与读取地图):
sudo apt install ros-melodic-map-server
12.6.3安装 navigation 包(用于定位以及路径规划):
sudo apt install ros-melodic-navigation
12.6.4 深度图像转激光数据功能包depthimage_to_laserscan的安装
sudo apt-get install ros-melodic-depthimage-to-laserscan
--------以上完成了ROS系统基本环境的配置、跑gmapping算法的配置----------
13 cartographer安装
13.1安装相关依赖
sudo apt-get install -y google-mock libboost-all-dev libeigen3-dev libgflags-dev libgoogle-glog-dev liblua5.2-dev libprotobuf-dev libsuitesparse-dev libwebp-dev ninja-build protobuf-compiler python-sphinx ros-melodic-tf2-eigen libatlas-base-dev libsuitesparse-dev liblapack-dev
13.2下载安装包
主目录下建立cartographer_ws文件夹,cartographer_ws文件夹内建src文件夹,放入下载的cartographer,cartographer_ros,ceres-solver,在ROS项目/cartographer仿真建图,可以找到这三文件夹。
13.3构建ceres
在ceres-solver文件夹下打开终端,在终端输入
mkdir build
cd build
cmake …
make -j4
(编译过程会花费较长时间,电脑CPU性能较低的建议不要使用make -j,容易卡死;CPU性能较高的可以使用make -jx,x代表线程,可加速编译,x可取4、6、8)
make test # 此选项可选
sudo make install
13.4依据个人情况是否安装proto3. (如果已经安装完ros,就不要在执行这条命名,因为ros里面已经安装了,不然会冲突,亲测大坑)
src/cartographer/scripts/install_proto3.sh
13.5ninja-build安装(home下安装)(先跳过13.5这一步)
catkin_make_isolated --install --use-ninja
13.6 安装编译cartographer
在cartographer文件夹中打开终端:
mkdir build
cd build
cmake … -G Ninja
ninja
ninja test
sudo ninja install
13.7 最后,进入你的cartographer_ws工作空间,开始构建编译
cd cartographer_ws
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro=${ROS_DISTRO} -y
catkin_make_isolated --install --use-ninja
source install_isolated/setup.bash
13.8在在主目录摁Ctrl+H,找到.bashrc 文件打开,底部加入:
source ~/cartographer_ws/install_isolated/setup.bash
(因为只要增加了工作空间,都需要在.bashrc中增加对应的source源)
13.9 在cartographer_ws下进行:
source install_isolated/setup.bash
13.8测试
下载数据集后进行测试
2D数据集
roslaunch cartographer_ros demo_backpack_2d.launch bag_filename:=/home/guet/Downloads/cartographer_paper_deutsches_museum.bag
3D数据集(2个)
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=/home/guet/Downloads/b3-2016-02-02-13-32-01.bag
roslaunch cartographer_ros demo_backpack_3d.launch bag_filename:=/home/guet/Downloads/b3-2016-03-01-13-39-41.bag
----当2D、3D数据集都可以跑时,证明cartographer安装成功-----------------
14 Ubuntu18.04 ORB_SLAM2的安装、配置、运行SLAM单目实例
14.1 安装工具
sudo apt-get install cmake
sudo apt-get install git
sudo apt-get install gcc g++
14.2 安装Pangolin
在安装pangolin之前,先安装依赖项:
sudo apt-get install libglew-dev
sudo apt-get install libpython2.7-dev
下载安装Pangolin。可能会有点慢,如果因为网不太好断开了,再重新执行一次下列命令即可。
git clone https://github.com/stevenlovegrove/Pangolin.git
或者
git clone https://github.com/stevenlovegrove/Pangolin/releases/tag/v0.5
(当上面两种方法都不行时,直接在https://github.com/stevenlovegrove/Pangolin/releases/tag/v0.5 下载,然后解压复制到虚拟机主目录)
下载好后,进入Pangolin文件夹。
cd Pangolin
创建编译文件夹,命名为build。
mkdir build
进入文件夹。
cd build
进行配置
cmake …
(如果报错:‘No package ‘xkbcommon’ found’,解决方法:sudo apt-get install libxkbcommon-x11-dev)
make -j4
(make -j4 与make -j8的意思就是多线程运行,即4个进程去竞争多核cpu,或者8个线程去竞争cpu,可以提高执行速度。)
sudo make install
14.3 安装OpenCV
官网或者百度云盘下载opencv-3.4.1.zip,解压后复制文件夹到虚拟机主目录。
为OpenCV安装依赖库:
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff5.dev libswscale-dev libjasper-dev
如果报错:无法定位软件包 libjasper-dev。解决方法:
sudo add-apt-repository “deb http://security.ubuntu.com/ubuntu xenial-security main”
sudo apt update
sudo apt install libjasper1 libjasper-dev
在opencv-3.4.1文件夹的目录下创建编译文件夹build,进入~/opencv-3.4.1/build,执行cmake:
cd opencv-3.4.1
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=Release –D CMAKE_INSTALL_PREFIX=/usr/local …
在build文件夹里编译:这里可以使用make -j4或者make -j8命令速度会稍快一些,但如果电脑性能不佳,还是使用sudo make命令较好。
make -j4 (编译时间比较长)
在build文件夹里编译安装:
sudo make install
在build文件夹里配置OpenCV的编译环境,目的是让系统找到OpenCV的库的路径,打开编写一个空白的文件opencv.conf
sudo gedit /etc/ld.so.conf.d/opencv.conf
在opencv.conf中添加如下内容,并保存。
/usr/local/lib
使刚配置路径生效
sudo ldconfig
打开bash文件,配置bash
sudo gedit /etc/bash.bashrc
在打开的bash.bashrc的最末尾添加如下代码(分两行)
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存后,执行如下命令使配置生效:
source /etc/bash.bashrc (这一步可能会出问题)
执行下列命令更新。
sudo updatedb
至此,ubuntu18.04下opencv3.4.1已经配置完成啦。
14.4安装Eigen
使用命令
sudo apt-get install libeigen3-dev
14.5 安装ORB_SLAM2
如果需要在ROS环境下运行ORB_SLAM,最好放在工作区的src文件夹下(这是我的工作区目录:orb_ws/src)
进入ROS工作区间orb_ws下的src
cd ~/orb_ws/src/
使用 git clone ***来得到ORB_SLAM2
git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2 (如果被墙就直接去云盘或者https://github.com/raulmur/ORB_SLAM2 去下载,然后在放到虚拟机主目录orb_ws/src中)
进入ORB_SLAM2目录,给build.sh文件可执行权限,编译ORB-SLAM2,运行如下命令
cd ORB_SLAM2
chmod +x build.sh
./build.sh
如果报错:ORB_SLAM2/src/System.cc: error: ‘usleep’ was not declared in this scope usleep(5000),解决方法:
找到对应的System.cc文件的首部加入 头文件
#include
可能需要增加unistd.h的文件还有:
Examples/Monocular/mono_euroc.cc
Examples/Monocular/mono_kitti.cc
Examples/Monocular/mono_tum.cc
Examples/RGB-D/rgbd_tum.cc
Examples/Stereo/stereo_euroc.cc
Examples/Stereo/stereo_kitti.cc
src/LocalMapping.cc
src/LoopClosing.cc
src/System.cc
src/Tracking.cc
src/Viewer.cc
参考教程:https://blog.csdn.net/qq_15698613/article/details/98453592
(注意:出现了对应的错误则修改,如果没有出现则不修改。
每次改动后将 ORB_SLAM2 文件夹下面的 build 文件夹删掉,
还有 ORB_SLAM2/Thirdparty/DBoW2 && g2o 文件夹下面的 build 文件夹删掉,
之后再执行上面的指令./build.sh重新编译看看是否有错)
如果报错:install cimpiler error:killed(program cciplus)或者提示无法分配内存,解决方法:
关掉虚拟机,调大内存。这时不需要删build 文件夹,仅需调大内存后重新执行上面的指令./build.sh重新编译看看是否有错。
编辑bash文件
sudo gedit ~/.bashrc
将包含Examples/ROS/ORB_SLAM2的路径添加到ROS_PACKAGE_PATH环境变量中。打开.bashrc文件并在最后添加:
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/orb_ws/src/ORB_SLAM2/Examples/ROS
进入ORB_SLAM2/build进行编译
make -j4
以下最后2步没有在终端成功但是也可以跑数据集
chmod +x build_ros.sh
./build_ros.sh
14.6 运行单目SLAM实例
编译完成后会在ORB_SLAM2/Examples文件夹下生成各种可执行文件。这里以单目情况为例,展示如何运行ORB_SLAM2程序。
(1)下载数据集
有TUM、KITTI、EuRoC三种数据集,这儿使用TUM数据集,从http://vision.in.tum.de/data/datasets/rgbd-dataset/download下载序列并解压缩。我下载的是第一个的,下载下来的文件名是:rgbd-dataset_freiburg_xyz。
(2)编译
官方给出的命令格式如下:
PATH_TO_SEQUENCE_FOLDER为数据集的存储路径。
tumx.yaml与数据集对应,比如TUM1.yaml、TUM2.yaml 、TUM3.yaml 分别对应 freiburg1、freiburg2 、 freiburg3。
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txtExamples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER
根据自己保存路径不一样适当修改。我的数据集放在home/orb_ws/src目录下。
在ORB_SLAM2终端下运行数据集:
./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/guet/orb_ws/src/rgbd_dataset_freiburg1_xyz
14.7运行kitti数据集(后面有时间就更新)
我的数据集放置的路径