Learning High-Level Policies for Model Predictive Control 复现笔记

注意:本项目需在ubuntu环境下执行。

 

一. 部署环境

1. 下载代码

git clone git@github.com:uzh-rpg/high_mpc.git

 

  1. git命令是从GitHub克隆代码库,没有配置直接运行命令会报错,配置过程比较麻烦,所以可以直接从GitHub网页下载代码https://github.com/uzh-rpg/high_mpc

 

Learning High-Level Policies for Model Predictive Control 复现笔记

 

下载完成后解压

2. 安装python

  1. 推荐使用安装anaconda管理python环境和依赖包(如果之前安装了anaconda,可以跳过下面安装过程,直接执行下一步)

2.1 安装Anaconda

anaconda官方安装包下载地址:https://www.anaconda.com/products/individual

 

页面最下方找到Linux版本,选择第一个下载。

 

Learning High-Level Policies for Model Predictive Control 复现笔记

 

下载完成后,在下载路径中执行安装命令

 

bash Anaconda3-2020.02-Linux-x86_64.sh

 

安装中一路回车+yes,安装完成后更新环境变量

 

source ~/.bashrc

2.2 创建新的python环境

  1. 在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

 

Learning High-Level Policies for Model Predictive Control 复现笔记

 

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

 

Learning High-Level Policies for Model Predictive Control 复现笔记

 

具体安装过程请查看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保存在
Learning High-Level Policies for Model Predictive Control 复现笔记

 

路径下,所以我应该运行:

 

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的演示动图

 

解决:代码中的注释行取消注释,可以实现一次动图演示

 

 

 

high_mpc.mp4

mpc.mp4

 

上一篇:curse of dimensionality 维数灾难的两个表现


下一篇:【源码】基于管道的鲁棒模型预测控制