基于几何图形法的障碍物机器人环境搭建的总结

本文介绍两种在Matlab中绘制集合障碍物图的方法。第一种方法利用contourf函数绘制填充轮廓图,第二种方法通过求解曲线相交点并填充区域来实现。此外,还介绍了Matlab中cell数组及zeros函数的基本用法。

1    绘制集合障碍物图的方法(很多种)

%-----------------------------------------方法一:contourf(曲线因为求max,存在缺省不连续问题)------------------------

[x,y] = meshgrid(linspace(-4,4));

v1_1 = cat(6,x-2-y,0.5-y,-x+2-y,y-x-1,y-2.5,y+x-5);%全部化成<=0的不等式

v1_1 = max(v1_1,[],6);
contourf(x,y,-v1_1,[0,0]);
colormap(display_color);

%----------------------------------------方法二:曲线相交(迭代时间较长,因为solve)

syms x y;

[x1_1,y1_1] = solve(x-2-y == 0,0.5-y == 0,x,y);
[x1_2,y1_2] = solve(0.5-y == 0,-x+2-y == 0,x,y);
[x1_3,y1_3] = solve(-x+2-y == 0,y-x-1 == 0,x,y);
[x1_4,y1_4] = solve(y-x-1 == 0,y-2.5 == 0,x,y);
[x1_5,y1_5] = solve(y-2.5 == 0,y+x-5 == 0,x,y);
[x1_6,y1_6] = solve(x-2-y == 0,y+x-5 == 0,x,y);

plot(x1_1,y1_1,x1_2,y1_2,x1_3,y1_3,x1_4,y1_4,x1_5,y1_5,x1_6,y1_6);

X1_1 = [x1_1,x1_2,x1_3,x1_4,x1_5,x1_6,x1_1];
Y1_1 = [y1_1,y1_2,y1_3,y1_4,y1_5,y1_6,y1_1];
h = fill(X1_1,Y1_1,'c');
hold on;


2    对于matlab中的cell的使用
 >>a = cell(1,5)
 a =
  1×5 cell array

    []    []    []    []    []

>>a(:) = {[0]}
a =
  1×5 cell array

    [0]    [0]    [0]    [0]    [0]

>> a(1) = {[5]}
a =
  1×5 cell array

    [5]    [0]    [0]    [0]    [0]

3    对于zeros的使用,a = zeros[m,n];        m*n维的0阵

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值