详解ubuntu 16.04安装gym-gazebo

目录

前言

安装依赖环境

基本要求

ubuntu 16.04安装

ROS Kinetic安装

gazebo 7.16安装

gazebo_ros_pkg安装

anoconda3安装

gym安装

gym_gazebo安装

ROS部分

conda部分

快速入手

问题汇总

总结


前言

首先说明,本人使用官方给的教程在ubuntu 16.04上安装gym-gazebo装了好多天都失败了,为此重装系统估计有十次,网上的安装教程跟着走也是不行,最终好不容易装成功了一次,不禁感叹gym-gazebo真特么难装。所以,为了对得起这几天的辛苦与努力,也为了后来人能够不走我的老路,因此,本篇文章决定仔细讲解gym-gazebo的安装教程。需要说明的是,本次安装是在一个全新的ubuntu 16.04系统上安装的,因为重装了系统好多次终于试成功了。

本次能够成功安装gym-gazebo,还得感谢这个github:https://github.com/zhaolongkzz/gym_gazebo_kinetic。这个github链接是作者在官方文件上做了一定的修改,方便ubuntu 16.04安装,我能够安装成功要感谢这个github的作者,不过安装过程中还是遇到了一些问题,我们待会慢慢说。

为什么gym-gazebo这么难装,个人觉得主要原因在于gym-gazebo需要gym这个python库,而gym要求python版本为3.5+,而gazebo需要依赖于ROS,而ROS中的python是python 2.7,这中间往往会产生冲突与矛盾,导致不兼容。这么多天的安装经验告诉我,安装的时候ROS部分的一定要在普通的环境下安装,而python的部分我们都统一安装在conda创建的虚拟环境中。这样应该可以避免conda中一些包和ros中的依赖干扰。而且我们最好统一使用pip或者pip3,不要一会pip install,一会pip3 install,具体原因我目前也不是太清楚,而且如果混着用会不会出问题其实我也没有试过,反正当初按照官方教程,有的地方pip,有的地方pip3,我没装成功,后来统一使用pip和pip3也失败了。因此,本篇博客安装如果用到pip的话都是使用pip而不是pip3,也许pip3也是可行的,不过我没有试过,如果有人试过了并且成功了,可以告诉我一声。另外,有一些教程上面python的命令他们会使用python3,本文也是出于谨慎,全部选择python,而不是python3。

例如,执行circuit2_turtlebot_lidar_qlearn.py,我是在conda环境下使用

pyhton circuit2_turtlebot_lidar_qlearn.py

补充说明:上述我的选择都是基于谨慎选择的,都是比较统一的,我怕如果一会pip,一会pip3,或者一会python,一会python3,会造成干扰,但具体是否会发生干扰,我目前也还不太清楚。

安装依赖环境

基本要求

  • ubuntu 16.04
  • ROS Kinetic
  • gazebo 7.16
  • gazebo_ros_pkg
  • anoconda3
  • gym

ubuntu 16.04安装

这个没啥好说的,网上教程多的是,而且我相信都来安装gym-gazebo了,ubuntu系统肯定是有的。

这里需要说明的是,为了后续安装能够快一点,我们最好把软件源换一下,具体参考链接:

https://www.cnblogs.com/hello-/articles/11151038.html

ROS Kinetic安装

ros的安装其实也没啥好说的,按照官方的链接来就行。官方链接如下:

http://wiki.ros.org/kinetic/Installation/Ubuntu

需要注意的就是,我们最好一开始使用国内的清华镜像,否则ROS安装会很慢。具体链接为:

http://wiki.ros.org/ROS/Installation/UbuntuMirrors

另外,我们最好安装ros-kinetic-desktop版本,而不要安装ros-kinetic-desktop-full版本,ros-kinetic-desktop-full版本会自动安装gazebo7.0,我没有实测过行不行,反正我在电脑上安装gazebo 7.16是可以的。这里安全起见,安装ros-kinetic-desktop版本。

另外,如果你在step4的第一步sudo rosdep init出现问题,你就多试几次就行了。如果你在step4的第二步rosdep update,遇到error,试试下面这个链接的解决办法,如果还是不行,多试几次就行,个人感觉是网速问题:

https://blog.csdn.net/b2zcy/article/details/87986904

