< >
Home » ROS探索总结 » ROS探索总结-51.ROS与VREP的集成

ROS探索总结-51.ROS与VREP的集成

ROS探索总结-51.ROS与VREP的集成

VREP 介绍

  • VREP( Virtual Robot Experimentation Platform)是一款瑞士军刀级的机器人仿真软件,包含的功能众多,而且使用方便,在各种系统下都有相应的安装文件。

  • 今天我们就来看看如何将ROS和vrep集成,把两个强大的平台结合到一起。

版本设定:Ubuntu16.04 + ROS Kinetic + vrep3.4

一、下载vrep

  • 第一步是下载vrep软件,登录vrep官网:http://www.v-rep.eu/downloads.html

  • 找到相应版本的下载地址,然后选择Linux版本即可下载。这里选择的是3.4版本。

1

  • 下载完成后的vrep是一个压缩文件,解压该文件后,放置到home路径下(可自定义),重命名为vrep

  • ubuntu下的vrep不需要特意安装,直接在终端下运行如下命令即可启动:

$ cd vrep

$ ./vrep.sh

启动成功的界面如下图所示:

2

二、配置ROS接口

  • vrep提供了一个ROS接口——RosInterface,使用ROS插件搭建了一座vrep和ROS之间的桥梁,其原理如下:

3

  • 不过该插件需要通过编译四个功能包来生成。

  • 创建一个单独的工作空间,将vrep/programming/ros_packages路径下的四个功能包拷贝到工作空间下,或者使用如下命令下载这四个功能包:

$ git clone https://github.com/CoppeliaRobotics/ros_bubble_rob2

$ git clone https://github.com/CoppeliaRobotics/vrep_skeleton_msg_and_srv.git

$ git clone https://github.com/CoppeliaRobotics/vrep_plugin_skeleton.git

$ git clone --recursive https://github.com/CoppeliaRobotics/v_repExtRosInterface.git
  • 然后在终端设置vrep的路径,并且编译工作空间
$ export VREP_ROOT=~/path/to/v_rep/folder

$ catkin build
  • 编译成功后,在/deve/lib/下找到以下两个库,拷贝到vrep根路径下即可。

4

三、启动vrep

  • ROS与vrep集成的配置工作已经完成,接下来就可以启动系统

  • 使用如下命令启动ros master和vrep:

$ roscore

$ ./vrep.sh
  • 在启动vrep的终端中应该可以看到如下RosInterface加载的日志提示:

5

  • 这个时候vrep和ROS已经连接成功,不信可以打印当前系统的话题看看:

6

  • vrep接口相关的话题赫然在目。

四、集成测试

  • 最后就进入到激动人心的测试环节了。vrep中已经自带了几个测试例程。

  • 先来加载第一个仿真场景:

7

  • 然后在显示区会出现很多五颜六色的模型,点击工具栏中的开始按键,启动仿真。vrep场景中的会仿真一个摄像头,并且发布图像话题,在ROS中打开rqt_image_view,订阅图像话题,看看是不是已经有图像出现啦!

8

这里存在一个数据流的问题,导致vrep和ROS中的图像是相反的,可以在vrep端发布数据或者ROS端订阅数据时,对图像数据做一个倒置处理,即可解决问题。

  • 从这个例程中,我们可以看到vrep中的数据可以顺利通过RosInterface发送到ROS端。

  • 接下来将ROS端的数据发送到vrep,一样需要加载仿真场景:

9

  • 场景中有几个可爱的小机器人,每个机器人对应于一个数据来源。开始仿真后,其他几个机器人就开始活跃起来,唯独下图中的红色机器人纹丝不动。

10

  • 从机器人旁边的提示可以看到,“小红”需要通过ROS节点来控制。这让我们想起了ROS中的小海龟。

  • 查看当前ROS系统的话题列表:

11

  • 和小海龟订阅的Twist消息不同,“小红”订阅了两个话题,分别对应于两个驱动电机的速度,在终端中发布如下命令,即可控制“小红”移动,差速就要自己来控制
$ rostopic pub /leftMotorSpeed2084567 std_msgs/Float32 "data: 1.0"

$ rostopic pub /rightMotorSpeed2084567 std_msgs/Float32 "data: 0.5"
  • OK!今天就测试到这里,后续我们再进一步通过ROS控制vrep中的机器人实现仿真。
注:以上内容,也可以查看vrep自带的帮助文档:/vrep/helpFiles/en/rosTutorial.htm

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros探索总结