機械人運動中加減速效果實現

2021-09-26 04:30:38 字數 3110 閱讀 9072

有的時候,我們在規劃機械人的參考軌跡過程中,沒有考慮機械人的速度,而機械人實際運動過程中一般啟動和停止過程中有乙個加減速過程,為了實現這一效果,我們可以採用緩動函式來對曲線進行離散化。

(1)緩動函式1

其對應的位置曲線和速度曲線如下

title('位置曲線')

hold on

subplot(2,1,2)

plot(j,v,'k.');

title('速度曲線')

hold on

end(2)緩動函式2

其對應的位置曲線和速度曲線如下

title('位置曲線')

hold on

subplot(2,1,2)

plot(j,v,'k.');

title('速度曲線')

hold on

end具體應用

有了上述緩動函式的公式後,我們可以利用引數t來對規劃的軌跡曲線進行離散化,這裡以貝塞爾曲線的離散進行舉例。我們取上述表示式中的引數j為勻速遞增(取值在[0,1]),通過將j代入上述公式可求得相應的t。這裡通過改造t來實現最終的加減速效果。下圖為緩動函式2的具體效果

% 貝塞爾曲線(參考曲線)

start_x=0;

start_y=0;

end_x=1.5;

end_y=2.25;

cx=[start_x,start_x+(end_x-start_x)*0.1,start_x+(end_x-start_x)*0.6,end_x];

cy=[start_y,start_y+(end_y-start_y)*0.5,start_y+(end_y-start_y)*0.9,end_y];

last_px1=cx(1);

last_py1=cy(1);

last_px2=cx(1);

last_py2=cy(1);

for j=0:0.01:1

% 不帶緩動函式

t=j;

pt1=pow(1-t,3);

pt2=3*t*pow(1-t,2);

pt3=3*pow(t,2)*(1-t);

pt4=pow(t,3);

px1=pt1*cx(1)+pt2*cx(2)+pt3*cx(3)+pt4*cx(4);

py1=pt1*cy(1)+pt2*cy(2)+pt3*cy(3)+pt4*cy(4);

v1=sqrt(pow(px1-last_px1,2)+pow(py1-last_py1,2))/0.01;

last_px1=px1;

last_py1=py1;

% 帶緩動函式

% t=0.5*(sin(pi*j-pi/2)+1);

if j<0.5

t=(1-sin((1-pow(2*j,2))*pi/2))/2;

else

t=0.5+0.5*sin((1-pow(1-2*(j-0.5),2))*pi/2);

endpt1=pow(1-t,3);

pt2=3*t*pow(1-t,2);

pt3=3*pow(t,2)*(1-t);

pt4=pow(t,3);

px2=pt1*cx(1)+pt2*cx(2)+pt3*cx(3)+pt4*cx(4);

py2=pt1*cy(1)+pt2*cy(2)+pt3*cy(3)+pt4*cy(4);

v2=sqrt(pow(px2-last_px2,2)+pow(py2-last_py2,2))/0.01;

last_px2=px2;

last_py2=py2;

subplot(2,1,1)

plot(px2,py2,'k.',px1,py1,'r.');

title('位置曲線')

legend('加緩動函式','未加緩動函式');

hold on

subplot(2,1,2)

plot(t,v2,'k.',j,v1,'r.');

title('速度曲線')

legend('加緩動函式','未加緩動函式');

hold on

end

c 實現 機械人的運動範圍

題目 地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 35,38 因為3 5 3 8 1...

Go語言實現 劍指offer 機械人的運動範圍

該題目 於牛客網 劍指offer 專題。地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 ...

Go語言實現 劍指offer 機械人的運動範圍

該題目 於牛客網 劍指offer 專題。地上有乙個m行和n列的方格。乙個機械人從座標0,0的格仔開始移動,每一次只能向左,右,上,下四個方向移動一格,但是不能進入行座標和列座標的數字之和大於k的格仔。例如,當k為18時,機械人能夠進入方格 35,37 因為3 5 3 7 18。但是,它不能進入方格 ...