机器人学 —— 轨迹规划(Configuration Space)

  之前的轨迹规划中,我们只考虑了质点,没有考虑机器人的外形与结构。直接在obstacle map 中进行轨迹规划,然而世纪情况中,机器人有固定外形,可能会和障碍物发生碰撞。此情况下,我们针对机器人自由度进行建模,给定其运动空间,如果是扫地机器人,那么其自由度是x-y的平移,如果是N自由度机械臂,其自由度是电机转角,我们针对此自由度,构建Configuration Space 并在其中使用A* 或者DJ 算法进行轨迹规划。

  

1、干涉碰撞检查

  构建 Configuration Space 任务的pipeline 如下:空间离散化 --- 干涉碰撞检查 --- 生成 Obstacle Map --- Motion Plan.

  所以,其核心的核心就是干涉碰撞检查,检查 Configuration Space 中的点,会不会导致机器人与障碍物碰撞。 干涉碰撞检测的方法是将机器人与物体进行三角化,并利用三角重叠检测的方法来对物体碰撞进行检查。

  

  两个三角形共有6条边,如果存在某条边,使得顶点分别位于边的两边则两个三角形未发生碰撞。代码如下:

P{1} = P1;
P{2} = P2;

linesP1(1,:) = cross([P1(2,:) 1],[P1(3,:) 1]);
linesP1(2,:) = cross([P1(1,:) 1],[P1(3,:) 1]);
linesP1(3,:) = cross([P1(1,:) 1],[P1(2,:) 1]);
Lines{1} = linesP1;

linesP2(1,:) = cross([P2(2,:) 1],[P2(3,:) 1]);
linesP2(2,:) = cross([P2(1,:) 1],[P2(3,:) 1]);
linesP2(3,:) = cross([P2(1,:) 1],[P2(2,:) 1]);
Lines{2} = linesP2;

Result_Judge = zeros(3,1);

    lines = Lines{1};
    for line_idx = 1:3
        line = lines(line_idx,:);
        Point_Tri = [P{1}(line_idx,:) 1]*line‘;
        for point_idx = 1:3
           Result_Judge(point_idx) =  [P{2}(point_idx,:) 1]*line‘;
        end
        if Point_Tri>0 && all(Result_Judge<0)
             flag = false;
             return
        elseif Point_Tri<0 && all(Result_Judge>0)
             flag = false;
             return
        end
    end

    lines = Lines{2};
    for line_idx = 1:3
        line = lines(line_idx,:);
        Point_Tri = [P{2}(line_idx,:) 1]*line‘;
        for point_idx = 1:3
           Result_Judge(point_idx) =  [P{1}(point_idx,:) 1]*line‘;
        end
        if Point_Tri>0 && all(Result_Judge<0)
             flag = false;
             return
        elseif Point_Tri<0 && all(Result_Judge>0)
             flag = false;
             return
        end
    end

flag = true;

  此算法的缺点是非常非常慢。而且由于需要使用流进行判断,不方便GPU并行处理。我正在思考如何利用异构并行实现碰撞检测。

2、轨迹规划

  对于机械臂而言,轨迹规划算法与平面机器人差异并不大,但是需要注意的是,机械臂的关节角可以认为是360度的。具体体现在可以从Configuration Space 的另一头穿越出来。如下:

  

时间: 2024-11-03 03:45:29

机器人学 —— 轨迹规划(Configuration Space)的相关文章

机器人学 —— 轨迹规划(Artificial Potential)

