资源简介
这是一个学习机器人避障算法的matlab仿真代码,直接下载运行就可以使用,备注非常详细,大家可以自定义避障地图,也可以更改参数实现不同的避障

代码片段和文件信息
figure(‘position‘ [300 50 600 600]);
axis([0 400 0 400]);
axis square
grid on%添加栅格
grid minor
hold on
%自定义变量
XSTART = 30;%机器人起始点
YSTART = 30;
TSTART = 0;
XEND = 370;%机器人终点
YEND = 370;
ROW = 400;
COL = 400;
BOXWIDTH = 1;
BOXHEIGHT = 1;
i=1;%记录循环次数
mapgrid = zeros(ROW COL);
%画①号线
%画②号三角形
for i=50:100%横线
mapgrid(i250)=1;
end
for i=200:250%竖线
mapgrid(50i)=1;
end
for i=50:100%斜线
mapgrid(i150+i)=1;
end
%画③号三角形
for i=100:150%横线
mapgrid(i150)=1;
end
for i=150:170%竖线
mapgrid(150i)=1;
end
%画④号三角形
for i=130:200%横线
mapgrid(i100)=1;
end
for i=70:100%竖线
mapgrid(130i)=1;
end
%画⑤号三角形
for i=200:250%横线
mapgrid(i150)=1;
end
for i=150:200%竖线
mapgrid(200i)=1;
end
for i=200:250%斜线
mapgrid(i400-i)=1;
end
%画⑥号线
for i=160:230
mapgrid(i460-i)=1;
end
%画⑦号矩形
for i=280:360%横线
mapgrid(i150)=1;
end
for i=280:360%横线
mapgrid(i100)=1;
end
for i=100:150%竖线
mapgrid(280i)=1;
end
for i=100:150%竖线
mapgrid(360i)=1;
end
%画⑧号线
for i=270:350
mapgrid(i580-i)=1;
end
%% 绘制所有障碍物
for i = 1:ROW
for j = 1:COL
if mapgrid(i j)>0
x = (i-1)*BOXWIDTH;
y = (j-1)*BOXHEIGHT;
rectangle(‘position‘ [x y BOXWIDTH BOXHEIGHT]‘Curvature‘1);%绘制障碍物
end
end
end
%Plot End Point 绘制结束
plot(XEND YEND ‘rx‘ ‘markersize‘ 10 ‘linewidth‘ 3);%绘制终点
text(2020‘Start‘);%起点处标注
text(370360‘Goal‘);%起点处标注
%% 机器人模拟器参数
%模拟时间步
ts = 0.1;%seconds
%开始位置
xbot = XSTART;%开始坐标
ybot = YSTART;
tbot = TSTART;
% 机器人速度
v = 1;%在编码器中,每一时间刻度
vr = v;
vl = v;
%机器人参数
wheelbase = 15.25;%cm
%机器人大小
wid = 5;
len = 5;
r = sqrt((wid/2)^2 + (len/2)^2);
tcorn = [atan2(wid len) atan2(wid -len) atan2(-wid -len) atan2(-wid len)atan2(wid len)];
rx = zeros(1 5);
ry = zeros(1 5);
%预绘图以启用动画
b = plot(rx ry‘linewidth‘ 2 ‘color‘ ‘m‘);%小车形状
xvect = [0 0];
yvect = [0 0];
c = plot(xvect yvect ‘c‘ ‘linewidth‘ 3);%小车上面那一条杠
% 导航控制器参数
kt = 1*v; %theta gain
ka = 5; %吸引增益
km = 15; %动量增益
kr = 12000; %排斥增益
kdiff = 0.6; %上卷力矩增益
dzero = 20; %与墙的零效果距离
searchradius = 20; %在所有方向搜索矢量加法的框
lookahead = 5; %何时在终点停车
%% 模拟器
tcom = 0;
tcomold = 0;
tcor = 0;
tend = 0;
while(1)
%% 导航控制器
%End location attraction终点位置
vxend = XEND - xbot;%终点坐标减去起点坐标
vyend = YEND - ybot;
dend = sqrt(vxend^2+vyend^2);%计算直线距离
xatt = vxend/dend;%sinA
yatt = vyend/dend;%cosA
%统一动量
xmom = cos(tbot);
ymom = sin(tbot);
%用于外部搜索的离散机器人位置
xi = floor(xbot/BOXWIDTH)+1;
yi = floor(ybot/BOXHEIGHT)+1;
%搜索并求和所有局部排斥向量
xstart = xi-searchradius;
if xstart<1
xstart = 1;
end
ystart = yi-searchradius;
if ystart<1
ystart = 1;
end
xend = xi+searchradius;
if xend>ROW
xend = ROW;
end
yend = yi+searchradius;
if yend>COL
yend = COL;
end
xrep = 0;
yrep = 0;
for i = xstart:xend
for j = ystart:yend
if mapgrid(i j)>0
x = (i-1)*BOXWIDTH;
y = (j-1)*BOXHEIGHT;
vxobs = (xbot+12*cos(tbot)) - x;
vyobs = (ybot+12*sin(tbot)) - y;
dobs = sqrt(vxobs^2+vyobs^2);
if dobs xrep = xrep+(((1/dobs)-(1/dze
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4793 2020-04-05 17:27 Robot obstacle avoidance\avoidtest.m
目录 0 2020-04-05 17:28 Robot obstacle avoidance\
相关资源
- 四旋翼MATLAB仿真文件+实验报告
- 串行级联cpm系统MATLAB仿真
- 高灵敏度GPS接收机MATLAB仿真,附捕获
- 阵列天线的matlab仿真
- MATLAB 经典程序源代码大全
- MATLAB小波软阈值去噪代码33473
- 天线阵的波束形成在MATLAB仿真程序及
- 《MATLAB 智能算法超级学习手册》-程序
- 读取txt文件内容matlab代码实现
- 算术编码解码matlab源代码
- OFDM系统MATLAB仿真代码
- 图像小波变换MatLab源代码
- 细胞图像分割matlab代码
- 基于MP的时频分析MATLAB代码
- 工程优化问题的Matlab实现代码
- WCDMA matlab代码
- CRC循环冗余校验的matlab仿真程序
- 数字图像处理radon matlab变换算法代码
- 数字信号处理 理论算法与实现 胡广书
- 激光谐振腔课程设计(matlab)exe及源
- (7,4)循环码-信道编码的matlab仿真
- 基于harris算法的角点检测matlab原代码
- 北邮Matlab实验报告和代码
- 图像降噪Matlab代码
- matlab人脸识别和特征提取
- 圣诞树(matlab代码)
- 心音信号处理分析(附matlab代码)
- MIMO雷达DOA估计中的克拉美罗界计算
- Boost电路的MATLAB仿真
- 基于气动力的导弹姿态控制(附MATL
评论
共有 条评论