System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于SDF函数的机械臂碰撞检测方法技术_技高网
当前位置: 首页 > 专利查询>浙江大学专利>正文

一种基于SDF函数的机械臂碰撞检测方法技术

技术编号:40533263 阅读:9 留言:0更新日期:2024-03-01 13:54
本发明专利技术公开了一种基于SDF函数的机械臂碰撞检测方法。该方法分为两个阶段,离线阶段。包括:构建描述机械臂末端工具可达性的SDF函数;构建描述机械臂各连杆几何形状的SDF函数;构建描述机器人所处工作环境空间几何信息的SDF函数;提取环境障碍物侵入机器人可达空间部分的几何边界。在线阶段包括:查询目标位姿在机械臂末端可达性SDF函数中的符号值判断其可达性;计算各连杆坐标系相对于机器人基坐标系的变换矩阵;对于几何边界中的各点,将其变换至各连杆坐标系下,查询其在连杆几何形状SDF函数中的符号值判断是否与连杆碰撞。本发明专利技术可大大降低机械臂轨迹规划过程中耗时占比最大的碰撞检测阶段的时间,提高轨迹规划的性能。

【技术实现步骤摘要】

本专利技术属于碰撞检测领域,尤其涉及一种基于sdf函数的机械臂碰撞检测方法。


技术介绍

1、在机械臂运动规划领域,经常需要判断机械臂有无与外界环境发生碰撞。这种判断机械臂有无与环境发生碰撞的算法就是碰撞检测方法,其保证了机械臂运行的安全性可靠性。但不同原理的碰撞检测算法技术有着不同的优缺点。

2、目前常见的碰撞检测技术主要有包围盒法,分离轴法等。包围盒法是通过使用立方体,球体,圆柱体等形状将机械臂各个连杆以及障碍物进行包围,然后判断这几个包围盒有无碰撞。包围盒方法简单易懂,但当使用常见的包围盒包围较为复杂的模型时会损失较多的自由空间,导致精度较差使原本不会碰撞的情况被判断为有碰撞;若使用较为复杂的包围盒,如多个三角面片等形状进行包围时,虽能减少自由空间的损失,但会极大增加碰撞检测的耗时。分离轴法的原理是如果两个物体不发生碰撞,则一定存在一个面,能将两个物体分离,这个能够分开两个物体的的面称为分离面,假设有一束平行光从不同角度照射这个两个待测物体,当有一个合适的角度使得两者影子没有重叠时,就找到了分离面,这个方法可以用来检测较为复杂形状的物体也不会损失过多自由空间,但其计算较为复杂,并且只能适用于凸形物体之间的碰撞检测。

3、sdf函数是符号距离函数(signed distance function)的缩写,其是指一种在空间中的一个有限区域上确定一个点到区域边界的距离并同时对距离的符号进行定义的函数。其以隐式的表达方法来描述空间中二维或者三维物体的几何形状,sdf函数常用在二维或者三维的模型表达中。

4、随着机械臂应用场景的逐渐多样化,现有的碰撞检测技术很难做到同时兼顾损失较少的自由空间以及低耗时的检测。


技术实现思路

1、针对现有技术的缺陷,本专利技术提出了一种基于sdf函数的机械臂碰撞检测方法。其目的在于实现当机器人处于工作状态下时对环境进行高精度以及低耗时的碰撞检测。

2、本专利技术的目的主要是通过以下技术方案来实现的:

3、本专利技术一方面公开了一种基于sdf函数的机械臂碰撞检测方法,包括离线阶段和在线阶段;

4、所述离线阶段包括:构建工作空间包围盒、机械臂末端工具可达空间的几何形状sdf函数sdf_ee、机械臂各连杆的几何形状sdf函数sdf_link_i和机器人所处工作环境的几何信息的sdf函数sdf_env;

5、所述在线阶段包括:输入机器人构型和目标位姿,结合sdf_ee和sdf_env,得到机械臂与工作环境融合的sdf函数sdf_ee_new和环境中障碍物侵入机器人可达空间部分的几何边界;

6、根据目标位置和sdf_ee_new的关系判断可达性,若不可达或超出包围盒范围则产生碰撞,然后将几何边界中的点变换到连杆坐标系下,通过查询该点在sdf_link_i中的可达性,若不可达或超出包围盒则产生碰撞,若所有连杆均未碰撞则判定为无碰撞。

7、进一步地,所述离线阶段中的构建机械臂末端工具可达空间的几何形状sdf函数具体为sdf_ee:将整个包围盒均匀地离散化为若干体素并构造体素化网格,将所有体素化网格初始化为负值;

