栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python 路径平滑(2)指定函数曲线优化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python 路径平滑(2)指定函数曲线优化

python 路径平滑(2)指定函数曲线优化
  • python 路径指定函数曲线优化
  • 代码
  • 测试效果

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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/307360.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号