从零开始的仿真之旅——在Ubuntu下配置V-Rep仿真平台下的搭载ROS系统的机器人仿真

目录

    • 目录
    • 第一步 在Windows下完成下列步骤
    • 第二步 安装并配置Ubuntu1604LTS
    • 第三步 安装仿真软件V-rep V-REP 340
    • 第四步 安装ROS
    • 第五步配置RosInterface
    • 第六步配置vrep_ros_bridge可选
    • 第七步运行仿真
    • 其他遇到的问题
      • E1 ros中图像上下颠倒的问题
      • E2 激光传感器穿墙问题
      • E3 3d地图在vrep中拖动是会闪线条很粗糙成锯齿形
      • E4 生成3d地图后地图能明显地看出由一个个三角形组成
      • E5 机器人和场景mesh不能相撞而是直接穿过
      • E6 用vrep自带的2D激光雷仿真特别卡
    • 附录

第一步 在Windows下完成下列步骤

  1. 分区。将需要分给Linux系统的空间单独划分出来(100G+)**
  2. 下载并制作Ubuntu16.04的U盘启动盘

第二步 安装并配置Ubuntu16.04LTS

  1. 安装双系统。先重启电脑,启动时按F12进入U盘启动。选择刚才分出来的磁盘进行分区创建等后续操作。分区的可行方案如:
分区 空间分配
/ ext4 Pri- 总空间的1/3
/boot ext4 Logi- 200M
swap swap Logi- 4G
/home ext4 Logi- 剩余空间

2. 修改更新源。可搜索“ubuntu16.04源”,根据指引更改 sources.list内容,并联网更新。

可参考:http://www.genshuixue.com/i-cxy/p/15379828

关于联网: 在Ubuntu系统下难以连接有线网的情况下(如公司环境),可外接 USB无线网卡解决问题。

第三步 安装仿真软件V-rep (V-REP 3.4.0+)

  1. 将(下载 / 拷贝)来的V-REP_PRO_EDU_V3_4_0_Linux.tar.gz文件解压到home
  2. 修改文件夹名字(建议简短,方便呼叫。如 vrep)
可以启动试试:
$ cd vrep/
$ ./vrep.sh
 3.  现在可以参考手册学习啦!

该软件的详细手册可见:http://www.coppeliarobotics.com/helpFiles/
建议多看Shortcuts、Command line、Tutorials

第四步 安装ROS

  • 我们选择的是ROS Kinetic Kame ,点开链接按照指示即可安装。
  • 继续学习:http://wiki.ros.org/ROS/Tutorials
    • 需要至少完成beginner level。
    • 关于这点,在V-REP User Manual中的ROS tutorial 有提到

第五步:配置RosInterface

  • RosInterface是V-rep官方推荐的用来跟ROS通信的插件
  • 将 /VREP/compiledRosPlugins 中的libv_repExtRosInterface.so库复制到/VREP下,再启动。
    • 若遇到下面问题,需要重新编译该库:

Plugin ‘RosInterface’: loading… /home/bamboohuang/vrep/vrep: symbol
lookup error: /home/bamboohuang/vrep/libv_repExtRosInterface.so:
undefined symbol: _ZN3ros4initERiPPcRKSsj

  • 重新编译该库的流程:

    • 首先需要安装一些相关的软件包:
      sudo apt install git cmake python-tempita python-catkin-tools python-lxml default-jre xsltproc
    • 参考V-REP User Manual 中的ROS tutorial – Indigo。

      FYI:生成的文件主要在/devel/lib和 /src//bin中

    • 参考V-REP User Manual → writing code in and around V-REP → V-REP API framework → ROS interface

  • 若遇到问题:

    Plugin ‘RosInterface’: loading… ROS master is not running. Cannot
    start ‘ROS’ plugin.

    请先启动ROS,再启动V-REP (即应先执行 roscore命令,再执行vrep.sh)

  • 若遇到问题

    Plugin ‘RosInterface’: loading… this plugin requires at least V-REP
    3.4.0 rev9

    你使用的应该是github上最新的版本,这对V-REP的版本要求较高。建议参考上面提到的ROS tutorial–Indigo,直接用自带的vrep/programming/ros_packages中的文件复制到catkin_ws/src/下进行编译;
    当然也可以下载最新版本V-REP:www.coppeliarobotics.com/files/tmp

  • 若遇到下面问题,原因可能是没有正确安装interface:

    Lua runtime error: [string “SCRIPT **“]:32: attempt
    to call global ‘simExtRosInterface_publish’ (a nil value) stack
    traceback: [string “SCRIPT **“]:32: in main chunk

  • 打开vrep 时若显示下面方框内的内容,则说明RosInterface 安装成功:
    从零开始的仿真之旅——在Ubuntu下配置V-Rep仿真平台下的搭载ROS系统的机器人仿真_第1张图片