下面来汇总一下:

  • step1:添加软件源,这里添加的清华的,而不是官网给的,这样安装会快一些
sudo sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
  • step2
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  • step3
sudo apt-get update
sudo apt-get install ros-kinetic-desktop
  • step4
sudo rosdep init
rosdep update
  • step5
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc
source ~/.bashrc
  • step6
sudo apt install python-rosinstall python-rosinstall-generator python-wstool build-essential

gazebo 7.16安装

gazebo的安装也很简单,参照官网的step by step方法,不要按照one-liner方法,one-liner方法会默认安装最新版本的gazebo。由于gazebo也许是因为国内没有镜像,安装的非常缓慢,我在家怎么也得1-2小时吧,慢慢等吧,目前没有找到比较好的解决方法。以下是链接:

http://gazebosim.org/tutorials?cat=install&tut=install_ubuntu&ver=7.0

以下是我汇总的步骤:

  • step1
sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
  • step2
wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
  • step3
sudo apt-get update
sudo apt-get install gazebo7
sudo apt-get install libgazebo7-dev

此时,gazebo7.16就安装好了,可以在终端输入

gazebo

测试一下,此时gazebo应该能打开。

gazebo_ros_pkg安装

gazebo_ros_pkg是ROS与gazebo的桥梁,只有通过这个包,ROS和gazebo才能相互通讯。实际上,上文的github链接里并没有这个步骤,不过我还是在这里装一下吧。其实那个github是在gym_gazebo_kinetic里面的gym_ws工作空间里有这个包。安装这个包很简单,只要一句命令:

sudo apt-get install ros-kinetic-gazebo-ros-pkgs ros-kinetic-gazebo-ros-control

anoconda3安装

anoconda3安装很简单,参照网上教程。需要注意的是,如果我们安装的时候设置anoconda初始化环境的话,其会在.bashrc文件中添加类似下面的代码:

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/home/zpp/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/zpp/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/home/zpp/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/home/zpp/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

这段代码会导致我们我们每次打开终端都会自动进入conda环境,这通常不是我们所希望的,因此建议把.bashrc文件中的这段代码删去,并在文件尾部加入下面一段代码:

alias condaenv='. /home/zpp/anaconda3/etc/profile.d/conda.sh;export PATH="/home/zpp/anaconda3/bin:$PATH"'

这样以后我们在终端只要输入condaenv就会进入到conda环境,否则会进入到普通的环境。注意,上面的路径中的用户名要改成你自己的。

gym安装

这个稍后再说,在此之前,你应该把我上面的基本要求都安装完毕了。

gym_gazebo安装

ROS部分

注意:这部分代码请在普通环境下执行,千万不要在conda环境下执行,否则可能会出问题。

安装ROS的一些依赖:

sudo apt-get install \
cmake gcc g++ qt4-qmake libqt4-dev \
libusb-dev libftdi-dev \
ros-kinetic-octomap-msgs        \
ros-kinetic-joy                 \
ros-kinetic-geodesy             \
ros-kinetic-octomap-ros         \
ros-kinetic-control-toolbox     \
ros-kinetic-pluginlib	       \
ros-kinetic-trajectory-msgs     \
ros-kinetic-control-msgs	       \
ros-kinetic-std-srvs 	       \
ros-kinetic-nodelet	       \
ros-kinetic-urdf		       \
ros-kinetic-rviz		       \
ros-kinetic-kdl-conversions     \
ros-kinetic-eigen-conversions   \
ros-kinetic-tf2-sensor-msgs     \
ros-kinetic-pcl-ros \
ros-kinetic-navigation

安装本代码的依赖:

# Failed to find libusb
sudo apt-get install libusb-dev
# ftdi.h: No such file or directory
sudo apt-get install libftdi-dev

sudo apt-get install ros-kinetic-sophus

sudo apt-get install ros-kinetic-ar-track-alvar-msgs

sudo apt-get install ros-kinetic-rqt-joint-trajectory-controller

conda部分

注意,这部分一定要在conda环境下执行

首先,打开终端,输入condaenv,进入conda环境(因为之前在.bashrc文件中添加了condaenv别名,上文有提到)。为了能够让conda下载快一些,我们现在最好添加国内的下载通道,在终端一次输入下面三句命令,这样conda下载就快了。

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

