大家在做仿真的时候移动机器人不可避免的会与环境的中物体发生碰撞,碰撞发生后如果不终止这一回合的训练,那么即便是达到了训练效果,但是这条路径其实是无意义的。那么我们就应该在移动机器人或者机械臂运动的过程中加入碰撞检测,一旦发生了碰撞就立刻终止这一回合的训练。接下来我将介绍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。具体写法如下:
自此,是否发生碰撞的检测已经写完了。文章中有许多不足的地方,欢迎大家指出!