【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.x1x2x3x425x12+x22+x32+x42=401x1,x2,x3,x45

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))

在这里插入图片描述

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
ROS(Robot Operating System)是一种用于构建机器人应用程序的开源框架。它提供了各种库和工具,用于处理机器人的感知、控制、规划和执行等任务。 在ROS中,全路径规划器(Path Planner)是一个重要的模块,它用于计算机器人从起始点到目标点的合适路径。全路径规划器通常基于机器人的运动学模型和环境信息,通过搜索算法来寻找最优路径。 Python是一种流行的编程语言,也被广泛应用于ROS开发中。使用Python编写ROS路径规划器可以带来一些优势,比如更加简洁易懂的语法和丰富的第三方库支持。 要实现ROS路径规划器的Python版本,首先需要使用ROS提供的Python库来获取机器人的传感器数据和控制命令。然后,可以使用Python中的路径规划算法库,比如A*算法、Dijkstra算法或RRT算法,来计算机器人的最优路径。 在计算路径之前,还需要建立机器人的环境模型。这可以通过传感器数据进行地图构建,或者使用静态地图等方式进行。然后,将机器人模型和环境信息传递给路径规划算法,计算并输出最优路径。 最后,需要将计算得到的最优路径转换为机器人的运动控制命令。这可以通过ROS提供的机器人控制接口来实现,利用Python库中提供的函数来发送控制命令。 总结起来,实现ROS路径规划器的Python版本需要使用ROS提供的Python库和第三方路径规划算法库,以及机器人的传感器数据和控制接口。通过这些工具和库的结合,可以编写出高效、可靠的ROS路径规划器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薯一个蜂蜜牛奶味的愿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值