详见:https://www.cnblogs.com/Christina-Notebook/p/10273195.html

另外,后续我们也会用pip安装包,为了pip install快一些,我们在home目录下创建.pip文件夹,在该文件夹里创建文件pip.conf,在该文件里添加下面一段:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

详见:https://blog.csdn.net/mp624183768/article/details/81392435

好了,接下来创建conda的虚拟环境吧。

在终端输入下述命令,创建虚拟环境work。

conda create -n work python=3.5

注意,在上文给的github链接中,其创建的是python2.7的虚拟环境,实测发现这样是有问题的,因为后面要安装的gym要求python版本为3.5+,所以这里要创建python 3.5的环境。

接下来,输入下述命令激活刚刚创建的虚拟环境。

conda activate work

接下来安装gym和gym_gazebo

# install gym
git clone https://github.com/openai/gym.git
cd gym
pip install -e .

# install gym-gazebo
git clone https://github.com/zhaolongkzz/gym_gazebo_kinetic
cd ~/gym_gazebo_kinetic
pip install -e .

注意,如果你git clone很慢的话,可以使用gitee,参考该链接:https://blog.csdn.net/xy_zhangchn/article/details/81558144?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task或者下载我给的百度网盘文件也可。

接下来,继续在conda环境下安装一些python库,否则后续代码会有问题。

conda install numpy matplotlib

pip install rospkg catkin_pkg

pip install defusedxml

conda install scikit-image

pip install netifaces

其实,说实话,我也不是很清楚上面为什么一会用conda install ,一会又pip install,反正我照着做安装是可以的。另外,再次强调,这部分务必在conda环境下执行。

至此,该装的也已经装的差不多了。

快速入手

现在,我们就可以快速入手了。不过,现在还不能运行强化学习的程序,我们先要编译一下源码包,主要是ROS的一些源码包。在终端输入下述命令,注意,在普通环境输入,不要在conda环境下执行该命令

cd ~/gym_gazebo_kinetic/gym_gazebo/envs/installation
bash setup_kinetic.bash
cd ~/gym_gazebo_kinetic/gym_gazebo/envs/installation
bash turtlebot_setup.bash

有一点需要说明一下,主要是setup_kinetic.bash这个文件,github中该文件内容如下:

#!/bin/bash

if [ -z "$ROS_DISTRO" ]; then
  echo "ROS not installed. Check the installation steps: https://github.com/erlerobot/gym#installing-the-gazebo-environment"
fi

program="gazebo"
condition=$(which $program 2>/dev/null | grep -v "not found" | wc -l)
if [ $condition -eq 0 ] ; then
    echo "Gazebo is not installed. Check the installation steps: https://github.com/erlerobot/gym#installing-the-gazebo-environment"
fi

source /opt/ros/kinetic/setup.bash
# Create gym_ws
ws="gym_ws"
if [ -d $ws ]; then
  echo "Error: gym_ws directory already exists" 1>&2
fi
src=$ws"/src"
mkdir -p $src
cd $src
catkin_init_workspace

# Import and build dependencies
cd ../../gym_ws/src/
vcs import < ../../gazebo_ros_kinetic.repos


cd ../
#catkin_make --pkg mav_msgs
#source devel/setup.bash

touch src/joystick_drivers/spacenav_node/CATKIN_IGNORE
touch src/joystick_drivers/wiimote/CATKIN_IGNORE
touch src/kobuki_desktop/kobuki_qtestsuite/CATKIN_IGNORE

catkin_make
bash -c 'echo source `pwd`/devel/setup.bash >> ~/.bashrc'
echo "## ROS workspace compiled ##"

# add own models path to gazebo models path
if [ -z "$GAZEBO_MODEL_PATH" ]; then
  bash -c 'echo "export GAZEBO_MODEL_PATH="`pwd`/../../assets/models >> ~/.bashrc'
  exec bash #reload bashrc
fi

echo "finish setup_kinetic!"

其中,

vcs import < ../../gazebo_ros_kinetic.repos

这句命令会将gazebo_ros_kinetic.repos文件中对应的各个URL中下载对应的源码包到src目录,实际上我运行

bash setup_kinetic.bash

