3

iGibson:Python就能玩的3D环境仿真

 2 years ago
source link: https://blog.csdn.net/L010409/article/details/123047720
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

iGibson:Python就能玩的3D环境仿真

车厘子@ 于 2022-02-21 16:08:15 发布 938
同时被 2 个专栏收录
71 篇文章 6 订阅

今天小编给大家带来一个来源于李飞飞大佬团队的3D仿真环境iGibson。iGibson通过Python就能调用,在ROS中可直接观察,阿chai推荐做机器人、3D以及模型构建的小伙伴可以尝试,iGibson中的物理引擎是真的很强。

想领取完整源码跟Python学习资料可点击这行字体

我们先看一段有关iGibson的介绍。

iGibson是一个仿真环境,可基于Bullet提供快速的视觉渲染和物理仿真。iGibson配备了15个完全交互式的高质量场景,从真实的房屋和办公室重建的数百个大型3D场景,并与CubiCasa5K和3D-Front等数据集兼容,提供了8000多个附加的交互式场景。iGibson的一些功能包括域随机化,与运动计划器集成以及易于使用的工具来收集人类演示。借助这些场景和功能,iGibson允许研究人员训练和评估使用视觉信号来解决导航和操纵任务(例如开门,捡起和放置物体或在橱柜中搜索)的机器人代理。

环境搭建

