Coppeliasim中自定义ROS消息的方法整理
有时Coppeliasim中已有的消息不能满足我们的需求,这时我们可以自定义消息,本文整理自定义消息的全过程。
同理可自定义服务
自定义消息的原理分析
前文讲到,我们是通过加载ROS插件才具备了与ROS进行通信的能力
这个插件的位置在:
因此,为了对它进行扩展,我们下载它的源码重新制作插件:CoppeliaRobotics/simROS at melodic (github.com)
该插件默认支持的消息类型在meta/messages.txt
文件中
在上一节中我们可以直接使用消息类型
geometry_msgs::Point32
,就是因为插件中包含了这一选项
自定义消息的操作总结
为了使用自定义的消息类型,我们需要修改文件meta/messages.txt
,CMakeLists.txt
,package.xml
由于我暂无需求,具体修改内容可参考下述博客:
修改完成后,我们使用catkin built -j4
进行编译:
但此时报错:
根据实践,pip install rospkg
等不能解决问题,搜索知道:
这是因为Coppeliasim V4.1.0依赖python3,但是ROS Melodic依赖于python2
要解决这一问题,一个办法是将python升级为python3,但据UP主所说,升级后可能将已有的ROS编译和运行环境破坏,这时需要根据报错进行调整,直到ROS能够正常运行。
参考哔哩哔哩UP主:每一天应不同
另一个办法是将sim_ros_interface
软件包切换到Coppeliasim V4.0.0的版本,使用指令git checkout coppeliasim-v4.0.0
本文所用方法
重新编译,报错:
为此,重新安装这个软件包:sudo apt-get install ros-melodic-tf2-sensor-msgs
再编译,又报错:
根据提示执行:sudo apt install xsltproc
再编译:
大功告成。
找到我们需要的插件~/sim_ws/devel/lib/libsimExtROSInterface.so
,将它替换Coppeliasim安装目录下的同名插件,至此理论上即可正常使用我们所需要的自定义消息。
附录
上文是后期整理的,暂未验证。以下给两个文中未提到的点:
我的cmake版本
COPPELIASIM_ROOT_DIR设置
export COPPELIASIM_ROOT_DIR=/home/zsj/sim_ws/src/CoppeliaSim_Edu_V4_1_0_Ubuntu18_04
参考博客:
CoppeliaSim学习笔记之CoppeliaSim Edu V4.1.0 + Ubuntu 16.04 + ROS Kinetic环境搭建与基础测试