的时候,卡在这条命令下面好久,原因就是他要到各个网站上下载源码包,总共有28个包,下载特别慢,可能是外网的原因吧,如果你等不急的话,我后面会将这个28个源码包上传网盘,供大家下载。

另外,该bash文件里的catkin_make命令,会对我们下载的源码包进行编译,编译的时候会报错,报错如下:

Traceback (most recent call last):
  File "/home/zpp/gym_gazebo_kinetic/gym_gazebo/envs/installation/gym_ws/src/hector_gazebo/hector_gazebo_thermal_camera/cfg/GazeboRosThermalCamera.cfg", line 5, in 
    from driver_base.msg import SensorLevels
ImportError: No module named msg

这个时候我们应该在setup_kinetic.bash文件的catkin_make上一行添加

catkin_make -DCATKIN_WHITELIST_PACKAGES="driver_base"

但是实际运行的时候我发现,这句命令会导致后面只编译driver_base包,即使后面有catkin_make也不行。后来我查了一下,原来

DCATKIN_WHITELIST_PACKAGES选项具有记忆功能,会导致后续的catkin_make命令仍然只编译这个包。所以我们要将下面的catkin_make改为

catkin_make -DCATKIN_WHITELIST_PACKAGES=""

这样就可以清除catkin_make的记忆功能,并且会把工作空间中的所有源码包都编译一遍。以下是我修改过的setup_kinetic.bash文件。

#!/bin/bash

if [ -z "$ROS_DISTRO" ]; then
  echo "ROS not installed. Check the installation steps: https://github.com/erlerobot/gym#installing-the-gazebo-environment"
fi

program="gazebo"
condition=$(which $program 2>/dev/null | grep -v "not found" | wc -l)
if [ $condition -eq 0 ] ; then
    echo "Gazebo is not installed. Check the installation steps: https://github.com/erlerobot/gym#installing-the-gazebo-environment"
fi

source /opt/ros/kinetic/setup.bash
# Create gym_ws
ws="gym_ws"
if [ -d $ws ]; then
  echo "Error: gym_ws directory already exists" 1>&2
fi
src=$ws"/src"
#mkdir -p $src
cd $src
catkin_init_workspace

# Import and build dependencies
cd ../../gym_ws/src/
#vcs import < ../../gazebo_ros_kinetic.repos


cd ../
#catkin_make --pkg mav_msgs
#source devel/setup.bash

touch src/joystick_drivers/spacenav_node/CATKIN_IGNORE
touch src/joystick_drivers/wiimote/CATKIN_IGNORE
touch src/kobuki_desktop/kobuki_qtestsuite/CATKIN_IGNORE

catkin_make -DCATKIN_WHITELIST_PACKAGES="driver_base"
catkin_make -DCATKIN_WHITELIST_PACKAGES=""
#catkin_make
bash -c 'echo source `pwd`/devel/setup.bash >> ~/.bashrc'
echo "## ROS workspace compiled ##"

# add own models path to gazebo models path
if [ -z "$GAZEBO_MODEL_PATH" ]; then
  bash -c 'echo "export GAZEBO_MODEL_PATH="`pwd`/../../assets/models >> ~/.bashrc'
  exec bash #reload bashrc
fi

echo "finish setup_kinetic!"

相较于原文件,我把mkdir -p $src这句注释了,vcs开头的那块注释了,还有catkin_make那个地方,其他的和原文件一模一样。

我的建议是如果你下载28个源码包很慢的话,直接按我给的百度网盘链接下载,直接将里面的gym_ws包拷贝到~/gym_gazebo_kinetic/gym_gazebo/envs/installation路径下,然后执行我修改过的setup_kinetic.bash文件。执行该文件会提示

Error: gym_ws directory already exists

这个没有关系,因为我们本来就是拷贝的gym_ws文件夹。

上面的语句都执行完了,.bashrc文件最后几行应该类似于这样

现在,.bashrc文件相较于最原始的.bashrc文件应该总共多了以下几行:

下面就可以运行代码啦,运行过程中有可能出现一些问题,我将在后面的问题汇总里面一一说明。以下是正常的运行步骤。

打开一个终端,依次输入

condaenv
conda activate work
cd gym_gazebo_kinetic/examples/turtlebot
python circuit2_turtlebot_lidar_qlearn.py 

