计算机:华为matebook 14
系统:ubuntu 18.04 + ros melodic

目的:在以上计算机与系统上安装turtlebot(注意:不是turtlebot 3)


1. 安装教程

参照 gaunthan/Turtlebot2-On-Melodic

gaunthan/Turtlebot2-On-Melodic/install_all.sh

1.1 构造工作空间

mkdir -p ~/turtlebot_ws/src
catkin_make

1.2 安装

gaunthan/Turtlebot2-On-Melodic中有两种安装脚本文件install_basic.shinstall_all.sh。前者是安装完整的turtlebot版本,后者只安装一些基本的软件包(能利用键盘控制turtlebot)。

我选择安装install_all.sh

curl -sLf https://raw.githubusercontent.com/gaunthan/Turtlebot2-On-Melodic/master/install_all.sh | bash
catkin_make

如果编译不通过,可能是gcc与g++版本不对!请查看第2节偿试解决该问题

1.3 将turtlebot加入环境

echo "source ~/turtlebot_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

1.4 安装其它依赖包

sudo apt-get install ros-melodic-move-base*
sudo apt-get install ros-melodic-map-server*
sudo apt-get install ros-melodic-amcl*
sudo apt-get install ros-melodic-navigation*

以上是我在运行turtlebot in stage例程时遇到缺少的包,如果运行其它程序,有报错的话,可根据报错情况查看缺少的包,缺哪个就安哪个。

1.5 运行turtlebot in stage [perfect]

roslaunch turtlebot_stage turtlebot_in_stage.launch

在这里插入图片描述

2. 可能出现的一些问题

2.1 问题描述

我在运行1.2安装节中,运行安装命令会出现编译失败问题。所以,对于我来说,在ubuntu 18.04+ros melodic上安装turtlebot并不如上面写的那么beauty。我的过程充满了焦急和黑暗。

在网上各种搜索,也找不到相关的问题与答案。后来,我猜是不是gcc与g++版本的问题(前几天装nvidia mx250显卡驱动,把ubuntu 18.04自带的gcc-7与g+±7降级成了gcc+4.8与g+±4.8|点击查看降级方法)。没想到还真是这个原因。

如果编译不通过,可能是gcc与g++版本不对!

如果编译不通过,可能是gcc与g++版本不对!

如果编译不通过,可能是gcc与g++版本不对!

2.2 gcc与g++降级

ubuntu 18.04 自带的gcc与g++版本为7.4.0,若需要降级成更低版本,步骤如下(将4.8换成需要的版本号即可):

  • 安装
sudo apt-get install -y gcc-4.8
sudo apt-get install -y g++-4.8
  • 重新建立软联连
cd /usr/bin    #进入/usr/bin文件夹下
sudo rm -r gcc  #移除之前的软连接
sudo ln -sf gcc-4.8 gcc #建立gcc4.8的软连接
sudo rm -r g++  #同gcc
sudo ln -sf g++-4.8 g++

2.3 gcc与g++升级

  • 查看系统装已经装的gcc与g++版本(我的系统有4.8与7两个版本)
ls gcc*

结果如下:

gcc gcc-7 gcc-ar-4.8 gcc-nm gcc-nm-7 gcc-ranlib-4.8
gcc-4.8 gcc-ar gcc-ar-7 gcc-nm-4.8 gcc-ranlib gcc-ranlib-7

  • 使用update-alternatives调整各版本的顺序(我要升级,所以将7的优先顺序高于4.8):
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7
  • 查看当前系统gcc与g++的版本
gcc --version

若显示为gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0,则说明升级成功。

我们可以通过sudo update-alternatives --install来随时调整gcc与g++的版本,非常方便。

2.4 问题解决

当把gcc与g++版本还原后,所有编译都通过,非常顺滑。

致谢

在Melodic release? #272中,@bunchofcoders,@ProfJust热心的介绍了如何在ubuntu 18.04+ros melodic上安装turtlebot。最后@gaunthan将两人的回答总结在gaunthan/Turtlebot2-On-Melodic。