1、准备
ROS是世面上使用最多的机器人操作系统,而MATLAB作为最强大的数据处理软件肯定也不能落后,在MATLAB的工具箱中,就是robotics这个东西,这个里面就包括的ROS操作系统的相关工具,从matlab2013版本后,这个工具箱都会自动安装。
首先,我们可以先看一看这个工具箱里有些什么好东西,再matlab中运行
help ros
之后会看到如下命令:
ros (Robot Operating System)
rosinit - Initialize the ros system
rosshutdown - Shut down the ros system
rosmessage - Create a ros message
rospublisher - Create a ros publisher
rossubscriber - Create a ros subscriber
rossvcclient - Create a ros service client
rossvcserver - Create a ros service server
rostype - View available ros message types
rosmsg - Get information about messages and message types
rosnode - Get information about nodes in the ros network
rosservice - Get information about services in the ros network
rostopic - Get information about ros topics
rosbag - Open and parse a rosbag log file
rosparam - Get and set values on the parameter server
rosrate - Execute loop at fixed frequency using ros time
rostf - Receive, send, and apply ros transformations
rostime - Access ros time functionality
ros functionality is part of Robotics System Toolbox.
Type "help robotics" for more information.
这就是所有的可在matlab上使用的命令,如果没有,那么老铁非常不幸的告诉你你们安装工具箱,去matlab官网找吧,但建议重安,毕竟我们都没钱用正版。
对于这个工具包的文件的,都在\MATLAB\R2016a\toolbox\robotics这个文件夹下,当然不同人安装的前面的路径可能不同,里面也包含这非常丰富的例子程序,例如在robotexample\ros下的exampleHelperROSCreateSampleNetwork.m文件,就是一个简单的运行ros的例子,首先我们先要吧主节点跑起来,在ubuntu上是roscore,但在matlab里面,是rosinit。
>> rosinit
Initializing ROS master on http://ZYX-PC:11311/.
Initializing global node /matlab_global_node_33106 with NodeURI http://ZYX-PC:53069/
这样我们就启动完了主节点,之后运行自带例程exampleHelperROSCreateSampleNetwork
之后我们就卡一看启动的节点和和消息了
>> exampleHelperROSCreateSampleNetwork
>> rosnode list
/matlab_global_node_33106
/node_1
/node_2
/node_3
>> rostopic list
/pose
/rosout
/scan
>> rostopic echo /pose
Linear
X : 0.3850088418
Y : 0.2085110666
Z : -0.8725756156
Angular
X : 0.7674659268
Y : 0.7288981145
Z : 0.9881213901
---
Linear
X : 0.3677480297
Y : 0.2331125395
Z : -0.8479404236
Angular
X : 0.7348614232
Y : 0.6906525947
有没有很熟悉的赶脚。
2、连接
以上都是准备,熟悉熟悉,最实用的还是通过远程连接到ROS
首先,既然是远程访问,那么我们需要知道ROS端的IP地址,通过左上角的连接信息可以直接看到
可以看到我的IP是192.168.2.73。
然后我们在cmd(命令提示符)值输入
ipconfig/all
通过这个找到matlab端的IP地址,我这里是192.168.2.10
总结一下,我的matlab端的IP地址是192.168.2.10,我的ROS端的IP地址是192.168.2.73,这个IP地址在下面要视你们自己的情况进行替换。
首先需要修改.bashrc文件!!!不修改最后matlab能看到节点,但读不到具体数据,所以一定要改!!!!
cd ~
gedit .bashrc
然后在最后面添加
export ROS_IP=192.168.2.73
export ROS_MASTER_URI=http://192.168.2.73:11311
就需要在ros上启动我们的主节点!!!(要不不好用)
roscore
我们在MATLAB中命令进行一下配置,
>> setenv('ROS_MASTER_URI','http://192.168.2.73:11311')
>> setenv('ROS_IP','192.168.2.10')
>> rosinit
之后我们的matlab就和我们的ROS系统连接到了一起,两边可以互相访问数据和发布话题节点。
3、测试
我们可以使用我们的小乌龟测试一下,
首先我们要在ROS系统开启小乌龟和方向键
在一个终端输入
rosrun turtlesim turtlesim_node
开启小乌龟节点。
再在一个终端输入
rosrun turtlesim turtle_teleop_key
开启键盘控制节点。
这样我们就可以通过键盘控制小乌龟的移动。
下面我们再matlab的命令行输入
rostopic list
我们可以看到目前开启的各个节点
然后在输入
rostopic echo /turtle1/cmd_vel
我们再ROS端通过上下左右移动乌龟,我们可以在matlab端看到发出的数据
我们可以按Ctrl+C中断matlab端的接收。
如果matlab端rostopic echo没有数据,但是可以看到rostopic list有节点显示,那么一定要按照以上教程操作!!!