8、遍历机械臂的整个关节空间并根据正运动学将可达的体素化网格标记为正值,若网格为正值且相邻网格存在负值,则将该网格标记为0,代表边界信息;将该系列体素化网格进行存储,即为机械臂末端工具可达空间的几何形状sdf函数sdf_ee。

9、进一步地,所述遍历机械臂的整个关节空间并根据正运动学将可达的体素化网格标记为正值具体为:按照关节的顺序从上到下,每次对一个关节转动一个微小的角度,然后计算这组关节角下机械臂的正运动学解,获得机械臂的末端位置信息,将位置信息在x,y,z方向上栅格化,找到对应的单位体素,并将该体素化网格的sdf值赋正值。

10、进一步地,所述离线阶段中构建机械臂各连杆的几何形状sdf函数sdf_link_i具体为:将整个包围盒均匀地离散化为若干体素并构造体素化网格,将所有体素化网格初始化为负值,将连杆的几何外形信息进行栅格化,在体素化网格中将被连杆占据的体素单元赋正值,将该系列体素化网格进行存储,即得到了单个连杆的sdf函数sdf_link_i。

11、进一步地,所述离线阶段中构建机器人所处工作环境的几何信息的sdf函数sdf_env具体为:将整个包围盒均匀地离散化为若干体素并构造体素化网格,将所有体素化网格初始化为负值,将空间中所有障碍物栅格化,在体素化网格中将被障碍物占据的体素单元赋予正值,若网格为正值且相邻网格存在负值,则将该网格标记为0,代表障碍物的边界信息,该系列体素化网格进行存储,即得到了描述机器人所处工作环境几何信息sdf函数sdf_env。

12、进一步地,所述环境中障碍物侵入机器人可达空间部分的几何边界通过如下步骤实现:

13、将sdf_ee中所有符号值为正值的体素网格,通过机械臂的基坐标系与工作环境的世界坐标系之间的变换矩阵将其变换到工作环境的世界坐标系中,然后检查其对于的体素网格在sdf_env中的sdf值;取sdf_ee和sdf_env返回值中更小的值作为更新后的sdf函数,标记为sdf_ee_new;将sdf_ee_new与sdf_ee对比,其中新增的sdf为0的点集,即为需要提取的环境中障碍物侵入机器人可达空间部分的几何边界。

14、进一步地,所述机械臂的基坐标系与工作环境的世界坐标系之间的变换矩阵通过如下步骤实现:在已知目位姿时根据目标位姿,进行逆运动学解算,得到对应的关节角q,并且计算出各连杆坐标系相对于机器人基坐标系的变换矩阵

15、进一步地,所述机械臂的基坐标系与工作环境的世界坐标系之间的变换矩阵通过如下步骤实现:在已知关节角时,通过正运动学解算出在该组关节角下,机械臂末端的位姿t,以及每个连杆的连杆坐标系相对于世界坐标系的变换矩阵其中i表示连杆编号。

16、进一步地,所述根据目标位置和sdf_ee_new的关系判断可达性具体为:将目标位置栅格化,查询该位置在sdf_ee_new中的符号值来判断其可达性。

17、根据说明书的另一方面,包括传感器,工控机和机械臂,所述传感器用于获取外界信息,所述工控机中存储有可执行代码,其特征在于,所述工控机执行所述可执行代码时,用于实现一种基于sdf函数的机械臂碰撞检测方法。

18、本专利技术的有益效果:

19、第一,本专利技术所提出的碰撞检测方法不会随着障碍物外形不规则化,复杂化而增加耗时和损失自由空间,因此适用于与各种外形的障碍物进行碰撞检测。

20、第二,本专利技术通过构建多种sdf函数将碰撞检测优化为查表工作,将时间复杂度降低到常数级别。

本文档来自技高网
...

【技术保护点】

1.一种基于SDF函数的机械臂碰撞检测方法,其特征在于,包括离线阶段和在线阶段;

2.根据权利要求1所述的一种基于SDF函数的机械臂碰撞检测方法,其特征在于,所述离线阶段中的构建机械臂末端工具可达空间的几何形状SDF函数具体为SDF_ee:将整个包围盒均匀地离散化为若干体素并构造体素化网格,将所有体素化网格初始化为负值;

3.根据权利要求2所述的一种基于SDF函数的机械臂碰撞检测方法,其特征在于,所述遍历机械臂的整个关节空间并根据正运动学将可达的体素化网格标记为正值具体为:按照关节的顺序从上到下,每次对一个关节转动一个微小的角度,然后计算这组关节角下机械臂的正运动学解,获得机械臂的末端位置信息,将位置信息在X,Y,Z方向上栅格化,找到对应的单位体素,并将该体素化网格的SDF值赋正值。

