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

57 篇文章 48 订阅
27 篇文章 31 订阅

本教程作者:小鱼
公众号:鱼香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那样与坐标轴对齐。

左ABB与右OBB|来源:cnblog-lyggqm

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+(比赛奖金)
目前在输出机器人学习指南、论文注解、工作经验,欢迎大家关注小鱼,一起交流技术,学习机器人

ROS MoveIt是一个用于机器人操作的软件框架,其中包含了一些常用的规划算法,例如RRT(快速随机树),用于机械臂的路径规划碰撞检测是MoveIt框架的一个重要功能,用于避免机械臂在执行路径时与障碍物发生碰撞。 在MoveIt中使用RRT进行碰撞检测的过程大致如下: 1.建立机械臂运动规划场景:在ROS环境中,根据机械臂运动学模型和环境设定,使用MoveIt框架创建机械臂规划场景。这包括定义机械臂的关节和末端执行器的运动限制,以及环境中的障碍物。 2.定义机械臂路径:使用RRT算法定义机械臂的路径规划,即指定机械臂的起始姿态和目标姿态,然后通过RRT算法生成一条连接两者的路径。RRT算法会在工作空间中进行随机采样,通过逐步扩展采样点来生成路径,直到到达目标姿态。 3.碰撞检测:在生成路径的过程中,对每个路径上的关节姿态进行碰撞检测。MoveIt使用机械臂的碰撞模型和环境中的障碍物模型进行碰撞检测。如果在路径上有碰撞,MoveIt会通过调整路径或重新生成路径来避免碰撞。 4.路径优化和执行:根据需求,可以对生成的路径进行优化,以提高路径的质量和执行效率。优化过程可以包括减少路径的长度、姿态调整等。最后,将优化后的路径加载到机械臂控制器中执行。 在MoveIt中使用RRT进行碰撞检测可以有效避免机械臂与障碍物的碰撞,提高机械臂的路径规划和执行的安全性和可靠性。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值