宾夕法尼亚大学:Robotics: Computational Motion Planning Week 2 Configuration Space

视频笔记

位形空间 configuration Space(之前我博客都是配置空间)。就是无障碍时机器人工作空间,以及有障碍时候,对障碍进行膨胀后的空间(这里我个人理解好像有点问题)。如图:
在这里插入图片描述
右边障碍物位姿空间,是由障碍物形状,和机器人形状共同造成的。然后再右边的空间进行寻找路径。

视频2.2是一个二自由度的机械臂的例子,也是障碍物位形空间。
视频2.3是在二自由度基础上,加入了小车的旋转。也就是三个自由度了。而且把旋转角度当做了z轴,数学上可以理解,但是画成图就看不太懂了。

然后就是在位形空间规划路径的三种方法,出发点都是,在连续的位形空间中进行规划,然后用不同的方法在图形中重构,再用Dijkstra或者A*算法。
这段话没太明白,感觉就是,把位形空间转为图,然后去用那些算法进行搜索
包括:2.4可视图;2.5 分割成梯形 (维诺图?) 2.6 碰撞检测

可视图:连接任意的两个顶点,判断是否会与障碍物相交。然后再用Dijkstra或者A*

拆分为梯形:以x轴或者y轴上,多边形顶点进行分割。分割为多个梯形,然后选择中点代表每个梯形。这样任意两个相邻的都是可以到达的。检测起点和终点在哪个梯形里,然后进行Dijkstra或者A*。
碰撞检测:碰撞函数进行检测,将障碍物和机器人分割为多个三角形,由此碰撞问题转为检测三角形是否有重叠。然后检测2个三角形6个边,是否有边能够使得两个三角形在两侧。有,就是不重叠。

还有一个假设,假设两个点都是未碰撞的,则连线也不会碰撞。但是这个是在分辨率较高的时候可以。

Code of Week2

碰撞检测这块,Kin_Zhang的程序,在他博客中。主要就是,如果一个点在三角形内部,则由四个点构成的面积和等于三角形面积,在之外就是大于。如图。

在这里插入图片描述
然后就是检测三个点是否都在外部。如果都在,表示无重叠。这里需要检测两次,否则会出现三个点都在内部

flag = PointIn(P1,P2);
if(flag==false)
   flag = PointIn(P2,P1);  %这里就是说检测两次的那部分
end

    function Point = PointIn(P_1,P_2)
        base = [P_1 ones(3,1)];
        base_area = 0.5*det(base);
        Point = false;
        for i=1:3
            Area = abs(Cal_area(P_2(i,:),P_1(1:2,:)));
            Area = Area + abs(Cal_area(P_2(i,:),P_1(2:3,:)));
            Area = Area + abs(Cal_area(P_2(i,:),[P_1(1,:);P_1(3,:)]));
            if Area == base_area
               Point = true;
               break;
            end
        end
    end
    function Area = Cal_area(point1, point2)
        Area = 0.5*det([[point1;point2] ones(3,1)]);
        
    end

另外在Kin_Zhang博客中提到的那个bug,是因为现在可以穿过边界的。这是由于变量是角度,0°和360°是一样的。这里应该是因为这是机械臂的原因,如果是移动小车,还是不能够穿过边界的。至于把其中一个设置为0,因为有两个,所以障碍还是不会减少。

input_map(:, 181) = [];
input_map(181, :) = [];%181的原因,是因为之前的地图应该是分辨率为2°,0:2:360.

%为了让其能穿过四个边,所以周围应该是设置为不是障碍。所以为0,同时0°和360°应该是一样的。所以设置为0不会影响。

其他博主方面写的很好了。非常感谢!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值