MATLAB2022和ROS的通讯MATLAB2022和ROS的通讯

MATLAB2022b和ROS的通讯 (MATLAB–Windows ROS–虚拟机)

提示1:本次Windows是win10,MATLAB是MATLAB2022b
提示2:虚拟机用的是VMware,ubuntu20.04,对应的ROS版本是noetic
提示2:确保MATLAB安装了Robotics System Toolbox,并更新到最新的版本


一、本次想实现MATLAB发送数据ROS控制小乌龟移动

前言:要把两个强大的工具融合在一起,把ros的数据传输到MATLAB上做计算处理,再把数据传回到ROS


1.连接自己热点


2.关闭防火墙 (Windows 和 Ubuntu)

window端

  1. 先打开自己的控制面板
    在这里插入图片描述
    2.选择 - 系统和安全
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

3.选择-Windows Defender 防火墙
在这里插入图片描述

4.选择- 启用或关闭Windows Defender 防火墙
在这里插入图片描述
a)选择–>关闭防火墙
b)再按–>确定
在这里插入图片描述
Ubuntu端
1.新建一个终端
在这里插入图片描述
2.查看一下自己的防火墙是否关闭

sudo ufw status

在这里插入图片描述

3.关闭防火墙

sudo ufw disable

在这里插入图片描述

提示:打开防火墙的指令是 sudo ufw enable,这里我就不演示了
4.再确认是否关闭防火墙

在这里插入图片描述

要是还不行,重启就OK了 ,beacause重启解决99%的问题-----哈哈哈

提示:到这里第二部分算是完成了


3.虚拟机ubuntu设置成桥接模式

提示1:虚拟机要关机 ,再设置虚拟机,否则会出现意想不到的bug
提示2:这里我本身就设置了桥接模式,你们可以根据我给的步骤(图片)去执行就行了
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


4.查看自己的IP地址并把IP地址写到/hosts

a)查看自己的ip地址

Ubuntu端
新建一个终端,再输入ifconfig

ifconfig

在这里插入图片描述

找到自己的IP地址

在这里插入图片描述

Windows端
Ctrl+R 打开终端,再输入cmd
在这里插入图片描述
再输入ipconfig查询IP地址
在这里插入图片描述

因为我是连接WiFi因此找到无线局域网适配器WLAN
怎么算是判断在同一网段呢?那么这边我随便瞎编一下IP的地址吧,如果之前我们Ubuntu查询的地址为192.168.1.1,那么我的Windows端就一定在192.168.1.x(这里的x为随机的一个值2),因此就可以找到这个IP地址

若想深度理解的话,可以参考这位大佬(淘客有道)的文章
参考链接:
[如何判断两个IP地址是否在同一个网段?什么是子网掩码? - 淘客有道的文章 - 知乎
https://zhuanlan.zhihu.com/p/425228726]
在这里插入图片描述

b)查看用户名

Windows端
找到设置,选择系统
在这里插入图片描述
找到关于
在这里插入图片描述
就可以找到用户名了
在这里插入图片描述

Ubuntus端
新建一个终端,输入ls /home

ls /home  

在这里插入图片描述

则会查看到你的用户

c)把IP地址写到/hosts

Windows端
我的Windows端/hosts在路径
在这里插入图片描述

在这里插入图片描述
打开hosts :
提示1:这里我用的编辑器是notepad++进行编辑,你们可以用记事本的形式
提示2:注意运用管理员身份打开
在这里插入图片描述

根据我们在Windows和Ubuntu查询到的IP地址,我们把它添加到这里
格式是:
这里的IP地址是我假设的,实际情况要看你自己IP地址,因此如有雷同,纯属巧合

#Windows
192.168.1.1		windows用户名
#Ubuntu
192.168.1.2		ubuntu用户名

在这里插入图片描述
Ubuntu端
终端输入

sudo gedit /etc/hosts

根据上述Windows端操作写进去
在这里插入图片描述


5.把Windows端的IP添加到~/.bashrc文件上

输入

gedit ~/.bashrc

在这里插入图片描述

添加下面这句话

export ROS_IP=192.168.1.1 

在这里插入图片描述
保存之后,再更新~/.bashrc文件

在这里插入图片描述


6.ROS和MATLAB的通讯

a) MATLAB在命令行输入

setenv('ROS_MASTER_URI','http://192.168.1.1:11311/');
setenv('ROS_IP','192.168.1.2')  

上面是个模版,实际情况你们自己再填,说完这次就不提示了,太累了

在这里插入图片描述

b) 在ubuntu中运行ros核心

roscore

在这里插入图片描述
在这里插入图片描述

c) 再到MATLAB输入

rosinit

在这里插入图片描述

出现下面代码说明两个都能连通


7.MATLAB发送数据给ROS,控制小乌龟移动

a)首先在ROS启动ros的小乌龟节点

rosrun turtlesim turtlesim_node

在这里插入图片描述

b)用MATLAB查看一下 ros的话题

rostopic list

在这里插入图片描述

c)然后我们新建一个MATLAB实时脚本,输入

learn_turtlesim_pub = rospublisher('/turtle1/cmd_vel', 'geometry_msgs/Twist');
learn_turtlesim_msg = rosmessage(learn_turtlesim_pub);
learn_turtlesim_msg.Linear.X = 10;
learn_turtlesim_msg.Angular.Z = 5;
send(learn_turtlesim_pub, learn_turtlesim_msg);  % 使用发布者对象的 send 方法发送消息

在这里插入图片描述
点击运行

在这里插入图片描述
小乌龟移动
在这里插入图片描述

c)再ros端,打印一下我们MATLAB发送的数据

运行代码:

rostopic echo /turtle1/cmd_vel

在这里插入图片描述


二、参考的链接:

淘客有道
[如何判断两个IP地址是否在同一个网段?什么是子网掩码? - 淘客有道的文章 - 知乎
https://zhuanlan.zhihu.com/p/425228726]

wujiangzhu_xjtu
http://t.csdnimg.cn/eaAaI

SunProdefi
【MATLAB与ROS通信】 https://www.bilibili.com/video/BV1Yj411L71D/?share_source=copy_web&vd_source=dc3c4d5b24d8e5ca2c7925011fa29d63

三、总结

本次从MATLAB与ros的通讯的失败,尝试过卸掉MATLAB(因为版本过低),再到ros与MATLAB之间能通讯,但出现了ros接受不到MATLAB发送数据的问题。
最后,向b站up主SunProdefi 表示谢意 ,感谢一部分的建议,还有up主制作的视频。本文经过视频操作还出些了一些问题的补充。

四、如果你遇到本文没有提及的问题 一定要留下评论哦!真诚的感谢你的参与将这篇博客变得更丰富全面,帮助更多人。感谢你的点赞!O(∩_∩)O~~

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值