CoppeliaSim添加ROS自定义消息类型

   日期:2021-01-28     浏览:180    评论:0    
核心提示:ROS插件欢迎使用Markdown编辑器下载github历史版本的simExtROS功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。

CoppeliaSim

CoppeliaSim作为具有高扩展性的仿真平台,提供了许多接口,可谓万物皆插件,只要便于生成插件即可。github提供了simExtROS插件的源代码。当自带的ROS插件功能无法满足时,可以修改其源代码,编译生成插件即可。

准备工作

建立ROS工作空间

安装catkin-tools

官网
注意 由于Ubunt 20.04 是Python3,所以使用sudo apt-get install python3-catkin-tools会出现依赖问题。完整过程如下
添加repositories

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list'
wget http://packages.ros.org/ros.key -O - | sudo apt-key add -

安装catkin_tools
注意下面是python3,如果是更低版本的ubuntu系统则用python
sudo apt-get update sudo apt-get install python3-catkin-tools

问题:

解决:看上面图的最下一行,这是缺少一个依赖osrf_pycommon,安装时要同时安装上osrf-pycommon

sudo apt install python3-catkin-tools python3-osrf-pycommon

编写自定义ROS消息包

大家自行查询,这里以我在github下载的阿克曼消息为例

git clone https://github.com/ros-drivers/ackermann_msgs.git ackermann_msgs


在工作空间下编译

编译sim_ros_interface

  1. 下载libPlugin
    注意:libPlugin版本必须与CoppeliaSim的版本相对应,可以下载历史版本

  2. 下载sim_ros_interface
    注意:同libPlugin,版本必须与CoppeliaSim版本相同,可下载历史版本

git clone --recursive https://github.com/CoppeliaRobotics/simExtROSInterface.git sim_ros_interface
  1. 添加自定义消息ackermann_msgs
    修改sim_ros_interface包CMakeLists.txt、package.xml、meta/messages.txt。

  2. 启动roscore

  3. 工作空间下编译
    将sim_ros_interface放在工作空间src下

问题1:COPPELIASIM_ROOT_DIR 路径没设置

解决:在~/.bashrc末尾添加export COPPELIASIM_ROOT_DIR=/home/lyz/sim_ws/src/CoppeliaSim_Edu_V4_1_0_Ubuntu16_04/(具体路径根据自己的CoppeliaSim路径而定)。确认环境变量添加成功,如果添加后还报同样的错误,关闭终端重启即可。

问题2:

解决:这是因为libPlugin不是最新的,需要先下载最新的libPlugin,替换CoppeliaSim里的libPlugin,然后编译会出现新的问题,
按照提示,sudo apt install xsltproc 之后编译便没啥问题了。
6. 参考博客

由于ubuntu 16 18 的ROS都是基于python2,下载的CoppeliaSim版本一定要注意,因此上面的过程不适合,需要在github上下载历史版本的sim_ros_interface, 还有下载对应版本的libPlugin,否则编译会出现很多奇怪错误。下载历史历史版本的github教程。

CoppeliaSim中测试

随便找个场景,订阅消息话题


编译没问题,在终端能看到这个话题

catkin build 与 catkin_make的区别

https://catkin-tools.readthedocs.io/en/latest/migration.html
主要区别是catkin build编译是独立构建的,而catkin_make编译是有依赖的,本例的工作空间下有自定义消息包ackerman_msgs与sim_ros_interface,用catkin_make编译生成的.so插件是有依赖项的,因此将其放在CoppeliaSim下是无法识别ackermann_msgs消息的。而用catkin build编译的包已经将所有需要的依赖添加,相对独立,因此放在CoppeliaSim下是不会出现依赖问题。

除了用catkin build编译,还可以用catkin_make_isolated单独对sim_ros_interface编译,生成的插件效果一样。

教训

一定用按照官方教程来做,否则白白浪费那么多时间,自作聪明用catkin_make可以替代catkin build,结果一直没成功,还是乖乖安装好catkin tools后一下子就成功了。

参考博客

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服