机器人在平面上运动,如何让机器人按照预期进行运动规划呢?
机器人的运动,也就是从起点到终点的一条规划曲线。
规划一条由起点到终点的光滑曲线,也就实现了我们机器人在平面的运动规划设计。
机器人的运动可以分解为一段一段的光滑曲线,光滑曲线分解的越细小,那么机器人控制的越细腻,而每一个细小的光滑曲线段可以采取三次B样条曲线的控制方式,实现我们的控制目的。
![](https://img-blog.csdnimg.cn/img_convert/3f2b59da8d8b942a080f3336bc372c13.png)
平面机器人位置可以用二维坐标(x,y)参数方程描述,
其中i为归一化路程。
给定四个控制点[d1,d2,d3,d4],则规划曲线为H(i),0≤i≤1;
三次B样条函数
F1(i)=1/6(1-i)3
F2(i)=1/6(3i3-6i2+4)
F3(i)=1/6(-3i3+3i2+3i+1)
F4(i)=1/6(i)3
平面规划运动轨迹为:
H(i)= F1(i)d1+ F2(i)d2+ F3(i)d3+ F4(i)d4
验证源代码,如下:
%演示四个控制点的B样条曲线生成
%四个控制点D=[D1 D2 D3 D4]
D=[1 1 2 2 %控制点X方向坐标
0 2 1 2]; %控制点Y方向坐标
%参数i为归一化位移0≤i≤1
i=0:0.01:1;
%
f1i=(1-i).^3/6;
f2i=(3*i.^3-6*i.^2+4)/6;
f3i=(-3*i.^3+3*i.^2+3*i+1)/6;
f4i=i.^3/6;
%
Pi=D(:,1)*f1i+D(:,2)*f2i+D(:,3)*f3i+D(:,4)*f4i;
%绘制控制点及B样条曲线
figure(1)
plot(D(1,:),D(2,:),'g*',Pi(1,:),Pi(2,:),'y');
legend('控制点','B样条运动规划曲线')
title('机器人运动规划曲线')
xlabel('x轴(米)')
ylabel('y轴(米)')
grid on
bold
运行效果,如下:
![](https://img-blog.csdnimg.cn/img_convert/d25866ac5aabbba5856374d9348343a5.jpeg)