程序正常执行的效果应该为:

详解ubuntu 16.04安装gym-gazebo_第1张图片

接下来,打开一个新的终端,输入

cd gym_gazebo_kinetic/gym_gazebo/envs/installation/
source turtlebot_setup.bash
export GAZEBO_MASTER_URI=http://localhost:12346
gzclient

此时,应该可以看到gazebo中turtlebot开始动了,激动啊!!!终于成功了!!!

详解ubuntu 16.04安装gym-gazebo_第2张图片

接下来,我们可以再开一个终端,输入

condaenv
conda activate work
cd gym_gazebo_kinetic/examples/utilities
python display_plot.py 

可以看到目前的一些训练情况,主要是目前的累计的奖励值。

详解ubuntu 16.04安装gym-gazebo_第3张图片

好了,基本这就是完整的流程了,接下来汇总一下安装过程中遇到的各种问题。

问题汇总

Q1:执行bash setup_kinetic.bash的时候,提示以下错误

Traceback (most recent call last):
  File "/home/zpp/gym_gazebo_kinetic/gym_gazebo/envs/installation/gym_ws/src/hector_gazebo/hector_gazebo_thermal_camera/cfg/GazeboRosThermalCamera.cfg", line 5, in 
    from driver_base.msg import SensorLevels
ImportError: No module named msg

A1:在setup_kinetic.bash文件的catkin_make上一行添加

catkin_make -DCATKIN_WHITELIST_PACKAGES="driver_base"

这个问题上文已经讲过,另外注意DCATKIN_WHITELIST_PACKAGES具有记忆功能,会导致后面只编译这个包,解决办法上文已说过。

Q2:运行 python circuit2_turtlebot_lidar_qlearn.py时出现(奇怪的是,我在之前的一个电脑上没出现这个问题)

/home/zpp/anaconda3/envs/work/lib/python3.5/site-packages/matplotlib/font_manager.py:280: UserWarning: Matplotlib is building the font cache using fc-list. This may take a moment.
  'Matplotlib is building the font cache using fc-list. '
段错误 (核心已转储)

然后以后每次执行都是提示段错误

A2:应该是conda给我们安装的matplotlib库版本不对,在conda环境下输入(另一台电脑没出现这个问题)

pip install --upgrade matplotlib

Q3:Q2的问题解决以后,再运行 python circuit2_turtlebot_lidar_qlearn.py提示

Intel MKL FATAL ERROR: Cannot load libmkl_avx2.so or libmkl_def.so.

A3:在conda环境下输入

conda install nomkl numpy scipy scikit-learn numexpr
conda remove mkl 

上述命令执行以后,应该是卸载了mkl库,导致了一些包的缺失,只要按照提示缺什么就安装什么就行了。我的是依次提示缺少six、pyparsing、cycler、dateutil,只要输入

conda install six
conda install pyparsing
conda install cycler
conda install python-dateutil

Q4:执行python circuit2_turtlebot_lidar_qlearn.py提示

ImportError: No module named cv2

A4:这种情况通常是ros路径下的cv2.so的问题,我们可以输入下述命令将cv2.so删除

sudo rm /opt/ros/kinetic/lib/python2.7/dist-packages/cv2.so 

一般这样问题就解决了,如果还是不行,在conda环境下执行

conda install opencv-python

如若不行,请改为(注意这里是pip3,不知道为啥pip好像不行,也可以试试,不行的话只要pip uninstall对应的包即可)

pip3 install opencv-python

Q5:执行python circuit2_turtlebot_lidar_qlearn.py提示

from numpy.lib.arraypad import _validate_lengths
ImportError: cannot import name _validate_lengths

A5:需要升级scikit-image,conda环境下输入

pip install --upgrade scikit-image

Q6:执行python circuit2_turtlebot_lidar_qlearn.py提示

[spawn_turtlebot_model-3] process has died [pid 22795, exit code 1, cmd /home/zpp/gym_gazebo_kinetic/gym_gazebo/envs/installation/gym_ws/src/gazebo_ros_pkgs/gazebo_ros/scripts/spawn_model -unpause -urdf -param robot_description -model mobile_base __name:=spawn_turtlebot_model __log:=/home/zpp/.ros/log/fac134ea-6ea1-11ea-bacb-e470b8e684d0/spawn_turtlebot_model-3.log].
log file: /home/zpp/.ros/log/fac134ea-6ea1-11ea-bacb-e470b8e684d0/spawn_turtlebot_model-3*.log

