【机械臂优化】基于粒子群算法实现10自由度的机械臂逆解附matlab代码
【机械臂优化】基于粒子群算法实现10自由度的机械臂逆解附matlab代码
TT_Matlab
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,完整matlab代码或者程序定制加qq1575304183。
1 简介
2 部分代码
tic %该函数表示计时开始
%------初始格式化--------------------------------------------------
clear all;
clc;
format
long;
c1=
1.4962
; %学习因子
1
c2=
1.4962
; %学习因子
2
MaxDT=
100
; %最大迭代次数
D=
10
; %搜索空间维数(一个机械臂的关节变量的个数为
10
)
N=
40
; %群体个体数目
p=zeros(
1
,N);
%定义目标点的空间位置
p_f=[-
3
,
10
,
710
];
%机械臂各关节的初始角度
d1=
0
;d2=
0
;d3=
0
;d4=
0
;d5=
0
;d6=
0
;d7=
0
;d8=
0
;d9=+
0
;d1
0
=-
0
;d11=+
0
;
x_last(
1
)=d2;
x_last(
2
)=d3;
x_last(
3
)=d4;
x_last(
4
)=d5;
x_last(
5
)=d6;
x_last(
6
)=d7;
x_last(
7
)=d8;
x_last(
8
)=d9;
x_last(
9
)=d1
0
;
x_last(
10
)=d11;
%------初始化种群个体的位置和速度------------
k=
0
.
01
; %求取粒子速度系数
%各关节的最大限位和最小限位
x_min(
1
)=x_last(
1
)-
0
.
2
;
x_max(
1
)=x_last(
1
)+
0
.
2
;
x_min(
2
)=x_last(
2
)-
0
.
2
;
x_max(
2
)=x_last(
2
)+
0
.
2
;
x_min(
3
)=x_last(
3
)-
0
.
2
;
x_max(
3
)=x_last(
3
)+
0
.
2
;
x_min(
4
)=x_last(
4
)-
0
.
2
;
x_max(
4
)=x_last(
4
)+
0
.
2
;
x_min(
5
)=x_last(
5
)-
0
.
2
;
x_max(
5
)=x_last(
5
)+
0
.
2
;
x_min(
6
)=x_last(
6
)-
0
.
2
;
x_max(
6
)=x_last(
6
)+
0
.
2
;
x_min(
7
)=x_last(
7
)-
0
.
2
;
x_max(
7
)=x_last(
7
)+
0
.
2
;
x_min(
8
)=x_last(
8
)-
0
.
2
;
x_max(
8
)=x_last(
8
)+
0
.
2
;
x_min(
9
)=x_last(
9
)-
0
.
2
;
x_max(
9
)=x_last(
9
)+
0
.
2
;
x_min(
10
)=x_last(
10
)-
0
.
2
;
x_max(
10
)=x_last(
10
)+
0
.
2
;
%各关节速度的上下限
v_min(
1
)=x_min(
1
)*(k);
v_max(
1
)=x_max(
1
)*k;
v_min(
2
)=x_min(
2
)*(k);
v_max(
2
)=x_max(
2
)*k;
v_min(
3
)=x_min(
3
)*(k);
v_max(
3
)=x_max(
3
)*k;
v_min(
4
)=x_min(
4
)*(k);
v_max(
4
)=x_max(
4
)*k;
v_min(
5
)=x_min(
5
)*(k);
v_max(
5
)=x_max(
5
)*k;
v_min(
6
)=x_min(
6
)*(k);
v_max(
6
)=x_max(
6
)*k;
v_min(
7
)=x_min(
7
)*(k);
v_max(
7
)=x_max(
7
)*k;
v_min(
8
)=x_min(
8
)*(k);
v_max(
8
)=x_max(
8
)*k;
v_min(
9
)=x_min(
9
)*(k);
v_max(
9
)=x_max(
9
)*k;
v_min(
10
)=x_min(
10
)*(k);
v_max(
10
)=x_max(
10
)*k;
for
i=
1
:N
x
(i,
1
)=
rand
(
1
)*(x_min(
1
)-x_max(
1
))+x_max(
1
); %产生一个服从正态分布的随机数作为初始化位置
v(i,
1
)=
rand
(
1
)*(v_min(
1
)-v_max(
1
))+v_max(
1
); %产生一个服从正态分布的随机数作为初始化速度
x
(i,
2
)=
rand
(
1
)*(x_min(
2
)-x_max(
2
))+x_max(
2
);
v(i,
2
)=
rand
(
1
)*(v_min(
2
)-v_max(
2
))+v_max(
2
);
x
(i,
3
)=
rand
(
1
)*(x_min(
3
)-x_max(
3
))+x_max(
3
);
v(i,
3
)=
rand
(
1
)*(v_min(
3
)-v_max(
3
))+v_max(
3
);
x
(i,
4
)=
rand
(
1
)*(x_min(
4
)-x_max(
4
))+x_max(
4
);
v(i,
4
)=
rand
(
1
)*(v_min(
4
)-v_max(
4
))+v_max(
4
);
x
(i,
5
)=
rand
(
1
)*(x_min(
5
)-x_max(
5
))+x_max(
5
);
v(i,
5
)=
rand
(
1
)*(v_min(
5
)-v_max(
5
))+v_max(
5
);
x
(i,
6
)=
rand
(
1
)*(x_min(
6
)-x_max(
6
))+x_max(
6
);
v(i,
6
)=
rand
(
1
)*(v_min(
6
)-v_max(
6
))+v_max(
6
);
x
(i,
7
)=
rand
(
1
)*(x_min(
7
)-x_max(
7
))+x_max(
7
);
v(i,
7
)=
rand
(
1
)*(v_min(
7
)-v_max(
7
))+v_max(
7
);
x
(i,
8
)=
rand
(
1
)*(x_min(
8
)-x_max(
8
))+x_max(
8
);
v(i,
8
)=
rand
(
1
)*(v_min(
8
)-v_max(
8
))+v_max(
8
);
x
(i,
9
)=
rand
(
1
)*(x_min(
9
)-x_max(
9
))+x_max(
9
);
v(i,
9
)=
rand
(
1
)*(v_min(
9
)-v_max(
9
))+v_max(
9
);
x
(i,
10
)=
rand
(
1
)*(x_min(
10
)-x_max(
10
))+x_max(
10
);
v(i,
10
)=
rand
(
1
)*(v_min(
10
)-v_max(
10
))+v_max(
10
);
end
3 仿真结果
4 参考文献
[1]江鸿怀, 金晓怡, 邢亚飞,等. 基于粒子群优化算法的五自由度机械臂轨迹规划[J]. 机械设计与研究, 2020, 36(1):4.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
5 代码下载
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
