最新消息:380元/半年,推荐全网最具性价比的一站式编程学习平台码丁实验室

ROS探索总结-35.Matlab中的ROS

ROS1/一代机器人系统 少儿编程 2181浏览 0评论
ROS探索总结

友情提示:380元/半年,儿童学编程,就上码丁实验室

本文转载自古月居,原作者古月,原文链接:https://www.guyuehome.com/1006。

ROS探索总结-35.Matlab中的ROS
说明:

  • 介绍ROS-MATLAB的概念和使用方法

ROS-MATLAB是什么

Matlab中的robotics sySTEM toolbox提供了ROS的大部分功能,我们可以通过Matlab启动rosmaster,创建ROS节点,发布ROS消息/服务,查看ROS话题数据,控制ROS机器人等,更重要的是可以结合Matlab强大的功能,实现机器人算法设计和实现,直接接入ROS系统,结合gazebo或者V-REP完成仿真。我们将这个Matlab中的ROS工具包简称为ROS-MATLAB。

ROS探索总结-35.Matlab中的ROS

上边这张框图就是ROS-MATLAB和机器人系统的通信框架,可以看到,Matlab拥有强大而丰富的算法功能包(视觉处理、控制系统、信号处理等等),通过ROS-MATLAB可以获取机器人的数据,在处理之后再将控制指令发送到机器人。简而言之,ROS-MATLAB让Matlab成为了机器人强大的计算后台。

需要注意的是,ROS-MATLAB在Matlab2013之后的版本才有,而且需要Matlab安装robotics sySTEM toolbox,可以登录官网链接下载安装。

ROS-MATLAB可以做什么

在Matlab的命令窗口中,输入“help robotics.ros”,如果工具箱没有问题的话,可以看到如下命令列表,每个命令后边都进行了相应功能的说明:

ROS探索总结-35.Matlab中的ROS

可以看到,ROS-MATLAB 提供了ROS大部分的命令。

  • 首先我们通过一个简单的例子对ROS-MATLAB有个大致的概念。

运行例程的第一步是什么?当然是把roscore跑起来,在ubuntu里我们使用的是roscore命令,而在Matlab里边,我们需要使用rosinit命令。

ROS探索总结-35.Matlab中的ROS

  • 然后我们来运行例程
    exampleHelperROSCreateSampleNetwork,输入命令后稍等一下例程就会启动,使用rosnode、rostopic命令我们就可以查看节点和消息。

ROS探索总结-35.Matlab中的ROS

连接Matlab和ROS

  • 确定IP地址

首先需要确定运行matlab和运行ROS的两台计算机的IP地址(必须在同一网络下)。

本人运行matlab的win7计算机:使用ipconfig命令,找到有线网络的IP如下。

ROS探索总结-35.Matlab中的ROS

ROS运行在虚拟机中,通过bridge的方式联网,使用ifconfig命令,找到网络IP如下。

ROS探索总结-35.Matlab中的ROS

在Matlab中设置IP

然后,在ubuntu中运行roscore,在matlab中设置ROS master的路径,类似于多计算机运行ROS系统时候的配置。

ROS探索总结-35.Matlab中的ROS

  • ROS->Matlab

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

    $ rosrun roscpp_tutorials talker

接着在matlab中查看topic:

ROS探索总结-35.Matlab中的ROS

可以看到,matlab中已经可以找到talker发布的topic了,可以使用echo命令来查看具体的message数据。

** Matlab->ROS**

Matlab同样可以编写节点并发布数据,一个简单的talker实现如下,也可以在matlab的.m文件里保存下边的命令运行。

ROS探索总结-35.Matlab中的ROS

如果用.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);

然后在matlab中打开该文件,点击菜单栏中的“Run”即可运行。

ROS探索总结-35.Matlab中的ROS

在ubuntu中,我们查看topic:

ROS探索总结-35.Matlab中的ROS

您必须 登录 才能发表评论!