ubuntu下matlab与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

如图,第一个为本地网络的地址,第二个为以太网地址,后者是多机通讯的所需要配置的。
请添加图片描述

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

$ ifconfig

请添加图片描述
之后打开MatLab,配置ROS_MASTER_URI的地址,

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

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

>> rosinit

我是在单机上进行通讯的,若配置ROS_MASTER_URI的地址则使用本地网络的地址,如下图
请添加图片描述
连接成功。

三、简单的初步通讯

3.1 基本指令

MatLab中一些指令

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

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

>> help robotics.ros

在终端中启动小乌龟与键盘控制节点后,如图
请添加图片描述

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,再新建终端,
请添加图片描述
注: 此节内容没有实现MatLab与ROS节点之间的通讯,这是笔者下一步研究的内容。

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

依旧以控制小乌龟为例,如图
请添加图片描述

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值