大部分内容参考书籍《Lentin Joseph – Mastering ROS for Robotics Programming》
环境:
Ubuntu18.04
、
ROS Melodic
、
V-REP 3_6_2
1、下载解压
V-REP3_6_2
wget https://coppeliarobotics.com/files/V-REP_PRO_EDU_V3_6_2_Ubuntu18_04.tar.xz
将下载好的压缩包,解压到工作目录下并重命名为V-REP,我的是在主目录下:/home/b
在主目录下Crtl+T打开终端,输入:
sudo gedit ~/.bashrc
在bashrc文件最后 加入代码:
export VREP_ROOT=/home/b/V-REP
2、V-REP提供以下模式从外部应用程序控制模拟机器人:
1、远程API(Remote API):
由几个可以调用的函数组成,使用C/ c++、Python、Lua或Matlab开发的外部应用程序。远程API与V-REP通过网络交互,使用socket通信。可以在c++中集成远程API或Python节点,以便将ROS与仿真场景连接起来。所有远程api的列表可在Coppelia Robotics网站上找到:http://www.coppeliarobotics.com/helpFiles/en/remoteApiFunctions.htm。要使用远程API,必须同时实现客户端和服务器端:
V-REP客户端:客户端驻留在外部应用程序中。它可以在ROS节点或用一种受支持的编程语言编写的标准程序。
V-REP服务器:该端在V-REP脚本中实现,并允许模拟器执行以下操作接收外部数据与仿真场景交互。
2、RosPlugin:
实现了直接连接用ROS通信系统模拟物体场景。使用这个插件,可以自动应用订阅的消息并从场景对象发布主题以获取信息或控制模拟机器人。
3、RosInterface:
在最新版本的V-REP中引入,该接口将在未来的版本
取代RosPlugin
。与RosPlugin不同的是,这个模块复制了API的c++函数允许ROS和V-REP通信。
下面将讨论如何使用RosPlugin与V-REP交互
首先是编写ROS通信桥。必须在ROS工作空间添加两个包:vrep_common和vrep_plugin。下面是获取方式:
git clone https://github.com/jocacace/vrep_common.git
git clone https://github.com/jocacace/vrep_plugin.git
使用catkin_make命令编译这些包。
如果报错,将报错信息进行搜索一下,一般都能解决。也可以评论区大家一起讨论。
如果一切正常:
创建vrep_plugin共享库:libv_repexvs。所以。这个文件位于devel/lib/目录下。这个文件位于devel/lib/目录下。为了使V-REP能够使用这个库,我们需要将它复制到主库中vrep文件夹中:也就是VREP文件夹中。
cp devel/lib/libv_repExtRos.so $VREP_ROOT
该库允许V-REP在启动时连接roscore的活动实例,并将其转换为ROS链接到框架的节点。因此,要将V-REP与ROS连接起来,必须执行一个roscore实例在启动V-REP之前。要测试是否一切正常,请启动roscore并启动V-REP软件:
roscore
$VREP_ROOT/vrep.sh
成功:
运行 rostopic list
测试:
打开rosInterfaceTopicPublisherAndSubscriber.ttt ,点击运行,新建终端 rostopic list 查看 话题
订阅查看,结果如下:
rosrun image_view image_view image:=/image