• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

听说你只会用Gazebo仿真?

人工智能 罗伯特祥 2662次浏览 0个评论

首先我必须得承认Gazebo功能有多强大,然而对于大多数刚入门的新手来说,使用Gazebo仿真的时候各种参数的配置简直让人头疼,一不小心终端就是一片“爆红”!所以今天就给大家推荐另外一款机器人仿真软件——Webots。经历了20年商业许可的它,2018年终于以开源的身份面向广泛的机器人爱好者,让我们一起来了解一下吧!

Webots到底有多好用?

  “地表最强”我不敢说,但它绝对是能够帮我们快速实现算法验证的好助手,它可以支持C/C++、Python、MATLAB、Java、ROS和TCP/IP等多种方式实现模型的仿真控制。不仅如此它还内置了50多种机器人模型,涵盖了人形机器人、移动机器人、单臂移动机器人、双臂移动机器人、爬行机器人、机械臂、无人机等等,其中就包括大家比较熟悉的Boston Dynamics Atlas、DJI Mavic 2 PRO、Nao、PR2、YouBot、UR、Turtlebot3 Burger等机器人。如果只是用来验证算法,我们连机器人建模都省了呢!你可以用它让你的机器人欢快的在水中遨游,可以用它让你的“好奇号”在火星漫步,可以用它让你的机器人扫地拿东西等等。  
听说你只会用Gazebo仿真?
听说你只会用Gazebo仿真?
听说你只会用Gazebo仿真?          
听说你只会用Gazebo仿真?
听说你只会用Gazebo仿真?     哦对了,如果你想验证你的自动驾驶算法,内置的BMW、Tesla等模型足以快速搭建起你需要的实验平台。另一方面,webots还集成了很多商用传感器(Hokuyo、SICK等品牌的激光雷达,Kinect摄像头等),我们直接导入相应的节点就可以了,是不是很方便呢?  
听说你只会用Gazebo仿真?
听说你只会用Gazebo仿真?  

如何建模呢?

如果想用自己的机器人仿真,应该怎么办呢?   目前来说有三种方法可以供我们选择:   (1)使用webots模型树建模 这种方法最麻烦,对于简单的模型我们可以使用它来解决,对于比较复杂的模型,例如有机械臂连杆这种不规则表面的模型,祥哥推荐你使用下面两种方法。   (2)使用SolidWorks等三维建模软件导出VRML(*.wrl) webots环境建模是用一种虚拟现实建模语言VRML(Virtual Reality Modeling Language)来描述的,因此我们可以使用三维软件导出这种格式。以SolidWorks为例,使用SolidWorks完成建模以后,将其另存为VRML(*.wrl)文件。由于SolidWorks装配体的装配关系在转换成*.wrl后装配关系会消失,因此我们需要在webots模型树进行重新装配。零部件的导入,使用webots【文件】中的【Import VRML97】功能实现。  
听说你只会用Gazebo仿真?


 

避坑指南: ①  建议使用单个零部件分别导入,装配体整体导入时会存在一些坐标系移位的问题。 ②  导出零部件前先简化一下特征,去掉多余的孔、倒角、圆角之类的特征,避免特征过多导致仿真卡顿或者webots闪退的情况。

以一根圆柱link1为例,另存为VRML(*.wrl)文件时需要注意默认导出的是VRML 1.0,而该版本的文件导入webots是会报错的,因此我们单击选项,设置输出版本为VRML 97,单位:,下方的输出坐标系选中建好的坐标系。  
听说你只会用Gazebo仿真?
听说你只会用Gazebo仿真?


  此处输出坐标系的选择,会影响到我们装配时的便捷程度,在webots中零部件的移动是以自身坐标系为基准的。   举个栗子,杆link1的坐标系设置如下图:
听说你只会用Gazebo仿真?


  假设我们使用默认坐标系输出的VRML文件为link1_base.wrl,使用杆心坐标系1输出的VRML文件为link1.wrl,导入webots后分别命名为link1_base、link1,效果对比如下:  
听说你只会用Gazebo仿真?
听说你只会用Gazebo仿真?


对于零部件的装配,我们在下次的《webots建模指南》中仔细讲解。

(3)使用urdf/xacro转换 对于已有或只有urdf/xacro文件的情况下,我们可以通过urdf2webots功能包实现。由于官网现有包有些问题,我们在此使用已有可用版本的源码包。在使用前需要先配置该功能包的运行环境,切换到功能包urdf2webots的目录下,终端执行如下命令:   pip install -r requirements.txt  

避坑指南: ①  在urdf2webots功能包目录下执行以上命令时,由于网络问题可能会终端“爆红”,多运行几次或者切换到手机热点即可解决。 ②  目前官方github的urdf2webots包转换的模型,导入软件后会报错,推荐使用祥哥提供的包,链接在文末。

  使用方法: python urdf2webots.py --input=yourSelfRobotModel.urdf  
听说你只会用Gazebo仿真?
听说你只会用Gazebo仿真?


避坑指南: 不要使用除input参数以外的output等其他参数,也不要修改生成的yourSelfRobotModel.proto文件名称!!!

  生成的*.proto文件位于urdf2webots功能包目录下。  
听说你只会用Gazebo仿真?


  接下来我们将生成的*.proto文件导入webots,先单击空白世界(除地面、模型以外的地方),然后在模型树上方点击
听说你只会用Gazebo仿真?,或者使用快捷键Ctrl + Shift + A,在PROTO nodes(Current Project)项的说明部分查看要放置的目录,如下图所示。根据提示将yourSelfRobotModel.proto文件复制到指定目录下的/protos文件夹下即可。  
听说你只会用Gazebo仿真?
听说你只会用Gazebo仿真?          


避坑指南: 目录会因为你保存的世界文件*.wbt文件所在位置不同而不同,复制前需要注意!

  再次打开PROTO nodes(Current Project)项我们可以看到,已经多了两项我们转换成功的模型:  
听说你只会用Gazebo仿真?   添加完成后发现模型处于倾倒状态,我们可以通过rotation将其姿态调正:  
听说你只会用Gazebo仿真?  

避坑指南: 此状态下保存完工程文件后,再次打开后会发现两个机器人模型会消失,因此需要将其转换为基本节点。具体操作如下:选中模型,右击选择Convert to Base Node(s)即可。

  当你点击
听说你只会用Gazebo仿真?开始仿真时,会发现机器人会疯狂往下掉,这是由于自动转换的模型没有设置边界条件,每个Solid中都有一个boundingObject节点,碰撞检测就是靠它实现的,具体设置同样留个悬念,而对于上图中控制台的警告就是由于没有设置边界条件所造成的。  
听说你只会用Gazebo仿真?


  模型建完了,相信你已经迫不及待的想让它动起来吧!别着急,我先卖个关子,看看屏幕前好学的你能不能解决这个问题~   读万卷书,也要行万里路!我是罗伯特祥,下次见!


  本文涉及到项目文件链接:https://share.weiyun.com/5StRIeM  


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明听说你只会用Gazebo仿真?
喜欢 (0)

您必须 登录 才能发表评论!

加载中……