Matlab与ROS

Introduction

本文主要介绍Matlab与ROS通信过程。主要参考古月老师https://www.guyuehome.com/1006

实验准备:
主机:Win10 Matlab2018b
从机:ubuntu16.04 kinetic
连接:同一网络下

Matlab尝试

打开Maltab,运行

help robotics.ros

在这里插入图片描述
这里的Matlab(rosinit)=ROS(roscore)。
在这里插入图片描述
尝试案例:

exampleHelperROSCreateSampleNetwork

在这里插入图片描述
至此,我们在Matlab有一个简单的认识,下面开始两者通信!

二者通信

确定IP

在Win中CMD键入

ipconfig

在Ubuntu中键入

ifconfig

获得两者IP

在Matlab中设置IP

在Matlab中键入

setenv('ROS_MASTER_URI','http://192.168.0.120:11311')

其中http://192.168.0.120是你Ubuntu地址。并进行下一步检测
在这里插入图片描述

ROS->Matlab

在ROS中启动一个talker,在matlab中接受。
在这里插入图片描述
在Matlab中用rostopic echo把talker中的发布的信息全都print出来。截取部分如下:
在这里插入图片描述

Matlab->ROS

写一个.m文件,以此作为Matlab数据发送的talker。

%Setting ROS_MASTER_URI
setenv('ROS_MASTER_URI','http://192.168.0.120: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);

在这里插入图片描述
ROS如图,毕。

### MATLABROS的集成和通信 #### 安装MATLAB ROS Toolbox 为了使MATLAB能够ROS进行交互,需确保已安装MATLAB ROS Toolbox。此工具箱提供了必要的函数和支持包来处理ROS消息和服务,从而允许用户轻松地创建、订阅主题以及调用服务[^1]。 #### 配置网络环境 要让MATLAB能连接至ROS核心(通常是运行于Linux系统的计算机),必须保证两者处于同一局域网内,并正确设置了IP地址。具体操作如下: 对于Windows下的MATLAB终端输入: ```matlab setenv('ROS_MASTER_URI', 'http://<ros_master_ip>:11311') setenv('ROS_HOSTNAME', '<matlab_computer_ip>') ``` 这里`<ros_master_ip>`应替换为ROS主机的实际IP地址;而`<matlab_computer_ip>`则代表当前MATLAB所在设备的IP地址[^3]。 接着初始化ROS客户端: ```matlab rosinit('<ros_master_ip>'); ``` 这一步骤会建立MATLAB同指定ROS Master之间的联系[^4]。 #### 创建ROS节点并Gazebo互动 一旦建立了稳定的通讯链路,就可以利用MATLAB编写脚本或程序来定义新的ROS节点。这些节点可以用来向模拟环境中放置的对象发送指令或是监听来自传感器的数据流。例如,在Gazebo里操控一个移动平台时,可以通过以下方式构建相应的控制器逻辑并将其封装成独立的功能模块。 ```matlab node = rosmatlab.node.Node('/my_robot_controller'); pub = node.createPublisher('/cmd_vel', 'geometry_msgs/Twist'); msg = pub.getMessage; msg.Linear.X = 0.5; % Set linear velocity to move forward at speed of 0.5 m/s. msg.Angular.Z = pi / 4; % Turn clockwise with angular rate of π/4 rad/s. for i=1:10 pub.publish(msg); pause(1); % Wait one second between each publication. end ``` 上述代码片段展示了怎样在一个名为`/my_robot_controller`的新建ROS节点内部发布速度命令给位于话题路径`/cmd_vel`上的其他组件,以此驱动虚拟机器人按照设定的速度前进并向右转一定角度。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值