系统要求如下:

  • Ubuntu 16.04

  • 具有VRAM> 6.0GB的Nvidia GPU

  • Nvidia驱动程序> = 384

  • CUDA> = 9.0,CuDNN> = v7

  • CMake> = 2.8.12(可以安装pip install cmake

1. pip安装

可以使用pip将iGibson的模拟器安装为python软件包:

iGibson支持自定义pybullet版本来加快物理速度,如果要加快速度,则在安装后需要执行以下步骤:

2. Docker安装

Docker版本至少为v19.0,并启用本机GPU。接下来,使用iGibson回购中的脚本下载我们的预构建图像:

将下载两个图像:

  • igibson/igibson:latest:不支持GUI。

  • igibson/igibson-gui:latest:支持VNC进行GUI和远程桌面。

提供以从头开始构建图像的脚本:

3. 自己编译源码

源码编译需要Anaconda

iGibson支持自定义pybullet版本来加快物理速度,如果要加快速度,则在安装后需要执行以下步骤:

数据下载、测试

首先,配置iGibson(机器人代理,对象,3D环境等)存储位置。它在your_installation_path/gibson2/global_config.yaml

存储数据的默认位置是:

 如果使用默认路径,则无需执行任何操作,否则可以运行以下脚本:

python -m gibson2.utils.assets_utils --change_data_path

直接运行以下下载脚本:

 需要从数据集中下载一些大型的3D重构现实世界环境(例如房屋和办公室),并将路径设置为your_installation_path/gibson2/global_config.yaml(默认和推荐:your_installation_path/gibson2/data/g_datasetyour_installation_path/gibson2/data/ig_dataset)。通过填写以下许可协议来访问和下载Gibson和iGibson数据集。也可以下载一个小型环境进行演示。

要下载演示数据,请运行:

python -m gibson2.utils.assets_utils --download_demo_data

可以使用以下命令下载完整的Gibson和iGibson数据集,此脚本将自动下载,解压缩数据集并将其放置到正确的位置。URL填写协议表格后将获取。

下载iGibson数据集:

python -m gibson2.utils.assets_utils --download_ig_dataset

 下载Gibson数据集(需要获得协议签名URL)

python -m gibson2.utils.assets_utils --download_dataset URL

测试是否正确安装了gibson2,可以运行:

通过运行测试脚本测试:

terminal中将看到如下输出:

物理引擎与渲染

1. 渲染器

iGibson中使用自己开发的MeshRenderer,它支持可自定义的相机配置和各种图像模式,并以超快的速度进行渲染,可以在的构造函数中指定图像的宽度,高度和垂直视场以及调用以检索图像。iGibson支持六种不同的图像模态:RGB,表面法线,分割,3D点云(z通道可以提取为深度图),光流和场景流。我们还支持两种类型的LiDAR传感器:1光束和16光束(例如Velodyne VLP-16)。大部分代码可以在gibson2 / render中找到。class MeshRenderer``renderer.render(modes=('rgb', 'normal', 'seg', '3d', 'optical_flow', 'scene_flow'))

接下来使用几行代码渲染了一个iGibson场景:

newCodeMoreWhite.png

 渲染结果将如下所示:

可以使用PBR演示测试基于物理的渲染器。渲染iG数据集中包含的任何对象,例如,此处显示一个接收器,因为它包含不同的材质。需要构建文件夹,因为它将加载该文件夹中的所有对象。

 效果如下:

同样可以结合Pytorch,测试例子如下(需要了解Pytorch):

newCodeMoreWhite.png

2. 物理引擎测试

iGibson使用PyBullet作为基础物理引擎,可以准确有效地模拟机器人和关节物体的刚体碰撞和关节致动。由于使用iGibson构建的MeshRenderer进行渲染,使用PyBullet进行物理模拟,因此需要始终保持同步。

通常在使用场景时,对象和机器人p.createMultiBody并将p.loadURDF其加载到PyBullet中,用于p.resetBasePositionAndOrientation设置机器人和对象的基本姿势,p.resetJointState设置机器人和关节对象的关节位置以及p.setJointMotorControl2控制机器人和关节对象。

下面代码将场景,机器人和对象导入PyBullet并逐步仿真:

newCodeMoreWhite.png

将看到PyBullet界面,界面中包含一个Turtlebot机器人和一个蓝色的罐子。

ROS中使用iGibson

ROS包含了很多驱动以及算法的实现,因此需要利用ROS软件包来完善机器人应用程序。iGibson与ROS集成有三个关键应用。

  • 在可控的逼真的仿真环境中对现有算法进行基准测试。从而可以将基于学习的方法与模拟环境中的传统方法进行比较。

  • 将仿真中的机器人与现实世界中的机器人进行比较。在模拟中,iGibson可以模拟机器人的传感器并发布为消息。在现实世界中,真正的机器人会发布传感器消息。因此,可以仅更改订阅的消息并基准测试下游应用程序的性能。这有助于定位域间隙和调试算法。

  • 在仿真中使用ROS功能,例如许多运动计划的实现。

我们测试一下斯坦福官方提供的iGibson与ROS集成进行导航的示例。这是一个ros软件包,它将iGibson Env与ros导航堆栈集成在一起。

  1. 安装ROS:在此软件包中,使用ros dynamic的导航堆栈。

  2. 由于ROS目前仅支持python2.7,因此您需要创建python2.7虚拟环境而不是python3.x。因此需要源码编译,请参考上文。

  3. 如果您使用annaconda设置python环境,则需要对PATH和进行一些调整PYTHONPATH以避免冲突。特别是:

    echo $PATH | grep -oP "[^:;]+" | grep conda ## Remove these paths from $PATH
    
    1. 对于PYTHONPATH/usr/lib/python2.7/dist-packages//opt/ros/kinetic/lib/python2.7/dist-packages(ROS python库),(gibson依赖项)并且需要位于中。<anaconda installation root>/anaconda2/envs/py27/lib/python2.7/site-packages``<gibson root>``PYTHONPATH

    2. 对于PATH:conda相关的需要从中删除PATH

  4. 将gibson-ros文件夹复制(或软链接)到您的文件夹中,catkin_ws/src然后运行catkin_make来索引gibson-ros软件包。

安装gibson2-ros依赖项:

rosdep install gibson2-ros

检查demo:

运行gibson + ros的demo:

将看到如下效果:

Gmapping的效果如下:

消息订阅与节点可以通过ROS中的指令查询,这里不再演示。

这期就到这里结束啦~~希望对你们有些许帮助!!

喜欢的话记得给小编个三连再走也不迟啦~~


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK