当前位置:   article > 正文

ROS进阶功能—ROS - MATLAB_可以在ros中运行matlab程序吗

可以在ros中运行matlab程序吗

ROS进阶功能—ROS - MATLAB


众所周知Matlab是一款强大的数据处理工具,在科研、教学、商业领域广泛应用,不管你从事哪个行业的工作,多多少少都会用过或者听说过这款工具。Matlab有一个吊炸天的工具箱,几乎和哆啦A梦的口袋差不多,可以提供丰富而强大的扩展功能,其中有一个robotics工具箱,提供了一些机器人需要用到的工具,当然也包括ROS相关的工具。

一、 ROS - MATLAB是什么

Matlab中的robotics system toolbox提供了ROS的大部分功能,可以通过Matlab启动rosmaster,创建ROS节点,发布ROS消息/服务,查看ROS话题数据,控制ROS机器人等,更重要的是可以结合Matlab强大的功能,实现机器人算法设计和实现,直接接入ROS系统,结合gazebo或者V-REP完成仿真。我们将这个Matlab中的ROS工具包简称为ROS-MATLAB。
以下框图就是ROS-MATLAB和机器人系统的通信框架,可以看到,Matlab拥有强大而丰富的算法功能包(视觉处理、控制系统、信号处理等等),通过ROS-MATLAB可以获取机器人的数据,在处理之后再将控制指令发送到机器人。简而言之,ROS -MATLAB让Matlab成为了机器人强大的计算后台。
在这里插入图片描述
值得注意的是,ROS-MATLAB在Matlab2013之后的版本才有,而且需要Matlab安装robotics system toolbox,可以登录官网链接下载安装。

二、ROS - MATLAB可以做什么

那么ROS-MATLAB到底可以实现哪些ROS的功能?我们还是打开Matlab看一下。
在Matlab的命令窗口中,输入“help robotics.ros”,如果工具箱没有问题的话,可以看到如下命令列表,每个命令后边都进行了相应功能的说明:
在这里插入图片描述
可以看到,ROS - MATLAB 提供了ROS大部分的命令。
首先通过一个简单的例子对ROS-MATLAB有个大致的概念。
第一步是把roscore跑起来,在ubuntu里使用的是roscore命令,而在Matlab里边,我们需要使用rosinit命令。
在这里插入图片描述运行成功会有上图的提示。
然后运行例程 exampleHelperROSCreateSampleNetwork,输入命令后稍等一下例程就会启动,使用rosnode、rostopic 命令就可以查看节点和消息。
在这里插入图片描述

三、连接Matlab和ROS

上边的例程中,完全是在Matlab中运行了ROS master和node,在实际使用中,还是需要将Matlab连接到ROS系统的网络中。

1、确定IP地址

首先需要确定运行matlab和运行ROS的两台计算机的IP地址(必须在同一网络下)。
运行matlab的win7计算机:使用ipconfig命令,找到有线网络的IP如下。
在这里插入图片描述
ROS运行在虚拟机中,通过bridge的方式联网,使用ifconfig命令,找到网络IP如下。
在这里插入图片描述

2、在Matlab中设置IP

然后,在ubuntu中运行roscore,在matlab中设置ROS master的路径,类似于多计算机运行ROS系统时候的配置。
配置命令如下:
在这里插入图片描述

3、ROS->Matlab

现在路径已经配置完成,检查通讯是否建立。在ubuntu中启动一个talker:

rosrun roscpp_tutorials talker
  • 1

接着在matlab中查看topic:
在这里插入图片描述
可以看到,matlab 中已经可以找到talker发布的topic了,可以使用echo命令来查看具体的message数据。

4、Matlab->ROS

Matlab同样可以编写节点并发布数据,一个简单的talker实现如下,也可以在matlab的.m文件里保存下边的命令运行。
在这里插入图片描述
如果用.m文件保存命令的话,可以将上面的所有命令写到一个.m文件中:

%Setting ROS_MASTER_URI
setenv('ROS_MASTER_URI','http://192.168.1.202:11311')
 
%Starting ROS MASTER
rosinit
 
%Creating ROS publisher handle
chatpub = rospublisher('/talker', 'std_msgs/String');
 
%This is to create the message definition
msg = rosmessage(chatpub);
 
%Inserting data to message
msg.Data = 'Hello, From Matlab';
 
%Sending message to topic
send(chatpub,msg);
 
%Latching the message on topic
latchpub = rospublisher('/talker', 'IsLatching', true);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

然后在matlab中打开该文件,点击菜单栏中的“Run”即可运行。
在这里插入图片描述
在ubuntu系统中查看话题列表和消息内容:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/665950
推荐阅读
相关标签
  

闽ICP备14008679号