4.根据权利要求1所述的一种基于SDF函数的机械臂碰撞检测方法,其特征在于,所述离线阶段中构建机械臂各连杆的几何形状SDF函数SDF_link_i具体为:将整个包围盒均匀地离散化为若干体素并构造体素化网格,将所有体素化网格初始化为负值,将连杆的几何外形信息进行栅格化,在体素化网格中将被连杆占据的体素单元赋正值,将该系列体素化网格进行存储,即得到了单个连杆的SDF函数SDF_link_i。

5.根据权利要求1所述的一种基于SDF函数的机械臂碰撞检测方法,其特征在于,所述离线阶段中构建机器人所处工作环境的几何信息的SDF函数SDF_env具体为:将整个包围盒均匀地离散化为若干体素并构造体素化网格,将所有体素化网格初始化为负值,将空间中所有障碍物栅格化,在体素化网格中将被障碍物占据的体素单元赋予正值,若网格为正值且相邻网格存在负值,则将该网格标记为0,代表障碍物的边界信息,该系列体素化网格进行存储,即得到了描述机器人所处工作环境几何信息SDF函数SDF_env。

6.根据权利要求1所述的一种基于SDF函数的机械臂碰撞检测方法,其特征在于,所述环境中障碍物侵入机器人可达空间部分的几何边界通过如下步骤实现:

7.根据权利要求1所述的一种基于SDF函数的机械臂碰撞检测方法,其特征在于,所述机械臂的基坐标系与工作环境的世界坐标系之间的变换矩阵通过如下步骤实现:在已知目位姿时根据目标位姿,进行逆运动学解算,得到对应的关节角q,并且计算出各连杆坐标系相对于机器人基坐标系的变换矩阵

8.根据权利要求1所述的一种基于SDF函数的机械臂碰撞检测方法,其特征在于,所述机械臂的基坐标系与工作环境的世界坐标系之间的变换矩阵通过如下步骤实现:在已知关节角时,通过正运动学解算出在该组关节角下,机械臂末端的位姿T,以及每个连杆的连杆坐标系相对于世界坐标系的变换矩阵其中i表示连杆编号。

9.根据权利要求1所述的一种基于SDF函数的机械臂碰撞检测方法,其特征在于,所述根据目标位置和SDF_ee_new的关系判断可达性具体为:将目标位置栅格化,查询该位置在SDF_ee_new中的符号值来判断其可达性。

10.一种基于SDF函数的机械臂碰撞检测装置,包括传感器,工控机和机械臂,所述传感器用于获取外界信息,所述工控机中存储有可执行代码,其特征在于,所述工控机执行所述可执行代码时,实现如权利要求1-9中任一项所述的一种基于SDF函数的机械臂碰撞检测方法。

...

【技术特征摘要】

1.一种基于sdf函数的机械臂碰撞检测方法,其特征在于,包括离线阶段和在线阶段;

2.根据权利要求1所述的一种基于sdf函数的机械臂碰撞检测方法,其特征在于,所述离线阶段中的构建机械臂末端工具可达空间的几何形状sdf函数具体为sdf_ee:将整个包围盒均匀地离散化为若干体素并构造体素化网格,将所有体素化网格初始化为负值;

3.根据权利要求2所述的一种基于sdf函数的机械臂碰撞检测方法,其特征在于,所述遍历机械臂的整个关节空间并根据正运动学将可达的体素化网格标记为正值具体为:按照关节的顺序从上到下,每次对一个关节转动一个微小的角度,然后计算这组关节角下机械臂的正运动学解,获得机械臂的末端位置信息,将位置信息在x,y,z方向上栅格化,找到对应的单位体素,并将该体素化网格的sdf值赋正值。

4.根据权利要求1所述的一种基于sdf函数的机械臂碰撞检测方法,其特征在于,所述离线阶段中构建机械臂各连杆的几何形状sdf函数sdf_link_i具体为:将整个包围盒均匀地离散化为若干体素并构造体素化网格,将所有体素化网格初始化为负值,将连杆的几何外形信息进行栅格化,在体素化网格中将被连杆占据的体素单元赋正值,将该系列体素化网格进行存储,即得到了单个连杆的sdf函数sdf_link_i。

5.根据权利要求1所述的一种基于sdf函数的机械臂碰撞检测方法,其特征在于,所述离线阶段中构建机器人所处工作环境的几何信息的sdf函数sdf_env具体为:将整个包围盒均匀地离散化为若干体素并构造体素化网格,将所有体素化网格初始化为负值,将空间中所有障碍物栅格化,在体素化网格中将被障碍物...

【专利技术属性】
技术研发人员:李高峰林肯程鹏陈积明
申请(专利权)人:浙江大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1