最近在做一个MATLAB+ROS+Coppeliasim联合仿真作业时遇到一点弯路,这里主要记录一下心得
任务主要为在MATLAB内编写控制状态机,使用simulink块中的ROS发布接收消息,这一步只需要拖动块就好,主要注意的是消息类型搭配的函数计算。
MATLAB通信ROS
这一步由于我自己使用的是双系统,在ubuntu内MATLAB通信ROS非常简单,只需要先启动
roscore
然后在matlab里面输入
rosinit
即可启动连接,这时在新终端内输入
rosnode list
查看ros节点,如果出现了matlab全局节点,说明连接成功
如果想结束连接,需要在matlab中输入
rosshutdown
Coppeliasim通信ROS
本人使用ubuntu版本如下:
Coppeliasim版本为CoppeliaSim_Edu_V4_6_0_rev4_Ubuntu20_04,是从官网下载的目前最新的版本。Coppeliasim和ROS通信也有一个我非常喜欢的博主汤姆与贝塔写过,我此次也是依照他的博客运行,但是应该是版本问题,其中有一些操作我自以为是的搞错了哈哈,实质非常简单。这里主要是使用sim_rosinterface,在这个github链接里面有详细的步骤。
我自己出错的地方在于,我最开始下载的是4.1.0版本,里面没有programming/ros_package这个文件夹,而4.6.0版本下有这个文件夹,并且包含了rosinterface,因此我最开始把这个文件夹放到了和coppeliasim文件夹一样的父文件夹里,再catkin build就出错了。
解决办法为:直接在coppeliasim同父文件夹的地方git clone,然后按照上面github地址里面的操作操作一遍就成功了,这时再GitHub - CoppeliaRobotics/simROS
rosnode list
会发现出现了coppeliasim的节点,通信成功。