A6:这是gym_gazebo_kinetic/gym_gazebo/envs/installation/gym_ws/src/gazebo_ros_pkgs/gazebo_ros/scripts路径下的spawn_model的问题,将该文件的首行的

#!/usr/bin/env python

改为

#!/usr/bin/env python2

即可,我个人感觉是这个py文件内部import rospy等ros的库,应该按python2来执行,因为ROS就是基于python2.7的。而我们是在conda环境下的python 3.5中执行,会导致错误,这里强行让他按照python2执行。具体是否是这个原因我尚不得知,我也是瞎试试出来的。另外,如果你直接按我给的gym_ws文件,我已经做了修改,应该不会遇到这个问题。

Q7:执行python display_plot.py提示

AttributeError: module 'gym' has no attribute 'monitoring'

A7:其实仔细研究以下gym软件包,你会发现确实gym中有monitoring,但确实模块不对,我觉得应该是gym版本的问题,和display_plot.py中的代码出现了不一致,其实gym中该有的模块都有,只是可能顺序路径发生了变化。解决办法是在display_plot.py文件的

import gym

的下一行添加

import gym.wrappers

然后将38行的代码修改为

results = gym.wrappers.monitor.load_results(self.outdir)

这样就行了,另外在网盘里,我会提供修改后的display_plot.py文件。

Q8:如果你成功执行了一次,后面又重新执行程序时发生错误,多半是你之前没有将gzserver或者gzclient关闭彻底.错误一般类似下面这个:

[gazebo-1] process has died [pid 21463, exit code 255, cmd /home/zpp/gym_gazebo_kinetic/gym_gazebo/envs/installation/gym_ws/src/gazebo_ros_pkgs/gazebo_ros/scripts/gzserver --verbose -e ode /home/zpp/gym_gazebo_kinetic/gym_gazebo/envs/installation/../assets/worlds/circuit2.world __name:=gazebo __log:=/home/zpp/.ros/log/f4c5e084-6f2a-11ea-8119-e470b8e684d0/gazebo-1.log].
log file: /home/zpp/.ros/log/f4c5e084-6f2a-11ea-8119-e470b8e684d0/gazebo-1*.log

A8:在终端执行

killall gzserver
killall gzclient

Q9:程序执行到最后显示

NameError: name ‘reduce’ is not defined

A9:因为reduce是python2的内置函数,在Python3中放到了 functools 模块下。而我们是在python3.5环境下执行程序的,所以可以在程序开头部分添加

from functools import reduce  

Q10:程序运行提示

ImportError: No module named 'numpy.testing.nosetester'

A10:这通常是因为numpy与scipy库版本不兼容所致,在conda环境下依次输入

pip install numpy==1.18
pip install scipy==1.1.0

总结

说实话,gym_gazebo真的很难装,网上的教程大多不是很仔细,本篇教程只讲解最精简的安装教程。另外,安装gym的时候我也没有输入pip install -e .[all]安装其他所有的库,只安装了基本的库。另外,官方教程要求ubuntu 16.04的gazebo的版本为8.1,但是我这里用的7.16是可以的,如果你们想安装gazebo8,也可以试一试,网站还是一样的,只不过在对应的网站选择8.0的就行,我不确定安装gazebo8最后会不会成功。另外,你也可以试着安装mujoco_py库,需要注意的是,务必安装的是1.5版本的,官网给的是2.0版本的,你需要手动选择1.5版本的,因为gym要求mujoco_py要为1.5版本。另外,官网要求的一些库我也没有装,实际测试发现也是可以运行的,例如Theano。如果以后需要的话可以再装。如果你安装过程中遇到其它一些问题,可以发我邮箱,我看看我有没有遇到过,遇到过的话一定为你解答,我的邮箱:[email protected]。安装过程太辛苦了,实在不想后来人继续受此折磨,浪费许多时间。另附百度云链接:链接:https://pan.baidu.com/s/1bq24B8T8oreMNQugwo8E9g 
提取码:23lm

 

你可能感兴趣的:(ubuntu)