python 路径平滑指定函数曲线优化
Posted 怪皮蛇皮怪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 路径平滑指定函数曲线优化相关的知识,希望对你有一定的参考价值。
python 路径平滑(2)指定函数曲线优化
python 路径优化(1)多项式曲线优化
python 路径平滑(2)指定函数曲线优化
python 路径平滑(3)贝塞尔曲线优化
python 路径指定函数曲线优化
通过指定曲线优化路线,让原本曲率不连续的路径变得曲率连续
参考代码:使用非线性最小二乘法拟合
优点
曲率连续
(代码简单)
缺点
无法固定起点终点的曲率
无法控制最大曲率
在路径规划中无法控制优化出来的路径是否与障碍物碰撞
代码
import math
from scipy.optimize import curve_fit
import numpy as np
def function1(x,a,b):
return a*np.exp(b/x)
class FunctionSmooth():
def smooth(self,route_x,route_y,route_theta,func=function1):
popt, pcov = curve_fit(func, route_x,route_y)
a=popt[0] # popt里面是拟合系数,读者可以自己help其用法
b=popt[1]
yvals=func(route_x,a,b)
new_route_theta=[]
for i in route_x:
dx=0.001
dy=func(i+dx,a,b)-func(i,a,b)
new_route_theta.append(math.atan2(dy,dx))
return route_x,yvals,new_route_theta
测试效果
from polynomial_smooth import PolynomialSmooth
import matplotlib.pyplot as plt
import numpy as np
def new_test():
x = np.arange(1, 17, 1)
y = np.array([4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60])
poly=PolynomialSmooth()
x,yvals,theta=poly.smooth(x,y,theta,4)
plot1=plt.plot(x, y, '*',label='original values')
plot2=plt.plot(x, yvals, 'r',label='polyfit values')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.legend(loc=4) # 指定legend的位置,读者可以自己help它的用法
plt.title('polyfitting')
plt.show()
if __name__ == '__main__':
new_test()
以上是关于python 路径平滑指定函数曲线优化的主要内容,如果未能解决你的问题,请参考以下文章