ROS探索总结(五十三)—— ROS与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版本。

image

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

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

  1. $ cd vrep
  2. $ ./vrep.sh

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

image

 

二、配置ROS接口

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

image

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

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

  1. $ git clone https://github.com/CoppeliaRobotics/ros_bubble_rob2
  2. $ git clone https://github.com/CoppeliaRobotics/vrep_skeleton_msg_and_srv.git
  3. $ git clone https://github.com/CoppeliaRobotics/vrep_plugin_skeleton.git
  4. $ git clone --recursive https://github.com/CoppeliaRobotics/v_repExtRosInterface.git

然后在终端设置vrep的路径,并且编译工作空间

  1. $ export VREP_ROOT=~/path/to/v_rep/folder
  2. $ catkin build

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

image

 

三、启动vrep

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

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

  1. $ roscore
  2. $ ./vrep.sh

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

image

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

image

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

 

四、集成测试

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

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

image

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

image

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

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

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

image

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

image

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

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

image

和小海龟订阅的Twist消息不同,“小红”订阅了两个话题,分别对应于两个驱动电机的速度,在终端中发布如下命令,即可控制“小红”移动,差速就要自己来控制啦。

  1. $ rostopic pub /leftMotorSpeed2084567 std_msgs/Float32 "data: 1.0"
  2. $ rostopic pub /rightMotorSpeed2084567 std_msgs/Float32 "data: 0.5"

OK!今天就测试到这里,后续我们再进一步通过ROS控制vrep中的机器人实现仿真。

 

注:以上内容,也可以查看vrep自带的帮助文档:/vrep/helpFiles/en/rosTutorial.htm

 


原创文章,转载请注明: 转载自古月居

本文链接地址: ROS探索总结(五十三)—— ROS与VREP的集成

微信 OR 支付宝 扫描二维码
为本文作者 打个赏
pay_weixinpay_weixin

评论

15条评论
  1. Gravatar 头像

    培旺 回复

    古月老师,请问在catkin build命令下出现如下错误原因是什么?如何解决?
    Failed << vrep_ros_interface:cmake [ Exited with code 1 ]
    Failed <<< vrep_ros_interface [ 3.4 seconds ]
    Abandoned <<< vrep_plugin_skeleton [ Unrelated job failed ]
    Finished <<< vrep_skeleton_msg_and_srv [ 5.4 seconds ]
    Finished <<< ros_bubble_rob2

    • 古月

      古月 回复

      @培旺 这个不清楚,我编译的时候没有这个问题,google搜下吧

  2. Gravatar 头像

    LL 回复

    胡老师您好,我catkin build编译显示成功后,在/deve/lib/下没有找到两个库,请问是什么原因呢?

    • 古月

      古月 回复

      @LL 应该是这个包没变编译成功,在按照编译过程检查一下

  3. Gravatar 头像

    左天一 回复

    胡老师您好,请问,在哪里能查到相关的matlab与ros联合仿真的资料

  4. Gravatar 头像

    左天一 回复

    您好,请问matlab与ros如何建立联合仿真

  5. Gravatar 头像

    ros小白 回复

    胡老师请问 export VREP_ROOT=~/path/to/v_rep/folder中的路径是设置到vrep的安装路径对吧?,另外我发现catkin build这个指令好像不能用了,出现了The build space at '/home/xxx/ros_ws/build' was previously built by 'catkin_make'. Please remove the build space or pick a different build space.的问题。我用cakin_make后也报错了

    • 古月

      古月 回复

      @ros小白 把之前用catkin_make编译过的build和devel删掉,重新用catkin build编译就行了

      • Gravatar 头像

        ros小白 回复

        @古月 胡老师,我现在利用vrep中robot文件下的lumibot机器人模型,安装了加速度计和陀螺仪,在script中写好了vrep与ros的通信节点。请问,现在我怎么才能发布一条指令来控制机器人前进一米呢?我只要点击开始仿真按钮,lumibot机器人就会自动转圈,但这不是我想要的控制目标。

        • 古月

          古月 回复

          @ros小白 如果没有发送ros指令,机器人不应该运动的,先检查是不是有什么地方没配置好。可以参考《ros by example》那本书,有一个控制机器人前进1m的程序。

  6. Gravatar 头像

    Kid 回复

    老师,请问那个你尝试过将kinect和rplidar A2的数据融合,然后利用gmapping建立地图么?目前我是利用ira_laser_tools中的laser_multi_merger包去融合/scan_kinect和/scan_laser的数据,产生/scan_multi。但是融合过后,通过rviz查看/scan_multi,其中只有kinect对应角度范围内的数据。

    • 古月

      古月 回复

      @Kid 这个我没用过,看下是不是需要配置什么角度范围的参数

    • Gravatar 头像

      回复

      @Kid 你好,请问您融合成功了吗,具体配置是怎么样的,可以分享一下吗

发表评论

电子邮件地址不会被公开。 必填项已用*标注