pybullet中的碰撞检测-getContactPoints

大家在做仿真的时候移动机器人不可避免的会与环境的中物体发生碰撞,碰撞发生后如果不终止这一回合的训练,那么即便是达到了训练效果,但是这条路径其实是无意义的。那么我们就应该在移动机器人或者机械臂运动的过程中加入碰撞检测,一旦发生了碰撞就立刻终止这一回合的训练。接下来我将介绍pybullet中的getContactPoints方法:

首先就是getContactPoints所需要输入的参数是什么

bodyA的id,bodyB的id,bodyA的link的索引,bodyB的link的索引,physicsClientId一般不用考虑。并且这五个参数是随意的,并非都要输入的参数。物体的id可以在加载模型的时候就能获取到具体为

由于pybullet库中没有获取link索引的函数,只有getjointinfo获取关节索引的符号,所有我建议大家可以多试试,然后集思广益。

了解到这些参数的意义后,下面介绍如何使用getContactPoints,我所用的方法就是输入bodyA的id,bodyB的id,如果想获悉到具体那个link发生了碰撞可以输入到那个link的索引。紧接着将函数进行bool()处理,因为getContactPoints返回的参数有许多,使用bool,即接触返回TRUE,否则返回FALSE。具体写法如下:

自此,是否发生碰撞的检测已经写完了。文章中有许多不足的地方,欢迎大家指出!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值