【python+ROS+路径规划】五、pyomo非线性规划工具
看到了这篇博客无人车系统(十):c++与python非线性规(优)划(化)工具
突然发现python也有mpc工具,所以干脆不用matlab了,直接使用python做mpc的轨迹跟踪。
pyomo的简单了解
pyomo的安装
在VSCode
上面安装了半天,各种BUG,最后还是先安装了Ananconda,然后再安装pyomo
在Ubuntu20.04 + Anaconda环境下安装pyomo与ipopt:
conda update conda
conda install -c conda-forge ipopt
conda install -c conda-forge coincbc
conda install -c conda-forge pyomo
conda install -c conda-forge pyomo.extras
Anaconda与ros结合使用
在调好Anaconda之后打开VSCode,使用roscore
命令会报错:
Command 'roscore' not found, but can be installed with:
sudo apt install python3-roslaunch
这个时候
source ./devel/setup.bash
一下就好了
而且发现也可以使用rosrun,Anaconda里面的包也都可以使用。
基本使用
官网:pyomo之后有空会翻译一下。
例子
尝试解决优化问题:
m
i
n
i
m
i
z
e
x
1
x
4
(
x
1
+
x
2
+
x
3
)
+
x
3
s
.
t
.
x
1
x
2
x
3
x
4
≥
25
x
1
2
+
x
2
2
+
x
3
2
+
x
4
2
=
40
1
≤
x
1
,
x
2
,
x
3
,
x
4
≤
5
\small{minimize} \quad x_1x_4(x_1+x_2+x_3)+x_3\\s.t.\qquad x_1x_2x_3x_4≥25\\\qquad \qquad \qquad x_1^2+x_2^2+x_3^2+x_4^2=40\\\qquad \qquad \qquad1≤x_1,x_2,x_3,x_4≤5
minimizex1x4(x1+x2+x3)+x3s.t.x1x2x3x4≥25x12+x22+x32+x42=401≤x1,x2,x3,x4≤5
import numpy as np
from pyomo.environ import *
from pyomo.dae import *
model = ConcreteModel()
model.x = Var(RangeSet(1, 4), bounds=(1, 5))
model.cons1 = Constraint(rule=lambda model: 40==model.x[1]**2+model.x[2]**2+model.x[3]**2+model.x[4]**2)
model.cons2 = Constraint(rule=lambda model: 25<=model.x[1]*model.x[2]*model.x[3]*model.x[4])
model.obj = Objective(expr = model.x[1]*model.x[4]*(model.x[1] + model.x[2] + model.x[3]) + model.x[3], sense=minimize)
SolverFactory('ipopt').solve(model)
solutions = [model.x[i]() for i in range(1, 5)]
print("solutins is :"+str(solutions))