注意:本项目需在ubuntu环境下执行。
一. 部署环境
1. 下载代码
git clone git@github.com:uzh-rpg/high_mpc.git
- git命令是从GitHub克隆代码库,没有配置直接运行命令会报错,配置过程比较麻烦,所以可以直接从GitHub网页下载代码https://github.com/uzh-rpg/high_mpc
下载完成后解压
2. 安装python
- 推荐使用安装anaconda管理python环境和依赖包(如果之前安装了anaconda,可以跳过下面安装过程,直接执行下一步)
2.1 安装Anaconda
anaconda官方安装包下载地址:https://www.anaconda.com/products/individual
页面最下方找到Linux版本,选择第一个下载。
下载完成后,在下载路径中执行安装命令
bash Anaconda3-2020.02-Linux-x86_64.sh
安装中一路回车+yes,安装完成后更新环境变量
source ~/.bashrc
2.2 创建新的python环境
- 在anaconda中创建python3.6-3.7之间的环境(使用conda创建一个名字为tfg-mpc的包含python3.6.9版本的环境,因为安装tensorflow-gpu 2.1.0需要3.6.-3.7.之间的python)
conda create --name tfg-mpc python=3.6.9
激活tfg-mpc的python环境
source activate tfg-mpc
3. 手动安装mpc的依赖项
requirements.txt文件为安装项目所需的依赖项内容为
numpy>=1.17.3
casadi==3.5.1
matplotlib>=3.1.1
tensorflow-gpu>=2.1.0
如果直接执行
pip install -r requirements.txt
默认会安装casadi=3.5.1和最新版本的numpy、matplotlib以及tensorflow-gpu,经过我的测试使用最新版本的matplotlib在运行时会产生错误,或者无法输出动图,所以需要手动使用pip命令安装对应的版本。
3.1 更换pip为国内源
为了pip安装加速,给pip更换国内源,我以更换阿里源为例
在home下创建.pip目录:
mkdir ~/.pip
创建pip.conf文件:
gedit ~/.pip/pip.conf
在pip.conf文件添加如下内容(更换为阿里镜像源):
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
保存退出即可。
激活tfg-mpc环境后执行下列命令,安装requirements.txt文件中要求的依赖包
pip install numpy==1.17.3
pip install casadi==3.5.1
pip install matplotlib==3.1.1
conda install tensorflow-gpu==2.1.0
3.2 安装tensorflow-gpu的软件依赖
安装好tensorflow-gpu并不能调用显卡的处理能力,tensorflow-gpu的运行需要搭配对应的CUDA和cuDNN版本,版本兼容性问题请查看tensorflow官网的经过测试的构建配置
https://tensorflow.google.cn/install/source
具体安装过程请查看https://blog.csdn.net/wwlswj/article/details/106364094
4. 将作者的high_mpc文件夹路径加入python的环境变量
作者提供的代码为
export PYTHONPATH=${PYTHONPATH}:/path/to/high_mpc
/path/to/high_mpc应该改为你的high_mpc保存路径,例如我的high_mpc保存在
路径下,所以我应该运行:
export PYTHONPATH=${PYTHONPATH}:/media/zjh/DATA/强化学习/ubuntu重新跑/high_mpc-master
二、遇到的问题
使用Linux (centos 6.5)后遇到的问题
问题1:报错,提示没有high_mpc模块
解决:因为high是论文的坐着写的,所有的mpc代码都是默认将high_mpc的路径放入了环境变量,而run_mpc.py、run_highmpc.py、run_deep_highmpc.py三个代码都在high_mpc的文件夹中,所以代码运行到导入high_mpc其中一些模块时会报错。解决方法为将high_mpc文件夹放入linux的系统环境变量。或者将high_mpc文件夹复制到其他已添加到环境变量中的目录中,其他已经加入到环境变量中的目录可以在python中使用
import sys
print(sys.path)
来查看当前python中已经加入到环境中的目录。
问题2:在运行run_deep_highmpc.py的第三个模式时报错
解决:AttributeError: 'list' object has no attribute 'shape',而且几乎全部是调用matplotlib模块的过程中出现问题,考虑到作者的代码应该不会出现这么基础的错误,我怀疑是matplotlib的问题。
我将requirements.txt文件中建议的matplotlib>=3.1.1,修改为==3.1.1,错误取消了。
问题3:出不来标准化MPC的演示动图
解决:代码中的注释行取消注释,可以实现一次动图演示