pchip插值---自然边界效应问题

 前言

        文章目的是为了求出目标轨迹方程而使用pchip函数来运算,在运行代码后,记录所出现的问题,并且寻找解决方法,最后求出预期轨迹方曲线。

1. 发现问题 :

        使用 pchip 进行插值,发现在起点 y=-464 而不是预期的y= -360 ,查找资料发现是因为 pchip 插值在处理边界条件时的自然边界效应。pchip 插值会尝试在数据点之间创建一个平滑的曲线,并且在两端点处,曲线的一阶和二阶导数会被设置为零,这可能会导致曲线在起点或终点处下沉或上升,从而产生非预期的值。

        matlab代码如下

% 定义各点的坐标
M = [-154, -360];
A = [-154, -280];
B = [-134, -260];
C = [134, -260];
D = [154, -280];
N = [154, -360];

% 将所有点按照移动顺序排列
points = [M; A; B; C; D; N];

% 时间向量,确保轨迹平滑过渡
T = 5; % 总时间
t = 0:0.01:T; 

% 初始化x和y轨迹向量
x_traj = zeros(size(t));
y_traj = zeros(size(t));

% 设置起点和终点的坐标
x_traj(1) = points(1, 1); % M点的x坐标
y_traj(1) = points(1, 2); % M点的y坐标
x_traj(end) = points(end, 1); % N点的x坐标
y_traj(end) = points(end, 2); % N点的y坐标

% 为pchip插值准备,将点分为x和y两部分
x_points = points(:, 1);
y_points = points(:, 2);

% 使用pchip进行插值,确保在t=0和t=T时,插值结果与初始和结束点匹配
x_traj(2:end-1) = pchip(1:length(x_points)-1, x_points(1:end-1), t(2:end-1))
y_traj(2:end-1) = pchip(1:length(y_points)-1, y_points(1:end-1), t(2:end-1))
%更换插值方法,还是


pchip()
% 绘制轨迹曲线
figure;
plot(x_traj, y_traj, 'b-', 'LineWidth', 2);
hold on;
% 绘制控制点
plot(x_points, y_points, 'ro', 'MarkerSize', 6);
title('Mechanical Arm Endpoint Trajectory');
xlabel('X Position');
ylabel('Y Position');
axis equal; % 保持x和y轴的刻度一致
legend('Trajectory', 'Control Points');
hold off;

        代码运行结果如图

   

左边出现曲线起点下沉

2.寻找解决方法

  • 更换插值算法

        比如同pchip插值算法中还有spline、makima两种插值方法,使用两种插值算法,其效果会比pchip插值效果差,

          图1  makima算法效果                                               图2   spline算法效果

  • 人为控制起点

         

在上图红框位置中加入下面四句代码,进人为控制起点、终点坐标。 

x_traj(1) = x_points(1); % 第一个时间点的x值设置为第一个点的x坐标
x_traj(end) = x_points(end); % 最后一个时间点的x值设置为最后一个点的x坐标
y_traj(1) = y_points(1); % 第一个时间点的y值设置为第一个点的y坐标
y_traj(end) = y_points(end); %  最后一个时间点的y值设置为最后一个点的y坐标

运算结果如下

还是不能解决起点下沉问题

     (目前还未找到解决的方法,若博客们能提供解决问题,鄙人万分感激 )

     (文章若有问题,请指正)

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值