本教程作者:小鱼
公众号:鱼香ROS
QQ交流群:139707339
教学视频地址:​​小鱼的B站​​ 官网:​​鱼香ROS官网​​ 版权声明:如非允许禁止转载与商业用途。
如何将碰撞检测用于机械臂运动规划(一)_碰撞检测


鱼香快报

特斯拉机器人开始招聘了。据外媒报道,美国当地时间周二,电动汽车制造商特斯拉在其招聘页面上发布了与特斯拉人形机器人(Tesla Bot)项目相关的诸多新岗位。这些工作绝大多数都在加州,除了一个位于得克萨斯州奥斯汀。

特斯拉还发布了许多2022年夏天的实习职位,移动机器人方面的相关岗位包括自主性、软件工程、控制工程、固件工程和电气工程等。

碰撞检测与运动规划

大家好,我是小鱼,很早之前发过关于碰撞检测相关的文章,给大家介绍fcl库的python包装python-fcl的简单使用,但并未将其应用在机械臂上做过相关的测试,所以从本篇文章小鱼就从fcl库和一些基础的操作讲起,带你一起了解如果实现机械臂的碰撞检测。

1.碰撞对象与包围盒

fcl支持多种碰撞对象的碰撞检测,常见的几何体都是支持的,Box、Cylinder、Sphere等。

在机械臂中我们常用的是可能是BVHModel,原因是我们常把机械臂的关节模型文件导出为STL格式

将STL模型的三角形数据解析到FCL中就可以使用BVHModel来表示,BVH定义了层次包围盒的格式,全拼:Bounding Volume Hierarchies(BVH)

包围盒的概念很重要,常见的包围盒有AABB、OBB等,FCL目前实现的只有AABB类型的检测,但OBB也被写到TODO List中了

所以想使用FCL,我们需要简单了解一下先AABB和OBB。

2.AABB与OBB包围盒

在后面的fcl使用过程中我们会用到这样一个AABB动态碰撞检测管理器


fcl.DynamicAABBTreeCollisionManager()


这里的AABB(Axis-aligned bounding box)指的就是一种包围盒类型,包围盒又是什么?可以理解为包装盒,那AABB指的是轴对齐包装盒(Axis-aligned bounding box),也就是包装盒的方向和坐标系的轴平行。

那OBB又是什么样子的呢?OBB指的是Oriented Bounding Box,即有方向的包装盒,所以OBB包装盒的轴不需要像AABB那样与坐标轴对齐。

如何将碰撞检测用于机械臂运动规划(一)_fcl_02

3.包装盒可以做什么

这个FCL已经告诉我们了,可以做碰撞检测。

我们检测两个物体是否碰撞可以先对其包装盒进行检测,看看有没有相交的区域,有再进行进一步的计算。

4.碰撞对象

在fcl中用于检测是否发生碰撞的对象就是碰撞对象CollisionObject,碰撞对象的生成就是用过机械臂的模型文件和其位置生成的。

geom = self._get_BVH(gparam)
t = fcl.Transform(transform[:3, :3], transform[:3, 3])
o = fcl.CollisionObject(geom, t)

5.划重点


  1. 碰撞对象(CollisionObject)是检测碰撞的单位 CollisionObject通过几何形状和位置生成的
  2. fcl最常用的碰撞检测管理器是DynamicAABBTreeCollisionManager
  3. CollisionObject是可以注册或注销到碰撞检测管理器
  4. DynamicAABBTreeCollisionManager采用的是AABB类型的碰撞检测


技术交流&&问题求助:


  • 微信公众号及交流群:鱼香ROS
  • 小鱼微信:AiIotRobot
  • QQ交流群:139707339
  • 版权保护:已加入“维权骑士”(rightknights.com)的版权保护计划

作者介绍:

我是小鱼,机器人领域资深玩家,现深圳某独脚兽机器人算法工程师一枚

初中学习编程,高中开始接触机器人,大学期间打机器人相关比赛实现月入2W+(比赛奖金)

目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小鱼,一起交流技术,学习机器人