ubuntu下matlab与ROS进行通讯

文章目录

    • 环境
  • 一、介绍
  • 二、连接
  • 三、简单的初步通讯
  • 3.1 基本指令
  • 3.2 ROS发布消息
  • 3.3 simulink搭建模块订阅ROS发布的主题

环境

Ubuntu 20.04
ROS-Noetic
MatLab R2021a for Linux


在尝试通过ROS来实现使用MatLab中写好的控制算法控制机器人,所以在Ubuntu系统中安装了MatLab,本文介绍初步将MatLab与ROS进行连接。

一、介绍

主要依赖于MatLab中的两个工具箱Robotics System toolbox,ROS toolbox,建议直接安装MatLab R2021a for Linux或者更新的版本,自带这两个工具箱。

二、连接

如果是单机上进行通讯,则无需进行额外的网络配置,会自动在本地网络上连接。

如果非本地连接,则需要配置网络,首先查看ROS所在网络的IP地址,打开终端,键入命令,

$ ip a

如图,第一个为本地网络的地址,第二个为以太网地址,后者是多机通讯的所需要配置的。
ubuntu下matlab与ROS进行通讯_第1张图片

或使用命令(可能需要先安装net-tools工具)

$ ifconfig

ubuntu下matlab与ROS进行通讯_第2张图片
之后打开MatLab,配置ROS_MASTER_URI的地址,

>> setenv('ROS_MASTER_URI', 'http://192.168.1.139:11311')

其中,11311roscore的默认端口,启动ROS时可以看到信息,如果有修改ROS端口,则相应修改上述命令。接着终端启动ROS,然后MatLab中启动ROS,命令为

>> rosinit

我是在单机上进行通讯的,若配置ROS_MASTER_URI的地址则使用本地网络的地址,如下图
ubuntu下matlab与ROS进行通讯_第3张图片
连接成功。

三、简单的初步通讯

3.1 基本指令

MatLab中一些指令

>> rosinit % 启动连接ros
>> rostopic list % 当前发布的主题
>> rosnode list % 当前节点
>> rosshutdown % 关闭断开连接
……

更多指令可以在MatLab的命令窗口中输入指令

>> help robotics.ros

在终端中启动小乌龟与键盘控制节点后,如图
ubuntu下matlab与ROS进行通讯_第4张图片

3.2 ROS发布消息

3.1小节中是ROS发布消息,然后在MatLab中打印查看,本节进行逆向操作。
在MatLab中发布主题/talker,内容为消息’Hello, from MatLab’,

%Setting ROS_MASTER_URI
setenv('ROS_MASTER_URI','http://127.0.0.1:11311'); % 单机通讯可省略此步
%Starting ROS MASTER
rosinit;

%Creating ROS publisher handle
chatpub = rospublisher('talker', 'std_msgs/String');
%Creating 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);

终端中启动ROS,再新建终端,
ubuntu下matlab与ROS进行通讯_第5张图片
注: 此节内容没有实现MatLab与ROS节点之间的通讯,这是笔者下一步研究的内容。

3.3 simulink搭建模块订阅ROS发布的主题

依旧以控制小乌龟为例,如图
ubuntu下matlab与ROS进行通讯_第6张图片

你可能感兴趣的:(ROS,ubuntu,matlab,ros,机器人)