gazebo之actor标签行人添加碰撞属性

一、问题描述

按照之前的教程,我们能够实现在gazebo环境环境中添加actor标签,可以是人或者是立方体等,并且让其按照我们既定的轨迹来运动。

但是问题又来了。添加的actor就像幽灵一样,随意穿越机器人,而且无法被雷达检测到。

根本原因是,actor没有碰撞属性。

开始解决问题之前,我们首先确保各自版本和环境。

  • ROS melodic
  • gazebo 9

二、解决办法

1. gazebo的插件

使用gazebo提供的对应插件实现碰撞检测功能。

如果是默认安装的话,gazebo所有插件的安装位置:

/usr/lib/x86_64-linux-gnu/gazebo-9/plugins

进入对应链接,能看到很多插件:

gazebo之actor标签行人添加碰撞属性_第1张图片我们要解决的问题,需要用到的插件:

  1. libAttachModelPlugin.so
    这个插件能够将actor绑定在一个model上,这个model本身是有碰撞属性的,所以actor也就有了。

  2. libActorCollisionsPlugin.so
    比如面向的actor是人物模型,那么该模型本身就有很多关节。这个插件能够将人体每个部件做精细的描绘。实现更准确的碰撞仿真。


然而,ros自带gazebo下载好后,并没有这两个插件,我们需要自行下载。

第二个比较精细的插件,我在官网找到了资源,我传到CSDN中,不用积分,方便大家下载。
link

第一个我还没找到对应插件,不过第一个肯定没有第二个好用,我也懒得再找了。

2. 安装插件并在gazebo中使用

按照常规流程编译插件:

    mkdir build
    cd build
    cmake ..
    make

然后我们可以在build目录下看到对应的插件:

在这里插入图片描述

使用sudo将插件拷贝到我们之前提到的gazebo插件目录里:

sudo cp libActorCollisionsPlugin.so /usr/lib/x86_64-linux-gnu/gazebo-9/plugins

OK! 我们测试下是否可行:

gazebo actor_collisions.world

之后我们就可以按照actor_collisions.world中的写法,照猫画虎,在自己的actor标签中,添加对应插件了!

参考文献

https://github.com/osrf/gazebo/tree/gazebo11/examples/plugins/actor_collisions
https://github.com/BruceChanJianLe/gazebo-actor
https://blog.csdn.net/tanjia6999/article/details/102629735

你可能感兴趣的:(ROS学习)