第六步:配置vrep_ros_bridge(可选)

  • vrep_ros_bridge是ROS官方推荐的用来跟V-rep通信的插件,所有需要的文件与相关指引都可以查看github:https://github.com/lagadic/vrep_ros_bridge
  • 安装步骤按照上面网址中的InstallationPlugin部分进行即可。如果不知道如何建立catkin workspace,可以回到第四步复习。
  • 打开vrep 时若显示下面方框内的内容,则说明RosInterface 安装成功:
    从零开始的仿真之旅——在Ubuntu下配置V-Rep仿真平台下的搭载ROS系统的机器人仿真_第2张图片
    根据需求可做安装上的调整,可能会有细微差别。
    安装后可对照历例程测试:http://wiki.ros.org/vrep_ros_bridge#Installation_test

第七步:运行仿真

  • 首先运行roscore,然后打开vrep,确保所有上述插件安装并加载成功。
  • Open scene ,可以打开对应的 .ttt 文件。如果已经有现有工程,可以打开对应的ttt;没有的话,可以打开软件目录下的例程(参考Tutorial)

  • 此时可以尝试在ROS侧获取vrep场景中的传感器数据,可以尝试下面的语句:
    (注意将“/”后的topicname替换成自己的)

 rostopic list
 rostopic echo /laser_radar 
 rqt_image_view 或者 rosrun image_view image_view image:=/zed_depth_image
(为什么看到的图像是颠倒的?解决方案见E1)
  • 控制量的输入
    rosrun rqt_publisher rqt_publisher 

其他遇到的问题:

E.1 ros中图像上下颠倒的问题

  • 问题原因:传输的data是字符串,ros收到后按照数组的方式转换为矩阵。
  • 解决方案:可以在传输前对要传输的数据进行预处理,“颠倒”了再发送给ROS。
    可以参考后面附录里的Lua参考手册。
    从零开始的仿真之旅——在Ubuntu下配置V-Rep仿真平台下的搭载ROS系统的机器人仿真_第3张图片

E.2 激光传感器穿墙问题

从零开始的仿真之旅——在Ubuntu下配置V-Rep仿真平台下的搭载ROS系统的机器人仿真_第4张图片
- 原因是范围参数设置不对。如下所示参数太大,改小到正常值就行。
从零开始的仿真之旅——在Ubuntu下配置V-Rep仿真平台下的搭载ROS系统的机器人仿真_第5张图片

E.3 3d地图在vrep中拖动是会闪,线条很粗糙,成锯齿形

  • 问题原因:vrep中显示使用opengl进行渲染的,opengl存储的数据为float型,如果使用的是double类型的,就会发生数据的截断。
  • 解决方案:将数据改用float类型存储

E.4 生成3d地图后,地图能明显地看出由一个个三角形组成

  • 问题原因:用两个三角形去表示一个四个点组成的面时,没有考虑面的方向问题,导致生成的三角形方向不一致
  • 解决方案:在生成.obj文件时,由f行代表的边使其顺时针或者逆时针保持一致,从而使得生成的三角形面方向一致

E.5 机器人和场景mesh不能相撞,而是直接穿过

  • 问题原因:相关属性没有设置正确
  • 解决方案:分别设置机器人和场景的如下属性:Shape->Show dynamic properties dialog,勾选Body is respondable,同时勾选Local responable mask,使两者有重合部分即可。

E.6 用vrep自带的2D激光雷,仿真特别卡

  • 问题原因:该激光雷达激光雷达是用一个joint和一个测距传感器然后转动扫描构成,扫描使得速度变慢。
  • 解决方案:可以换成Hokuyo URG 04LX UG01_fast.ttm模型。该激光雷达是由两个只有一行的深度摄像头组成,速度快很多。

附录

(一些或许对你有用的链接)

Ubuntu常用快捷键:

Ctrl+Alt+T
Alt+Tab
长按super可以看到快捷按键提示 : )

安装中文sogo输入法:
http://blog.csdn.net/u013894834/article/details/60357071
更新源
http://www.genshuixue.com/i-cxy/p/15379828
V-REP下载
http://www.v-rep.eu/downloads.html
V-rep手册
http://www.coppeliarobotics.com/helpFiles/
ROS安装
ROS Kinetic Kame:http://wiki.ros.org/kinetic/Installation
ROS Tutorials
http://wiki.ros.org/ROS/Tutorials
vrep_ros_bridge
https://github.com/lagadic/vrep_ros_bridge
Create a ROS Workspace (catkin)
http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment
roscore err: IOError: [Errno 13] Permission denied
http://blog.csdn.net/yngki/article/details/53098804
Lua 5.3 参考手册
http://cloudwu.github.io/lua53doc/contents.html
Lua的string和string库总结:
http://www.cnblogs.com/zrtqsk/p/4372889.html

特别感谢徐宽的支持与帮助~

你可能感兴趣的:(探索心得)