今天终于完成了机器人轨迹规划的最后一次课了,拜拜自带B - BOX 的 Prof. TJ Taylor. 最后一节课的内容是利用势场来进行轨迹规划.此方法的思路非常清晰,针对Configration Space 里面的障碍物进行 DT变换,用DT变换值作为罚函数的输入,让机器人尽可能的远离障碍物,同时再终点设计抛物面函数,让机器人有向终点靠近的趋势.最后所获得的就是机器人的一种可行运动轨迹.由于此轨迹是梯度下降的,并且罚函数是连续的,所以如果机器人不陷入局部最优,那么就可以获得全局最优路径(我本

机器人学 —— 轨迹规划(Sampling Method)

上一篇提到,机器人轨迹规划中我们可以在 Configuration Space 中运行A* 或者 DJ 算法.无论A* 还是DJ 算法,都必须针对邻域进行搜索,如果2自由度则有4邻域,2自由度则有8邻域.如果是工业上常用的6自由度机器人,那么就有2^6邻域......显然,对于轨迹规划这种串行算法而言,这么高维度的搜索空间是不合适的.......于是就有了牺牲精度,鲁棒性,但是效率较高的基于采样的轨迹规划算法.PRM(probabilistic road map).使用PRM生成稀疏的路径图,再

机器人学 —— 轨迹规划(Introduction)

轨迹规划属于机器人学中的上层问题,其主要目标是计划机器人从A移动到B并避开所有障碍的路线. 1.轨迹计划的对象 轨迹规划的对象是map,机器人通过SLAM获得地map后,则可在地图中选定任意两点进行轨迹规划.暂时不考虑三维地图,以平面二维图为例,map主要有以下几种: 如上所示,二维图可以分为有权重的节点图以及无权重的网格图.以飞行机器人移动为例:如果场地上每个部分移动所消耗的能量都是等价的,则可以使用网格图进行建模.如果在不同的区域移动所消耗的能量不同,则应该使用节点图来进行建模. 2.轨迹规

机器人关节空间轨迹规划--S型速度规划

关节空间 VS 操作空间 关节空间与操作空间轨迹规划流程图如下(上标ii和ff分别代表起始位置initial和目标位置final): 在关节空间内进行轨迹规划有如下优点: 在线运算量更小,即无需进行机器人的逆解或正解解算 不受机器人奇异构型影响 可以根据机器人或驱动器手册直接确定最大速度或力矩 其缺点是对应操作空间的轨迹无法预测,增加了机械臂与环境碰撞的可能.例如,考虑下面的二连杆机构,关节运动的限制为:0°≤θ1≤180°0°≤θ1≤180°,0°≤θ2≤150°0°≤θ2≤150° 下图中,

机械臂的运动规划

如果你想要让机器人能帮你拿瓶子.做饭.收拾屋子等,就必须赋予机器人快速生成无碰撞.最优运动轨迹的能力,这就需要靠运动规划了.有人觉得运动规划已经很成熟了,无需再研究,但实际上,机械臂运动规划非常难-- 如 果你想要让机器人能帮你拿瓶子.做饭.收拾屋子等,就必须赋予机器人快速生成无碰撞.最优运动轨迹的能力,这就需要靠运动规划了.有人觉得运动规划已经很 成熟了,无需再研究,但实际上,机械臂运动规划非常难,之所以这么难,主要是因为规划问题的维度太高(具体后面分析),目前暂无兼顾实时性与最优性的规划 算

RRT路径规划算法概述

本文主要记录本人之前调研过在三维复杂环境下的路径规划算法. RRT快速随机搜索树 快速扩展随机树(Rapidly-exploring Random Trees,RRT)算法,是近十几年得到广泛发展与应用的基于采样的运动规划算法,它由美国爱荷华州立大学的Steven M. LaValle教授在1998 年提出.RRT 算法是一种在多维空间中有效率的规划方法.原始的RRT 算法是通过一个初始点作为根节点,通过随机采样,增加叶子节点的方式,生成一个随机扩展树,当随机树中的叶子节点包含了目标点或进入了目

PRM路径规划算法

路径规划作为机器人完成各种任务的基础,一直是研究的热点.研究人员提出了许多规划方法:如人工势场法.单元分解法.随机路标图(PRM)法.快速搜索树(RRT)法等.传统的人工势场.单元分解法需要对空间中的障碍物进行精确建模,当环境中的障碍物较为复杂时,将导致规划算法计算量较大.基于随机采样技术的PRM法可以有效解决高维空间和复杂约束中的路径规划问题. PRM是一种基于图搜索的方法,它将连续空间转换成离散空间,再利用A*等搜索算法在路线图上寻找路径,以提高搜索效率.这种方法能用相对少的随机采样点来找到

机器人学 —— 机器人感知(Mapping)

对于移动机器人来说,最吸引人的莫过于SLAM,堪称Moving Robot 皇冠上的明珠.Perception 服务于 SLAM,Motion Plan基于SLAM.SLAM在移动机器人整个问题框架中,起着最为核心的作用.为了专注于Mapping,此章我们假设 Location 是已知的. 1.Metric Map 轨迹规划任务是再Metric Map的基础上完成的.当然,层次最高的是语意图,语意图是未来研究的热点方向.获取Metric Map 的难度最大之处在于:1.传感器噪声(May be

机器人学 —— 机器人感知(Location)

终于完成了Robotic SLAM 所有的内容了.说实话,课程的内容比较一般,但是作业还是挺有挑战性的.最后一章的内容是 Location. Location 是 Mapping 的逆过程.在给定map的情况下,需要求取机器人的位姿. 1.Location 的意义 在机器人导航任务中,location 可以告诉机器人目前位置,以方便闭环控制或者轨迹规划.一般情况下,Location 可以通过GPS,WIFI 等方式完成.GPS的定位精度在3.5米左右,WIFI则大于10米.对于机器人.无人汽车而