matlab 联调,ROS和Matlab的简单联调

(1)系统配置

ROS系统(Ubuntu),主机host,ip: 192.168.1.1 (ifconfig)。

matlab2015(Windows),从机,ip: 192.168.1.101 (ipconfig)。

(2) WINDOWS与Ubuntu是否通讯

为保证Matlab的Robotics System Toolbox与Ubuntu下ROS通信并工作,首先要创建局域网,将两主机置于同一子网内,用PING检测网络可达性。注意虚拟机要用HOST虚拟网卡。

同时要检查好防火墙,确保不对Matlab拦截。

(3) 设置ROS环境变量

Master以及两主机间各node之间的正确通信必须设置相应的环境变量,以保证node能找到master进行注册等操作,以及node使用正确的地址发布TOPIC和宣告SERVICE。所以需要在没有运行master的主机设置ROS_MASTER_URI变量,并在两主机上设置ROS_IP环境变量。ROS_IP而非ROS_HOSTNAME,是因为WINDOWS常常不能将计算机名解析成IP地址以致连接失败。两台机器都是Linux主机用ROS_HOSTNAME是木有问题的。

ROS_MASTER_URI:若roscore在其他机器上运行,则需要将ROS_MASTER_URI设置为运行roscore主机的ip,node就能以此与master建立连接进行通信及数据交互。

ROS_IP:变量对所运行的主机上的node起作用,node的TOPIC与SERVICE都发布到此地址上。

操作步骤:

在主机上,在~/.bashrc文件中添加:

export ROS_IP=192.168.1.101

保存退出,重开终端,运行master:

roscore

运行一个简单的turtle例程。

rosrun turtlesim turtlesim_node

在从机上,打开mablab,进行环境变量设置。在命令窗口输入:

rosrun turtlesim turtle_teleop_key %键盘控制

1

setenv(‘ROS_MASTER_URI’,’192.168.1.101′)

2

setenv(‘ROS_IP’,’192.168.1.100′)

初始化全局node:

1

rosinit()

(4)在matlab下操作ROS

文件:testROS.m

在matlab查阅下topic列表

rostopic list

会出现以下显示

/rosout

/rosout_agg

/turtle1/cmd_vel

/turtle1/color_sensor

/turtle1/pose

在matlab下显示topic内容

rostopic echo /turtle1/pose

若果出现以下内容,恭喜你!数据已经读到matlab里了。

X : 5.544444561

Y : 5.544444561

Theta : 0

LinearVelocity : 0

AngularVelocity : 0

注意,以上显示会刷屏,按ctrl+c停止显示。

查看topic数据类型等信息:

rostopic info /turtle1/cmd_vel

显示:

Type: geometry_msgs/Twist

Publishers:

Subscribers:

/turtlesim (http://192.168.1.101:37723/)

接下来我们尝试下在matlab里发送消息给小海龟。

首先设置消息类型为geometry_msgs/Twist

cmdpub = rospublisher('/turtle1/cmd_vel',rostype.geometry_msgs_Twist)

pause(3) % Wait to ensure publisher is setup

cmdmsg = rosmessage(cmdpub);

cmdmsg.Linear.X = 10;

cmdmsg.Angular.Z = 15;

send(cmdpub,cmdmsg)

之后就可以看见小海龟的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值